Name: series-workflowhdxhx Phase: Succeeded StartedAt: 2026-07-01 05:02:19 +0000 UTC FinishedAt: 2026-07-01 07:19:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[0] Phase: Succeeded StartedAt: 2026-07-01 05:02:19 +0000 UTC FinishedAt: 2026-07-01 05:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 05:02:19 +0000 UTC FinishedAt: 2026-07-01 05:18:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IGBVF", "ICE", "IDPF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IGBVF", "ICE", "IDPF" ], "series_id": "35a02457-be2e-4f9d-a495-e84c570cd534" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "igbvf_xmit_frame" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lHQlZGJiMzNDssCiAgICAmIzM0O0lDRSYjMzQ7LAogICAgJiMzNDtJRFBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdidmZfeG1pdF9mcmFtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBJQ0UgYW5kIElEUEYgYXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcnMgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24sIElHQlZGIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFFFTVUmIzM5O3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUxNjI5MDU1MzE2NWViMmU2MjM1MTJlMGZjOWVkYjFmODAwYmRkZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA1OjE3OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbmluZGV4IGUyZmQyZGFiMDNlMzYzLi5kODg4MzU0ODJkM2FhYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuQEAgLTU2MzcsNiAmIzQzOzU2MzcsMTYgQEAgc3RhdGljIGludCBpY2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdC8qIFJlc3RhcnQgdGhlIHNlcnZpY2UgdGFzayAqL1xuIFx0bW9kX3RpbWVyKFx1MDAyNnBmLVx1MDAzZXNlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgJiM0MzsgcGYtXHUwMDNlc2Vydl90bXJfcGVyaW9kKSk7XG4gXG4mIzQzO1x0LyogQmVzdC1lZmZvcnQgd2FpdCBmb3IgdGhlIHNjaGVkdWxlZCByZXNldCB0byBmaW5pc2ggc28gdGhhdCB0aGVcbiYjNDM7XHQgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2VcbiYjNDM7XHQgKiAoZS5nLiBOZXR3b3JrTWFuYWdlcikgbWF5IHRyeSB0byBvcGVuIHRoZSBuZXQgZGV2aWNlIHdoaWxlIHRoZVxuJiM0MztcdCAqIGFzeW5jaHJvbm91cyByZXNldCBpcyBzdGlsbCBpbiBwcm9ncmVzcywgaGl0dGluZyAtRUJVU1kuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gaWNlX3dhaXRfZm9yX3Jlc2V0KHBmLCBzZWNzX3RvX2ppZmZpZXMoMTApKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O1dhaXQgZm9yIHJlc2V0IHRpbWVkIG91dCAoMTBzKSBkdXJpbmcgcmVzdW1lOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cmV0KTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbmluZGV4IDI3ZTRhY2IxNjIwZjBjLi43Y2U4ZjY2ZWViYmYzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbkBAIC04NDcsNiAmIzQzOzg0NywzMCBAQCBzdGF0aWMgdm9pZCBpY2Vfbm90aWZ5X3ZmX3Jlc2V0KHN0cnVjdCBpY2VfdmYgKnZmKVxuIFx0XHRcdCAgICAgIE5VTEwpO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGljZV9yZXNldF9pbnRlcnJ1cHRzIC0gY2xlYXIgYWxsIHF1ZXVlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFZTSVxuJiM0MzsgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGludGVycnVwdCByZWdpc3RlcnMgc2hvdWxkIGJlIGNsZWFyZWRcbiYjNDM7ICpcbiYjNDM7ICogWmVybyB0aGUgUUlOVF9SUUNUTCBhbmQgUUlOVF9UUUNUTCByZWdpc3RlcnMgZm9yIGFsbCBhbGxvY2F0ZWQgcXVldWVzXG4mIzQzOyAqIGluIHRoZSBWU0kuIFRoaXMgY2xlYXJzIHRoZSBlbnRpcmUgcmVnaXN0ZXIgaW5jbHVkaW5nIE1TSVhfSU5EWCwgSVRSX0lORFgsXG4mIzQzOyAqIENBVVNFX0VOQSBhbmQgTkVYVFEgZmllbGRzLCB1bmxpa2UgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KCkgd2hpY2ggb25seVxuJiM0MzsgKiBjbGVhcnMgdGhlIENBVVNFX0VOQSBiaXQuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS1cdTAwM2ViYWNrO1xuJiM0MztcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlaHc7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGljZV9mb3JfZWFjaF9hbGxvY19yeHEodnNpLCBpKVxuJiM0MztcdFx0d3IzMihodywgUUlOVF9SUUNUTCh2c2ktXHUwMDNlcnhxX21hcFtpXSksIDApO1xuJiM0MztcbiYjNDM7XHRpY2VfZm9yX2VhY2hfYWxsb2NfdHhxKHZzaSwgaSlcbiYjNDM7XHRcdHdyMzIoaHcsIFFJTlRfVFFDVEwodnNpLVx1MDAzZXR4cV9tYXBbaV0pLCAwKTtcbiYjNDM7XG4mIzQzO1x0aWNlX2ZsdXNoKGh3KTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBpY2VfcmVzZXRfdmYgLSBSZXNldCBhIHBhcnRpY3VsYXIgVkZcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIHN0cnVjdHVyZVxuQEAgLTkxOCw2ICYjNDM7OTQyLDkgQEAgaW50IGljZV9yZXNldF92ZihzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTMyIGZsYWdzKVxuIFxuIFx0aWNlX2Rpc192Zl9xcyh2Zik7XG4gXG4mIzQzO1x0LyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovXG4mIzQzO1x0aWNlX3Jlc2V0X2ludGVycnVwdHModnNpKTtcbiYjNDM7XG4gXHQvKiBDYWxsIERpc2FibGUgTEFOIFR4IHF1ZXVlIEFRIHdoZXRoZXIgb3Igbm90IHF1ZXVlcyBhcmVcbiBcdCAqIGVuYWJsZWQuIFRoaXMgaXMgbmVlZGVkIGZvciBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgVkZSLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG5pbmRleCA1MzkyYjA0MDQ5ODYyMS4uMzIxZDI5YzI1YjdjMTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaFxuQEAgLTI2LDYgJiM0MzsyNiw3IEBAXG4gdm9pZCBpY2VfaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gdm9pZCBpY2VfZGVpbml0aWFsaXplX3ZmX2VudHJ5KHN0cnVjdCBpY2VfdmYgKnZmKTtcbiB2b2lkIGljZV9kaXNfdmZfcXMoc3RydWN0IGljZV92ZiAqdmYpO1xuJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xuIGludCBpY2VfY2hlY2tfdmZfaW5pdChzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSBpY2VfZXJyX3RvX3ZpcnRfZXJyKGludCBlcnIpO1xuIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuaW5kZXggMzFiZTJmNzYxODFjMDcuLjQzMWM5YzU0NmIwNGZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXG5AQCAtMjI0LDYgJiM0MzsyMjQsMjQgQEAgdm9pZCBpY2VfdmZfZW5hX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxuIFx0d3IzMihodywgUUlOVF9SUUNUTChwZnEpLCByZWcgfCBRSU5UX1JRQ1RMX0NBVVNFX0VOQV9NKTtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQgLSBkaXNhYmxlIFJ4IHF1ZXVlIGludGVycnVwdCB2aWEgUUlOVF9SUUNUTFxuJiM0MzsgKiBAdnNpOiBWU0kgb2YgdGhlIFZGIHRvIGNvbmZpZ3VyZVxuJiM0MzsgKiBAcV9pZHg6IFZGIHF1ZXVlIGluZGV4IHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBxdWV1ZSBpbiB0aGUgUEYmIzM5O3Mgc3BhY2VcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFx1MDAyNnZzaS1cdTAwM2ViYWNrLVx1MDAzZWh3O1xuJiM0MztcdHUzMiBwZnEgPSB2c2ktXHUwMDNlcnhxX21hcFtxX2lkeF07XG4mIzQzO1x0dTMyIHJlZztcbiYjNDM7XG4mIzQzO1x0cmVnID0gcmQzMihodywgUUlOVF9SUUNUTChwZnEpKTtcbiYjNDM7XHRyZWcgXHUwMDI2PSB+UUlOVF9SUUNUTF9DQVVTRV9FTkFfTTtcbiYjNDM7XHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyk7XG4mIzQzO1xuJiM0MztcdGljZV9mbHVzaChodyk7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaWNlX3ZjX2VuYV9xc19tc2dcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIGluZm9cbkBAIC00MTYsNiAmIzQzOzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcbiBcdFx0XHRnb3RvIGVycm9yX3BhcmFtO1xuIFx0XHR9XG4gXG4mIzQzO1x0XHRmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsIFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpXG4mIzQzO1x0XHRcdGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCh2c2ksIHZmX3FfaWQpO1xuIFx0XHRiaXRtYXBfemVybyh2Zi1cdTAwM2VyeHFfZW5hLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpO1xuIFx0fSBlbHNlIGlmIChxX21hcCkge1xuIFx0XHRmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsIFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpIHtcbkBAIC00MzYsNiAmIzQzOzQ1Niw3IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcbiBcdFx0XHRcdGdvdG8gZXJyb3JfcGFyYW07XG4gXHRcdFx0fVxuIFxuJiM0MztcdFx0XHRpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTtcbiBcdFx0XHQvKiBDbGVhciBlbmFibGVkIHF1ZXVlcyBmbGFnICovXG4gXHRcdFx0Y2xlYXJfYml0KHZmX3FfaWQsIHZmLVx1MDAzZXJ4cV9lbmEpO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jXG5pbmRleCBiN2Q2YjA4ZmM4OWU4OS4uOWY3NjQxMzU1MDdjMjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuY1xuQEAgLTE2Miw5ICYjNDM7MTYyLDEyIEBAIHZvaWQgaWRwZl9pZGNfdmRldl9tdHVfZXZlbnQoc3RydWN0IGlpZGNfcmRtYV92cG9ydF9kZXZfaW5mbyAqdmRldl9pbmZvLFxuIFxuIFx0c2V0X2JpdChldmVudF90eXBlLCBldmVudC50eXBlKTtcbiBcbi1cdGRldmljZV9sb2NrKFx1MDAyNnZkZXZfaW5mby1cdTAwM2VhZGV2LVx1MDAzZWRldik7XG4tXHRhZGV2ID0gdmRldl9pbmZvLVx1MDAzZWFkZXY7XG4tXHRpZiAoIWFkZXYgfHwgIWFkZXYtXHUwMDNlZGV2LmRyaXZlcilcbiYjNDM7XHRhZGV2ID0gUkVBRF9PTkNFKHZkZXZfaW5mby1cdTAwM2VhZGV2KTtcbiYjNDM7XHRpZiAoIWFkZXYpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGRldmljZV9sb2NrKFx1MDAyNmFkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAoIWFkZXYtXHUwMDNlZGV2LmRyaXZlcilcbiBcdFx0Z290byB1bmxvY2s7XG4gXHRpYWRydiA9IGNvbnRhaW5lcl9vZihhZGV2LVx1MDAzZWRldi5kcml2ZXIsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2F1eGlsaWFyeV9kcnYsXG5AQCAtMTcyLDcgJiM0MzsxNzUsNyBAQCB2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcbiBcdGlmIChpYWRydi1cdTAwM2VldmVudF9oYW5kbGVyKVxuIFx0XHRpYWRydi1cdTAwM2VldmVudF9oYW5kbGVyKHZkZXZfaW5mbywgXHUwMDI2ZXZlbnQpO1xuIHVubG9jazpcbi1cdGRldmljZV91bmxvY2soXHUwMDI2dmRldl9pbmZvLVx1MDAzZWFkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRkZXZpY2VfdW5sb2NrKFx1MDAyNmFkZXYtXHUwMDNlZGV2KTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuaW5kZXggMGEzZDBhMWNiYTQzM2MuLmM2ODZlZTEyMGExNDNmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jXG5AQCAtMjE5MCw4ICYjNDM7MjE5MCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRidWZmZXJfaW5mby1cdTAwM2V0aW1lX3N0YW1wID0gMDtcbiBcdGJ1ZmZlcl9pbmZvLVx1MDAzZWxlbmd0aCA9IDA7XG4gXHRidWZmZXJfaW5mby1cdTAwM2VtYXBwZWRfYXNfcGFnZSA9IGZhbHNlO1xuLVx0aWYgKGNvdW50KVxuLVx0XHRjb3VudC0tO1xuIFxuIFx0LyogY2xlYXIgdGltZXN0YW1wIGFuZCBkbWEgbWFwcGluZ3MgZm9yIHJlbWFpbmluZyBwb3J0aW9uIG9mIHBhY2tldCAqL1xuIFx0d2hpbGUgKGNvdW50LS0pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0JWRiYjMzQ7LAogICAgJiMzNDtJQ0UmIzM0OywKICAgICYjMzQ7SURQRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lnYnZmX3htaXRfZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJiMzOTtzIGlnYiBTUi1JT1YgZW11bGF0aW9uLiBUaGUgY2hhbmdlIGluIGlnYnZmX3R4X21hcF9hZHYgbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHBhdGggbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUxNjI5MDU1MzE2NWViMmU2MjM1MTJlMGZjOWVkYjFmODAwYmRkZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDA1OjE3OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwppbmRleCBlMmZkMmRhYjAzZTM2My4uZDg4ODM1NDgyZDNhYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCkBAIC01NjM3LDYgJiM0Mzs1NjM3LDE2IEBAIHN0YXRpYyBpbnQgaWNlX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJLyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovCiAJbW9kX3RpbWVyKCZhbXA7cGYtJmd0O3NlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgJiM0MzsgcGYtJmd0O3NlcnZfdG1yX3BlcmlvZCkpOwogCiYjNDM7CS8qIEJlc3QtZWZmb3J0IHdhaXQgZm9yIHRoZSBzY2hlZHVsZWQgcmVzZXQgdG8gZmluaXNoIHNvIHRoYXQgdGhlCiYjNDM7CSAqIGRldmljZSBpcyBvcGVyYXRpb25hbCBiZWZvcmUgcmV0dXJuaW5nLiBXaXRob3V0IHRoaXMsIHVzZXJzcGFjZQomIzQzOwkgKiAoZS5nLiBOZXR3b3JrTWFuYWdlcikgbWF5IHRyeSB0byBvcGVuIHRoZSBuZXQgZGV2aWNlIHdoaWxlIHRoZQomIzQzOwkgKiBhc3luY2hyb25vdXMgcmVzZXQgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MsIGhpdHRpbmcgLUVCVVNZLgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gaWNlX3dhaXRfZm9yX3Jlc2V0KHBmLCBzZWNzX3RvX2ppZmZpZXMoMTApKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O1dhaXQgZm9yIHJlc2V0IHRpbWVkIG91dCAoMTBzKSBkdXJpbmcgcmVzdW1lOiAlZFxuJiMzNDssCiYjNDM7CQkJcmV0KTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMKaW5kZXggMjdlNGFjYjE2MjBmMGMuLjdjZThmNjZlZWJiZjNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMKQEAgLTg0Nyw2ICYjNDM7ODQ3LDMwIEBAIHN0YXRpYyB2b2lkIGljZV9ub3RpZnlfdmZfcmVzZXQoc3RydWN0IGljZV92ZiAqdmYpCiAJCQkgICAgICBOVUxMKTsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGljZV9yZXNldF9pbnRlcnJ1cHRzIC0gY2xlYXIgYWxsIHF1ZXVlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFZTSQomIzQzOyAqIEB2c2k6IHRoZSBWU0kgd2hvc2UgaW50ZXJydXB0IHJlZ2lzdGVycyBzaG91bGQgYmUgY2xlYXJlZAomIzQzOyAqCiYjNDM7ICogWmVybyB0aGUgUUlOVF9SUUNUTCBhbmQgUUlOVF9UUUNUTCByZWdpc3RlcnMgZm9yIGFsbCBhbGxvY2F0ZWQgcXVldWVzCiYjNDM7ICogaW4gdGhlIFZTSS4gVGhpcyBjbGVhcnMgdGhlIGVudGlyZSByZWdpc3RlciBpbmNsdWRpbmcgTVNJWF9JTkRYLCBJVFJfSU5EWCwKJiM0MzsgKiBDQVVTRV9FTkEgYW5kIE5FWFRRIGZpZWxkcywgdW5saWtlIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCgpIHdoaWNoIG9ubHkKJiM0MzsgKiBjbGVhcnMgdGhlIENBVVNFX0VOQSBiaXQuCiYjNDM7ICovCiYjNDM7dm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKQomIzQzO3sKJiM0MzsJc3RydWN0IGljZV9wZiAqcGYgPSB2c2ktJmd0O2JhY2s7CiYjNDM7CXN0cnVjdCBpY2VfaHcgKmh3ID0gJmFtcDtwZi0mZ3Q7aHc7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlpY2VfZm9yX2VhY2hfYWxsb2NfcnhxKHZzaSwgaSkKJiM0MzsJCXdyMzIoaHcsIFFJTlRfUlFDVEwodnNpLSZndDtyeHFfbWFwW2ldKSwgMCk7CiYjNDM7CiYjNDM7CWljZV9mb3JfZWFjaF9hbGxvY190eHEodnNpLCBpKQomIzQzOwkJd3IzMihodywgUUlOVF9UUUNUTCh2c2ktJmd0O3R4cV9tYXBbaV0pLCAwKTsKJiM0MzsKJiM0MzsJaWNlX2ZsdXNoKGh3KTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIGljZV9yZXNldF92ZiAtIFJlc2V0IGEgcGFydGljdWxhciBWRgogICogQHZmOiBwb2ludGVyIHRvIHRoZSBWRiBzdHJ1Y3R1cmUKQEAgLTkxOCw2ICYjNDM7OTQyLDkgQEAgaW50IGljZV9yZXNldF92ZihzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTMyIGZsYWdzKQogCiAJaWNlX2Rpc192Zl9xcyh2Zik7CiAKJiM0MzsJLyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovCiYjNDM7CWljZV9yZXNldF9pbnRlcnJ1cHRzKHZzaSk7CiYjNDM7CiAJLyogQ2FsbCBEaXNhYmxlIExBTiBUeCBxdWV1ZSBBUSB3aGV0aGVyIG9yIG5vdCBxdWV1ZXMgYXJlCiAJICogZW5hYmxlZC4gVGhpcyBpcyBuZWVkZWQgZm9yIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiBWRlIuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmgKaW5kZXggNTM5MmIwNDA0OTg2MjEuLjMyMWQyOWMyNWI3YzE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oCkBAIC0yNiw2ICYjNDM7MjYsNyBAQAogdm9pZCBpY2VfaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7CiB2b2lkIGljZV9kZWluaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpOwogdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTsKJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpOwogaW50IGljZV9jaGVja192Zl9pbml0KHN0cnVjdCBpY2VfdmYgKnZmKTsKIGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgaWNlX2Vycl90b192aXJ0X2VycihpbnQgZXJyKTsKIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jCmluZGV4IDMxYmUyZjc2MTgxYzA3Li40MzFjOWM1NDZiMDRmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMKQEAgLTIyNCw2ICYjNDM7MjI0LDI0IEBAIHZvaWQgaWNlX3ZmX2VuYV9yeHFfaW50ZXJydXB0KHN0cnVjdCBpY2VfdnNpICp2c2ksIHUzMiBxX2lkeCkKIAl3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pOwogfQogCiYjNDM7LyoqCiYjNDM7ICogaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0IC0gZGlzYWJsZSBSeCBxdWV1ZSBpbnRlcnJ1cHQgdmlhIFFJTlRfUlFDVEwKJiM0MzsgKiBAdnNpOiBWU0kgb2YgdGhlIFZGIHRvIGNvbmZpZ3VyZQomIzQzOyAqIEBxX2lkeDogVkYgcXVldWUgaW5kZXggdXNlZCB0byBkZXRlcm1pbmUgdGhlIHF1ZXVlIGluIHRoZSBQRiYjMzk7cyBzcGFjZQomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWNlX2h3ICpodyA9ICZhbXA7dnNpLSZndDtiYWNrLSZndDtodzsKJiM0MzsJdTMyIHBmcSA9IHZzaS0mZ3Q7cnhxX21hcFtxX2lkeF07CiYjNDM7CXUzMiByZWc7CiYjNDM7CiYjNDM7CXJlZyA9IHJkMzIoaHcsIFFJTlRfUlFDVEwocGZxKSk7CiYjNDM7CXJlZyAmYW1wOz0gflFJTlRfUlFDVExfQ0FVU0VfRU5BX007CiYjNDM7CXdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTsKJiM0MzsKJiM0MzsJaWNlX2ZsdXNoKGh3KTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIGljZV92Y19lbmFfcXNfbXNnCiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIGluZm8KQEAgLTQxNiw2ICYjNDM7NDM0LDggQEAgaW50IGljZV92Y19kaXNfcXNfbXNnKHN0cnVjdCBpY2VfdmYgKnZmLCB1OCAqbXNnKQogCQkJZ290byBlcnJvcl9wYXJhbTsKIAkJfQogCiYjNDM7CQlmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsICZhbXA7cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRikKJiM0MzsJCQlpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTsKIAkJYml0bWFwX3plcm8odmYtJmd0O3J4cV9lbmEsIElDRV9NQVhfUlNTX1FTX1BFUl9WRik7CiAJfSBlbHNlIGlmIChxX21hcCkgewogCQlmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsICZhbXA7cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRikgewpAQCAtNDM2LDYgJiM0Mzs0NTYsNyBAQCBpbnQgaWNlX3ZjX2Rpc19xc19tc2coc3RydWN0IGljZV92ZiAqdmYsIHU4ICptc2cpCiAJCQkJZ290byBlcnJvcl9wYXJhbTsKIAkJCX0KIAomIzQzOwkJCWljZV92Zl9kaXNfcnhxX2ludGVycnVwdCh2c2ksIHZmX3FfaWQpOwogCQkJLyogQ2xlYXIgZW5hYmxlZCBxdWV1ZXMgZmxhZyAqLwogCQkJY2xlYXJfYml0KHZmX3FfaWQsIHZmLSZndDtyeHFfZW5hKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jCmluZGV4IGI3ZDZiMDhmYzg5ZTg5Li45Zjc2NDEzNTUwN2MyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYwpAQCAtMTYyLDkgJiM0MzsxNjIsMTIgQEAgdm9pZCBpZHBmX2lkY192ZGV2X210dV9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2Rldl9pbmZvICp2ZGV2X2luZm8sCiAKIAlzZXRfYml0KGV2ZW50X3R5cGUsIGV2ZW50LnR5cGUpOwogCi0JZGV2aWNlX2xvY2soJmFtcDt2ZGV2X2luZm8tJmd0O2FkZXYtJmd0O2Rldik7Ci0JYWRldiA9IHZkZXZfaW5mby0mZ3Q7YWRldjsKLQlpZiAoIWFkZXYgfHwgIWFkZXYtJmd0O2Rldi5kcml2ZXIpCiYjNDM7CWFkZXYgPSBSRUFEX09OQ0UodmRldl9pbmZvLSZndDthZGV2KTsKJiM0MzsJaWYgKCFhZGV2KQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlkZXZpY2VfbG9jaygmYW1wO2FkZXYtJmd0O2Rldik7CiYjNDM7CWlmICghYWRldi0mZ3Q7ZGV2LmRyaXZlcikKIAkJZ290byB1bmxvY2s7CiAJaWFkcnYgPSBjb250YWluZXJfb2YoYWRldi0mZ3Q7ZGV2LmRyaXZlciwKIAkJCSAgICAgc3RydWN0IGlpZGNfcmRtYV92cG9ydF9hdXhpbGlhcnlfZHJ2LApAQCAtMTcyLDcgJiM0MzsxNzUsNyBAQCB2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbywKIAlpZiAoaWFkcnYtJmd0O2V2ZW50X2hhbmRsZXIpCiAJCWlhZHJ2LSZndDtldmVudF9oYW5kbGVyKHZkZXZfaW5mbywgJmFtcDtldmVudCk7CiB1bmxvY2s6Ci0JZGV2aWNlX3VubG9jaygmYW1wO3ZkZXZfaW5mby0mZ3Q7YWRldi0mZ3Q7ZGV2KTsKJiM0MzsJZGV2aWNlX3VubG9jaygmYW1wO2FkZXYtJmd0O2Rldik7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYwppbmRleCAwYTNkMGExY2JhNDMzYy4uYzY4NmVlMTIwYTE0M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jCkBAIC0yMTkwLDggJiM0MzsyMTkwLDYgQEAgc3RhdGljIGlubGluZSBpbnQgaWdidmZfdHhfbWFwX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciwKIAlidWZmZXJfaW5mby0mZ3Q7dGltZV9zdGFtcCA9IDA7CiAJYnVmZmVyX2luZm8tJmd0O2xlbmd0aCA9IDA7CiAJYnVmZmVyX2luZm8tJmd0O21hcHBlZF9hc19wYWdlID0gZmFsc2U7Ci0JaWYgKGNvdW50KQotCQljb3VudC0tOwogCiAJLyogY2xlYXIgdGltZXN0YW1wIGFuZCBkbWEgbWFwcGluZ3MgZm9yIHJlbWFpbmluZyBwb3J0aW9uIG9mIHBhY2tldCAqLwogCXdoaWxlIChjb3VudC0tKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNjUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHNldmVyYWwgSW50ZWwgRXRoZXJuZXQgZHJpdmVyczogYGljZWAsIGBpZHBmYCwgYGlnYnZmYCwgYWxvbmcgd2l0aCBzb21lIHJlbGF0ZWQgbGlicmFyaWVzLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIHJlYWNoYWJsZSB3aXRoaW4gYSBmdXp6aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIGdpdmVuIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBoYXJkd2FyZS1kZXBlbmRlbnQgY29tcG9uZW50cy4KCkZpcnN0LCBgaWNlYCAoSW50ZWwgRTgwMCBTZXJpZXMpIGFuZCBgaWRwZmAgKEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbikgYXJlIGltbWVkaWF0ZWx5IHN1c3BlY3QuIFRoZXNlIGFyZSBwaHlzaWNhbCBFdGhlcm5ldCBkZXZpY2VzLCBhbmQgdHlwaWNhbGx5LCBRRU1VIGRvZXNuJiMzOTt0IG9mZmVyIGRpcmVjdCBlbXVsYXRpb24gZm9yIHN1Y2ggcmVjZW50LCBzcGVjaWFsaXplZCBoYXJkd2FyZS4gTXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGV5JiMzOTtyZSAqbm90KiBkaXJlY3RseSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwIHVubGVzcyB5b3UmIzM5O3JlIHVzaW5nIHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiAod2hpY2ggc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBmb3IgdGhlbSkuIEkmIzM5O2QgbmVlZCB0byBjb25maXJtIHRoaXMgd2l0aCBzZWFyY2hlcywgYnV0IG15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgbmVnYXRpdmUgaGVyZS4KClRoZW4gd2UgaGF2ZSBgaWdidmZgIChJbnRlbCBHaWdhYml0IFZpcnR1YWwgRnVuY3Rpb24pLiAgVGhpcyBpcyB0aGUgVkYgZHJpdmVyIGZvciBgaWdiYC4gIFFFTVUgKmRvZXMqIGhhdmUgYGlnYmAgZW11bGF0aW9uLiBOb3csIGRvZXMgUUVNVSBleHRlbmQgdG8gdGhlIFZGIGRyaXZlcnM/ICBJZiBRRU1VIGhhcyBTUi1JT1Ygc3VwcG9ydCBmb3IgdGhlIGBpZ2JgIGRldmljZSwgdGhlIGBpZ2J2ZmAgZHJpdmVyICpjb3VsZCogYmUgcmVhY2hhYmxlIGlmIFNSLUlPViBpcyBwcm9wZXJseSBjb25maWd1cmVkIGluIHRoZSBlbXVsYXRlZCBlbnZpcm9ubWVudC4gIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXImIzM5O3Mgc2V0dXAgaXMgbGlrZWx5IHRvIGNvbmZpZ3VyZSBTUi1JT1YgZm9yIGBpZ2JgIGJ5IGRlZmF1bHQsIG9yIGlmIGl0IHdvdWxkIHJlcXVpcmUgYSBzcGVjaWFsIGNvbmZpZ3VyYXRpb24sIGdpdmVuIHRoYXQgaXQgc3RhdGVzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiAgSSBuZWVkIHRvIGNoZWNrIHN5emthbGxlciYjMzk7cyBkb2N1bWVudGF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gcHJhY3RpY2VzIHRvIHNlZSBpZiBTUi1JT1YgaXMgYSBzdGFuZGFyZCBwYXJ0IG9mIGl0cyBgaWdiYCBzdXBwb3J0LgoKTGV0JiMzOTtzIGxvb2sgYXQgdGhpcyBzcGVjaWZpYyBjb2RlIGNoYW5nZSBpbiBgaWdidmYvbmV0ZGV2LmNgLiAgSXQmIzM5O3MganVzdCBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGF0IGRvZXMgbm90IGNoYW5nZSB0aGUgZmFjdCB0aGF0IHRoaXMgaXMgKnBvdGVudGlhbGx5KiByZWFjaGFibGUuCgpMZXQgbWUgdGhpbmsgYSBiaXQgbW9yZS4gIEV2ZW4gaWYgUUVNVSBlbXVsYXRlcyBgaWdiYCwgZG9lcyBzeXprYWxsZXIgaGF2ZSB0ZXN0IGNhc2VzIHNldCB1cCBmb3IgYGlnYnZmYD8gIEkgbmVlZCB0byBjaGVjayBmb3IgbWVudGlvbnMgb2YgYGlnYnZmYCBpbiBhbnkgc3l6a2FsbGVyLXJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBvciBjb2RlYmFzZSAoaWYgSSBoYWQgYWNjZXNzKSwgYnV0IEkgZG9uJiMzOTt0LiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBpdCBtaWdodCBiZSByZWFjaGFibGUgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgdmhjaWAsIGJ1dCB1c3VhbGx5IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGlzIHZlcnkgbGltaXRlZC4gVGhpcyBwYXRjaCBtb3N0bHkgbW9kaWZpZXMgYGljZWAsIGFuZCBgaWRwZmAuCgpTbywgdGhlIGJpZ2dlc3QgcmlzayBpcyB0aGF0LCB3aGlsZSBgaWdiYCAqY2FuKiBiZSBlbXVsYXRlZCwgYW5kIGBpZ2J2ZmAgKmNvdWxkKiBiZSByZWFjaGFibGUgdGhyb3VnaCBTUi1JT1YsIHRoZSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAgKm1heSBub3QqIGhhdmUgdGhpcyBjb25maWd1cmVkLiBHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zLCBpZiBJIHJldHVybiB0cnVlLCBJIG5lZWQgdG8gcHJvdmlkZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBIb3dldmVyLCBpZiBJIHJldHVybiBmYWxzZSwgSSBqdXN0IG5lZWQgdG8gc3RhdGUgdGhhdCBpdCYjMzk7cyBub3QgcmVhY2hhYmxlLiBTaW5jZSBgaWNlYCBhbmQgYGlkcGZgIGFyZSBub3QgcmVhY2hhYmxlLCBhbmQgYGlnYnZmYCBpcyBwb3RlbnRpYWxseSByZWFjaGFibGUgYnV0IHJlcXVpcmVzIHZlcnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgSSBzaG91bGQgZXJyIG9uIHRoZSBzaWRlIG9mIGNhdXRpb24gYW5kIHJldHVybiAqKmZhbHNlKiouCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdidmYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0ODYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19JR0JWRikgJiM0Mzs9IGlnYnZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9NYWtlZmlsZTo5OmlnYnZmLXkgOj0gdmYubyBtYngubyBldGh0b29sLm8gbmV0ZGV2Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0Oi8qIGV0aHRvb2wgc3VwcG9ydCBmb3IgaWdidmYgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMjojaW5jbHVkZSBcJiMzNDtpZ2J2Zi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfdmxhbi5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTU6c3RydWN0IGlnYnZmX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xNi1cdGNoYXIgc3RhdF9zdHJpbmdbRVRIX0dTVFJJTkdfTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjItI2RlZmluZSBJR0JWRl9TVEFUKGN1cnJlbnQsIGJhc2UpIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjM6XHRcdHNpemVvZigoKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopMCktXHUwMDNlY3VycmVudCksIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjQ6XHRcdG9mZnNldG9mKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyLCBjdXJyZW50KSwgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNTpcdFx0b2Zmc2V0b2Yoc3RydWN0IGlnYnZmX2FkYXB0ZXIsIGJhc2UpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mjc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZ2J2Zl9zdGF0cyBpZ2J2Zl9nc3RyaW5nc19zdGF0c1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI4LVx0eyBcJiMzNDtyeF9wYWNrZXRzXCYjMzQ7LCBJR0JWRl9TVEFUKHN0YXRzLmdwcmMsIHN0YXRzLmJhc2VfZ3ByYykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU6I2RlZmluZSBJR0JWRl9HTE9CQUxfU1RBVFNfTEVOIEFSUkFZX1NJWkUoaWdidmZfZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDc6c3RhdGljIGNvbnN0IGNoYXIgaWdidmZfZ3N0cmluZ3NfdGVzdFtdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDgtXHRcJiMzNDtMaW5rIHRlc3QgICAob24vb2ZmbGluZSlcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NTE6I2RlZmluZSBJR0JWRl9URVNUX0xFTiBBUlJBWV9TSVpFKGlnYnZmX2dzdHJpbmdzX3Rlc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NTM6c3RhdGljIGludCBpZ2J2Zl9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01NC1cdFx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTU1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo1NjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01Ny1cdHN0cnVjdCBlMTAwMF9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy04OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo5MDpzdGF0aWMgaW50IGlnYnZmX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTkxLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTk1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjk2OnN0YXRpYyB2b2lkIGlnYnZmX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtOTctXHRcdFx0XHQgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMDE6c3RhdGljIGludCBpZ2J2Zl9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEwMi1cdFx0XHRcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTA3OnN0YXRpYyB1MzIgaWdidmZfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTA4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMDk6XHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTEwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTE0OnN0YXRpYyB2b2lkIGlnYnZmX3NldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1MzIgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjExNjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMjE6c3RhdGljIGludCBpZ2J2Zl9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTI3OnN0YXRpYyB2b2lkIGlnYnZmX2dldF9yZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTI4LVx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTI5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMzA6XHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTMxLVx0c3RydWN0IGUxMDAwX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxNTI6c3RhdGljIGludCBpZ2J2Zl9nZXRfZWVwcm9tX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxNTc6c3RhdGljIGludCBpZ2J2Zl9nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTU4LVx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTYzOnN0YXRpYyBpbnQgaWdidmZfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE2NC1cdFx0XHQgICAgc3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE2OTpzdGF0aWMgdm9pZCBpZ2J2Zl9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3MC1cdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICpkcnZpbmZvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTcyOlx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxNzQ6XHRzdHJzY3B5KGRydmluZm8tXHUwMDNlZHJpdmVyLCAgaWdidmZfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVx1MDAzZWRyaXZlcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3NS1cdHN0cnNjcHkoZHJ2aW5mby1cdTAwM2VidXNfaW5mbywgcGNpX25hbWUoYWRhcHRlci1cdTAwM2VwZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE3OTpzdGF0aWMgdm9pZCBpZ2J2Zl9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTgwLVx0XHRcdFx0c3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE4NDpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODU6XHRzdHJ1Y3QgaWdidmZfcmluZyAqdHhfcmluZyA9IGFkYXB0ZXItXHUwMDNldHhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODY6XHRzdHJ1Y3QgaWdidmZfcmluZyAqcnhfcmluZyA9IGFkYXB0ZXItXHUwMDNlcnhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxOTQ6c3RhdGljIGludCBpZ2J2Zl9zZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTk1LVx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9yaW5ncGFyYW0gKnJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTk5Olx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjIwMDpcdHN0cnVjdCBpZ2J2Zl9yaW5nICp0ZW1wX3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjAxLVx0aW50IGVyciA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTIyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzA6XHR0ZW1wX3JpbmcgPSB2bWFsbG9jKHNpemVvZihzdHJ1Y3QgaWdidmZfcmluZykpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTIzMS1cdGlmICghdGVtcF9yaW5nKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTIzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzY6XHRpZ2J2Zl9kb3duKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTIzNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjQyLVx0aWYgKG5ld190eF9jb3VudCAhPSBhZGFwdGVyLVx1MDAzZXR4X3JpbmctXHUwMDNlY291bnQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNDM6XHRcdG1lbWNweSh0ZW1wX3JpbmcsIGFkYXB0ZXItXHUwMDNldHhfcmluZywgc2l6ZW9mKHN0cnVjdCBpZ2J2Zl9yaW5nKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI0NS1cdFx0dGVtcF9yaW5nLVx1MDAzZWNvdW50ID0gbmV3X3R4X2NvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI0NjpcdFx0ZXJyID0gaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzKGFkYXB0ZXIsIHRlbXBfcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjQ3LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjUwOlx0XHRpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyhhZGFwdGVyLVx1MDAzZXR4X3JpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNTI6XHRcdG1lbWNweShhZGFwdGVyLVx1MDAzZXR4X3JpbmcsIHRlbXBfcmluZywgc2l6ZW9mKHN0cnVjdCBpZ2J2Zl9yaW5nKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjUzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNTUtXHRpZiAobmV3X3J4X2NvdW50ICE9IGFkYXB0ZXItXHUwMDNlcnhfcmluZy1cdTAwM2Vjb3VudCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI1NjpcdFx0bWVtY3B5KHRlbXBfcmluZywgYWRhcHRlci1cdTAwM2VyeF9yaW5nLCBzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjU4LVx0XHR0ZW1wX3JpbmctXHUwMDNlY291bnQgPSBuZXdfcnhfY291bnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjU5Olx0XHRlcnIgPSBpZ2J2Zl9zZXR1cF9yeF9yZXNvdXJjZXMoYWRhcHRlciwgdGVtcF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjAtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNjM6XHRcdGlnYnZmX2ZyZWVfcnhfcmVzb3VyY2VzKGFkYXB0ZXItXHUwMDNlcnhfcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI2NTpcdFx0bWVtY3B5KGFkYXB0ZXItXHUwMDNlcnhfcmluZywgdGVtcF9yaW5nLCBzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjYtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjY3LWVycl9zZXR1cDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNjg6XHRpZ2J2Zl91cChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjktXHR2ZnJlZSh0ZW1wX3JpbmcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mjc1OnN0YXRpYyBpbnQgaWdidmZfbGlua190ZXN0KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjc2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI5MjpzdGF0aWMgdm9pZCBpZ2J2Zl9kaWFnX3Rlc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yOTMtXHRcdFx0ICAgIHN0cnVjdCBldGh0b29sX3Rlc3QgKmV0aF90ZXN0LCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjk0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyOTU6XHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjk2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMDEtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMDI6XHRpZiAoaWdidmZfbGlua190ZXN0KGFkYXB0ZXIsIFx1MDAyNmRhdGFbMF0pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMwMy1cdFx0ZXRoX3Rlc3QtXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzA5OnN0YXRpYyB2b2lkIGlnYnZmX2dldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMTAtXHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMTY6c3RhdGljIGludCBpZ2J2Zl9zZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzE3LVx0XHRcdCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMjI6c3RhdGljIGludCBpZ2J2Zl9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMjMtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfY29hbGVzY2UgKmVjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMjYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjMyNzpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMzc6c3RhdGljIGludCBpZ2J2Zl9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMzgtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfY29hbGVzY2UgKmVjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zNDEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM0MjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zNDMtXHRzdHJ1Y3QgZTEwMDBfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2Vodztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM3NDpzdGF0aWMgaW50IGlnYnZmX253YXlfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zNzUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM3NjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzc4LVx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozNzk6XHRcdGlnYnZmX3JlaW5pdF9sb2NrZWQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzgwLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozODM6c3RhdGljIHZvaWQgaWdidmZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODQtXHRcdFx0XHQgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM4NzpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODgtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzkwOlx0aWdidmZfdXBkYXRlX3N0YXRzKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5MS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIElHQlZGX0dMT0JBTF9TVEFUU19MRU47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzkyLVx0XHRjaGFyICpwID0gKGNoYXIgKilhZGFwdGVyICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzkzOlx0XHRcdCAgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzk0LVx0XHRjaGFyICpiID0gKGNoYXIgKilhZGFwdGVyICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mzk1Olx0XHRcdCAgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uYmFzZV9zdGF0X29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozOTY6XHRcdGRhdGFbaV0gPSAoKGlnYnZmX2dzdHJpbmdzX3N0YXRzW2ldLnNpemVvZl9zdGF0ID09XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzk3LVx0XHRcdCAgICBzaXplb2YodTY0KSkgPyAoKih1NjQgKilwIC0gKih1NjQgKiliKSA6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0MDI6c3RhdGljIGludCBpZ2J2Zl9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc3RyaW5nc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQwMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0MTQ6c3RhdGljIHZvaWQgaWdidmZfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHN0cmluZ3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MTUtXHRcdFx0ICAgICAgdTggKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQyMS1cdGNhc2UgRVRIX1NTX1RFU1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDIyOlx0XHRtZW1jcHkoZGF0YSwgKmlnYnZmX2dzdHJpbmdzX3Rlc3QsIHNpemVvZihpZ2J2Zl9nc3RyaW5nc190ZXN0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDIzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDI1LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJR0JWRl9HTE9CQUxfU1RBVFNfTEVOOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQyNjpcdFx0XHRtZW1jcHkocCwgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9zdHJpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDI3LVx0XHRcdCAgICAgICBFVEhfR1NUUklOR19MRU4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaWdidmZfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDM1LVx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1JYX1VTRUNTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQzNjpcdC5nZXRfZHJ2aW5mb1x0XHQ9IGlnYnZmX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQzNzpcdC5nZXRfcmVnc19sZW5cdFx0PSBpZ2J2Zl9nZXRfcmVnc19sZW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDM4Olx0LmdldF9yZWdzXHRcdD0gaWdidmZfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDM5Olx0LmdldF93b2xcdFx0PSBpZ2J2Zl9nZXRfd29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0MDpcdC5zZXRfd29sXHRcdD0gaWdidmZfc2V0X3dvbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NDE6XHQuZ2V0X21zZ2xldmVsXHRcdD0gaWdidmZfZ2V0X21zZ2xldmVsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0MjpcdC5zZXRfbXNnbGV2ZWxcdFx0PSBpZ2J2Zl9zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQzOlx0Lm53YXlfcmVzZXRcdFx0PSBpZ2J2Zl9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQ0NC1cdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ1Olx0LmdldF9lZXByb21fbGVuXHRcdD0gaWdidmZfZ2V0X2VlcHJvbV9sZW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ2Olx0LmdldF9lZXByb21cdFx0PSBpZ2J2Zl9nZXRfZWVwcm9tLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0NzpcdC5zZXRfZWVwcm9tXHRcdD0gaWdidmZfc2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NDg6XHQuZ2V0X3JpbmdwYXJhbVx0XHQ9IGlnYnZmX2dldF9yaW5ncGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ5Olx0LnNldF9yaW5ncGFyYW1cdFx0PSBpZ2J2Zl9zZXRfcmluZ3BhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MDpcdC5nZXRfcGF1c2VwYXJhbVx0XHQ9IGlnYnZmX2dldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MTpcdC5zZXRfcGF1c2VwYXJhbVx0XHQ9IGlnYnZmX3NldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MjpcdC5zZWxmX3Rlc3RcdFx0PSBpZ2J2Zl9kaWFnX3Rlc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDUzOlx0LmdldF9zc2V0X2NvdW50XHRcdD0gaWdidmZfZ2V0X3NzZXRfY291bnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU0Olx0LmdldF9zdHJpbmdzXHRcdD0gaWdidmZfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU1Olx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IGlnYnZmX2dldF9ldGh0b29sX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1NjpcdC5nZXRfY29hbGVzY2VcdFx0PSBpZ2J2Zl9nZXRfY29hbGVzY2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU3Olx0LnNldF9jb2FsZXNjZVx0XHQ9IGlnYnZmX3NldF9jb2FsZXNjZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NTg6XHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IGlnYnZmX2dldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NTk6XHQuc2V0X2xpbmtfa3NldHRpbmdzXHQ9IGlnYnZmX3NldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDYyOnZvaWQgaWdidmZfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDYzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NjQ6XHRuZXRkZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZpZ2J2Zl9ldGh0b29sX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTctLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTg6c3RydWN0IGlnYnZmX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE5OnN0cnVjdCBpZ2J2Zl9hZGFwdGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oPTI3PWVudW0gbGF0ZW5jeV9yYW5nZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC04NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6ODY6ZW51bSBpZ2J2Zl9ib2FyZHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC04Ny1cdGJvYXJkX3ZmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjkxOnN0cnVjdCBpZ2J2Zl9xdWV1ZV9zdGF0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTkyLVx0dTY0IHBhY2tldHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC05OC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6OTk6c3RydWN0IGlnYnZmX2J1ZmZlciB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTEwMC1cdGRtYV9hZGRyX3QgZG1hO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxMTk6dW5pb24gaWdidmZfZGVzYyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTEyMC1cdHVuaW9uIGUxMDAwX2Fkdl9yeF9kZXNjIHJ4X2Rlc2M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjEyNTpzdHJ1Y3QgaWdidmZfcmluZyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjEyNjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyOyAgLyogYmFja2xpbmsgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTI3Olx0dW5pb24gaWdidmZfZGVzYyAqZGVzYztcdC8qIHBvaW50ZXIgdG8gcmluZyBtZW1vcnkgICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTEyOC1cdGRtYV9hZGRyX3QgZG1hO1x0XHQvKiBwaHlzIGFkZHJlc3Mgb2YgcmluZyAgICAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTM4LVx0LyogYXJyYXkgb2YgYnVmZmVyIGluZm9ybWF0aW9uIHN0cnVjdHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTM5Olx0c3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE0MC1cdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxNTE6XHRzdHJ1Y3QgaWdidmZfcXVldWVfc3RhdHMgc3RhdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE1Mi19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTU0LS8qIGJvYXJkIHNwZWNpZmljIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTU1OnN0cnVjdCBpZ2J2Zl9hZGFwdGVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTU2LVx0c3RydWN0IHRpbWVyX2xpc3Qgd2F0Y2hkb2dfdGltZXI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE2MTpcdGNvbnN0IHN0cnVjdCBpZ2J2Zl9pbmZvICplaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTYyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTc1LVx0LyogVHggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTc2Olx0c3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcgLyogT25lIHBlciBhY3RpdmUgcXVldWUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTc3LVx0X19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE5MC1cdC8qIFJ4ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE5MTpcdHN0cnVjdCBpZ2J2Zl9yaW5nICpyeF9yaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xOTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjIyOTpzdHJ1Y3QgaWdidmZfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTIzMC1cdGVudW0gZTEwMDBfbWFjX3R5cGVcdG1hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTIzMy1cdHZvaWRcdFx0XHQoKmluaXRfb3BzKShzdHJ1Y3QgZTEwMDBfaHcgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjIzNDpcdHMzMlx0XHRcdCgqZ2V0X3ZhcmlhbnRzKShzdHJ1Y3QgaWdidmZfYWRhcHRlciAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjM1LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI0NzplbnVtIGlnYnZmX3N0YXRlX3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNDgtXHRfX0lHQlZGX1RFU1RJTkcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI1MzpleHRlcm4gY2hhciBpZ2J2Zl9kcml2ZXJfbmFtZVtdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI1NTp2b2lkIGlnYnZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTc6aW50IGlnYnZmX3VwKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTg6dm9pZCBpZ2J2Zl9kb3duKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTk6dm9pZCBpZ2J2Zl9yZWluaXRfbG9ja2VkKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNjA6aW50IGlnYnZmX3NldHVwX3J4X3Jlc291cmNlcyhzdHJ1Y3QgaWdidmZfYWRhcHRlciAqLCBzdHJ1Y3QgaWdidmZfcmluZyAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjYxOmludCBpZ2J2Zl9zZXR1cF90eF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKiwgc3RydWN0IGlnYnZmX3JpbmcgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI2Mjp2b2lkIGlnYnZmX2ZyZWVfcnhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9yaW5nICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNjM6dm9pZCBpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyhzdHJ1Y3QgaWdidmZfcmluZyAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjY0OnZvaWQgaWdidmZfdXBkYXRlX3N0YXRzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjQtI2luY2x1ZGUgXHUwMDNjbmV0L2lwNl9jaGVja3N1bS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyNTojaW5jbHVkZSBcJiMzNDtpZ2J2Zi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjI3OmNoYXIgaWdidmZfZHJpdmVyX25hbWVbXSA9IFwmIzM0O2lnYnZmXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mjg6c3RhdGljIGNvbnN0IGNoYXIgaWdidmZfZHJpdmVyX3N0cmluZ1tdID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI5LVx0XHQgIFwmIzM0O0ludGVsKFIpIEdpZ2FiaXQgVmlydHVhbCBGdW5jdGlvbiBOZXR3b3JrIERyaXZlclwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjMwOnN0YXRpYyBjb25zdCBjaGFyIGlnYnZmX2NvcHlyaWdodFtdID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTMxLVx0XHQgIFwmIzM0O0NvcHlyaWdodCAoYykgMjAwOSAtIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uXCYjMzQ7O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTM2PU1PRFVMRV9QQVJNX0RFU0MoZGVidWcsIFwmIzM0O0RlYnVnIGxldmVsICgwPW5vbmUsLi4uLDE2PWFsbClcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozODpzdGF0aWMgaW50IGlnYnZmX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM5OnN0YXRpYyB2b2lkIGlnYnZmX3Jlc2V0KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDA6c3RhdGljIHZvaWQgaWdidmZfc2V0X2ludGVycnVwdF9jYXBhYmlsaXR5KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDE6c3RhdGljIHZvaWQgaWdidmZfcmVzZXRfaW50ZXJydXB0X2NhcGFiaWxpdHkoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQzOnN0YXRpYyBzdHJ1Y3QgaWdidmZfaW5mbyBpZ2J2Zl92Zl9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDQtXHQubWFjXHRcdD0gZTEwMDBfdmZhZGFwdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUwOnN0YXRpYyBzdHJ1Y3QgaWdidmZfaW5mbyBpZ2J2Zl9pMzUwX3ZmX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MS1cdC5tYWNcdFx0PSBlMTAwMF92ZmFkYXB0X2kzNTAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1NzpzdGF0aWMgY29uc3Qgc3RydWN0IGlnYnZmX2luZm8gKmlnYnZmX2luZm9fdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1ODpcdFtib2FyZF92Zl1cdD0gXHUwMDI2aWdidmZfdmZfaW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjU5Olx0W2JvYXJkX2kzNTBfdmZdXHQ9IFx1MDAyNmlnYnZmX2kzNTBfdmZfaW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTYwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo2MzogKiBpZ2J2Zl9kZXNjX3VudXNlZCAtIGNhbGN1bGF0ZSBpZiB3ZSBoYXZlIHVudXNlZCBkZXNjcmlwdG9yc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjQtICogQHJpbmc6IGFkZHJlc3Mgb2YgcmVjZWl2ZSByaW5nIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjUtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NjY6c3RhdGljIGludCBpZ2J2Zl9kZXNjX3VudXNlZChzdHJ1Y3QgaWdidmZfcmluZyAqcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTY3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy03NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjc1OiAqIGlnYnZmX3JlY2VpdmVfc2tiIC0gaGVscGVyIGZ1bmN0aW9uIHRvIGhhbmRsZSBSeCBpbmRpY2F0aW9uc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNzYtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtODItICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6ODM6c3RhdGljIHZvaWQgaWdidmZfcmVjZWl2ZV9za2Ioc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy04NC1cdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjEwMzpzdGF0aWMgaW5saW5lIHZvaWQgaWdidmZfcnhfY2hlY2tzdW1fYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTA0LVx0XHRcdFx0XHQgdTMyIHN0YXR1c19lcnIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTI4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MTI5OiAqIGlnYnZmX2FsbG9jX3J4X2J1ZmZlcnMgLSBSZXBsYWNlIHVzZWQgcmVjZWl2ZSBidWZmZXJzOyBwYWNrZXQgc3BsaXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEzMC0gKiBAcnhfcmluZzogYWRkcmVzcyBvZiByaW5nIHN0cnVjdHVyZSB0byByZXBvcHVsYXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTMyLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjEzMzpzdGF0aWMgdm9pZCBpZ2J2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpZ2J2Zl9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTM0LVx0XHRcdFx0ICAgaW50IGNsZWFuZWRfY291bnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MTM2Olx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSByeF9yaW5nLVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzctXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gYWRhcHRlci1cdTAwM2VuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTM5LVx0dW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoxNDA6XHRzdHJ1Y3QgaWdidmZfYnVmZmVyICpidWZmZXJfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTE0MS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjM2OiAqIGlnYnZmX2NsZWFuX3J4X2lycSAtIFNlbmQgcmVjZWl2ZWQgZGF0YSB1cCB0aGUgbmV0d29yayBzdGFjazsgbGVnYWN5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzctICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjQzLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjI0NDpzdGF0aWMgYm9vbCBpZ2J2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNDUtXHRcdFx0ICAgICAgIGludCAqd29ya19kb25lLCBpbnQgd29ya190b19kbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI0Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyNDc6XHRzdHJ1Y3QgaWdidmZfcmluZyAqcnhfcmluZyA9IGFkYXB0ZXItXHUwMDNlcnhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI0OC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLVx1MDAzZW5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNTAtXHR1bmlvbiBlMTAwMF9hZHZfcnhfZGVzYyAqcnhfZGVzYywgKm5leHRfcnhkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjUxOlx0c3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm8sICpuZXh0X2J1ZmZlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI1Mi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MzUwOlx0XHRpZ2J2Zl9yeF9jaGVja3N1bV9hZHYoYWRhcHRlciwgc3RhdGVyciwgc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM1MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozNTQ6XHRcdGlnYnZmX3JlY2VpdmVfc2tiKGFkYXB0ZXIsIG5ldGRldiwgc2tiLCBzdGF0ZXJyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzU1LVx0XHRcdFx0ICByeF9kZXNjLVx1MDAzZXdiLnVwcGVyLnZsYW4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM2MS1cdFx0aWYgKGNsZWFuZWRfY291bnQgXHUwMDNlPSBJR0JWRl9SWF9CVUZGRVJfV1JJVEUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM2MjpcdFx0XHRpZ2J2Zl9hbGxvY19yeF9idWZmZXJzKHJ4X3JpbmcsIGNsZWFuZWRfY291bnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzYzLVx0XHRcdGNsZWFuZWRfY291bnQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM3My1cdHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiA9IGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozNzQ6XHRjbGVhbmVkX2NvdW50ID0gaWdidmZfZGVzY191bnVzZWQocnhfcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNzYtXHRpZiAoY2xlYW5lZF9jb3VudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM3NzpcdFx0aWdidmZfYWxsb2NfcnhfYnVmZmVycyhyeF9yaW5nLCBjbGVhbmVkX2NvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM3OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozODY6c3RhdGljIHZvaWQgaWdidmZfcHV0X3R4YnVmKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mzg3Olx0XHRcdCAgICBzdHJ1Y3QgaWdidmZfYnVmZmVyICpidWZmZXJfaW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM4OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDA5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDEwOiAqIGlnYnZmX3NldHVwX3R4X3Jlc291cmNlcyAtIGFsbG9jYXRlIFR4IHJlc291cmNlcyAoRGVzY3JpcHRvcnMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MTEtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDE1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQxNjppbnQgaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDE3Olx0XHRcdCAgICAgc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQyMjpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGlnYnZmX2J1ZmZlcikgKiB0eF9yaW5nLVx1MDAzZWNvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDIzLVx0dHhfcmluZy1cdTAwM2VidWZmZXJfaW5mbyA9IHZ6YWxsb2Moc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDQ4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDQ5OiAqIGlnYnZmX3NldHVwX3J4X3Jlc291cmNlcyAtIGFsbG9jYXRlIFJ4IHJlc291cmNlcyAoRGVzY3JpcHRvcnMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00NTAtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDU0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQ1NTppbnQgaWdidmZfc2V0dXBfcnhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDU2Olx0XHRcdCAgICAgc3RydWN0IGlnYnZmX3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00NTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQ2MTpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGlnYnZmX2J1ZmZlcikgKiByeF9yaW5nLVx1MDAzZWNvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDYyLVx0cnhfcmluZy1cdTAwM2VidWZmZXJfaW5mbyA9IHZ6YWxsb2Moc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDkyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDkzOiAqIGlnYnZmX2NsZWFuX3R4X3JpbmcgLSBGcmVlIFR4IEJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ5NC0gKiBAdHhfcmluZzogcmluZyB0byBiZSBjbGVhbmVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OTUtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDk2OnN0YXRpYyB2b2lkIGlnYnZmX2NsZWFuX3R4X3Jpbmcoc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDk4Olx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSB0eF9yaW5nLVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo0OTk6XHRzdHJ1Y3QgaWdidmZfYnVmZmVyICpidWZmZXJfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUwMC1cdHVuc2lnbmVkIGxvbmcgc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MDgtXHRcdGJ1ZmZlcl9pbmZvID0gXHUwMDI2dHhfcmluZy1cdTAwM2VidWZmZXJfaW5mb1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUwOTpcdFx0aWdidmZfcHV0X3R4YnVmKGFkYXB0ZXIsIGJ1ZmZlcl9pbmZvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUxMC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUxMjpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGlnYnZmX2J1ZmZlcikgKiB0eF9yaW5nLVx1MDAzZWNvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTEzLVx0bWVtc2V0KHR4X3JpbmctXHUwMDNlYnVmZmVyX2luZm8sIDAsIHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUyNS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUyNjogKiBpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyAtIEZyZWUgVHggUmVzb3VyY2VzIHBlciBRdWV1ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTI3LSAqIEB0eF9yaW5nOiByaW5nIHRvIGZyZWUgcmVzb3VyY2VzIGZyb21cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MzAtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NTMxOnZvaWQgaWdidmZfZnJlZV90eF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUzNC1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzM0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBpZ2J2ZmAgYW5kIERldGVybWluaW5nIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBzbyB0aGUgYGlnYnZmYCBkcml2ZXIgaXMgZGVmaW5pdGVseSBwcmVzZW50IGFuZCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0JiMzOTtzIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpcyB0aGUga2V5IHRlc3QgZW52aXJvbm1lbnQuIFFFTVUgZW11bGF0ZXMgYGlnYmAsIGFuZCBzaW5jZSBgaWdiYCBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gYGlnYnZmYCAqc2hvdWxkKiBiZSBwcm9iZS1hYmxlIGlmIFNSLUlPViBpcyBlbmFibGVkIG9uIHRoZSBgaWdiYCBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2RvZXMgc3l6a2FsbGVyIGV2ZW4gZW5hYmxlIFNSLUlPViBvbiBgaWdiYD8mIzM0OyBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSByZWNhbGwuIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYSBgc3l6X3BjaXZmYCBjYWxsPyBObywgaXQgZG9lc24mIzM5O3QuCgpCdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQ6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiByZXR1cm4gZmFsc2UuJiMzNDsgVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgYGlnYnZmYCB0cnVseSAqaW1wb3NzaWJsZSogdG8gcmVhY2g/IElmIFFFTVUgZW11bGF0ZXMgYGlnYmAsIGFuZCBgaWdiYCBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gKnRlY2huaWNhbGx5KiwgYGlnYnZmYCBpcyByZWFjaGFibGUgd2l0aGluIFFFTVUgd2l0aCBzcGVjaWZpYyBjb25maWd1cmF0aW9uLgoKSG93ZXZlciwgdGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggd2FzIGFwcGxpZWQgYnkgYHN5ei1jbHVzdGVyYCBhbmQgdGhlIGF1dGhvciBpcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2Agc3VnZ2VzdHMgdGhhdCBzeXprYWxsZXIgKmRpZCogZmluZCBhIGJ1ZyBvciBpcyBhY3RpdmVseSBmdXp6aW5nIHRoaXMgY29kZSEgVGhpcyBpcyBzaWduaWZpY2FudC4gSXQmIzM5O3MgYSBzaW11bGF0ZWQgcGF0Y2gsIGJ1dCBpdCBjb25maXJtcyB0aGUgcGF0aCBpcyByZWxldmFudC4KCkkgbmVlZCB0byBsb29rIGF0IHRoZSBjb2RlLiBUaGUgY2hhbmdlIGluIGBpZ2J2Zi9uZXRkZXYuY2AgaW52b2x2ZXMgcmVtb3ZpbmcgYGlmIChjb3VudCkgY291bnQtLTtgIGJlZm9yZSBhIGB3aGlsZSAoY291bnQtLSlgIGxvb3Agd2l0aGluIGBpZ2J2Zl90eF9tYXBfYWR2YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFsdGVyaW5nIGxvb3AgYmVoYXZpb3IsIHdoaWNoIGlzIGRlZmluaXRlbHkgaW50ZXJlc3RpbmcuCgpXaGF0IGFib3V0IGBpY2VgIGFuZCBgaWRwZmA/IFRob3NlIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzLCBhbmQgdGhlcmUmIzM5O3Mgbm8gd2F5IHRoZXkmIzM5O3JlIHJlYWNoYWJsZSBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudC4gQnV0IGBpZ2J2ZmAgKmlzKiByZWFjaGFibGUgaWYgU1ItSU9WIG9uIGBpZ2JgIGlzIHV0aWxpemVkLgoKTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzOiAmIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsgU2luY2UgYGlnYnZmYCAqaXMqIHJlYWNoYWJsZSAoYWxiZWl0IHdpdGggY29uZmlndXJhdGlvbikgaW4gUUVNVSwgYW5kIHNpbmNlIHRoZSBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyBgaWdidmZfdHhfbWFwX2FkdmAsIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYXR0ZW50aW9uIG5vdyBzaGlmdHMgc3BlY2lmaWNhbGx5IHRvIGBpZ2J2Zl90eF9tYXBfYWR2YC4gSXQmIzM5O3MgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGNhbGxlZCBieSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAuIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGNhbGwgc2l0ZXMgZm9yIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdidmZfdHhfbWFwX2FkdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yMTA3PXN0YXRpYyBpbnQgaWdidmZfbWF5YmVfc3RvcF90eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjEzNjpzdGF0aWMgaW5saW5lIGludCBpZ2J2Zl90eF9tYXBfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNy1cdFx0XHRcdCAgIHN0cnVjdCBpZ2J2Zl9yaW5nICp0eF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIyNjU9c3RhdGljIG5ldGRldl90eF90IGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzIyLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMzIzOlx0Y291bnQgPSBpZ2J2Zl90eF9tYXBfYWR2KGFkYXB0ZXIsIHR4X3JpbmcsIHNrYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzI0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDA4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIElHQlZGIFRyYW5zbWl0IFBhdGgqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgaWdidmZfdHhfbWFwX2FkdmAgaXMgZ2V0dGluZyBpbnZva2VkIGJ5IGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YC4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgY29ubmVjdGlvbi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGVyZSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgY2FsbGVkIGZyb20uIEFoLCBpdCYjMzk7cyBgaWdidmZfeG1pdF9mcmFtZWAuIEFscmlnaHQsIG5vdyBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIHdob2xlIHRyYW5zbWl0IGZsb3cuIFRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGBpZ2J2Zl94bWl0X2ZyYW1lYC4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IG9uZSBpcyBoYW5kbGluZyB0aGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdidmZfeG1pdF9mcmFtZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yMjA2PXN0YXRpYyBpbmxpbmUgdm9pZCBpZ2J2Zl90eF9xdWV1ZV9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjI2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjIyNjU6c3RhdGljIG5ldGRldl90eF90IGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIyNjYtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjMzOTpzdGF0aWMgbmV0ZGV2X3R4X3QgaWdidmZfeG1pdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM0MC1cdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMzUyOlx0cmV0dXJuIGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc2tiLCBuZXRkZXYsIHR4X3JpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1My19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjY2OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlnYnZmX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjY3MS1cdC5uZG9fc3RvcFx0XHQ9IGlnYnZmX2Nsb3NlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjY3MjpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGlnYnZmX3htaXRfZnJhbWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNjczLVx0Lm5kb19zZXRfcnhfbW9kZVx0PSBpZ2J2Zl9zZXRfcnhfbW9kZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzIzNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDcxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBpZ2J2Zl94bWl0X2ZyYW1lYCwgd2hpY2ggSSBrbm93IGlzIHRoZSBgbmRvX3N0YXJ0X3htaXRgIGZ1bmN0aW9uIGluIHRoZSBgaWdidmZgIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IE15IGluaXRpYWwgdGhvdWdodCBpcyB5ZXMsIGlmIGBpZ2J2ZmAgaXMgZXZlbiAqcmVhY2hhYmxlKi4gVXN1YWxseSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGZvY3VzIG9uIGBpZ2J2ZmAgYmVjYXVzZSBpdCBuZWVkcyBTUi1JT1Ygc2V0IHVwIG9uIHRoZSBgaWdiYCBkZXZpY2UsIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIFFFTVUgY29uZmlncyB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgcHJvdmlkZS4KCldhaXQsIHRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gYGZhbHNlYCBpZiB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBJcyBgaWdidmZgIGltcG9zc2libGUgdG8gcmVhY2g/IE5vLCBhY3R1YWxseSwgd2l0aCB0aGUgcmlnaHQgUUVNVSBjb25maWd1cmF0aW9uIOKAkyBzcGVjaWZpY2FsbHkgZW11bGF0aW5nIGBpZ2JgIGFuZCBlbmFibGluZyBTUi1JT1Yg4oCTIGl0ICppcyogcmVhY2hhYmxlLiBgaWNlYCBhbmQgYGlkcGZgLCBvbiB0aGUgb3RoZXIgaGFuZCwgYXJlIGEgbm8tZ28gc2luY2UgdGhlcmUgaXNuJiMzOTt0IHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhvc2UuCgpCdXQgd2hhdCBpZiB0aGUgcGF0Y2ggaXMganVzdCBwaHlzaWNhbCBuZXR3b3JrIGRyaXZlciBjaGFuZ2VzPyBUaG9zZSBhcmUgdXN1YWxseSB1bnJlYWNoYWJsZSB1bmxlc3MgdGhlcmUgaXMgYW4gZW11bGF0b3IsIGFuZCBgaWdidmZgIGhhcyBhbiBlbXVsYXRvciAoUUVNVSBgaWdiYCB3aXRoIFNSLUlPVikuIE5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24sIHdoaWNoIGlzIGBJR0JWRmAuCgpXaGF0IGFib3V0IGBpY2VgIGFuZCBgaWRwZmA/IFRob3NlIGNvbmZpZ3MgYXJlIGBJQ0VgIGFuZCBgSURQRmAsIHJlc3BlY3RpdmVseS4KCklmIEkmIzM5O20gZ29pbmcgdG8gc2F5IHRoaXMgaXMgd29ydGggZnV6emluZyAoYFdvcnRoRnV6emluZz10cnVlYCksIHRoZW4gSSBuZWVkIHRvIGxpc3QgZWl0aGVyIGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YCBvciBgaWdidmZfeG1pdF9mcmFtZWAgaW4gYEZvY3VzU3ltYm9sc2AuIExldCYjMzk7cyBkb3VibGUtY2hlY2sgYWdhaW4sIGBpZ2JgIHdpdGggU1ItSU9WIGlzIHN1cHBvcnRlZCBmcm9tIFFFTVUgdmVyc2lvbiA4LjAsIHNvIHllcywgSSBjYW4gcHJvYmUgYGlnYnZmYC4KClRoZXJlZm9yZSwgSSYjMzk7bSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYCBiZWNhdXNlIGBpZ2J2ZmAgKmlzKiByZWFjaGFibGUgdGhyb3VnaCBRRU1VJiMzOTtzIGBpZ2JgIGVtdWxhdGlvbi4KClRoZSBwYXRjaCAqYWxzbyogdG91Y2hlcyBgaWNlYCBhbmQgYGlkcGZgLCBidXQgdGhleSBhcmUgbm90IHJlYWNoYWJsZS4gSSBzaG91bGRuJiMzOTt0IGZvY3VzIG9uIHRoZW0uIEkgKnNob3VsZCogbGlzdCB0aGVpciBjb25maWdzLCB0aG91Z2gsIGJlY2F1c2UgJiMzNDtEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzLi4uIE9ubHkgbGlzdCB0aG9zZSB0aGF0IHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OyBCdXQgd2FpdCwgYXJlIHRoZXkgKnRydWx5KiB1bnJlYWNoYWJsZT8KClRoZSBwcm9tcHQgc2F5cyB0aGF0IGlmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFNpbmNlIGBpZ2J2ZmAgaXMgcmVhY2hhYmxlLCB0aGUgcGF0Y2gsIGFzIGEgd2hvbGUsIGlzIHdvcnRoIGZ1enppbmcgKGF0IGxlYXN0IHRoZSBgaWdidmZgIHBhcnQpLgoKU28sIGluIHRoZSBlbmQsIEkmIzM5O2xsIGxpc3QgYElHQlZGYCwgYElDRWAsIGFuZCBgSURQRmAuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgYGlkcGZfaWRjLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZHBmX2lkY192ZGV2X210dV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTEwNzE9dm9pZCBpZHBmX2lkY19pc3N1ZV9yZXNldF9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX2NvcmVfZGV2X2luZm8gKmNkZXZfaW5mbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMDcyOnZvaWQgaWRwZl9pZGNfdmRldl9tdHVfZXZlbnQoc3RydWN0IGlpZGNfcmRtYV92cG9ydF9kZXZfaW5mbyAqdmRldl9pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTA3My1cdFx0XHQgICAgIGVudW0gaWlkY19yZG1hX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jPTExMj1zdGF0aWMgaW50IGlkcGZfaWRjX2luaXRfYXV4X3Zwb3J0X2RldihzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jLTE0Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYzoxNDg6ICogaWRwZl9pZGNfdmRldl9tdHVfZXZlbnQgLSBGdW5jdGlvbiB0byBoYW5kbGUgSURDIHZwb3J0IG10dSBjaGFuZ2UgZXZlbnRzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMtMTQ5LSAqIEB2ZGV2X2luZm86IElEQyB2cG9ydCBkZXZpY2UgaW5mbyBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jLTE1MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYzoxNTI6dm9pZCBpZHBmX2lkY192ZGV2X210dV9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2Rldl9pbmZvICp2ZGV2X2luZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMtMTUzLVx0XHRcdCAgICAgZW51bSBpaWRjX3JkbWFfZXZlbnRfdHlwZSBldmVudF90eXBlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0yMDA0PWludCBpZHBmX2luaXRpYXRlX3NvZnRfcmVzZXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yMDUzLVx0Y2FzZSBJRFBGX1NSX01UVV9DSEFOR0U6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MjA1NDpcdFx0aWRwZl9pZGNfdmRldl9tdHVfZXZlbnQodnBvcnQtXHUwMDNldmRldl9pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTIwNTUtXHRcdFx0XHRcdElJRENfUkRNQV9FVkVOVF9CRUZPUkVfTVRVX0NIQU5HRSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTIxMTYtXHRpZiAocmVzZXRfY2F1c2UgPT0gSURQRl9TUl9NVFVfQ0hBTkdFKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjIxMTc6XHRcdGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHZwb3J0LVx1MDAzZXZkZXZfaW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yMTE4LVx0XHRcdFx0XHRJSURDX1JETUFfRVZFTlRfQUZURVJfTVRVX0NIQU5HRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1Mzc1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEcml2ZXIgUmVhY2hhYmlsaXR5IGFuZCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBkcml2ZXIgY29kZSBhbmQgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlzIHdoYXQmIzM5O3MgYWN0dWFsbHkgKnJlbGV2YW50KiB0byBpbnZlc3RpZ2F0ZS4gYGlkcGZgIGlzbiYjMzk7dCByZWFjaGFibGUgd2l0aGluIHRoZSBRRU1VIGVudmlyb25tZW50LCBhbmQgbmVpdGhlciBpcyBgaWNlYCwgc28gdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gU2luY2UgYGlnYnZmYCAqaXMqIHJlYWNoYWJsZSwgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLgoKVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBzZWVtIHRvIGNlbnRlciBhcm91bmQgYGlnYnZmYCwgYW5kIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBpZ2J2Zl90eF9tYXBfYWR2YCBmdW5jdGlvbi4gQWgsIGl0JiMzOTtzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiDigJMgbWVhbmluZyBpdCYjMzk7cyBjb21waWxlZCBkaXJlY3RseSBpbnRvIGl0cyBjYWxsaW5nIGZ1bmN0aW9ucy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gdHJhY2UgKnVwKiB0aGUgY2FsbCBjaGFpbi4gYGlnYnZmX3R4X21hcF9hZHZgIGlzIGNhbGxlZCBieSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAuIEkmIzM5O2xsIGFkZCBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgdG8gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdCwgdGhhdCBtYWtlcyBzZW5zZS4gV2FpdCBhIG1pbnV0ZS4uLiB0aGF0IGZ1bmN0aW9uIGlzIGFsc28gc3RhdGljISBUaGUgKmV4cG9ydGVkKiBvbmUgaXMgYWN0dWFsbHkgYGlnYnZmX3htaXRfZnJhbWVgLCBzbyBJJiMzOTtsbCBhZGQgdGhhdCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCBpbnN0ZWFkLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNoYW5nZXMgaW4gYGljZV9tYWluLmNgLiBIbW0sIHRoaXMgbW9kaWZpY2F0aW9uIGluIGBpY2VfcmVzdW1lYCBpbnRyb2R1Y2VzIGEgd2FpdGluZyBtZWNoYW5pc20gd2l0aCBgaWNlX3dhaXRfZm9yX3Jlc2V0YC4gVGhlIGNvZGUgYXR0ZW1wdHMgdG8gd2FpdCBmb3IgdGhlIHNjaGVkdWxlZCByZXNldCB0byBmaW5pc2ggYmVmb3JlIHJldHVybmluZywgd2hpY2ggc2VlbXMgc2Vuc2libGUgZm9yIGhhbmRsaW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRoaXMuCgpUaGVuLCB0aGVyZSYjMzk7cyBhIGNoYW5nZSBpbiBgaWNlX3ZmX2xpYi5jYCB3aGljaCBpbmNsdWRlcyBgaWNlX3Jlc2V0X2ludGVycnVwdHNgLCB3aGljaCB6ZXJvZXMgb3V0IGludGVycnVwdC1yZWxhdGVkIHJlZ2lzdGVycy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY29uc2lkZXJhdGlvbiBmb3IgaW50ZXJydXB0IG1hbmFnZW1lbnQgYW5kIGhvdyBpdCBtaWdodCBpbnRlcmFjdCB3aXRoIG91ciB0YXJnZXQgY29kZS4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIGNvbmZpZ3VyYXRpb24uIEdpdmVuIHRoYXQgb25seSBgaWdidmZgIGlzIHJlYWNoYWJsZSwgSSBuZWVkIHRvIGxpc3Qgd2hhdCBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBsaXN0IHdoYXQgbmVlZHMgdG8gYmUgKmV4cGxpY2l0bHkqIGVuYWJsZWQuIEkgaW5pdGlhbGx5IGFzc3VtZWQgdGhhdCBzaW5jZSBgaWNlYCBhbmQgYGlkcGZgIGFyZW4mIzM5O3QgcmVhY2hhYmxlLCBJIGNvdWxkIGV4Y2x1ZGUgdGhlbS4gSG93ZXZlciwgaWYgSSBleGNsdWRlIGBJQ0VgIGFuZCBgSURQRmAsIHRoZSBtb2RpZmllZCBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBtb2R1bGVzIHdvbiYjMzk7dCBldmVuIGJlIGNvbXBpbGVkIGluIHRoZSBmaXJzdCBwbGFjZSwgYW5kIHRodXMsIHdvbiYjMzk7dCBiZSB0ZXN0ZWQuIFNvLCBpdCYjMzk7cyBiZXN0IHRvIGJlIGNvbXByZWhlbnNpdmUuIFRodXMsIEkgbmVlZCB0byBpbmNsdWRlIHRoZW0gdG8gZW5zdXJlIHRoZSBidWlsZCBwcm9jZXNzIHBpY2tzIHRoZW0gdXAuIFNvLCBpdCBzZWVtcyBJIHNob3VsZCBsaXN0IGBJQ0VgLCBgSURQRmAsIGFuZCBgSUdCVkZgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4KCkJ1dCwgSSBtdXN0IHZlcmlmeSB0aGF0IGBJR0JWRmAgaXMgdGhlIGNvcnJlY3QgY29uZmlnLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBjb25maXJtIHRoaXMgY29uZmlndXJhdGlvbiBpcyB0aGUgY29ycmVjdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElHQlZGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3OTYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBJbnNwZWN0aW9uOiBJbnRlbCBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gVGhlIHRhc2sgYXQgaGFuZCBsaWtlbHkgaW52b2x2ZXMgY29uZmlndXJpbmcgb3IgbW9kaWZ5aW5nIHRoZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXIsIHNvIGEgbmF0dXJhbCBmaXJzdCBzdGVwIGlzIHRvIGV4YW1pbmUgaXRzIEtjb25maWcgZmlsZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgc3RhcnRpbmcgd2l0aCB0aGUgZm91bmRhdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBhbHJlYWR5IGF2YWlsYWJsZSwgd2hhdCYjMzk7cyBjb250cm9sbGluZyB3aGF0LCBhbmQgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBtb2R1bGVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGRlZmluaXRpb24gZm9yIGhvdyB0aGlzIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGluIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbS4gRnJvbSB0aGVyZSBJJiMzOTtsbCBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgY29udHJvbCB2YXJpYWJsZXMgZm9yIHRoZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSUdCVkYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xMjA9Y29uZmlnIElHQl9EQ0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTI5OmNvbmZpZyBJR0JWRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xMzAtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSA4MjU3NiBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxMTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IEkmIzM5O20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OgoKKipDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCBgSUdCVkZgIGlzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24sIHRoYXQmIzM5O3MgY2xlYXIuIEJ1dCBub3cgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIHdoYXQgYWJvdXQgdGhlIGludGVycGxheSB3aXRoIGBJQ0VgIGFuZCBgSURQRmA/IFdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBnb2luZyB0byB3b3JrIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHByaW1hcnkgb25lLiBBcmUgdGhleSBkZXBlbmRlbmNpZXM/IERvIHRoZXkgb3ZlcnJpZGUgc3BlY2lmaWMgcGFyYW1ldGVycz8gT3IgZG8gdGhleSBvcGVyYXRlIG9uIG9ydGhvZ29uYWwgYXNwZWN0cyBvZiB0aGUgc3lzdGVtPyBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0aHJlZSBpcyBjcnVjaWFsIGZvciBwcm9wZXIgb3BlcmF0aW9uIGFuZCBkZWJ1Z2dpbmcuIExldCYjMzk7cyBzZWUgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzdHJ1Y3R1cmVkIHRvIGdhaW4gY2xhcml0eSBvbiB0aGVpciBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJQ0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yNjg9Y29uZmlnIEk0MEVWRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyOTE6Y29uZmlnIElDRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yOTItXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzIwOmNvbmZpZyBJQ0VfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzIxLVx0Ym9vbCBcJiMzNDtJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIFN1cHBvcnQgSFdNT04gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzozMzE6Y29uZmlnIElDRV9TV0lUQ0hERVZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzMyLVx0Ym9vbCBcJiMzNDtTd2l0Y2hkZXYgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzozNDU6Y29uZmlnIElDRV9IV1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gcGxhdGZvcm1zIHdpdGggUFRNIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2MzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgRGlnaXRhbCBQdWJsaXNoaW5nIExhbmRzY2FwZSoqCgpTbywgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZGlnaXRhbCBwdWJsaXNoaW5nLiBJJiMzOTttIHRha2luZyBzdG9jayBoZXJlLCBjb25zaWRlcmluZyBhbGwgdGhlIGFuZ2xlcy4gRFJNLCBhY2Nlc3NpYmlsaXR5IHN0YW5kYXJkcywgRVBVQiAzLCB0aGUgb25nb2luZyBkZWJhdGUgYXJvdW5kIGZpeGVkLWxheW91dCBmb3JtYXRzIHZlcnN1cyByZWZsb3dhYmxlIHRleHQuLi4gSSYjMzk7bSByZWFsbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGNvbXBsZXhpdGllcyBpbnZvbHZlZCBpbiBjcmVhdGluZyBhbmQgZGlzdHJpYnV0aW5nIGNvbnRlbnQuIFRoZW4sIGEga2V5IHF1ZXN0aW9uIGhpdHMgbWU6IFdoYXQgYWJvdXQgdGhlIEludGVybmF0aW9uYWwgRGlnaXRhbCBQdWJsaXNoaW5nIEZvcnVtIOKAkyB0aGUgKklEUEYqPyBXZSBhbGwga25vdyBpdHMgaGlzdG9yeSBhbmQgaXRzIGV2b2x1dGlvbi4gTm93LCB3aXRoIGl0cyByb2xlIGhhdmluZyB0cmFuc2Zvcm1lZCBvdmVyIHRoZSB5ZWFycywgSSBuZWVkIHRvIGNvbnNpZGVyIGl0cyBsYXN0aW5nIHNpZ25pZmljYW5jZSwgb3Igd2hldGhlciBpdHMgcGxhY2UgaGFzIGJlZW4gdGFrZW4gYnkgb3RoZXIgaW5kdXN0cnkgYm9kaWVzLiBXZSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoZSBpbXBsaWNhdGlvbnMgb24gZnV0dXJlIHN0YW5kYXJkcyBhbmQgYnVzaW5lc3MgbW9kZWxzLiBXaGF0IGltcGFjdCBkaWQgdGhleSBoYXZlPyBXaGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlaXIgd29yayBvbiBhY2Nlc3NpYmlsaXR5IGFuZCBtZXRhZGF0YT8gSG93IGRvZXMgdGhhdCBzdGlsbCBmYWN0b3IgaW50byB0aGUgZGlnaXRhbCBwdWJsaXNoaW5nIHNwYWNlIG5vdz8gU28gbXVjaCB0byBjb25zaWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElEUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6NDpjb25maWcgSURQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz0xNz1pZiBJRFBGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTk6Y29uZmlnIElEUEZfU0lOR0xFUVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTIwLVx0Ym9vbCBcJiMzNDtpZHBmIHNpbmdsZXEgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA2OAoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAxMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQYXRjaCBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIHBhdGNoIHRvdWNoZXMgYElDRWAsIGBJRFBGYCwgYW5kIGBJR0JWRmAgZHJpdmVycy4gVGhlIHByb21wdCByZW1pbmRzIG1lIHRvIGlnbm9yZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSWYgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB1bnJlYWNoYWJsZSBjb2RlLCBJJiMzOTttIHN1cHBvc2VkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSG93ZXZlciwgYElHQlZGYCBpcyBkaWZmZXJlbnQuIEl0JiMzOTtzIGVtdWxhdGVkIHZpYSBRRU1VJiMzOTtzIGBpZ2JgIGRyaXZlciwgd2hpY2ggc3VwcG9ydHMgU1ItSU9WLCBzbyBpdCAqaXMqIHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMgaG93IHRvIGlkZW50aWZ5IHJlbGV2YW50IGZvY3VzIHN5bWJvbHMuIEkgc2VlIGNoYW5nZXMgaW4gYGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHZgIGFuZCBgaWdidmZfeG1pdF9mcmFtZWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGluY2x1ZGUgYGlnYnZmX3htaXRfZnJhbWVgIGluIGBGb2N1c1N5bWJvbHNgLiBCdXQgd2FpdCwgdGhlIG5vdGVzIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIElzIGBpZ2J2Zl94bWl0X2ZyYW1lYCBhIGhvdC1wYXRoPyBZZXMsIGl0JiMzOTtzIGBuZG9fc3RhcnRfeG1pdGAsIHNvIGl0JiMzOTtzIGNhbGxlZCBmb3IgZXZlcnkgcGFja2V0LgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgc29tZXRoaW5nIGVsc2UuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGlnYnZmX3R4X21hcF9hZHZgLCBidXQgdGhhdCYjMzk7cyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24uIE5vdCBhIHN5bWJvbCEgSG1tLCBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgYWxzbyBzdGF0aWMuIFNob3VsZCBJIGp1c3QgbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHk/CgpCdXQgbGV0JiMzOTtzIHJlY29uc2lkZXIgYGlnYnZmX3htaXRfZnJhbWVgLiBXaGlsZSBpdCAqaXMqIGhvdC1wYXRoLCBpdCYjMzk7cyBzcGVjaWZpYyB0byB0aGUgYGlnYnZmYCBkcml2ZXIuIEl0JiMzOTtzIG5vdCBhIGdlbmVyaWMga2VybmVsIGhvdC1wYXRoIGZ1bmN0aW9uIGxpa2UgYF9fZGV2X3F1ZXVlX3htaXRgLCBga2ZyZWVgLCBvciBga21hbGxvY2AuIEl0IGlzIHNwZWNpZmljIHRvIHRoZSBgaWdidmZgIGFuZCBub3QgYSBnZW5lcmFsIGhvdC1wYXRoIGZ1bmN0aW9uLiBTbywgYGlnYnZmX3htaXRfZnJhbWVgIGlzIGZpbmUhCgpJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBvdGhlciBkcml2ZXJzLiBgaWNlX3Jlc3VtZWAsIGBpY2VfcmVzZXRfaW50ZXJydXB0c2AsIGBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHRgIGFuZCBgaWRwZl9pZGNfdmRldl9tdHVfZXZlbnRgLiBTaW5jZSBgSUNFYCBhbmQgYElEUEZgIGFyZW4mIzM5O3QgcmVhY2hhYmxlLCBJIHdvbiYjMzk7dCBsaXN0IGFueSBvZiAqdGhlaXIqIGZ1bmN0aW9ucyBpbiBgRm9jdXNTeW1ib2xzYC4gQnV0IGl0IGlzIG9rYXkgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3MuCgpGaW5hbGx5LCBJJiMzOTtsbCByZS1leGFtaW5lIHRoZSBgaWdidmZfdHhfbWFwX2FkdmAgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGl0IGZpeGVzIGEgYnVnIHdoZXJlIGBjb3VudGAgd2FzIGJlaW5nIGRlY3JlbWVudGVkIGluY29ycmVjdGx5LiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IHNvbWUgdW5yZWFjaGFibGUgb3B0aW1pemF0aW9uLgoKU28sIGhlcmUmIzM5O3MgdGhlIHBsYW46IEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWAKKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7aWdidmZfeG1pdF9mcmFtZSYjMzQ7XWAKKiAgIGBFbmFibGVDb25maWdzYDogYFsmIzM0O0lHQlZGJiMzNDssICYjMzQ7SUNFJiMzNDssICYjMzQ7SURQRiYjMzQ7XWAKKiAgIGBSZWFzb25pbmdgOiAmIzM0O1RoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBJQ0UgYW5kIElEUEYgYXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcnMgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24sIElHQlZGIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFFFTVUmIzM5O3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SUdCVkYmIzM0OywKICAgICYjMzQ7SUNFJiMzNDssCiAgICAmIzM0O0lEUEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZ2J2Zl94bWl0X2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIElDRSBhbmQgSURQRiBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVycyB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiwgSUdCVkYgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUUVNVSYjMzk7cyBpZ2IgU1ItSU9WIGVtdWxhdGlvbi4gVGhlIGNoYW5nZSBpbiBpZ2J2Zl90eF9tYXBfYWR2IG1vZGlmaWVzIHRoZSB0cmFuc21pdCBwYXRoIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0JWRiYjMzQ7LAogICAgJiMzNDtJQ0UmIzM0OywKICAgICYjMzQ7SURQRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lnYnZmX3htaXRfZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJiMzOTtzIGlnYiBTUi1JT1YgZW11bGF0aW9uLiBUaGUgY2hhbmdlIGluIGlnYnZmX3R4X21hcF9hZHYgbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHBhdGggbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzowMS42MjIwOTYxNDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTAwMjAwMDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJR0JWRlwiLFxuICAgIFwiSUNFXCIsXG4gICAgXCJJRFBGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdidmZfeG1pdF9mcmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIElDRSBhbmQgSURQRiBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVycyB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiwgSUdCVkYgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUUVNVSdzIGlnYiBTUi1JT1YgZW11bGF0aW9uLiBUaGUgY2hhbmdlIGluIGlnYnZmX3R4X21hcF9hZHYgbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHBhdGggbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjE3OjAxLjYyMjEwNDU1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzOTE1NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTE2MjkwNTUzMTY1ZWIyZTYyMzUxMmUwZmM5ZWRiMWY4MDBiZGRlZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDA1OjE3OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG5pbmRleCBlMmZkMmRhYjAzZTM2My4uZDg4ODM1NDgyZDNhYWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbkBAIC01NjM3LDYgKzU2MzcsMTYgQEAgc3RhdGljIGludCBpY2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0LyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovXFxuIFxcdG1vZF90aW1lcihcXHUwMDI2cGYtXFx1MDAzZXNlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgKyBwZi1cXHUwMDNlc2Vydl90bXJfcGVyaW9kKSk7XFxuIFxcbitcXHQvKiBCZXN0LWVmZm9ydCB3YWl0IGZvciB0aGUgc2NoZWR1bGVkIHJlc2V0IHRvIGZpbmlzaCBzbyB0aGF0IHRoZVxcbitcXHQgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2VcXG4rXFx0ICogKGUuZy4gTmV0d29ya01hbmFnZXIpIG1heSB0cnkgdG8gb3BlbiB0aGUgbmV0IGRldmljZSB3aGlsZSB0aGVcXG4rXFx0ICogYXN5bmNocm9ub3VzIHJlc2V0IGlzIHN0aWxsIGluIHByb2dyZXNzLCBoaXR0aW5nIC1FQlVTWS5cXG4rXFx0ICovXFxuK1xcdHJldCA9IGljZV93YWl0X2Zvcl9yZXNldChwZiwgc2Vjc190b19qaWZmaWVzKDEwKSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiV2FpdCBmb3IgcmVzZXQgdGltZWQgb3V0ICgxMHMpIGR1cmluZyByZXN1bWU6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZXQpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXFxuaW5kZXggMjdlNGFjYjE2MjBmMGMuLjdjZThmNjZlZWJiZjNlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXFxuQEAgLTg0Nyw2ICs4NDcsMzAgQEAgc3RhdGljIHZvaWQgaWNlX25vdGlmeV92Zl9yZXNldChzdHJ1Y3QgaWNlX3ZmICp2ZilcXG4gXFx0XFx0XFx0ICAgICAgTlVMTCk7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBpY2VfcmVzZXRfaW50ZXJydXB0cyAtIGNsZWFyIGFsbCBxdWV1ZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBmb3IgYSBWU0lcXG4rICogQHZzaTogdGhlIFZTSSB3aG9zZSBpbnRlcnJ1cHQgcmVnaXN0ZXJzIHNob3VsZCBiZSBjbGVhcmVkXFxuKyAqXFxuKyAqIFplcm8gdGhlIFFJTlRfUlFDVEwgYW5kIFFJTlRfVFFDVEwgcmVnaXN0ZXJzIGZvciBhbGwgYWxsb2NhdGVkIHF1ZXVlc1xcbisgKiBpbiB0aGUgVlNJLiBUaGlzIGNsZWFycyB0aGUgZW50aXJlIHJlZ2lzdGVyIGluY2x1ZGluZyBNU0lYX0lORFgsIElUUl9JTkRYLFxcbisgKiBDQVVTRV9FTkEgYW5kIE5FWFRRIGZpZWxkcywgdW5saWtlIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCgpIHdoaWNoIG9ubHlcXG4rICogY2xlYXJzIHRoZSBDQVVTRV9FTkEgYml0LlxcbisgKi9cXG4rdm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxcbit7XFxuK1xcdHN0cnVjdCBpY2VfcGYgKnBmID0gdnNpLVxcdTAwM2ViYWNrO1xcbitcXHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlaHc7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0aWNlX2Zvcl9lYWNoX2FsbG9jX3J4cSh2c2ksIGkpXFxuK1xcdFxcdHdyMzIoaHcsIFFJTlRfUlFDVEwodnNpLVxcdTAwM2VyeHFfbWFwW2ldKSwgMCk7XFxuK1xcbitcXHRpY2VfZm9yX2VhY2hfYWxsb2NfdHhxKHZzaSwgaSlcXG4rXFx0XFx0d3IzMihodywgUUlOVF9UUUNUTCh2c2ktXFx1MDAzZXR4cV9tYXBbaV0pLCAwKTtcXG4rXFxuK1xcdGljZV9mbHVzaChodyk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2VfcmVzZXRfdmYgLSBSZXNldCBhIHBhcnRpY3VsYXIgVkZcXG4gICogQHZmOiBwb2ludGVyIHRvIHRoZSBWRiBzdHJ1Y3R1cmVcXG5AQCAtOTE4LDYgKzk0Miw5IEBAIGludCBpY2VfcmVzZXRfdmYoc3RydWN0IGljZV92ZiAqdmYsIHUzMiBmbGFncylcXG4gXFxuIFxcdGljZV9kaXNfdmZfcXModmYpO1xcbiBcXG4rXFx0LyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovXFxuK1xcdGljZV9yZXNldF9pbnRlcnJ1cHRzKHZzaSk7XFxuK1xcbiBcXHQvKiBDYWxsIERpc2FibGUgTEFOIFR4IHF1ZXVlIEFRIHdoZXRoZXIgb3Igbm90IHF1ZXVlcyBhcmVcXG4gXFx0ICogZW5hYmxlZC4gVGhpcyBpcyBuZWVkZWQgZm9yIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiBWRlIuXFxuIFxcdCAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcXG5pbmRleCA1MzkyYjA0MDQ5ODYyMS4uMzIxZDI5YzI1YjdjMTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXFxuQEAgLTI2LDYgKzI2LDcgQEBcXG4gdm9pZCBpY2VfaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XFxuIHZvaWQgaWNlX2RlaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XFxuIHZvaWQgaWNlX2Rpc192Zl9xcyhzdHJ1Y3QgaWNlX3ZmICp2Zik7XFxuK3ZvaWQgaWNlX3Jlc2V0X2ludGVycnVwdHMoc3RydWN0IGljZV92c2kgKnZzaSk7XFxuIGludCBpY2VfY2hlY2tfdmZfaW5pdChzdHJ1Y3QgaWNlX3ZmICp2Zik7XFxuIGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgaWNlX2Vycl90b192aXJ0X2VycihpbnQgZXJyKTtcXG4gc3RydWN0IGljZV9wb3J0X2luZm8gKmljZV92Zl9nZXRfcG9ydF9pbmZvKHN0cnVjdCBpY2VfdmYgKnZmKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xcbmluZGV4IDMxYmUyZjc2MTgxYzA3Li40MzFjOWM1NDZiMDRmZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXFxuQEAgLTIyNCw2ICsyMjQsMjQgQEAgdm9pZCBpY2VfdmZfZW5hX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxcbiBcXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pO1xcbiB9XFxuIFxcbisvKipcXG4rICogaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0IC0gZGlzYWJsZSBSeCBxdWV1ZSBpbnRlcnJ1cHQgdmlhIFFJTlRfUlFDVExcXG4rICogQHZzaTogVlNJIG9mIHRoZSBWRiB0byBjb25maWd1cmVcXG4rICogQHFfaWR4OiBWRiBxdWV1ZSBpbmRleCB1c2VkIHRvIGRldGVybWluZSB0aGUgcXVldWUgaW4gdGhlIFBGJ3Mgc3BhY2VcXG4rICovXFxuK3N0YXRpYyB2b2lkIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXFxuK3tcXG4rXFx0c3RydWN0IGljZV9odyAqaHcgPSBcXHUwMDI2dnNpLVxcdTAwM2ViYWNrLVxcdTAwM2VodztcXG4rXFx0dTMyIHBmcSA9IHZzaS1cXHUwMDNlcnhxX21hcFtxX2lkeF07XFxuK1xcdHUzMiByZWc7XFxuK1xcbitcXHRyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpO1xcbitcXHRyZWcgXFx1MDAyNj0gflFJTlRfUlFDVExfQ0FVU0VfRU5BX007XFxuK1xcdHdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTtcXG4rXFxuK1xcdGljZV9mbHVzaChodyk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2VfdmNfZW5hX3FzX21zZ1xcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIGluZm9cXG5AQCAtNDE2LDYgKzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcXG4gXFx0XFx0XFx0Z290byBlcnJvcl9wYXJhbTtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCBcXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRilcXG4rXFx0XFx0XFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XFxuIFxcdFxcdGJpdG1hcF96ZXJvKHZmLVxcdTAwM2VyeHFfZW5hLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpO1xcbiBcXHR9IGVsc2UgaWYgKHFfbWFwKSB7XFxuIFxcdFxcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpIHtcXG5AQCAtNDM2LDYgKzQ1Niw3IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcXG4gXFx0XFx0XFx0XFx0Z290byBlcnJvcl9wYXJhbTtcXG4gXFx0XFx0XFx0fVxcbiBcXG4rXFx0XFx0XFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XFxuIFxcdFxcdFxcdC8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi9cXG4gXFx0XFx0XFx0Y2xlYXJfYml0KHZmX3FfaWQsIHZmLVxcdTAwM2VyeHFfZW5hKTtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmNcXG5pbmRleCBiN2Q2YjA4ZmM4OWU4OS4uOWY3NjQxMzU1MDdjMjkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jXFxuQEAgLTE2Miw5ICsxNjIsMTIgQEAgdm9pZCBpZHBmX2lkY192ZGV2X210dV9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2Rldl9pbmZvICp2ZGV2X2luZm8sXFxuIFxcbiBcXHRzZXRfYml0KGV2ZW50X3R5cGUsIGV2ZW50LnR5cGUpO1xcbiBcXG4tXFx0ZGV2aWNlX2xvY2soXFx1MDAyNnZkZXZfaW5mby1cXHUwMDNlYWRldi1cXHUwMDNlZGV2KTtcXG4tXFx0YWRldiA9IHZkZXZfaW5mby1cXHUwMDNlYWRldjtcXG4tXFx0aWYgKCFhZGV2IHx8ICFhZGV2LVxcdTAwM2VkZXYuZHJpdmVyKVxcbitcXHRhZGV2ID0gUkVBRF9PTkNFKHZkZXZfaW5mby1cXHUwMDNlYWRldik7XFxuK1xcdGlmICghYWRldilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZGV2aWNlX2xvY2soXFx1MDAyNmFkZXYtXFx1MDAzZWRldik7XFxuK1xcdGlmICghYWRldi1cXHUwMDNlZGV2LmRyaXZlcilcXG4gXFx0XFx0Z290byB1bmxvY2s7XFxuIFxcdGlhZHJ2ID0gY29udGFpbmVyX29mKGFkZXYtXFx1MDAzZWRldi5kcml2ZXIsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IGlpZGNfcmRtYV92cG9ydF9hdXhpbGlhcnlfZHJ2LFxcbkBAIC0xNzIsNyArMTc1LDcgQEAgdm9pZCBpZHBmX2lkY192ZGV2X210dV9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2Rldl9pbmZvICp2ZGV2X2luZm8sXFxuIFxcdGlmIChpYWRydi1cXHUwMDNlZXZlbnRfaGFuZGxlcilcXG4gXFx0XFx0aWFkcnYtXFx1MDAzZWV2ZW50X2hhbmRsZXIodmRldl9pbmZvLCBcXHUwMDI2ZXZlbnQpO1xcbiB1bmxvY2s6XFxuLVxcdGRldmljZV91bmxvY2soXFx1MDAyNnZkZXZfaW5mby1cXHUwMDNlYWRldi1cXHUwMDNlZGV2KTtcXG4rXFx0ZGV2aWNlX3VubG9jayhcXHUwMDI2YWRldi1cXHUwMDNlZGV2KTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcXG5pbmRleCAwYTNkMGExY2JhNDMzYy4uYzY4NmVlMTIwYTE0M2YgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xcbkBAIC0yMTkwLDggKzIxOTAsNiBAQCBzdGF0aWMgaW5saW5lIGludCBpZ2J2Zl90eF9tYXBfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRidWZmZXJfaW5mby1cXHUwMDNldGltZV9zdGFtcCA9IDA7XFxuIFxcdGJ1ZmZlcl9pbmZvLVxcdTAwM2VsZW5ndGggPSAwO1xcbiBcXHRidWZmZXJfaW5mby1cXHUwMDNlbWFwcGVkX2FzX3BhZ2UgPSBmYWxzZTtcXG4tXFx0aWYgKGNvdW50KVxcbi1cXHRcXHRjb3VudC0tO1xcbiBcXG4gXFx0LyogY2xlYXIgdGltZXN0YW1wIGFuZCBkbWEgbWFwcGluZ3MgZm9yIHJlbWFpbmluZyBwb3J0aW9uIG9mIHBhY2tldCAqL1xcbiBcXHR3aGlsZSAoY291bnQtLSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzowMi4wMzY5NTE3MTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NTg3MTMzMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklHQlZGXCIsXG4gICAgXCJJQ0VcIixcbiAgICBcIklEUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZ2J2Zl94bWl0X2ZyYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJ3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MTYyOTA1NTMxNjVlYjJlNjIzNTEyZTBmYzllZGIxZjgwMGJkZGVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwNToxNzowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbmluZGV4IGUyZmQyZGFiMDNlMzYzLi5kODg4MzU0ODJkM2FhYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuQEAgLTU2MzcsNiArNTYzNywxNiBAQCBzdGF0aWMgaW50IGljZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0LyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovXG4gXHRtb2RfdGltZXIoXHUwMDI2cGYtXHUwMDNlc2Vydl90bXIsIHJvdW5kX2ppZmZpZXMoamlmZmllcyArIHBmLVx1MDAzZXNlcnZfdG1yX3BlcmlvZCkpO1xuIFxuK1x0LyogQmVzdC1lZmZvcnQgd2FpdCBmb3IgdGhlIHNjaGVkdWxlZCByZXNldCB0byBmaW5pc2ggc28gdGhhdCB0aGVcbitcdCAqIGRldmljZSBpcyBvcGVyYXRpb25hbCBiZWZvcmUgcmV0dXJuaW5nLiBXaXRob3V0IHRoaXMsIHVzZXJzcGFjZVxuK1x0ICogKGUuZy4gTmV0d29ya01hbmFnZXIpIG1heSB0cnkgdG8gb3BlbiB0aGUgbmV0IGRldmljZSB3aGlsZSB0aGVcbitcdCAqIGFzeW5jaHJvbm91cyByZXNldCBpcyBzdGlsbCBpbiBwcm9ncmVzcywgaGl0dGluZyAtRUJVU1kuXG4rXHQgKi9cbitcdHJldCA9IGljZV93YWl0X2Zvcl9yZXNldChwZiwgc2Vjc190b19qaWZmaWVzKDEwKSk7XG4rXHRpZiAocmV0KVxuK1x0XHRkZXZfZXJyKGRldiwgXCJXYWl0IGZvciByZXNldCB0aW1lZCBvdXQgKDEwcykgZHVyaW5nIHJlc3VtZTogJWRcXG5cIixcbitcdFx0XHRyZXQpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXG5pbmRleCAyN2U0YWNiMTYyMGYwYy4uN2NlOGY2NmVlYmJmM2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXG5AQCAtODQ3LDYgKzg0NywzMCBAQCBzdGF0aWMgdm9pZCBpY2Vfbm90aWZ5X3ZmX3Jlc2V0KHN0cnVjdCBpY2VfdmYgKnZmKVxuIFx0XHRcdCAgICAgIE5VTEwpO1xuIH1cbiBcbisvKipcbisgKiBpY2VfcmVzZXRfaW50ZXJydXB0cyAtIGNsZWFyIGFsbCBxdWV1ZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBmb3IgYSBWU0lcbisgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGludGVycnVwdCByZWdpc3RlcnMgc2hvdWxkIGJlIGNsZWFyZWRcbisgKlxuKyAqIFplcm8gdGhlIFFJTlRfUlFDVEwgYW5kIFFJTlRfVFFDVEwgcmVnaXN0ZXJzIGZvciBhbGwgYWxsb2NhdGVkIHF1ZXVlc1xuKyAqIGluIHRoZSBWU0kuIFRoaXMgY2xlYXJzIHRoZSBlbnRpcmUgcmVnaXN0ZXIgaW5jbHVkaW5nIE1TSVhfSU5EWCwgSVRSX0lORFgsXG4rICogQ0FVU0VfRU5BIGFuZCBORVhUUSBmaWVsZHMsIHVubGlrZSBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQoKSB3aGljaCBvbmx5XG4rICogY2xlYXJzIHRoZSBDQVVTRV9FTkEgYml0LlxuKyAqL1xuK3ZvaWQgaWNlX3Jlc2V0X2ludGVycnVwdHMoc3RydWN0IGljZV92c2kgKnZzaSlcbit7XG4rXHRzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS1cdTAwM2ViYWNrO1xuK1x0c3RydWN0IGljZV9odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VodztcbitcdGludCBpO1xuK1xuK1x0aWNlX2Zvcl9lYWNoX2FsbG9jX3J4cSh2c2ksIGkpXG4rXHRcdHdyMzIoaHcsIFFJTlRfUlFDVEwodnNpLVx1MDAzZXJ4cV9tYXBbaV0pLCAwKTtcbitcbitcdGljZV9mb3JfZWFjaF9hbGxvY190eHEodnNpLCBpKVxuK1x0XHR3cjMyKGh3LCBRSU5UX1RRQ1RMKHZzaS1cdTAwM2V0eHFfbWFwW2ldKSwgMCk7XG4rXG4rXHRpY2VfZmx1c2goaHcpO1xuK31cbitcbiAvKipcbiAgKiBpY2VfcmVzZXRfdmYgLSBSZXNldCBhIHBhcnRpY3VsYXIgVkZcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIHN0cnVjdHVyZVxuQEAgLTkxOCw2ICs5NDIsOSBAQCBpbnQgaWNlX3Jlc2V0X3ZmKHN0cnVjdCBpY2VfdmYgKnZmLCB1MzIgZmxhZ3MpXG4gXG4gXHRpY2VfZGlzX3ZmX3FzKHZmKTtcbiBcbitcdC8qIGNsZWFudXAgaW50ZXJydXB0IHJlZ2lzdGVycyAqL1xuK1x0aWNlX3Jlc2V0X2ludGVycnVwdHModnNpKTtcbitcbiBcdC8qIENhbGwgRGlzYWJsZSBMQU4gVHggcXVldWUgQVEgd2hldGhlciBvciBub3QgcXVldWVzIGFyZVxuIFx0ICogZW5hYmxlZC4gVGhpcyBpcyBuZWVkZWQgZm9yIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiBWRlIuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcbmluZGV4IDUzOTJiMDQwNDk4NjIxLi4zMjFkMjljMjViN2MxOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG5AQCAtMjYsNiArMjYsNyBAQFxuIHZvaWQgaWNlX2luaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpO1xuIHZvaWQgaWNlX2RlaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTtcbit2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xuIGludCBpY2VfY2hlY2tfdmZfaW5pdChzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSBpY2VfZXJyX3RvX3ZpcnRfZXJyKGludCBlcnIpO1xuIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuaW5kZXggMzFiZTJmNzYxODFjMDcuLjQzMWM5YzU0NmIwNGZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXG5AQCAtMjI0LDYgKzIyNCwyNCBAQCB2b2lkIGljZV92Zl9lbmFfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXG4gXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pO1xuIH1cbiBcbisvKipcbisgKiBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQgLSBkaXNhYmxlIFJ4IHF1ZXVlIGludGVycnVwdCB2aWEgUUlOVF9SUUNUTFxuKyAqIEB2c2k6IFZTSSBvZiB0aGUgVkYgdG8gY29uZmlndXJlXG4rICogQHFfaWR4OiBWRiBxdWV1ZSBpbmRleCB1c2VkIHRvIGRldGVybWluZSB0aGUgcXVldWUgaW4gdGhlIFBGJ3Mgc3BhY2VcbisgKi9cbitzdGF0aWMgdm9pZCBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxuK3tcbitcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2dnNpLVx1MDAzZWJhY2stXHUwMDNlaHc7XG4rXHR1MzIgcGZxID0gdnNpLVx1MDAzZXJ4cV9tYXBbcV9pZHhdO1xuK1x0dTMyIHJlZztcbitcbitcdHJlZyA9IHJkMzIoaHcsIFFJTlRfUlFDVEwocGZxKSk7XG4rXHRyZWcgXHUwMDI2PSB+UUlOVF9SUUNUTF9DQVVTRV9FTkFfTTtcbitcdHdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTtcbitcbitcdGljZV9mbHVzaChodyk7XG4rfVxuK1xuIC8qKlxuICAqIGljZV92Y19lbmFfcXNfbXNnXG4gICogQHZmOiBwb2ludGVyIHRvIHRoZSBWRiBpbmZvXG5AQCAtNDE2LDYgKzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcbiBcdFx0XHRnb3RvIGVycm9yX3BhcmFtO1xuIFx0XHR9XG4gXG4rXHRcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRilcbitcdFx0XHRpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTtcbiBcdFx0Yml0bWFwX3plcm8odmYtXHUwMDNlcnhxX2VuYSwgSUNFX01BWF9SU1NfUVNfUEVSX1ZGKTtcbiBcdH0gZWxzZSBpZiAocV9tYXApIHtcbiBcdFx0Zm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCBcdTAwMjZxX21hcCwgSUNFX01BWF9SU1NfUVNfUEVSX1ZGKSB7XG5AQCAtNDM2LDYgKzQ1Niw3IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcbiBcdFx0XHRcdGdvdG8gZXJyb3JfcGFyYW07XG4gXHRcdFx0fVxuIFxuK1x0XHRcdGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCh2c2ksIHZmX3FfaWQpO1xuIFx0XHRcdC8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi9cbiBcdFx0XHRjbGVhcl9iaXQodmZfcV9pZCwgdmYtXHUwMDNlcnhxX2VuYSk7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmNcbmluZGV4IGI3ZDZiMDhmYzg5ZTg5Li45Zjc2NDEzNTUwN2MyOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jXG5AQCAtMTYyLDkgKzE2MiwxMiBAQCB2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcbiBcbiBcdHNldF9iaXQoZXZlbnRfdHlwZSwgZXZlbnQudHlwZSk7XG4gXG4tXHRkZXZpY2VfbG9jayhcdTAwMjZ2ZGV2X2luZm8tXHUwMDNlYWRldi1cdTAwM2VkZXYpO1xuLVx0YWRldiA9IHZkZXZfaW5mby1cdTAwM2VhZGV2O1xuLVx0aWYgKCFhZGV2IHx8ICFhZGV2LVx1MDAzZWRldi5kcml2ZXIpXG4rXHRhZGV2ID0gUkVBRF9PTkNFKHZkZXZfaW5mby1cdTAwM2VhZGV2KTtcbitcdGlmICghYWRldilcbitcdFx0cmV0dXJuO1xuK1xuK1x0ZGV2aWNlX2xvY2soXHUwMDI2YWRldi1cdTAwM2VkZXYpO1xuK1x0aWYgKCFhZGV2LVx1MDAzZWRldi5kcml2ZXIpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFx0aWFkcnYgPSBjb250YWluZXJfb2YoYWRldi1cdTAwM2VkZXYuZHJpdmVyLFxuIFx0XHRcdCAgICAgc3RydWN0IGlpZGNfcmRtYV92cG9ydF9hdXhpbGlhcnlfZHJ2LFxuQEAgLTE3Miw3ICsxNzUsNyBAQCB2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcbiBcdGlmIChpYWRydi1cdTAwM2VldmVudF9oYW5kbGVyKVxuIFx0XHRpYWRydi1cdTAwM2VldmVudF9oYW5kbGVyKHZkZXZfaW5mbywgXHUwMDI2ZXZlbnQpO1xuIHVubG9jazpcbi1cdGRldmljZV91bmxvY2soXHUwMDI2dmRldl9pbmZvLVx1MDAzZWFkZXYtXHUwMDNlZGV2KTtcbitcdGRldmljZV91bmxvY2soXHUwMDI2YWRldi1cdTAwM2VkZXYpO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jXG5pbmRleCAwYTNkMGExY2JhNDMzYy4uYzY4NmVlMTIwYTE0M2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcbkBAIC0yMTkwLDggKzIxOTAsNiBAQCBzdGF0aWMgaW5saW5lIGludCBpZ2J2Zl90eF9tYXBfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuIFx0YnVmZmVyX2luZm8tXHUwMDNldGltZV9zdGFtcCA9IDA7XG4gXHRidWZmZXJfaW5mby1cdTAwM2VsZW5ndGggPSAwO1xuIFx0YnVmZmVyX2luZm8tXHUwMDNlbWFwcGVkX2FzX3BhZ2UgPSBmYWxzZTtcbi1cdGlmIChjb3VudClcbi1cdFx0Y291bnQtLTtcbiBcbiBcdC8qIGNsZWFyIHRpbWVzdGFtcCBhbmQgZG1hIG1hcHBpbmdzIGZvciByZW1haW5pbmcgcG9ydGlvbiBvZiBwYWNrZXQgKi9cbiBcdHdoaWxlIChjb3VudC0tKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzowMi4wMzY5NTUwODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODQ1MzA3NTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgc2V2ZXJhbCBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzOiBgaWNlYCwgYGlkcGZgLCBgaWdidmZgLCBhbG9uZyB3aXRoIHNvbWUgcmVsYXRlZCBsaWJyYXJpZXMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgdGhlc2UgZHJpdmVycyBhcmUgcmVhY2hhYmxlIHdpdGhpbiBhIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgZ2l2ZW4gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgaGFyZHdhcmUtZGVwZW5kZW50IGNvbXBvbmVudHMuXG5cbkZpcnN0LCBgaWNlYCAoSW50ZWwgRTgwMCBTZXJpZXMpIGFuZCBgaWRwZmAgKEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbikgYXJlIGltbWVkaWF0ZWx5IHN1c3BlY3QuIFRoZXNlIGFyZSBwaHlzaWNhbCBFdGhlcm5ldCBkZXZpY2VzLCBhbmQgdHlwaWNhbGx5LCBRRU1VIGRvZXNuJ3Qgb2ZmZXIgZGlyZWN0IGVtdWxhdGlvbiBmb3Igc3VjaCByZWNlbnQsIHNwZWNpYWxpemVkIGhhcmR3YXJlLiBNeSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoZXkncmUgKm5vdCogZGlyZWN0bHkgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCB1bmxlc3MgeW91J3JlIHVzaW5nIHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiAod2hpY2ggc3l6a2FsbGVyIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGZvciB0aGVtKS4gSSdkIG5lZWQgdG8gY29uZmlybSB0aGlzIHdpdGggc2VhcmNoZXMsIGJ1dCBteSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIG5lZ2F0aXZlIGhlcmUuXG5cblRoZW4gd2UgaGF2ZSBgaWdidmZgIChJbnRlbCBHaWdhYml0IFZpcnR1YWwgRnVuY3Rpb24pLiAgVGhpcyBpcyB0aGUgVkYgZHJpdmVyIGZvciBgaWdiYC4gIFFFTVUgKmRvZXMqIGhhdmUgYGlnYmAgZW11bGF0aW9uLiBOb3csIGRvZXMgUUVNVSBleHRlbmQgdG8gdGhlIFZGIGRyaXZlcnM/ICBJZiBRRU1VIGhhcyBTUi1JT1Ygc3VwcG9ydCBmb3IgdGhlIGBpZ2JgIGRldmljZSwgdGhlIGBpZ2J2ZmAgZHJpdmVyICpjb3VsZCogYmUgcmVhY2hhYmxlIGlmIFNSLUlPViBpcyBwcm9wZXJseSBjb25maWd1cmVkIGluIHRoZSBlbXVsYXRlZCBlbnZpcm9ubWVudC4gIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXIncyBzZXR1cCBpcyBsaWtlbHkgdG8gY29uZmlndXJlIFNSLUlPViBmb3IgYGlnYmAgYnkgZGVmYXVsdCwgb3IgaWYgaXQgd291bGQgcmVxdWlyZSBhIHNwZWNpYWwgY29uZmlndXJhdGlvbiwgZ2l2ZW4gdGhhdCBpdCBzdGF0ZXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuICBJIG5lZWQgdG8gY2hlY2sgc3l6a2FsbGVyJ3MgZG9jdW1lbnRhdGlvbiBvciBjb25maWd1cmF0aW9uIHByYWN0aWNlcyB0byBzZWUgaWYgU1ItSU9WIGlzIGEgc3RhbmRhcmQgcGFydCBvZiBpdHMgYGlnYmAgc3VwcG9ydC5cblxuTGV0J3MgbG9vayBhdCB0aGlzIHNwZWNpZmljIGNvZGUgY2hhbmdlIGluIGBpZ2J2Zi9uZXRkZXYuY2AuICBJdCdzIGp1c3QgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhhdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGZhY3QgdGhhdCB0aGlzIGlzICpwb3RlbnRpYWxseSogcmVhY2hhYmxlLlxuXG5MZXQgbWUgdGhpbmsgYSBiaXQgbW9yZS4gIEV2ZW4gaWYgUUVNVSBlbXVsYXRlcyBgaWdiYCwgZG9lcyBzeXprYWxsZXIgaGF2ZSB0ZXN0IGNhc2VzIHNldCB1cCBmb3IgYGlnYnZmYD8gIEkgbmVlZCB0byBjaGVjayBmb3IgbWVudGlvbnMgb2YgYGlnYnZmYCBpbiBhbnkgc3l6a2FsbGVyLXJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBvciBjb2RlYmFzZSAoaWYgSSBoYWQgYWNjZXNzKSwgYnV0IEkgZG9uJ3QuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIFBDSSBkcml2ZXIsIGl0IG1pZ2h0IGJlIHJlYWNoYWJsZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGB2aGNpYCwgYnV0IHVzdWFsbHkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBpcyB2ZXJ5IGxpbWl0ZWQuIFRoaXMgcGF0Y2ggbW9zdGx5IG1vZGlmaWVzIGBpY2VgLCBhbmQgYGlkcGZgLlxuXG5TbywgdGhlIGJpZ2dlc3QgcmlzayBpcyB0aGF0LCB3aGlsZSBgaWdiYCAqY2FuKiBiZSBlbXVsYXRlZCwgYW5kIGBpZ2J2ZmAgKmNvdWxkKiBiZSByZWFjaGFibGUgdGhyb3VnaCBTUi1JT1YsIHRoZSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAgKm1heSBub3QqIGhhdmUgdGhpcyBjb25maWd1cmVkLiBHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zLCBpZiBJIHJldHVybiB0cnVlLCBJIG5lZWQgdG8gcHJvdmlkZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBIb3dldmVyLCBpZiBJIHJldHVybiBmYWxzZSwgSSBqdXN0IG5lZWQgdG8gc3RhdGUgdGhhdCBpdCdzIG5vdCByZWFjaGFibGUuIFNpbmNlIGBpY2VgIGFuZCBgaWRwZmAgYXJlIG5vdCByZWFjaGFibGUsIGFuZCBgaWdidmZgIGlzIHBvdGVudGlhbGx5IHJlYWNoYWJsZSBidXQgcmVxdWlyZXMgdmVyeSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLCBJIHNob3VsZCBlcnIgb24gdGhlIHNpZGUgb2YgY2F1dGlvbiBhbmQgcmV0dXJuICoqZmFsc2UqKi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzoyMC40OTAwMzM2MDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NzM4ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYnZmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0ODYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL01ha2VmaWxlLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfSUdCVkYpICs9IGlnYnZmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL01ha2VmaWxlOjk6aWdidmYteSA6PSB2Zi5vIG1ieC5vIGV0aHRvb2wubyBuZXRkZXYub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ6LyogZXRodG9vbCBzdXBwb3J0IGZvciBpZ2J2ZiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMjojaW5jbHVkZSBcXFwiaWdidmYuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE1OnN0cnVjdCBpZ2J2Zl9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE2LVxcdGNoYXIgc3RhdF9zdHJpbmdbRVRIX0dTVFJJTkdfTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yMi0jZGVmaW5lIElHQlZGX1NUQVQoY3VycmVudCwgYmFzZSkgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzpcXHRcXHRzaXplb2YoKChzdHJ1Y3QgaWdidmZfYWRhcHRlciAqKTApLVxcdTAwM2VjdXJyZW50KSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNDpcXHRcXHRvZmZzZXRvZihzdHJ1Y3QgaWdidmZfYWRhcHRlciwgY3VycmVudCksIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjU6XFx0XFx0b2Zmc2V0b2Yoc3RydWN0IGlnYnZmX2FkYXB0ZXIsIGJhc2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNzpzdGF0aWMgY29uc3Qgc3RydWN0IGlnYnZmX3N0YXRzIGlnYnZmX2dzdHJpbmdzX3N0YXRzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI4LVxcdHsgXFxcInJ4X3BhY2tldHNcXFwiLCBJR0JWRl9TVEFUKHN0YXRzLmdwcmMsIHN0YXRzLmJhc2VfZ3ByYykgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU6I2RlZmluZSBJR0JWRl9HTE9CQUxfU1RBVFNfTEVOIEFSUkFZX1NJWkUoaWdidmZfZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NzpzdGF0aWMgY29uc3QgY2hhciBpZ2J2Zl9nc3RyaW5nc190ZXN0W11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDgtXFx0XFxcIkxpbmsgdGVzdCAgIChvbi9vZmZsaW5lKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NTE6I2RlZmluZSBJR0JWRl9URVNUX0xFTiBBUlJBWV9TSVpFKGlnYnZmX2dzdHJpbmdzX3Rlc3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo1MzpzdGF0aWMgaW50IGlnYnZmX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01NC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo1NjpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTU3LVxcdHN0cnVjdCBlMTAwMF9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjkwOnN0YXRpYyBpbnQgaWdidmZfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTkxLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo5NjpzdGF0aWMgdm9pZCBpZ2J2Zl9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy05Ny1cXHRcXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMDE6c3RhdGljIGludCBpZ2J2Zl9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMDItXFx0XFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMDc6c3RhdGljIHUzMiBpZ2J2Zl9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTA4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTA5OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTExMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTE0OnN0YXRpYyB2b2lkIGlnYnZmX3NldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1MzIgZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTE1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTE2OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTIxOnN0YXRpYyBpbnQgaWdidmZfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMjc6c3RhdGljIHZvaWQgaWdidmZfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTI4LVxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEyOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjEzMDpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEzMS1cXHRzdHJ1Y3QgZTEwMDBfaHcgKmh3ID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTUyOnN0YXRpYyBpbnQgaWdidmZfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE1NzpzdGF0aWMgaW50IGlnYnZmX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTU4LVxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTYzOnN0YXRpYyBpbnQgaWdidmZfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xNjQtXFx0XFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxNjk6c3RhdGljIHZvaWQgaWdidmZfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTcwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmRydmluZm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE3MjpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTc0OlxcdHN0cnNjcHkoZHJ2aW5mby1cXHUwMDNlZHJpdmVyLCAgaWdidmZfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTc1LVxcdHN0cnNjcHkoZHJ2aW5mby1cXHUwMDNlYnVzX2luZm8sIHBjaV9uYW1lKGFkYXB0ZXItXFx1MDAzZXBkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTc5OnN0YXRpYyB2b2lkIGlnYnZmX2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTgwLVxcdFxcdFxcdFxcdHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xODMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODQ6XFx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODU6XFx0c3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcgPSBhZGFwdGVyLVxcdTAwM2V0eF9yaW5nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODY6XFx0c3RydWN0IGlnYnZmX3JpbmcgKnJ4X3JpbmcgPSBhZGFwdGVyLVxcdTAwM2VyeF9yaW5nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xODctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxOTQ6c3RhdGljIGludCBpZ2J2Zl9zZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE5NS1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE5OTpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjIwMDpcXHRzdHJ1Y3QgaWdidmZfcmluZyAqdGVtcF9yaW5nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yMDEtXFx0aW50IGVyciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzA6XFx0dGVtcF9yaW5nID0gdm1hbGxvYyhzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjMxLVxcdGlmICghdGVtcF9yaW5nKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzY6XFx0aWdidmZfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI0Mi1cXHRpZiAobmV3X3R4X2NvdW50ICE9IGFkYXB0ZXItXFx1MDAzZXR4X3JpbmctXFx1MDAzZWNvdW50KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI0MzpcXHRcXHRtZW1jcHkodGVtcF9yaW5nLCBhZGFwdGVyLVxcdTAwM2V0eF9yaW5nLCBzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNDUtXFx0XFx0dGVtcF9yaW5nLVxcdTAwM2Vjb3VudCA9IG5ld190eF9jb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjQ2OlxcdFxcdGVyciA9IGlnYnZmX3NldHVwX3R4X3Jlc291cmNlcyhhZGFwdGVyLCB0ZW1wX3JpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNDctXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI1MDpcXHRcXHRpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyhhZGFwdGVyLVxcdTAwM2V0eF9yaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNTI6XFx0XFx0bWVtY3B5KGFkYXB0ZXItXFx1MDAzZXR4X3JpbmcsIHRlbXBfcmluZywgc2l6ZW9mKHN0cnVjdCBpZ2J2Zl9yaW5nKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI1My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjU1LVxcdGlmIChuZXdfcnhfY291bnQgIT0gYWRhcHRlci1cXHUwMDNlcnhfcmluZy1cXHUwMDNlY291bnQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjU2OlxcdFxcdG1lbWNweSh0ZW1wX3JpbmcsIGFkYXB0ZXItXFx1MDAzZXJ4X3JpbmcsIHNpemVvZihzdHJ1Y3QgaWdidmZfcmluZykpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI1OC1cXHRcXHR0ZW1wX3JpbmctXFx1MDAzZWNvdW50ID0gbmV3X3J4X2NvdW50O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNTk6XFx0XFx0ZXJyID0gaWdidmZfc2V0dXBfcnhfcmVzb3VyY2VzKGFkYXB0ZXIsIHRlbXBfcmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI2MC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjYzOlxcdFxcdGlnYnZmX2ZyZWVfcnhfcmVzb3VyY2VzKGFkYXB0ZXItXFx1MDAzZXJ4X3JpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI2NTpcXHRcXHRtZW1jcHkoYWRhcHRlci1cXHUwMDNlcnhfcmluZywgdGVtcF9yaW5nLCBzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjY2LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjY3LWVycl9zZXR1cDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjY4OlxcdGlnYnZmX3VwKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjktXFx0dmZyZWUodGVtcF9yaW5nKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI3NTpzdGF0aWMgaW50IGlnYnZmX2xpbmtfdGVzdChzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciwgdTY0ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjkyOnN0YXRpYyB2b2lkIGlnYnZmX2RpYWdfdGVzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yOTMtXFx0XFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX3Rlc3QgKmV0aF90ZXN0LCB1NjQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI5NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI5NTpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMDEtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjMwMjpcXHRpZiAoaWdidmZfbGlua190ZXN0KGFkYXB0ZXIsIFxcdTAwMjZkYXRhWzBdKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzAzLVxcdFxcdGV0aF90ZXN0LVxcdTAwM2VmbGFncyB8PSBFVEhfVEVTVF9GTF9GQUlMRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMDk6c3RhdGljIHZvaWQgaWdidmZfZ2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMTAtXFx0XFx0XFx0ICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMTY6c3RhdGljIGludCBpZ2J2Zl9zZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMxNy1cXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzIyOnN0YXRpYyBpbnQgaWdidmZfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMyMy1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzI2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzI3OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzM3OnN0YXRpYyBpbnQgaWdidmZfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMzOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzQxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzQyOlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzQzLVxcdHN0cnVjdCBlMTAwMF9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozNzQ6c3RhdGljIGludCBpZ2J2Zl9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM3NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM3NjpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzc4LVxcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM3OTpcXHRcXHRpZ2J2Zl9yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODAtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozODM6c3RhdGljIHZvaWQgaWdidmZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzg0LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzg2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mzg3OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzg4LVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM5MDpcXHRpZ2J2Zl91cGRhdGVfc3RhdHMoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSUdCVkZfR0xPQkFMX1NUQVRTX0xFTjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5Mi1cXHRcXHRjaGFyICpwID0gKGNoYXIgKilhZGFwdGVyICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzkzOlxcdFxcdFxcdCAgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9vZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5NC1cXHRcXHRjaGFyICpiID0gKGNoYXIgKilhZGFwdGVyICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mzk1OlxcdFxcdFxcdCAgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uYmFzZV9zdGF0X29mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mzk2OlxcdFxcdGRhdGFbaV0gPSAoKGlnYnZmX2dzdHJpbmdzX3N0YXRzW2ldLnNpemVvZl9zdGF0ID09XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5Ny1cXHRcXHRcXHQgICAgc2l6ZW9mKHU2NCkpID8gKCoodTY0ICopcCAtICoodTY0ICopYikgOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDAyOnN0YXRpYyBpbnQgaWdidmZfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHN0cmluZ3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQxNDpzdGF0aWMgdm9pZCBpZ2J2Zl9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1MzIgc3RyaW5nc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MTUtXFx0XFx0XFx0ICAgICAgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDIxLVxcdGNhc2UgRVRIX1NTX1RFU1Q6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQyMjpcXHRcXHRtZW1jcHkoZGF0YSwgKmlnYnZmX2dzdHJpbmdzX3Rlc3QsIHNpemVvZihpZ2J2Zl9nc3RyaW5nc190ZXN0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQyMy1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MjUtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIElHQlZGX0dMT0JBTF9TVEFUU19MRU47IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0MjY6XFx0XFx0XFx0bWVtY3B5KHAsIGlnYnZmX2dzdHJpbmdzX3N0YXRzW2ldLnN0YXRfc3RyaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MjctXFx0XFx0XFx0ICAgICAgIEVUSF9HU1RSSU5HX0xFTik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpZ2J2Zl9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDM1LVxcdC5zdXBwb3J0ZWRfY29hbGVzY2VfcGFyYW1zID0gRVRIVE9PTF9DT0FMRVNDRV9SWF9VU0VDUyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDM2OlxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gaWdidmZfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQzNzpcXHQuZ2V0X3JlZ3NfbGVuXFx0XFx0PSBpZ2J2Zl9nZXRfcmVnc19sZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQzODpcXHQuZ2V0X3JlZ3NcXHRcXHQ9IGlnYnZmX2dldF9yZWdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0Mzk6XFx0LmdldF93b2xcXHRcXHQ9IGlnYnZmX2dldF93b2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0MDpcXHQuc2V0X3dvbFxcdFxcdD0gaWdidmZfc2V0X3dvbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQxOlxcdC5nZXRfbXNnbGV2ZWxcXHRcXHQ9IGlnYnZmX2dldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQyOlxcdC5zZXRfbXNnbGV2ZWxcXHRcXHQ9IGlnYnZmX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQzOlxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBpZ2J2Zl9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NDQtXFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NDU6XFx0LmdldF9lZXByb21fbGVuXFx0XFx0PSBpZ2J2Zl9nZXRfZWVwcm9tX2xlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ2OlxcdC5nZXRfZWVwcm9tXFx0XFx0PSBpZ2J2Zl9nZXRfZWVwcm9tLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NDc6XFx0LnNldF9lZXByb21cXHRcXHQ9IGlnYnZmX3NldF9lZXByb20sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0ODpcXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gaWdidmZfZ2V0X3JpbmdwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ5OlxcdC5zZXRfcmluZ3BhcmFtXFx0XFx0PSBpZ2J2Zl9zZXRfcmluZ3BhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NTA6XFx0LmdldF9wYXVzZXBhcmFtXFx0XFx0PSBpZ2J2Zl9nZXRfcGF1c2VwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDUxOlxcdC5zZXRfcGF1c2VwYXJhbVxcdFxcdD0gaWdidmZfc2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MjpcXHQuc2VsZl90ZXN0XFx0XFx0PSBpZ2J2Zl9kaWFnX3Rlc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MzpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGlnYnZmX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NTQ6XFx0LmdldF9zdHJpbmdzXFx0XFx0PSBpZ2J2Zl9nZXRfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU1OlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gaWdidmZfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1NjpcXHQuZ2V0X2NvYWxlc2NlXFx0XFx0PSBpZ2J2Zl9nZXRfY29hbGVzY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1NzpcXHQuc2V0X2NvYWxlc2NlXFx0XFx0PSBpZ2J2Zl9zZXRfY29hbGVzY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1ODpcXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBpZ2J2Zl9nZXRfbGlua19rc2V0dGluZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1OTpcXHQuc2V0X2xpbmtfa3NldHRpbmdzXFx0PSBpZ2J2Zl9zZXRfbGlua19rc2V0dGluZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQ2MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ2Mjp2b2lkIGlnYnZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NjQ6XFx0bmV0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZpZ2J2Zl9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDY1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTctLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE4OnN0cnVjdCBpZ2J2Zl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTk6c3RydWN0IGlnYnZmX2FkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg9Mjc9ZW51bSBsYXRlbmN5X3JhbmdlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDo4NjplbnVtIGlnYnZmX2JvYXJkcyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC04Ny1cXHRib2FyZF92ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDo5MTpzdHJ1Y3QgaWdidmZfcXVldWVfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtOTItXFx0dTY0IHBhY2tldHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTk4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6OTk6c3RydWN0IGlnYnZmX2J1ZmZlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xMDAtXFx0ZG1hX2FkZHJfdCBkbWE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTExOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjExOTp1bmlvbiBpZ2J2Zl9kZXNjIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTEyMC1cXHR1bmlvbiBlMTAwMF9hZHZfcnhfZGVzYyByeF9kZXNjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxMjU6c3RydWN0IGlnYnZmX3Jpbmcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTI2OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyOyAgLyogYmFja2xpbmsgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjEyNzpcXHR1bmlvbiBpZ2J2Zl9kZXNjICpkZXNjO1xcdC8qIHBvaW50ZXIgdG8gcmluZyBtZW1vcnkgICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xMjgtXFx0ZG1hX2FkZHJfdCBkbWE7XFx0XFx0LyogcGh5cyBhZGRyZXNzIG9mIHJpbmcgICAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTM4LVxcdC8qIGFycmF5IG9mIGJ1ZmZlciBpbmZvcm1hdGlvbiBzdHJ1Y3RzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxMzk6XFx0c3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNDAtXFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE1MTpcXHRzdHJ1Y3QgaWdidmZfcXVldWVfc3RhdHMgc3RhdHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNTItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTU0LS8qIGJvYXJkIHNwZWNpZmljIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE1NTpzdHJ1Y3QgaWdidmZfYWRhcHRlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNTYtXFx0c3RydWN0IHRpbWVyX2xpc3Qgd2F0Y2hkb2dfdGltZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE2MTpcXHRjb25zdCBzdHJ1Y3QgaWdidmZfaW5mbyAqZWk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE3NS1cXHQvKiBUeCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTc2OlxcdHN0cnVjdCBpZ2J2Zl9yaW5nICp0eF9yaW5nIC8qIE9uZSBwZXIgYWN0aXZlIHF1ZXVlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNzctXFx0X19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTkwLVxcdC8qIFJ4ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxOTE6XFx0c3RydWN0IGlnYnZmX3JpbmcgKnJ4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xOTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTIyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjIyOTpzdHJ1Y3QgaWdidmZfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yMzAtXFx0ZW51bSBlMTAwMF9tYWNfdHlwZVxcdG1hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjMzLVxcdHZvaWRcXHRcXHRcXHQoKmluaXRfb3BzKShzdHJ1Y3QgZTEwMDBfaHcgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyMzQ6XFx0czMyXFx0XFx0XFx0KCpnZXRfdmFyaWFudHMpKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjM1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTI0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI0NzplbnVtIGlnYnZmX3N0YXRlX3Qge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjQ4LVxcdF9fSUdCVkZfVEVTVElORyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjUzOmV4dGVybiBjaGFyIGlnYnZmX2RyaXZlcl9uYW1lW107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTU6dm9pZCBpZ2J2Zl9zZXRfZXRodG9vbF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTc6aW50IGlnYnZmX3VwKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjU4OnZvaWQgaWdidmZfZG93bihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI1OTp2b2lkIGlnYnZmX3JlaW5pdF9sb2NrZWQoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNjA6aW50IGlnYnZmX3NldHVwX3J4X3Jlc291cmNlcyhzdHJ1Y3QgaWdidmZfYWRhcHRlciAqLCBzdHJ1Y3QgaWdidmZfcmluZyAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI2MTppbnQgaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICosIHN0cnVjdCBpZ2J2Zl9yaW5nICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjYyOnZvaWQgaWdidmZfZnJlZV9yeF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX3JpbmcgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNjM6dm9pZCBpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyhzdHJ1Y3QgaWdidmZfcmluZyAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI2NDp2b2lkIGlnYnZmX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgaWdidmZfYWRhcHRlciAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI0LSNpbmNsdWRlIFxcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjU6I2luY2x1ZGUgXFxcImlnYnZmLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mjc6Y2hhciBpZ2J2Zl9kcml2ZXJfbmFtZVtdID0gXFxcImlnYnZmXFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyODpzdGF0aWMgY29uc3QgY2hhciBpZ2J2Zl9kcml2ZXJfc3RyaW5nW10gPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI5LVxcdFxcdCAgXFxcIkludGVsKFIpIEdpZ2FiaXQgVmlydHVhbCBGdW5jdGlvbiBOZXR3b3JrIERyaXZlclxcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MzA6c3RhdGljIGNvbnN0IGNoYXIgaWdidmZfY29weXJpZ2h0W10gPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTMxLVxcdFxcdCAgXFxcIkNvcHlyaWdodCAoYykgMjAwOSAtIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uXFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTM2PU1PRFVMRV9QQVJNX0RFU0MoZGVidWcsIFxcXCJEZWJ1ZyBsZXZlbCAoMD1ub25lLC4uLiwxNj1hbGwpXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mzg6c3RhdGljIGludCBpZ2J2Zl9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mzk6c3RhdGljIHZvaWQgaWdidmZfcmVzZXQoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDA6c3RhdGljIHZvaWQgaWdidmZfc2V0X2ludGVycnVwdF9jYXBhYmlsaXR5KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQxOnN0YXRpYyB2b2lkIGlnYnZmX3Jlc2V0X2ludGVycnVwdF9jYXBhYmlsaXR5KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQzOnN0YXRpYyBzdHJ1Y3QgaWdidmZfaW5mbyBpZ2J2Zl92Zl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ0LVxcdC5tYWNcXHRcXHQ9IGUxMDAwX3ZmYWRhcHQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1MDpzdGF0aWMgc3RydWN0IGlnYnZmX2luZm8gaWdidmZfaTM1MF92Zl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUxLVxcdC5tYWNcXHRcXHQ9IGUxMDAwX3ZmYWRhcHRfaTM1MCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjU3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWdidmZfaW5mbyAqaWdidmZfaW5mb190YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1ODpcXHRbYm9hcmRfdmZdXFx0PSBcXHUwMDI2aWdidmZfdmZfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1OTpcXHRbYm9hcmRfaTM1MF92Zl1cXHQ9IFxcdTAwMjZpZ2J2Zl9pMzUwX3ZmX2luZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTYyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjYzOiAqIGlnYnZmX2Rlc2NfdW51c2VkIC0gY2FsY3VsYXRlIGlmIHdlIGhhdmUgdW51c2VkIGRlc2NyaXB0b3JzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjQtICogQHJpbmc6IGFkZHJlc3Mgb2YgcmVjZWl2ZSByaW5nIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTY1LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo2NjpzdGF0aWMgaW50IGlnYnZmX2Rlc2NfdW51c2VkKHN0cnVjdCBpZ2J2Zl9yaW5nICpyaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTc0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjc1OiAqIGlnYnZmX3JlY2VpdmVfc2tiIC0gaGVscGVyIGZ1bmN0aW9uIHRvIGhhbmRsZSBSeCBpbmRpY2F0aW9uc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTc2LSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtODItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjgzOnN0YXRpYyB2b2lkIGlnYnZmX3JlY2VpdmVfc2tiKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTg0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MTAzOnN0YXRpYyBpbmxpbmUgdm9pZCBpZ2J2Zl9yeF9jaGVja3N1bV9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTA0LVxcdFxcdFxcdFxcdFxcdCB1MzIgc3RhdHVzX2Vyciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEyOC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoxMjk6ICogaWdidmZfYWxsb2NfcnhfYnVmZmVycyAtIFJlcGxhY2UgdXNlZCByZWNlaXZlIGJ1ZmZlcnM7IHBhY2tldCBzcGxpdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEzMC0gKiBAcnhfcmluZzogYWRkcmVzcyBvZiByaW5nIHN0cnVjdHVyZSB0byByZXBvcHVsYXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjEzMzpzdGF0aWMgdm9pZCBpZ2J2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpZ2J2Zl9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEzNC1cXHRcXHRcXHRcXHQgICBpbnQgY2xlYW5lZF9jb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjEzNjpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IHJ4X3JpbmctXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTM3LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLVxcdTAwM2VuZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzktXFx0dW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MTQwOlxcdHN0cnVjdCBpZ2J2Zl9idWZmZXIgKmJ1ZmZlcl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTE0MS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjIzNjogKiBpZ2J2Zl9jbGVhbl9yeF9pcnEgLSBTZW5kIHJlY2VpdmVkIGRhdGEgdXAgdGhlIG5ldHdvcmsgc3RhY2s7IGxlZ2FjeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNy0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI0My0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjQ0OnN0YXRpYyBib29sIGlnYnZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNDUtXFx0XFx0XFx0ICAgICAgIGludCAqd29ya19kb25lLCBpbnQgd29ya190b19kbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjI0NzpcXHRzdHJ1Y3QgaWdidmZfcmluZyAqcnhfcmluZyA9IGFkYXB0ZXItXFx1MDAzZXJ4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjQ4LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLVxcdTAwM2VuZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNTAtXFx0dW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2MsICpuZXh0X3J4ZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyNTE6XFx0c3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm8sICpuZXh0X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNTItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozNTA6XFx0XFx0aWdidmZfcnhfY2hlY2tzdW1fYWR2KGFkYXB0ZXIsIHN0YXRlcnIsIHNrYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzUxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM1NDpcXHRcXHRpZ2J2Zl9yZWNlaXZlX3NrYihhZGFwdGVyLCBuZXRkZXYsIHNrYiwgc3RhdGVycixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNTUtXFx0XFx0XFx0XFx0ICByeF9kZXNjLVxcdTAwM2V3Yi51cHBlci52bGFuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM2MS1cXHRcXHRpZiAoY2xlYW5lZF9jb3VudCBcXHUwMDNlPSBJR0JWRl9SWF9CVUZGRVJfV1JJVEUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozNjI6XFx0XFx0XFx0aWdidmZfYWxsb2NfcnhfYnVmZmVycyhyeF9yaW5nLCBjbGVhbmVkX2NvdW50KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNjMtXFx0XFx0XFx0Y2xlYW5lZF9jb3VudCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNzMtXFx0cnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbiA9IGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mzc0OlxcdGNsZWFuZWRfY291bnQgPSBpZ2J2Zl9kZXNjX3VudXNlZChyeF9yaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzc2LVxcdGlmIChjbGVhbmVkX2NvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM3NzpcXHRcXHRpZ2J2Zl9hbGxvY19yeF9idWZmZXJzKHJ4X3JpbmcsIGNsZWFuZWRfY291bnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozODY6c3RhdGljIHZvaWQgaWdidmZfcHV0X3R4YnVmKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM4NzpcXHRcXHRcXHQgICAgc3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQwOS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo0MTA6ICogaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzIC0gYWxsb2NhdGUgVHggcmVzb3VyY2VzIChEZXNjcmlwdG9ycylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MTEtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MTUtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQxNjppbnQgaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQxNzpcXHRcXHRcXHQgICAgIHN0cnVjdCBpZ2J2Zl9yaW5nICp0eF9yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDIyOlxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGlnYnZmX2J1ZmZlcikgKiB0eF9yaW5nLVxcdTAwM2Vjb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MjMtXFx0dHhfcmluZy1cXHUwMDNlYnVmZmVyX2luZm8gPSB2emFsbG9jKHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDQ4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQ0OTogKiBpZ2J2Zl9zZXR1cF9yeF9yZXNvdXJjZXMgLSBhbGxvY2F0ZSBSeCByZXNvdXJjZXMgKERlc2NyaXB0b3JzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ1MC0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ1NC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDU1OmludCBpZ2J2Zl9zZXR1cF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDU2OlxcdFxcdFxcdCAgICAgc3RydWN0IGlnYnZmX3JpbmcgKnJ4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo0NjE6XFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgaWdidmZfYnVmZmVyKSAqIHJ4X3JpbmctXFx1MDAzZWNvdW50O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ2Mi1cXHRyeF9yaW5nLVxcdTAwM2VidWZmZXJfaW5mbyA9IHZ6YWxsb2Moc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OTItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDkzOiAqIGlnYnZmX2NsZWFuX3R4X3JpbmcgLSBGcmVlIFR4IEJ1ZmZlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OTQtICogQHR4X3Jpbmc6IHJpbmcgdG8gYmUgY2xlYW5lZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ5NS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDk2OnN0YXRpYyB2b2lkIGlnYnZmX2NsZWFuX3R4X3Jpbmcoc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDk3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo0OTg6XFx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSB0eF9yaW5nLVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQ5OTpcXHRzdHJ1Y3QgaWdidmZfYnVmZmVyICpidWZmZXJfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MDAtXFx0dW5zaWduZWQgbG9uZyBzaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTA4LVxcdFxcdGJ1ZmZlcl9pbmZvID0gXFx1MDAyNnR4X3JpbmctXFx1MDAzZWJ1ZmZlcl9pbmZvW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUwOTpcXHRcXHRpZ2J2Zl9wdXRfdHhidWYoYWRhcHRlciwgYnVmZmVyX2luZm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUxMC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUxMjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBpZ2J2Zl9idWZmZXIpICogdHhfcmluZy1cXHUwMDNlY291bnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTEzLVxcdG1lbXNldCh0eF9yaW5nLVxcdTAwM2VidWZmZXJfaW5mbywgMCwgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MjUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NTI2OiAqIGlnYnZmX2ZyZWVfdHhfcmVzb3VyY2VzIC0gRnJlZSBUeCBSZXNvdXJjZXMgcGVyIFF1ZXVlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTI3LSAqIEB0eF9yaW5nOiByaW5nIHRvIGZyZWUgcmVzb3VyY2VzIGZyb21cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUzMC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NTMxOnZvaWQgaWdidmZfZnJlZV90eF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUzNC1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTc6MjAuNTk5Nzg1NzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzM5NzY0MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBpZ2J2ZmAgYW5kIERldGVybWluaW5nIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cbk9rYXksIHNvIHRoZSBgaWdidmZgIGRyaXZlciBpcyBkZWZpbml0ZWx5IHByZXNlbnQgYW5kIGl0J3MgYSBQQ0kgZHJpdmVyLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBpdCdzIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpcyB0aGUga2V5IHRlc3QgZW52aXJvbm1lbnQuIFFFTVUgZW11bGF0ZXMgYGlnYmAsIGFuZCBzaW5jZSBgaWdiYCBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gYGlnYnZmYCAqc2hvdWxkKiBiZSBwcm9iZS1hYmxlIGlmIFNSLUlPViBpcyBlbmFibGVkIG9uIHRoZSBgaWdiYCBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcImRvZXMgc3l6a2FsbGVyIGV2ZW4gZW5hYmxlIFNSLUlPViBvbiBgaWdiYD9cIiBJIGNhbid0IGltbWVkaWF0ZWx5IHJlY2FsbC4gV2FpdCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBhIGBzeXpfcGNpdmZgIGNhbGw/IE5vLCBpdCBkb2Vzbid0LlxuXG5CdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQ6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiByZXR1cm4gZmFsc2UuXCIgVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgYGlnYnZmYCB0cnVseSAqaW1wb3NzaWJsZSogdG8gcmVhY2g/IElmIFFFTVUgZW11bGF0ZXMgYGlnYmAsIGFuZCBgaWdiYCBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gKnRlY2huaWNhbGx5KiwgYGlnYnZmYCBpcyByZWFjaGFibGUgd2l0aGluIFFFTVUgd2l0aCBzcGVjaWZpYyBjb25maWd1cmF0aW9uLlxuXG5Ib3dldmVyLCB0aGUgZmFjdCB0aGF0IHRoZSBwYXRjaCB3YXMgYXBwbGllZCBieSBgc3l6LWNsdXN0ZXJgIGFuZCB0aGUgYXV0aG9yIGlzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAgc3VnZ2VzdHMgdGhhdCBzeXprYWxsZXIgKmRpZCogZmluZCBhIGJ1ZyBvciBpcyBhY3RpdmVseSBmdXp6aW5nIHRoaXMgY29kZSEgVGhpcyBpcyBzaWduaWZpY2FudC4gSXQncyBhIHNpbXVsYXRlZCBwYXRjaCwgYnV0IGl0IGNvbmZpcm1zIHRoZSBwYXRoIGlzIHJlbGV2YW50LlxuXG5JIG5lZWQgdG8gbG9vayBhdCB0aGUgY29kZS4gVGhlIGNoYW5nZSBpbiBgaWdidmYvbmV0ZGV2LmNgIGludm9sdmVzIHJlbW92aW5nIGBpZiAoY291bnQpIGNvdW50LS07YCBiZWZvcmUgYSBgd2hpbGUgKGNvdW50LS0pYCBsb29wIHdpdGhpbiBgaWdidmZfdHhfbWFwX2FkdmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbHRlcmluZyBsb29wIGJlaGF2aW9yLCB3aGljaCBpcyBkZWZpbml0ZWx5IGludGVyZXN0aW5nLlxuXG5XaGF0IGFib3V0IGBpY2VgIGFuZCBgaWRwZmA/IFRob3NlIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzLCBhbmQgdGhlcmUncyBubyB3YXkgdGhleSdyZSByZWFjaGFibGUgaW4gdGhlIHRlc3QgZW52aXJvbm1lbnQuIEJ1dCBgaWdidmZgICppcyogcmVhY2hhYmxlIGlmIFNSLUlPViBvbiBgaWdiYCBpcyB1dGlsaXplZC5cblxuTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzOiBcIklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXCIgU2luY2UgYGlnYnZmYCAqaXMqIHJlYWNoYWJsZSAoYWxiZWl0IHdpdGggY29uZmlndXJhdGlvbikgaW4gUUVNVSwgYW5kIHNpbmNlIHRoZSBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyBgaWdidmZfdHhfbWFwX2FkdmAsIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYXR0ZW50aW9uIG5vdyBzaGlmdHMgc3BlY2lmaWNhbGx5IHRvIGBpZ2J2Zl90eF9tYXBfYWR2YC4gSXQncyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gY2FsbGVkIGJ5IGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YC4gSSBuZWVkIHRvIHZlcmlmeSBpdHMgY2FsbCBzaXRlcyBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3MzQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTc6MjkuOTM5NTUyNzU5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MDk4MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYnZmX3R4X21hcF9hZHZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIxMDc9c3RhdGljIGludCBpZ2J2Zl9tYXliZV9zdG9wX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBzaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMTM2OnN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNy1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWdidmZfcmluZyAqdHhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIyNjU9c3RhdGljIG5ldGRldl90eF90IGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzMjItXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjMyMzpcXHRjb3VudCA9IGlnYnZmX3R4X21hcF9hZHYoYWRhcHRlciwgdHhfcmluZywgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzozMC4wMTM2NTUwMTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAzNjM0MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldDpcblxuKipEaXZpbmcgaW50byB0aGUgSUdCVkYgVHJhbnNtaXQgUGF0aCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGlnYnZmX3R4X21hcF9hZHZgIGlzIGdldHRpbmcgaW52b2tlZCBieSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAuIFRoYXQncyB0aGUgZmlyc3QgY29ubmVjdGlvbi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGVyZSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgY2FsbGVkIGZyb20uIEFoLCBpdCdzIGBpZ2J2Zl94bWl0X2ZyYW1lYC4gQWxyaWdodCwgbm93IEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgd2hvbGUgdHJhbnNtaXQgZmxvdy4gVGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYGlnYnZmX3htaXRfZnJhbWVgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIuIExldCdzIHNlZSBob3cgdGhhdCBvbmUgaXMgaGFuZGxpbmcgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQwOCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjE3OjMzLjQxNzI5MzA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTkwMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYnZmX3htaXRfZnJhbWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIyMDY9c3RhdGljIGlubGluZSB2b2lkIGlnYnZmX3R4X3F1ZXVlX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIyNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjI2NTpzdGF0aWMgbmV0ZGV2X3R4X3QgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIyNjYtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjMzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMzM5OnN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM0MC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjM1MjpcXHRyZXR1cm4gaWdidmZfeG1pdF9mcmFtZV9yaW5nX2Fkdihza2IsIG5ldGRldiwgdHhfcmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1My19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yNjY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWdidmZfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI2NzEtXFx0Lm5kb19zdG9wXFx0XFx0PSBpZ2J2Zl9jbG9zZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyNjcyOlxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gaWdidmZfeG1pdF9mcmFtZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNjczLVxcdC5uZG9fc2V0X3J4X21vZGVcXHQ9IGlnYnZmX3NldF9yeF9tb2RlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzozMy40NzU4ODczMTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE4MjU1MDk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgaWdidmZfeG1pdF9mcmFtZWAsIHdoaWNoIEkga25vdyBpcyB0aGUgYG5kb19zdGFydF94bWl0YCBmdW5jdGlvbiBpbiB0aGUgYGlnYnZmYCBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgeWVzLCBpZiBgaWdidmZgIGlzIGV2ZW4gKnJlYWNoYWJsZSouIFVzdWFsbHksIHN5emthbGxlciBkb2Vzbid0IGZvY3VzIG9uIGBpZ2J2ZmAgYmVjYXVzZSBpdCBuZWVkcyBTUi1JT1Ygc2V0IHVwIG9uIHRoZSBgaWdiYCBkZXZpY2UsIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIFFFTVUgY29uZmlncyB0aGF0IHN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBwcm92aWRlLlxuXG5XYWl0LCB0aGUgcHJvbXB0IHNheXMgdG8gcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gSXMgYGlnYnZmYCBpbXBvc3NpYmxlIHRvIHJlYWNoPyBObywgYWN0dWFsbHksIHdpdGggdGhlIHJpZ2h0IFFFTVUgY29uZmlndXJhdGlvbiDigJMgc3BlY2lmaWNhbGx5IGVtdWxhdGluZyBgaWdiYCBhbmQgZW5hYmxpbmcgU1ItSU9WIOKAkyBpdCAqaXMqIHJlYWNoYWJsZS4gYGljZWAgYW5kIGBpZHBmYCwgb24gdGhlIG90aGVyIGhhbmQsIGFyZSBhIG5vLWdvIHNpbmNlIHRoZXJlIGlzbid0IHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhvc2UuXG5cbkJ1dCB3aGF0IGlmIHRoZSBwYXRjaCBpcyBqdXN0IHBoeXNpY2FsIG5ldHdvcmsgZHJpdmVyIGNoYW5nZXM/IFRob3NlIGFyZSB1c3VhbGx5IHVucmVhY2hhYmxlIHVubGVzcyB0aGVyZSBpcyBhbiBlbXVsYXRvciwgYW5kIGBpZ2J2ZmAgaGFzIGFuIGVtdWxhdG9yIChRRU1VIGBpZ2JgIHdpdGggU1ItSU9WKS4gTm93LCBsZXQncyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCB3aGljaCBpcyBgSUdCVkZgLlxuXG5XaGF0IGFib3V0IGBpY2VgIGFuZCBgaWRwZmA/IFRob3NlIGNvbmZpZ3MgYXJlIGBJQ0VgIGFuZCBgSURQRmAsIHJlc3BlY3RpdmVseS5cblxuSWYgSSdtIGdvaW5nIHRvIHNheSB0aGlzIGlzIHdvcnRoIGZ1enppbmcgKGBXb3J0aEZ1enppbmc9dHJ1ZWApLCB0aGVuIEkgbmVlZCB0byBsaXN0IGVpdGhlciBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgb3IgYGlnYnZmX3htaXRfZnJhbWVgIGluIGBGb2N1c1N5bWJvbHNgLiBMZXQncyBkb3VibGUtY2hlY2sgYWdhaW4sIGBpZ2JgIHdpdGggU1ItSU9WIGlzIHN1cHBvcnRlZCBmcm9tIFFFTVUgdmVyc2lvbiA4LjAsIHNvIHllcywgSSBjYW4gcHJvYmUgYGlnYnZmYC5cblxuVGhlcmVmb3JlLCBJJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgYmVjYXVzZSBgaWdidmZgICppcyogcmVhY2hhYmxlIHRocm91Z2ggUUVNVSdzIGBpZ2JgIGVtdWxhdGlvbi5cblxuVGhlIHBhdGNoICphbHNvKiB0b3VjaGVzIGBpY2VgIGFuZCBgaWRwZmAsIGJ1dCB0aGV5IGFyZSBub3QgcmVhY2hhYmxlLiBJIHNob3VsZG4ndCBmb2N1cyBvbiB0aGVtLiBJICpzaG91bGQqIGxpc3QgdGhlaXIgY29uZmlncywgdGhvdWdoLCBiZWNhdXNlIFwiRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncy4uLiBPbmx5IGxpc3QgdGhvc2UgdGhhdCBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuXCIgQnV0IHdhaXQsIGFyZSB0aGV5ICp0cnVseSogdW5yZWFjaGFibGU/XG5cblRoZSBwcm9tcHQgc2F5cyB0aGF0IGlmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFNpbmNlIGBpZ2J2ZmAgaXMgcmVhY2hhYmxlLCB0aGUgcGF0Y2gsIGFzIGEgd2hvbGUsIGlzIHdvcnRoIGZ1enppbmcgKGF0IGxlYXN0IHRoZSBgaWdidmZgIHBhcnQpLlxuXG5TbywgaW4gdGhlIGVuZCwgSSdsbCBsaXN0IGBJR0JWRmAsIGBJQ0VgLCBhbmQgYElEUEZgLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGBpZHBmX2lkYy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyMzYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTc6NDMuNjU4NDQzNDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTkzOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTEwNzE9dm9pZCBpZHBmX2lkY19pc3N1ZV9yZXNldF9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX2NvcmVfZGV2X2luZm8gKmNkZXZfaW5mbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTA3Mjp2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMDczLVxcdFxcdFxcdCAgICAgZW51bSBpaWRjX3JkbWFfZXZlbnRfdHlwZSBldmVudF90eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYz0xMTI9c3RhdGljIGludCBpZHBmX2lkY19pbml0X2F1eF92cG9ydF9kZXYoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jLTE0Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmM6MTQ4OiAqIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50IC0gRnVuY3Rpb24gdG8gaGFuZGxlIElEQyB2cG9ydCBtdHUgY2hhbmdlIGV2ZW50c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYy0xNDktICogQHZkZXZfaW5mbzogSURDIHZwb3J0IGRldmljZSBpbmZvIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYy0xNTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jOjE1Mjp2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMtMTUzLVxcdFxcdFxcdCAgICAgZW51bSBpaWRjX3JkbWFfZXZlbnRfdHlwZSBldmVudF90eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTIwMDQ9aW50IGlkcGZfaW5pdGlhdGVfc29mdF9yZXNldChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMjA1My1cXHRjYXNlIElEUEZfU1JfTVRVX0NIQU5HRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MjA1NDpcXHRcXHRpZHBmX2lkY192ZGV2X210dV9ldmVudCh2cG9ydC1cXHUwMDNldmRldl9pbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yMDU1LVxcdFxcdFxcdFxcdFxcdElJRENfUkRNQV9FVkVOVF9CRUZPUkVfTVRVX0NIQU5HRSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMjExNi1cXHRpZiAocmVzZXRfY2F1c2UgPT0gSURQRl9TUl9NVFVfQ0hBTkdFKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoyMTE3OlxcdFxcdGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHZwb3J0LVxcdTAwM2V2ZGV2X2luZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTIxMTgtXFx0XFx0XFx0XFx0XFx0SUlEQ19SRE1BX0VWRU5UX0FGVEVSX01UVV9DSEFOR0UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo0My43MTg0NDIwMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU5Nzk2NzU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRHJpdmVyIFJlYWNoYWJpbGl0eSBhbmQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGRyaXZlciBjb2RlIGFuZCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXMgd2hhdCdzIGFjdHVhbGx5ICpyZWxldmFudCogdG8gaW52ZXN0aWdhdGUuIGBpZHBmYCBpc24ndCByZWFjaGFibGUgd2l0aGluIHRoZSBRRU1VIGVudmlyb25tZW50LCBhbmQgbmVpdGhlciBpcyBgaWNlYCwgc28gdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gU2luY2UgYGlnYnZmYCAqaXMqIHJlYWNoYWJsZSwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uXG5cblRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgc2VlbSB0byBjZW50ZXIgYXJvdW5kIGBpZ2J2ZmAsIGFuZCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaWdidmZfdHhfbWFwX2FkdmAgZnVuY3Rpb24uIEFoLCBpdCdzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiDigJMgbWVhbmluZyBpdCdzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gaXRzIGNhbGxpbmcgZnVuY3Rpb25zLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB0cmFjZSAqdXAqIHRoZSBjYWxsIGNoYWluLiBgaWdidmZfdHhfbWFwX2FkdmAgaXMgY2FsbGVkIGJ5IGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YC4gSSdsbCBhZGQgYGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHZgIHRvIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QsIHRoYXQgbWFrZXMgc2Vuc2UuIFdhaXQgYSBtaW51dGUuLi4gdGhhdCBmdW5jdGlvbiBpcyBhbHNvIHN0YXRpYyEgVGhlICpleHBvcnRlZCogb25lIGlzIGFjdHVhbGx5IGBpZ2J2Zl94bWl0X2ZyYW1lYCwgc28gSSdsbCBhZGQgdGhhdCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCBpbnN0ZWFkLlxuXG5Ob3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBjaGFuZ2VzIGluIGBpY2VfbWFpbi5jYC4gSG1tLCB0aGlzIG1vZGlmaWNhdGlvbiBpbiBgaWNlX3Jlc3VtZWAgaW50cm9kdWNlcyBhIHdhaXRpbmcgbWVjaGFuaXNtIHdpdGggYGljZV93YWl0X2Zvcl9yZXNldGAuIFRoZSBjb2RlIGF0dGVtcHRzIHRvIHdhaXQgZm9yIHRoZSBzY2hlZHVsZWQgcmVzZXQgdG8gZmluaXNoIGJlZm9yZSByZXR1cm5pbmcsIHdoaWNoIHNlZW1zIHNlbnNpYmxlIGZvciBoYW5kbGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEknbGwgbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRoaXMuXG5cblRoZW4sIHRoZXJlJ3MgYSBjaGFuZ2UgaW4gYGljZV92Zl9saWIuY2Agd2hpY2ggaW5jbHVkZXMgYGljZV9yZXNldF9pbnRlcnJ1cHRzYCwgd2hpY2ggemVyb2VzIG91dCBpbnRlcnJ1cHQtcmVsYXRlZCByZWdpc3RlcnMuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNvbnNpZGVyYXRpb24gZm9yIGludGVycnVwdCBtYW5hZ2VtZW50IGFuZCBob3cgaXQgbWlnaHQgaW50ZXJhY3Qgd2l0aCBvdXIgdGFyZ2V0IGNvZGUuXG5cbkFscmlnaHQsIGJhY2sgdG8gdGhlIGNvbmZpZ3VyYXRpb24uIEdpdmVuIHRoYXQgb25seSBgaWdidmZgIGlzIHJlYWNoYWJsZSwgSSBuZWVkIHRvIGxpc3Qgd2hhdCBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBsaXN0IHdoYXQgbmVlZHMgdG8gYmUgKmV4cGxpY2l0bHkqIGVuYWJsZWQuIEkgaW5pdGlhbGx5IGFzc3VtZWQgdGhhdCBzaW5jZSBgaWNlYCBhbmQgYGlkcGZgIGFyZW4ndCByZWFjaGFibGUsIEkgY291bGQgZXhjbHVkZSB0aGVtLiBIb3dldmVyLCBpZiBJIGV4Y2x1ZGUgYElDRWAgYW5kIGBJRFBGYCwgdGhlIG1vZGlmaWVkIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIG1vZHVsZXMgd29uJ3QgZXZlbiBiZSBjb21waWxlZCBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCB0aHVzLCB3b24ndCBiZSB0ZXN0ZWQuIFNvLCBpdCdzIGJlc3QgdG8gYmUgY29tcHJlaGVuc2l2ZS4gVGh1cywgSSBuZWVkIHRvIGluY2x1ZGUgdGhlbSB0byBlbnN1cmUgdGhlIGJ1aWxkIHByb2Nlc3MgcGlja3MgdGhlbSB1cC4gU28sIGl0IHNlZW1zIEkgc2hvdWxkIGxpc3QgYElDRWAsIGBJRFBGYCwgYW5kIGBJR0JWRmAgaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LlxuXG5CdXQsIEkgbXVzdCB2ZXJpZnkgdGhhdCBgSUdCVkZgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZy4gVGhpcyB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gdG8gY29uZmlybSB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgdGhlIGNvcnJlY3Qgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTM3NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo1My4zMTY0MTI0NDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTcyMDA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUdCVkZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo1My4zNzQ1OTg5NzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMzgwMjY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbjogSW50ZWwgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gVGhlIHRhc2sgYXQgaGFuZCBsaWtlbHkgaW52b2x2ZXMgY29uZmlndXJpbmcgb3IgbW9kaWZ5aW5nIHRoZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXIsIHNvIGEgbmF0dXJhbCBmaXJzdCBzdGVwIGlzIHRvIGV4YW1pbmUgaXRzIEtjb25maWcgZmlsZS4gTGV0J3MgbWFrZSBzdXJlIHdlJ3JlIHN0YXJ0aW5nIHdpdGggdGhlIGZvdW5kYXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBhbHJlYWR5IGF2YWlsYWJsZSwgd2hhdCdzIGNvbnRyb2xsaW5nIHdoYXQsIGFuZCBob3cgdGhlIHZhcmlvdXMgZmVhdHVyZXMgYW5kIG1vZHVsZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIFRoYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgIGZpbGUgc2hvdWxkIGdpdmUgbWUgdGhlIGNvcmUgZGVmaW5pdGlvbiBmb3IgaG93IHRoaXMgZHJpdmVyIGlzIHN0cnVjdHVyZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBGcm9tIHRoZXJlIEknbGwgYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgdmFyaWFibGVzIGZvciB0aGUgSW50ZWwgRXRoZXJuZXQgZHJpdmVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3OTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo1Ni43ODg0MDQ2NThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTEzODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJR0JWRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xMjA9Y29uZmlnIElHQl9EQ0FcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTI5OmNvbmZpZyBJR0JWRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTMwLVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSA4MjU3NiBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjE3OjU2Ljg1NDUyNjM0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg2Njc1MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkNvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgYElHQlZGYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uLCB0aGF0J3MgY2xlYXIuIEJ1dCBub3cgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIHdoYXQgYWJvdXQgdGhlIGludGVycGxheSB3aXRoIGBJQ0VgIGFuZCBgSURQRmA/IFdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBnb2luZyB0byB3b3JrIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHByaW1hcnkgb25lLiBBcmUgdGhleSBkZXBlbmRlbmNpZXM/IERvIHRoZXkgb3ZlcnJpZGUgc3BlY2lmaWMgcGFyYW1ldGVycz8gT3IgZG8gdGhleSBvcGVyYXRlIG9uIG9ydGhvZ29uYWwgYXNwZWN0cyBvZiB0aGUgc3lzdGVtPyBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0aHJlZSBpcyBjcnVjaWFsIGZvciBwcm9wZXIgb3BlcmF0aW9uIGFuZCBkZWJ1Z2dpbmcuIExldCdzIHNlZSBob3cgdGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIHN0cnVjdHVyZWQgdG8gZ2FpbiBjbGFyaXR5IG9uIHRoZWlyIGludGVyYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxMTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo1OS45NDEyMDUxMzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjkwODkyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUNFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI2OD1jb25maWcgSTQwRVZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjI5MTpjb25maWcgSUNFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yOTItXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzIwOmNvbmZpZyBJQ0VfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMyMS1cXHRib29sIFxcXCJJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIFN1cHBvcnQgSFdNT04gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzMxOmNvbmZpZyBJQ0VfU1dJVENIREVWXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0zMzItXFx0Ym9vbCBcXFwiU3dpdGNoZGV2IFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjM0NTpjb25maWcgSUNFX0hXVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTM0Ni1cXHRib29sIFxcXCJTdXBwb3J0IEhXIGNyb3NzLXRpbWVzdGFtcCBvbiBwbGF0Zm9ybXMgd2l0aCBQVE0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTg6MDAuMTM4MTI0MDEyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDY0MzMwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgRGlnaXRhbCBQdWJsaXNoaW5nIExhbmRzY2FwZSoqXG5cblNvLCB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIGRpZ2l0YWwgcHVibGlzaGluZy4gSSdtIHRha2luZyBzdG9jayBoZXJlLCBjb25zaWRlcmluZyBhbGwgdGhlIGFuZ2xlcy4gRFJNLCBhY2Nlc3NpYmlsaXR5IHN0YW5kYXJkcywgRVBVQiAzLCB0aGUgb25nb2luZyBkZWJhdGUgYXJvdW5kIGZpeGVkLWxheW91dCBmb3JtYXRzIHZlcnN1cyByZWZsb3dhYmxlIHRleHQuLi4gSSdtIHJlYWxseSB0aGlua2luZyBhYm91dCB0aGUgY29tcGxleGl0aWVzIGludm9sdmVkIGluIGNyZWF0aW5nIGFuZCBkaXN0cmlidXRpbmcgY29udGVudC4gVGhlbiwgYSBrZXkgcXVlc3Rpb24gaGl0cyBtZTogV2hhdCBhYm91dCB0aGUgSW50ZXJuYXRpb25hbCBEaWdpdGFsIFB1Ymxpc2hpbmcgRm9ydW0g4oCTIHRoZSAqSURQRio/IFdlIGFsbCBrbm93IGl0cyBoaXN0b3J5IGFuZCBpdHMgZXZvbHV0aW9uLiBOb3csIHdpdGggaXRzIHJvbGUgaGF2aW5nIHRyYW5zZm9ybWVkIG92ZXIgdGhlIHllYXJzLCBJIG5lZWQgdG8gY29uc2lkZXIgaXRzIGxhc3Rpbmcgc2lnbmlmaWNhbmNlLCBvciB3aGV0aGVyIGl0cyBwbGFjZSBoYXMgYmVlbiB0YWtlbiBieSBvdGhlciBpbmR1c3RyeSBib2RpZXMuIFdlIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGltcGxpY2F0aW9ucyBvbiBmdXR1cmUgc3RhbmRhcmRzIGFuZCBidXNpbmVzcyBtb2RlbHMuIFdoYXQgaW1wYWN0IGRpZCB0aGV5IGhhdmU/IFdoYXQncyBnb2luZyBvbiB3aXRoIHRoZWlyIHdvcmsgb24gYWNjZXNzaWJpbGl0eSBhbmQgbWV0YWRhdGE/IEhvdyBkb2VzIHRoYXQgc3RpbGwgZmFjdG9yIGludG8gdGhlIGRpZ2l0YWwgcHVibGlzaGluZyBzcGFjZSBub3c/IFNvIG11Y2ggdG8gY29uc2lkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjM1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxODowMy42NDQ1NTk3NzlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTk4NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJRFBGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6NDpjb25maWcgSURQRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy01LVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz0xNz1pZiBJRFBGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZzoxOTpjb25maWcgSURQRl9TSU5HTEVRXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTIwLVxcdGJvb2wgXFxcImlkcGYgc2luZ2xlcSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxODowMy43MTk1Njg4MzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4MjYxOTY0MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIHBhdGNoIHRvdWNoZXMgYElDRWAsIGBJRFBGYCwgYW5kIGBJR0JWRmAgZHJpdmVycy4gVGhlIHByb21wdCByZW1pbmRzIG1lIHRvIGlnbm9yZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSWYgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB1bnJlYWNoYWJsZSBjb2RlLCBJJ20gc3VwcG9zZWQgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBIb3dldmVyLCBgSUdCVkZgIGlzIGRpZmZlcmVudC4gSXQncyBlbXVsYXRlZCB2aWEgUUVNVSdzIGBpZ2JgIGRyaXZlciwgd2hpY2ggc3VwcG9ydHMgU1ItSU9WLCBzbyBpdCAqaXMqIHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcyBob3cgdG8gaWRlbnRpZnkgcmVsZXZhbnQgZm9jdXMgc3ltYm9scy4gSSBzZWUgY2hhbmdlcyBpbiBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgYW5kIGBpZ2J2Zl94bWl0X2ZyYW1lYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW5jbHVkZSBgaWdidmZfeG1pdF9mcmFtZWAgaW4gYEZvY3VzU3ltYm9sc2AuIEJ1dCB3YWl0LCB0aGUgbm90ZXMgc2F5IHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4gSXMgYGlnYnZmX3htaXRfZnJhbWVgIGEgaG90LXBhdGg/IFllcywgaXQncyBgbmRvX3N0YXJ0X3htaXRgLCBzbyBpdCdzIGNhbGxlZCBmb3IgZXZlcnkgcGFja2V0LlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCBzb21ldGhpbmcgZWxzZS4gVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgaWdidmZfdHhfbWFwX2FkdmAsIGJ1dCB0aGF0J3MgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLiBOb3QgYSBzeW1ib2whIEhtbSwgYGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHZgIGlzIGFsc28gc3RhdGljLiBTaG91bGQgSSBqdXN0IGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5P1xuXG5CdXQgbGV0J3MgcmVjb25zaWRlciBgaWdidmZfeG1pdF9mcmFtZWAuIFdoaWxlIGl0ICppcyogaG90LXBhdGgsIGl0J3Mgc3BlY2lmaWMgdG8gdGhlIGBpZ2J2ZmAgZHJpdmVyLiBJdCdzIG5vdCBhIGdlbmVyaWMga2VybmVsIGhvdC1wYXRoIGZ1bmN0aW9uIGxpa2UgYF9fZGV2X3F1ZXVlX3htaXRgLCBga2ZyZWVgLCBvciBga21hbGxvY2AuIEl0IGlzIHNwZWNpZmljIHRvIHRoZSBgaWdidmZgIGFuZCBub3QgYSBnZW5lcmFsIGhvdC1wYXRoIGZ1bmN0aW9uLiBTbywgYGlnYnZmX3htaXRfZnJhbWVgIGlzIGZpbmUhXG5cbkknbGwgcXVpY2tseSBjaGVjayB0aGUgb3RoZXIgZHJpdmVycy4gYGljZV9yZXN1bWVgLCBgaWNlX3Jlc2V0X2ludGVycnVwdHNgLCBgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0YCBhbmQgYGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50YC4gU2luY2UgYElDRWAgYW5kIGBJRFBGYCBhcmVuJ3QgcmVhY2hhYmxlLCBJIHdvbid0IGxpc3QgYW55IG9mICp0aGVpciogZnVuY3Rpb25zIGluIGBGb2N1c1N5bWJvbHNgLiBCdXQgaXQgaXMgb2theSB0byBlbmFibGUgdGhlc2UgY29uZmlncy5cblxuRmluYWxseSwgSSdsbCByZS1leGFtaW5lIHRoZSBgaWdidmZfdHhfbWFwX2FkdmAgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGl0IGZpeGVzIGEgYnVnIHdoZXJlIGBjb3VudGAgd2FzIGJlaW5nIGRlY3JlbWVudGVkIGluY29ycmVjdGx5LiBUaGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3Qgc29tZSB1bnJlYWNoYWJsZSBvcHRpbWl6YXRpb24uXG5cblNvLCBoZXJlJ3MgdGhlIHBsYW46IEknbGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGg6XG5cbiogICBgV29ydGhGdXp6aW5nYDogYHRydWVgXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXCJpZ2J2Zl94bWl0X2ZyYW1lXCJdYFxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIklHQlZGXCIsIFwiSUNFXCIsIFwiSURQRlwiXWBcbiogICBgUmVhc29uaW5nYDogXCJUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJ3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODA2OCwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjE4OjE2LjU0NTc2NzcxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgzMTIzNTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklHQlZGXCIsXG4gICAgXCJJQ0VcIixcbiAgICBcIklEUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZ2J2Zl94bWl0X2ZyYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJ3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJR0JWRlwiLFxuICAgIFwiSUNFXCIsXG4gICAgXCJJRFBGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdidmZfeG1pdF9mcmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIElDRSBhbmQgSURQRiBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVycyB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiwgSUdCVkYgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUUVNVSdzIGlnYiBTUi1JT1YgZW11bGF0aW9uLiBUaGUgY2hhbmdlIGluIGlnYnZmX3R4X21hcF9hZHYgbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHBhdGggbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdxhx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 05:02:19 +0000 UTC FinishedAt: 2026-07-01 05:18:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IGBVF", "ICE", "IDPF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IGBVF", "ICE", "IDPF" ], "series_id": "35a02457-be2e-4f9d-a495-e84c570cd534" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "igbvf_xmit_frame" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lHQlZGJiMzNDssCiAgICAmIzM0O0lDRSYjMzQ7LAogICAgJiMzNDtJRFBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdidmZfeG1pdF9mcmFtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBJQ0UgYW5kIElEUEYgYXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcnMgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24sIElHQlZGIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFFFTVUmIzM5O3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUxNjI5MDU1MzE2NWViMmU2MjM1MTJlMGZjOWVkYjFmODAwYmRkZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA1OjE3OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbmluZGV4IGUyZmQyZGFiMDNlMzYzLi5kODg4MzU0ODJkM2FhYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuQEAgLTU2MzcsNiAmIzQzOzU2MzcsMTYgQEAgc3RhdGljIGludCBpY2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdC8qIFJlc3RhcnQgdGhlIHNlcnZpY2UgdGFzayAqL1xuIFx0bW9kX3RpbWVyKFx1MDAyNnBmLVx1MDAzZXNlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgJiM0MzsgcGYtXHUwMDNlc2Vydl90bXJfcGVyaW9kKSk7XG4gXG4mIzQzO1x0LyogQmVzdC1lZmZvcnQgd2FpdCBmb3IgdGhlIHNjaGVkdWxlZCByZXNldCB0byBmaW5pc2ggc28gdGhhdCB0aGVcbiYjNDM7XHQgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2VcbiYjNDM7XHQgKiAoZS5nLiBOZXR3b3JrTWFuYWdlcikgbWF5IHRyeSB0byBvcGVuIHRoZSBuZXQgZGV2aWNlIHdoaWxlIHRoZVxuJiM0MztcdCAqIGFzeW5jaHJvbm91cyByZXNldCBpcyBzdGlsbCBpbiBwcm9ncmVzcywgaGl0dGluZyAtRUJVU1kuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gaWNlX3dhaXRfZm9yX3Jlc2V0KHBmLCBzZWNzX3RvX2ppZmZpZXMoMTApKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O1dhaXQgZm9yIHJlc2V0IHRpbWVkIG91dCAoMTBzKSBkdXJpbmcgcmVzdW1lOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cmV0KTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbmluZGV4IDI3ZTRhY2IxNjIwZjBjLi43Y2U4ZjY2ZWViYmYzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbkBAIC04NDcsNiAmIzQzOzg0NywzMCBAQCBzdGF0aWMgdm9pZCBpY2Vfbm90aWZ5X3ZmX3Jlc2V0KHN0cnVjdCBpY2VfdmYgKnZmKVxuIFx0XHRcdCAgICAgIE5VTEwpO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGljZV9yZXNldF9pbnRlcnJ1cHRzIC0gY2xlYXIgYWxsIHF1ZXVlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFZTSVxuJiM0MzsgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGludGVycnVwdCByZWdpc3RlcnMgc2hvdWxkIGJlIGNsZWFyZWRcbiYjNDM7ICpcbiYjNDM7ICogWmVybyB0aGUgUUlOVF9SUUNUTCBhbmQgUUlOVF9UUUNUTCByZWdpc3RlcnMgZm9yIGFsbCBhbGxvY2F0ZWQgcXVldWVzXG4mIzQzOyAqIGluIHRoZSBWU0kuIFRoaXMgY2xlYXJzIHRoZSBlbnRpcmUgcmVnaXN0ZXIgaW5jbHVkaW5nIE1TSVhfSU5EWCwgSVRSX0lORFgsXG4mIzQzOyAqIENBVVNFX0VOQSBhbmQgTkVYVFEgZmllbGRzLCB1bmxpa2UgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KCkgd2hpY2ggb25seVxuJiM0MzsgKiBjbGVhcnMgdGhlIENBVVNFX0VOQSBiaXQuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS1cdTAwM2ViYWNrO1xuJiM0MztcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlaHc7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGljZV9mb3JfZWFjaF9hbGxvY19yeHEodnNpLCBpKVxuJiM0MztcdFx0d3IzMihodywgUUlOVF9SUUNUTCh2c2ktXHUwMDNlcnhxX21hcFtpXSksIDApO1xuJiM0MztcbiYjNDM7XHRpY2VfZm9yX2VhY2hfYWxsb2NfdHhxKHZzaSwgaSlcbiYjNDM7XHRcdHdyMzIoaHcsIFFJTlRfVFFDVEwodnNpLVx1MDAzZXR4cV9tYXBbaV0pLCAwKTtcbiYjNDM7XG4mIzQzO1x0aWNlX2ZsdXNoKGh3KTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBpY2VfcmVzZXRfdmYgLSBSZXNldCBhIHBhcnRpY3VsYXIgVkZcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIHN0cnVjdHVyZVxuQEAgLTkxOCw2ICYjNDM7OTQyLDkgQEAgaW50IGljZV9yZXNldF92ZihzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTMyIGZsYWdzKVxuIFxuIFx0aWNlX2Rpc192Zl9xcyh2Zik7XG4gXG4mIzQzO1x0LyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovXG4mIzQzO1x0aWNlX3Jlc2V0X2ludGVycnVwdHModnNpKTtcbiYjNDM7XG4gXHQvKiBDYWxsIERpc2FibGUgTEFOIFR4IHF1ZXVlIEFRIHdoZXRoZXIgb3Igbm90IHF1ZXVlcyBhcmVcbiBcdCAqIGVuYWJsZWQuIFRoaXMgaXMgbmVlZGVkIGZvciBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgVkZSLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG5pbmRleCA1MzkyYjA0MDQ5ODYyMS4uMzIxZDI5YzI1YjdjMTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaFxuQEAgLTI2LDYgJiM0MzsyNiw3IEBAXG4gdm9pZCBpY2VfaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gdm9pZCBpY2VfZGVpbml0aWFsaXplX3ZmX2VudHJ5KHN0cnVjdCBpY2VfdmYgKnZmKTtcbiB2b2lkIGljZV9kaXNfdmZfcXMoc3RydWN0IGljZV92ZiAqdmYpO1xuJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xuIGludCBpY2VfY2hlY2tfdmZfaW5pdChzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSBpY2VfZXJyX3RvX3ZpcnRfZXJyKGludCBlcnIpO1xuIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuaW5kZXggMzFiZTJmNzYxODFjMDcuLjQzMWM5YzU0NmIwNGZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXG5AQCAtMjI0LDYgJiM0MzsyMjQsMjQgQEAgdm9pZCBpY2VfdmZfZW5hX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxuIFx0d3IzMihodywgUUlOVF9SUUNUTChwZnEpLCByZWcgfCBRSU5UX1JRQ1RMX0NBVVNFX0VOQV9NKTtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQgLSBkaXNhYmxlIFJ4IHF1ZXVlIGludGVycnVwdCB2aWEgUUlOVF9SUUNUTFxuJiM0MzsgKiBAdnNpOiBWU0kgb2YgdGhlIFZGIHRvIGNvbmZpZ3VyZVxuJiM0MzsgKiBAcV9pZHg6IFZGIHF1ZXVlIGluZGV4IHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBxdWV1ZSBpbiB0aGUgUEYmIzM5O3Mgc3BhY2VcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFx1MDAyNnZzaS1cdTAwM2ViYWNrLVx1MDAzZWh3O1xuJiM0MztcdHUzMiBwZnEgPSB2c2ktXHUwMDNlcnhxX21hcFtxX2lkeF07XG4mIzQzO1x0dTMyIHJlZztcbiYjNDM7XG4mIzQzO1x0cmVnID0gcmQzMihodywgUUlOVF9SUUNUTChwZnEpKTtcbiYjNDM7XHRyZWcgXHUwMDI2PSB+UUlOVF9SUUNUTF9DQVVTRV9FTkFfTTtcbiYjNDM7XHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyk7XG4mIzQzO1xuJiM0MztcdGljZV9mbHVzaChodyk7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaWNlX3ZjX2VuYV9xc19tc2dcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIGluZm9cbkBAIC00MTYsNiAmIzQzOzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcbiBcdFx0XHRnb3RvIGVycm9yX3BhcmFtO1xuIFx0XHR9XG4gXG4mIzQzO1x0XHRmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsIFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpXG4mIzQzO1x0XHRcdGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCh2c2ksIHZmX3FfaWQpO1xuIFx0XHRiaXRtYXBfemVybyh2Zi1cdTAwM2VyeHFfZW5hLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpO1xuIFx0fSBlbHNlIGlmIChxX21hcCkge1xuIFx0XHRmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsIFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpIHtcbkBAIC00MzYsNiAmIzQzOzQ1Niw3IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcbiBcdFx0XHRcdGdvdG8gZXJyb3JfcGFyYW07XG4gXHRcdFx0fVxuIFxuJiM0MztcdFx0XHRpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTtcbiBcdFx0XHQvKiBDbGVhciBlbmFibGVkIHF1ZXVlcyBmbGFnICovXG4gXHRcdFx0Y2xlYXJfYml0KHZmX3FfaWQsIHZmLVx1MDAzZXJ4cV9lbmEpO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jXG5pbmRleCBiN2Q2YjA4ZmM4OWU4OS4uOWY3NjQxMzU1MDdjMjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuY1xuQEAgLTE2Miw5ICYjNDM7MTYyLDEyIEBAIHZvaWQgaWRwZl9pZGNfdmRldl9tdHVfZXZlbnQoc3RydWN0IGlpZGNfcmRtYV92cG9ydF9kZXZfaW5mbyAqdmRldl9pbmZvLFxuIFxuIFx0c2V0X2JpdChldmVudF90eXBlLCBldmVudC50eXBlKTtcbiBcbi1cdGRldmljZV9sb2NrKFx1MDAyNnZkZXZfaW5mby1cdTAwM2VhZGV2LVx1MDAzZWRldik7XG4tXHRhZGV2ID0gdmRldl9pbmZvLVx1MDAzZWFkZXY7XG4tXHRpZiAoIWFkZXYgfHwgIWFkZXYtXHUwMDNlZGV2LmRyaXZlcilcbiYjNDM7XHRhZGV2ID0gUkVBRF9PTkNFKHZkZXZfaW5mby1cdTAwM2VhZGV2KTtcbiYjNDM7XHRpZiAoIWFkZXYpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGRldmljZV9sb2NrKFx1MDAyNmFkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAoIWFkZXYtXHUwMDNlZGV2LmRyaXZlcilcbiBcdFx0Z290byB1bmxvY2s7XG4gXHRpYWRydiA9IGNvbnRhaW5lcl9vZihhZGV2LVx1MDAzZWRldi5kcml2ZXIsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2F1eGlsaWFyeV9kcnYsXG5AQCAtMTcyLDcgJiM0MzsxNzUsNyBAQCB2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcbiBcdGlmIChpYWRydi1cdTAwM2VldmVudF9oYW5kbGVyKVxuIFx0XHRpYWRydi1cdTAwM2VldmVudF9oYW5kbGVyKHZkZXZfaW5mbywgXHUwMDI2ZXZlbnQpO1xuIHVubG9jazpcbi1cdGRldmljZV91bmxvY2soXHUwMDI2dmRldl9pbmZvLVx1MDAzZWFkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRkZXZpY2VfdW5sb2NrKFx1MDAyNmFkZXYtXHUwMDNlZGV2KTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuaW5kZXggMGEzZDBhMWNiYTQzM2MuLmM2ODZlZTEyMGExNDNmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jXG5AQCAtMjE5MCw4ICYjNDM7MjE5MCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRidWZmZXJfaW5mby1cdTAwM2V0aW1lX3N0YW1wID0gMDtcbiBcdGJ1ZmZlcl9pbmZvLVx1MDAzZWxlbmd0aCA9IDA7XG4gXHRidWZmZXJfaW5mby1cdTAwM2VtYXBwZWRfYXNfcGFnZSA9IGZhbHNlO1xuLVx0aWYgKGNvdW50KVxuLVx0XHRjb3VudC0tO1xuIFxuIFx0LyogY2xlYXIgdGltZXN0YW1wIGFuZCBkbWEgbWFwcGluZ3MgZm9yIHJlbWFpbmluZyBwb3J0aW9uIG9mIHBhY2tldCAqL1xuIFx0d2hpbGUgKGNvdW50LS0pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0JWRiYjMzQ7LAogICAgJiMzNDtJQ0UmIzM0OywKICAgICYjMzQ7SURQRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lnYnZmX3htaXRfZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJiMzOTtzIGlnYiBTUi1JT1YgZW11bGF0aW9uLiBUaGUgY2hhbmdlIGluIGlnYnZmX3R4X21hcF9hZHYgbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHBhdGggbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUxNjI5MDU1MzE2NWViMmU2MjM1MTJlMGZjOWVkYjFmODAwYmRkZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDA1OjE3OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwppbmRleCBlMmZkMmRhYjAzZTM2My4uZDg4ODM1NDgyZDNhYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCkBAIC01NjM3LDYgJiM0Mzs1NjM3LDE2IEBAIHN0YXRpYyBpbnQgaWNlX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJLyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovCiAJbW9kX3RpbWVyKCZhbXA7cGYtJmd0O3NlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgJiM0MzsgcGYtJmd0O3NlcnZfdG1yX3BlcmlvZCkpOwogCiYjNDM7CS8qIEJlc3QtZWZmb3J0IHdhaXQgZm9yIHRoZSBzY2hlZHVsZWQgcmVzZXQgdG8gZmluaXNoIHNvIHRoYXQgdGhlCiYjNDM7CSAqIGRldmljZSBpcyBvcGVyYXRpb25hbCBiZWZvcmUgcmV0dXJuaW5nLiBXaXRob3V0IHRoaXMsIHVzZXJzcGFjZQomIzQzOwkgKiAoZS5nLiBOZXR3b3JrTWFuYWdlcikgbWF5IHRyeSB0byBvcGVuIHRoZSBuZXQgZGV2aWNlIHdoaWxlIHRoZQomIzQzOwkgKiBhc3luY2hyb25vdXMgcmVzZXQgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MsIGhpdHRpbmcgLUVCVVNZLgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gaWNlX3dhaXRfZm9yX3Jlc2V0KHBmLCBzZWNzX3RvX2ppZmZpZXMoMTApKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O1dhaXQgZm9yIHJlc2V0IHRpbWVkIG91dCAoMTBzKSBkdXJpbmcgcmVzdW1lOiAlZFxuJiMzNDssCiYjNDM7CQkJcmV0KTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMKaW5kZXggMjdlNGFjYjE2MjBmMGMuLjdjZThmNjZlZWJiZjNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMKQEAgLTg0Nyw2ICYjNDM7ODQ3LDMwIEBAIHN0YXRpYyB2b2lkIGljZV9ub3RpZnlfdmZfcmVzZXQoc3RydWN0IGljZV92ZiAqdmYpCiAJCQkgICAgICBOVUxMKTsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGljZV9yZXNldF9pbnRlcnJ1cHRzIC0gY2xlYXIgYWxsIHF1ZXVlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFZTSQomIzQzOyAqIEB2c2k6IHRoZSBWU0kgd2hvc2UgaW50ZXJydXB0IHJlZ2lzdGVycyBzaG91bGQgYmUgY2xlYXJlZAomIzQzOyAqCiYjNDM7ICogWmVybyB0aGUgUUlOVF9SUUNUTCBhbmQgUUlOVF9UUUNUTCByZWdpc3RlcnMgZm9yIGFsbCBhbGxvY2F0ZWQgcXVldWVzCiYjNDM7ICogaW4gdGhlIFZTSS4gVGhpcyBjbGVhcnMgdGhlIGVudGlyZSByZWdpc3RlciBpbmNsdWRpbmcgTVNJWF9JTkRYLCBJVFJfSU5EWCwKJiM0MzsgKiBDQVVTRV9FTkEgYW5kIE5FWFRRIGZpZWxkcywgdW5saWtlIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCgpIHdoaWNoIG9ubHkKJiM0MzsgKiBjbGVhcnMgdGhlIENBVVNFX0VOQSBiaXQuCiYjNDM7ICovCiYjNDM7dm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKQomIzQzO3sKJiM0MzsJc3RydWN0IGljZV9wZiAqcGYgPSB2c2ktJmd0O2JhY2s7CiYjNDM7CXN0cnVjdCBpY2VfaHcgKmh3ID0gJmFtcDtwZi0mZ3Q7aHc7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlpY2VfZm9yX2VhY2hfYWxsb2NfcnhxKHZzaSwgaSkKJiM0MzsJCXdyMzIoaHcsIFFJTlRfUlFDVEwodnNpLSZndDtyeHFfbWFwW2ldKSwgMCk7CiYjNDM7CiYjNDM7CWljZV9mb3JfZWFjaF9hbGxvY190eHEodnNpLCBpKQomIzQzOwkJd3IzMihodywgUUlOVF9UUUNUTCh2c2ktJmd0O3R4cV9tYXBbaV0pLCAwKTsKJiM0MzsKJiM0MzsJaWNlX2ZsdXNoKGh3KTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIGljZV9yZXNldF92ZiAtIFJlc2V0IGEgcGFydGljdWxhciBWRgogICogQHZmOiBwb2ludGVyIHRvIHRoZSBWRiBzdHJ1Y3R1cmUKQEAgLTkxOCw2ICYjNDM7OTQyLDkgQEAgaW50IGljZV9yZXNldF92ZihzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTMyIGZsYWdzKQogCiAJaWNlX2Rpc192Zl9xcyh2Zik7CiAKJiM0MzsJLyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovCiYjNDM7CWljZV9yZXNldF9pbnRlcnJ1cHRzKHZzaSk7CiYjNDM7CiAJLyogQ2FsbCBEaXNhYmxlIExBTiBUeCBxdWV1ZSBBUSB3aGV0aGVyIG9yIG5vdCBxdWV1ZXMgYXJlCiAJICogZW5hYmxlZC4gVGhpcyBpcyBuZWVkZWQgZm9yIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiBWRlIuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmgKaW5kZXggNTM5MmIwNDA0OTg2MjEuLjMyMWQyOWMyNWI3YzE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oCkBAIC0yNiw2ICYjNDM7MjYsNyBAQAogdm9pZCBpY2VfaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7CiB2b2lkIGljZV9kZWluaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpOwogdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTsKJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpOwogaW50IGljZV9jaGVja192Zl9pbml0KHN0cnVjdCBpY2VfdmYgKnZmKTsKIGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgaWNlX2Vycl90b192aXJ0X2VycihpbnQgZXJyKTsKIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jCmluZGV4IDMxYmUyZjc2MTgxYzA3Li40MzFjOWM1NDZiMDRmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMKQEAgLTIyNCw2ICYjNDM7MjI0LDI0IEBAIHZvaWQgaWNlX3ZmX2VuYV9yeHFfaW50ZXJydXB0KHN0cnVjdCBpY2VfdnNpICp2c2ksIHUzMiBxX2lkeCkKIAl3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pOwogfQogCiYjNDM7LyoqCiYjNDM7ICogaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0IC0gZGlzYWJsZSBSeCBxdWV1ZSBpbnRlcnJ1cHQgdmlhIFFJTlRfUlFDVEwKJiM0MzsgKiBAdnNpOiBWU0kgb2YgdGhlIFZGIHRvIGNvbmZpZ3VyZQomIzQzOyAqIEBxX2lkeDogVkYgcXVldWUgaW5kZXggdXNlZCB0byBkZXRlcm1pbmUgdGhlIHF1ZXVlIGluIHRoZSBQRiYjMzk7cyBzcGFjZQomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWNlX2h3ICpodyA9ICZhbXA7dnNpLSZndDtiYWNrLSZndDtodzsKJiM0MzsJdTMyIHBmcSA9IHZzaS0mZ3Q7cnhxX21hcFtxX2lkeF07CiYjNDM7CXUzMiByZWc7CiYjNDM7CiYjNDM7CXJlZyA9IHJkMzIoaHcsIFFJTlRfUlFDVEwocGZxKSk7CiYjNDM7CXJlZyAmYW1wOz0gflFJTlRfUlFDVExfQ0FVU0VfRU5BX007CiYjNDM7CXdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTsKJiM0MzsKJiM0MzsJaWNlX2ZsdXNoKGh3KTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIGljZV92Y19lbmFfcXNfbXNnCiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIGluZm8KQEAgLTQxNiw2ICYjNDM7NDM0LDggQEAgaW50IGljZV92Y19kaXNfcXNfbXNnKHN0cnVjdCBpY2VfdmYgKnZmLCB1OCAqbXNnKQogCQkJZ290byBlcnJvcl9wYXJhbTsKIAkJfQogCiYjNDM7CQlmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsICZhbXA7cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRikKJiM0MzsJCQlpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTsKIAkJYml0bWFwX3plcm8odmYtJmd0O3J4cV9lbmEsIElDRV9NQVhfUlNTX1FTX1BFUl9WRik7CiAJfSBlbHNlIGlmIChxX21hcCkgewogCQlmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsICZhbXA7cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRikgewpAQCAtNDM2LDYgJiM0Mzs0NTYsNyBAQCBpbnQgaWNlX3ZjX2Rpc19xc19tc2coc3RydWN0IGljZV92ZiAqdmYsIHU4ICptc2cpCiAJCQkJZ290byBlcnJvcl9wYXJhbTsKIAkJCX0KIAomIzQzOwkJCWljZV92Zl9kaXNfcnhxX2ludGVycnVwdCh2c2ksIHZmX3FfaWQpOwogCQkJLyogQ2xlYXIgZW5hYmxlZCBxdWV1ZXMgZmxhZyAqLwogCQkJY2xlYXJfYml0KHZmX3FfaWQsIHZmLSZndDtyeHFfZW5hKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jCmluZGV4IGI3ZDZiMDhmYzg5ZTg5Li45Zjc2NDEzNTUwN2MyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYwpAQCAtMTYyLDkgJiM0MzsxNjIsMTIgQEAgdm9pZCBpZHBmX2lkY192ZGV2X210dV9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2Rldl9pbmZvICp2ZGV2X2luZm8sCiAKIAlzZXRfYml0KGV2ZW50X3R5cGUsIGV2ZW50LnR5cGUpOwogCi0JZGV2aWNlX2xvY2soJmFtcDt2ZGV2X2luZm8tJmd0O2FkZXYtJmd0O2Rldik7Ci0JYWRldiA9IHZkZXZfaW5mby0mZ3Q7YWRldjsKLQlpZiAoIWFkZXYgfHwgIWFkZXYtJmd0O2Rldi5kcml2ZXIpCiYjNDM7CWFkZXYgPSBSRUFEX09OQ0UodmRldl9pbmZvLSZndDthZGV2KTsKJiM0MzsJaWYgKCFhZGV2KQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlkZXZpY2VfbG9jaygmYW1wO2FkZXYtJmd0O2Rldik7CiYjNDM7CWlmICghYWRldi0mZ3Q7ZGV2LmRyaXZlcikKIAkJZ290byB1bmxvY2s7CiAJaWFkcnYgPSBjb250YWluZXJfb2YoYWRldi0mZ3Q7ZGV2LmRyaXZlciwKIAkJCSAgICAgc3RydWN0IGlpZGNfcmRtYV92cG9ydF9hdXhpbGlhcnlfZHJ2LApAQCAtMTcyLDcgJiM0MzsxNzUsNyBAQCB2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbywKIAlpZiAoaWFkcnYtJmd0O2V2ZW50X2hhbmRsZXIpCiAJCWlhZHJ2LSZndDtldmVudF9oYW5kbGVyKHZkZXZfaW5mbywgJmFtcDtldmVudCk7CiB1bmxvY2s6Ci0JZGV2aWNlX3VubG9jaygmYW1wO3ZkZXZfaW5mby0mZ3Q7YWRldi0mZ3Q7ZGV2KTsKJiM0MzsJZGV2aWNlX3VubG9jaygmYW1wO2FkZXYtJmd0O2Rldik7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYwppbmRleCAwYTNkMGExY2JhNDMzYy4uYzY4NmVlMTIwYTE0M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jCkBAIC0yMTkwLDggJiM0MzsyMTkwLDYgQEAgc3RhdGljIGlubGluZSBpbnQgaWdidmZfdHhfbWFwX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciwKIAlidWZmZXJfaW5mby0mZ3Q7dGltZV9zdGFtcCA9IDA7CiAJYnVmZmVyX2luZm8tJmd0O2xlbmd0aCA9IDA7CiAJYnVmZmVyX2luZm8tJmd0O21hcHBlZF9hc19wYWdlID0gZmFsc2U7Ci0JaWYgKGNvdW50KQotCQljb3VudC0tOwogCiAJLyogY2xlYXIgdGltZXN0YW1wIGFuZCBkbWEgbWFwcGluZ3MgZm9yIHJlbWFpbmluZyBwb3J0aW9uIG9mIHBhY2tldCAqLwogCXdoaWxlIChjb3VudC0tKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNjUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHNldmVyYWwgSW50ZWwgRXRoZXJuZXQgZHJpdmVyczogYGljZWAsIGBpZHBmYCwgYGlnYnZmYCwgYWxvbmcgd2l0aCBzb21lIHJlbGF0ZWQgbGlicmFyaWVzLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIHJlYWNoYWJsZSB3aXRoaW4gYSBmdXp6aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIGdpdmVuIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBoYXJkd2FyZS1kZXBlbmRlbnQgY29tcG9uZW50cy4KCkZpcnN0LCBgaWNlYCAoSW50ZWwgRTgwMCBTZXJpZXMpIGFuZCBgaWRwZmAgKEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbikgYXJlIGltbWVkaWF0ZWx5IHN1c3BlY3QuIFRoZXNlIGFyZSBwaHlzaWNhbCBFdGhlcm5ldCBkZXZpY2VzLCBhbmQgdHlwaWNhbGx5LCBRRU1VIGRvZXNuJiMzOTt0IG9mZmVyIGRpcmVjdCBlbXVsYXRpb24gZm9yIHN1Y2ggcmVjZW50LCBzcGVjaWFsaXplZCBoYXJkd2FyZS4gTXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGV5JiMzOTtyZSAqbm90KiBkaXJlY3RseSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwIHVubGVzcyB5b3UmIzM5O3JlIHVzaW5nIHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiAod2hpY2ggc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBmb3IgdGhlbSkuIEkmIzM5O2QgbmVlZCB0byBjb25maXJtIHRoaXMgd2l0aCBzZWFyY2hlcywgYnV0IG15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgbmVnYXRpdmUgaGVyZS4KClRoZW4gd2UgaGF2ZSBgaWdidmZgIChJbnRlbCBHaWdhYml0IFZpcnR1YWwgRnVuY3Rpb24pLiAgVGhpcyBpcyB0aGUgVkYgZHJpdmVyIGZvciBgaWdiYC4gIFFFTVUgKmRvZXMqIGhhdmUgYGlnYmAgZW11bGF0aW9uLiBOb3csIGRvZXMgUUVNVSBleHRlbmQgdG8gdGhlIFZGIGRyaXZlcnM/ICBJZiBRRU1VIGhhcyBTUi1JT1Ygc3VwcG9ydCBmb3IgdGhlIGBpZ2JgIGRldmljZSwgdGhlIGBpZ2J2ZmAgZHJpdmVyICpjb3VsZCogYmUgcmVhY2hhYmxlIGlmIFNSLUlPViBpcyBwcm9wZXJseSBjb25maWd1cmVkIGluIHRoZSBlbXVsYXRlZCBlbnZpcm9ubWVudC4gIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXImIzM5O3Mgc2V0dXAgaXMgbGlrZWx5IHRvIGNvbmZpZ3VyZSBTUi1JT1YgZm9yIGBpZ2JgIGJ5IGRlZmF1bHQsIG9yIGlmIGl0IHdvdWxkIHJlcXVpcmUgYSBzcGVjaWFsIGNvbmZpZ3VyYXRpb24sIGdpdmVuIHRoYXQgaXQgc3RhdGVzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiAgSSBuZWVkIHRvIGNoZWNrIHN5emthbGxlciYjMzk7cyBkb2N1bWVudGF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gcHJhY3RpY2VzIHRvIHNlZSBpZiBTUi1JT1YgaXMgYSBzdGFuZGFyZCBwYXJ0IG9mIGl0cyBgaWdiYCBzdXBwb3J0LgoKTGV0JiMzOTtzIGxvb2sgYXQgdGhpcyBzcGVjaWZpYyBjb2RlIGNoYW5nZSBpbiBgaWdidmYvbmV0ZGV2LmNgLiAgSXQmIzM5O3MganVzdCBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGF0IGRvZXMgbm90IGNoYW5nZSB0aGUgZmFjdCB0aGF0IHRoaXMgaXMgKnBvdGVudGlhbGx5KiByZWFjaGFibGUuCgpMZXQgbWUgdGhpbmsgYSBiaXQgbW9yZS4gIEV2ZW4gaWYgUUVNVSBlbXVsYXRlcyBgaWdiYCwgZG9lcyBzeXprYWxsZXIgaGF2ZSB0ZXN0IGNhc2VzIHNldCB1cCBmb3IgYGlnYnZmYD8gIEkgbmVlZCB0byBjaGVjayBmb3IgbWVudGlvbnMgb2YgYGlnYnZmYCBpbiBhbnkgc3l6a2FsbGVyLXJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBvciBjb2RlYmFzZSAoaWYgSSBoYWQgYWNjZXNzKSwgYnV0IEkgZG9uJiMzOTt0LiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBpdCBtaWdodCBiZSByZWFjaGFibGUgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgdmhjaWAsIGJ1dCB1c3VhbGx5IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGlzIHZlcnkgbGltaXRlZC4gVGhpcyBwYXRjaCBtb3N0bHkgbW9kaWZpZXMgYGljZWAsIGFuZCBgaWRwZmAuCgpTbywgdGhlIGJpZ2dlc3QgcmlzayBpcyB0aGF0LCB3aGlsZSBgaWdiYCAqY2FuKiBiZSBlbXVsYXRlZCwgYW5kIGBpZ2J2ZmAgKmNvdWxkKiBiZSByZWFjaGFibGUgdGhyb3VnaCBTUi1JT1YsIHRoZSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAgKm1heSBub3QqIGhhdmUgdGhpcyBjb25maWd1cmVkLiBHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zLCBpZiBJIHJldHVybiB0cnVlLCBJIG5lZWQgdG8gcHJvdmlkZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBIb3dldmVyLCBpZiBJIHJldHVybiBmYWxzZSwgSSBqdXN0IG5lZWQgdG8gc3RhdGUgdGhhdCBpdCYjMzk7cyBub3QgcmVhY2hhYmxlLiBTaW5jZSBgaWNlYCBhbmQgYGlkcGZgIGFyZSBub3QgcmVhY2hhYmxlLCBhbmQgYGlnYnZmYCBpcyBwb3RlbnRpYWxseSByZWFjaGFibGUgYnV0IHJlcXVpcmVzIHZlcnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgSSBzaG91bGQgZXJyIG9uIHRoZSBzaWRlIG9mIGNhdXRpb24gYW5kIHJldHVybiAqKmZhbHNlKiouCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdidmYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0ODYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19JR0JWRikgJiM0Mzs9IGlnYnZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9NYWtlZmlsZTo5OmlnYnZmLXkgOj0gdmYubyBtYngubyBldGh0b29sLm8gbmV0ZGV2Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0Oi8qIGV0aHRvb2wgc3VwcG9ydCBmb3IgaWdidmYgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMjojaW5jbHVkZSBcJiMzNDtpZ2J2Zi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfdmxhbi5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTU6c3RydWN0IGlnYnZmX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xNi1cdGNoYXIgc3RhdF9zdHJpbmdbRVRIX0dTVFJJTkdfTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjItI2RlZmluZSBJR0JWRl9TVEFUKGN1cnJlbnQsIGJhc2UpIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjM6XHRcdHNpemVvZigoKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopMCktXHUwMDNlY3VycmVudCksIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjQ6XHRcdG9mZnNldG9mKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyLCBjdXJyZW50KSwgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNTpcdFx0b2Zmc2V0b2Yoc3RydWN0IGlnYnZmX2FkYXB0ZXIsIGJhc2UpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mjc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZ2J2Zl9zdGF0cyBpZ2J2Zl9nc3RyaW5nc19zdGF0c1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI4LVx0eyBcJiMzNDtyeF9wYWNrZXRzXCYjMzQ7LCBJR0JWRl9TVEFUKHN0YXRzLmdwcmMsIHN0YXRzLmJhc2VfZ3ByYykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU6I2RlZmluZSBJR0JWRl9HTE9CQUxfU1RBVFNfTEVOIEFSUkFZX1NJWkUoaWdidmZfZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDc6c3RhdGljIGNvbnN0IGNoYXIgaWdidmZfZ3N0cmluZ3NfdGVzdFtdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDgtXHRcJiMzNDtMaW5rIHRlc3QgICAob24vb2ZmbGluZSlcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NTE6I2RlZmluZSBJR0JWRl9URVNUX0xFTiBBUlJBWV9TSVpFKGlnYnZmX2dzdHJpbmdzX3Rlc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NTM6c3RhdGljIGludCBpZ2J2Zl9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01NC1cdFx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTU1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo1NjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01Ny1cdHN0cnVjdCBlMTAwMF9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy04OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo5MDpzdGF0aWMgaW50IGlnYnZmX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTkxLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTk1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjk2OnN0YXRpYyB2b2lkIGlnYnZmX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtOTctXHRcdFx0XHQgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMDE6c3RhdGljIGludCBpZ2J2Zl9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEwMi1cdFx0XHRcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTA3OnN0YXRpYyB1MzIgaWdidmZfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTA4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMDk6XHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTEwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTE0OnN0YXRpYyB2b2lkIGlnYnZmX3NldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1MzIgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjExNjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMjE6c3RhdGljIGludCBpZ2J2Zl9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTI3OnN0YXRpYyB2b2lkIGlnYnZmX2dldF9yZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTI4LVx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTI5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMzA6XHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTMxLVx0c3RydWN0IGUxMDAwX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxNTI6c3RhdGljIGludCBpZ2J2Zl9nZXRfZWVwcm9tX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxNTc6c3RhdGljIGludCBpZ2J2Zl9nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTU4LVx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTYzOnN0YXRpYyBpbnQgaWdidmZfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE2NC1cdFx0XHQgICAgc3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE2OTpzdGF0aWMgdm9pZCBpZ2J2Zl9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3MC1cdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICpkcnZpbmZvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTcyOlx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxNzQ6XHRzdHJzY3B5KGRydmluZm8tXHUwMDNlZHJpdmVyLCAgaWdidmZfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVx1MDAzZWRyaXZlcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3NS1cdHN0cnNjcHkoZHJ2aW5mby1cdTAwM2VidXNfaW5mbywgcGNpX25hbWUoYWRhcHRlci1cdTAwM2VwZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE3OTpzdGF0aWMgdm9pZCBpZ2J2Zl9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTgwLVx0XHRcdFx0c3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE4NDpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODU6XHRzdHJ1Y3QgaWdidmZfcmluZyAqdHhfcmluZyA9IGFkYXB0ZXItXHUwMDNldHhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODY6XHRzdHJ1Y3QgaWdidmZfcmluZyAqcnhfcmluZyA9IGFkYXB0ZXItXHUwMDNlcnhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxOTQ6c3RhdGljIGludCBpZ2J2Zl9zZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTk1LVx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9yaW5ncGFyYW0gKnJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTk5Olx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjIwMDpcdHN0cnVjdCBpZ2J2Zl9yaW5nICp0ZW1wX3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjAxLVx0aW50IGVyciA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTIyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzA6XHR0ZW1wX3JpbmcgPSB2bWFsbG9jKHNpemVvZihzdHJ1Y3QgaWdidmZfcmluZykpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTIzMS1cdGlmICghdGVtcF9yaW5nKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTIzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzY6XHRpZ2J2Zl9kb3duKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTIzNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjQyLVx0aWYgKG5ld190eF9jb3VudCAhPSBhZGFwdGVyLVx1MDAzZXR4X3JpbmctXHUwMDNlY291bnQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNDM6XHRcdG1lbWNweSh0ZW1wX3JpbmcsIGFkYXB0ZXItXHUwMDNldHhfcmluZywgc2l6ZW9mKHN0cnVjdCBpZ2J2Zl9yaW5nKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI0NS1cdFx0dGVtcF9yaW5nLVx1MDAzZWNvdW50ID0gbmV3X3R4X2NvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI0NjpcdFx0ZXJyID0gaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzKGFkYXB0ZXIsIHRlbXBfcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjQ3LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjUwOlx0XHRpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyhhZGFwdGVyLVx1MDAzZXR4X3JpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNTI6XHRcdG1lbWNweShhZGFwdGVyLVx1MDAzZXR4X3JpbmcsIHRlbXBfcmluZywgc2l6ZW9mKHN0cnVjdCBpZ2J2Zl9yaW5nKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjUzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNTUtXHRpZiAobmV3X3J4X2NvdW50ICE9IGFkYXB0ZXItXHUwMDNlcnhfcmluZy1cdTAwM2Vjb3VudCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI1NjpcdFx0bWVtY3B5KHRlbXBfcmluZywgYWRhcHRlci1cdTAwM2VyeF9yaW5nLCBzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjU4LVx0XHR0ZW1wX3JpbmctXHUwMDNlY291bnQgPSBuZXdfcnhfY291bnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjU5Olx0XHRlcnIgPSBpZ2J2Zl9zZXR1cF9yeF9yZXNvdXJjZXMoYWRhcHRlciwgdGVtcF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjAtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNjM6XHRcdGlnYnZmX2ZyZWVfcnhfcmVzb3VyY2VzKGFkYXB0ZXItXHUwMDNlcnhfcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI2NTpcdFx0bWVtY3B5KGFkYXB0ZXItXHUwMDNlcnhfcmluZywgdGVtcF9yaW5nLCBzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjYtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjY3LWVycl9zZXR1cDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNjg6XHRpZ2J2Zl91cChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjktXHR2ZnJlZSh0ZW1wX3JpbmcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mjc1OnN0YXRpYyBpbnQgaWdidmZfbGlua190ZXN0KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjc2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI5MjpzdGF0aWMgdm9pZCBpZ2J2Zl9kaWFnX3Rlc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yOTMtXHRcdFx0ICAgIHN0cnVjdCBldGh0b29sX3Rlc3QgKmV0aF90ZXN0LCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjk0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyOTU6XHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjk2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMDEtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMDI6XHRpZiAoaWdidmZfbGlua190ZXN0KGFkYXB0ZXIsIFx1MDAyNmRhdGFbMF0pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMwMy1cdFx0ZXRoX3Rlc3QtXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzA5OnN0YXRpYyB2b2lkIGlnYnZmX2dldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMTAtXHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMTY6c3RhdGljIGludCBpZ2J2Zl9zZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzE3LVx0XHRcdCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMjI6c3RhdGljIGludCBpZ2J2Zl9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMjMtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfY29hbGVzY2UgKmVjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMjYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjMyNzpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMzc6c3RhdGljIGludCBpZ2J2Zl9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMzgtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfY29hbGVzY2UgKmVjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zNDEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM0MjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zNDMtXHRzdHJ1Y3QgZTEwMDBfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2Vodztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM3NDpzdGF0aWMgaW50IGlnYnZmX253YXlfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zNzUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM3NjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzc4LVx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozNzk6XHRcdGlnYnZmX3JlaW5pdF9sb2NrZWQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzgwLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozODM6c3RhdGljIHZvaWQgaWdidmZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODQtXHRcdFx0XHQgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM4NzpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODgtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzkwOlx0aWdidmZfdXBkYXRlX3N0YXRzKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5MS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIElHQlZGX0dMT0JBTF9TVEFUU19MRU47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzkyLVx0XHRjaGFyICpwID0gKGNoYXIgKilhZGFwdGVyICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzkzOlx0XHRcdCAgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzk0LVx0XHRjaGFyICpiID0gKGNoYXIgKilhZGFwdGVyICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mzk1Olx0XHRcdCAgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uYmFzZV9zdGF0X29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozOTY6XHRcdGRhdGFbaV0gPSAoKGlnYnZmX2dzdHJpbmdzX3N0YXRzW2ldLnNpemVvZl9zdGF0ID09XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzk3LVx0XHRcdCAgICBzaXplb2YodTY0KSkgPyAoKih1NjQgKilwIC0gKih1NjQgKiliKSA6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0MDI6c3RhdGljIGludCBpZ2J2Zl9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc3RyaW5nc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQwMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0MTQ6c3RhdGljIHZvaWQgaWdidmZfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHN0cmluZ3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MTUtXHRcdFx0ICAgICAgdTggKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQyMS1cdGNhc2UgRVRIX1NTX1RFU1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDIyOlx0XHRtZW1jcHkoZGF0YSwgKmlnYnZmX2dzdHJpbmdzX3Rlc3QsIHNpemVvZihpZ2J2Zl9nc3RyaW5nc190ZXN0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDIzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDI1LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJR0JWRl9HTE9CQUxfU1RBVFNfTEVOOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQyNjpcdFx0XHRtZW1jcHkocCwgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9zdHJpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDI3LVx0XHRcdCAgICAgICBFVEhfR1NUUklOR19MRU4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaWdidmZfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDM1LVx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1JYX1VTRUNTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQzNjpcdC5nZXRfZHJ2aW5mb1x0XHQ9IGlnYnZmX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQzNzpcdC5nZXRfcmVnc19sZW5cdFx0PSBpZ2J2Zl9nZXRfcmVnc19sZW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDM4Olx0LmdldF9yZWdzXHRcdD0gaWdidmZfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDM5Olx0LmdldF93b2xcdFx0PSBpZ2J2Zl9nZXRfd29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0MDpcdC5zZXRfd29sXHRcdD0gaWdidmZfc2V0X3dvbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NDE6XHQuZ2V0X21zZ2xldmVsXHRcdD0gaWdidmZfZ2V0X21zZ2xldmVsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0MjpcdC5zZXRfbXNnbGV2ZWxcdFx0PSBpZ2J2Zl9zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQzOlx0Lm53YXlfcmVzZXRcdFx0PSBpZ2J2Zl9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQ0NC1cdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ1Olx0LmdldF9lZXByb21fbGVuXHRcdD0gaWdidmZfZ2V0X2VlcHJvbV9sZW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ2Olx0LmdldF9lZXByb21cdFx0PSBpZ2J2Zl9nZXRfZWVwcm9tLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0NzpcdC5zZXRfZWVwcm9tXHRcdD0gaWdidmZfc2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NDg6XHQuZ2V0X3JpbmdwYXJhbVx0XHQ9IGlnYnZmX2dldF9yaW5ncGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ5Olx0LnNldF9yaW5ncGFyYW1cdFx0PSBpZ2J2Zl9zZXRfcmluZ3BhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MDpcdC5nZXRfcGF1c2VwYXJhbVx0XHQ9IGlnYnZmX2dldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MTpcdC5zZXRfcGF1c2VwYXJhbVx0XHQ9IGlnYnZmX3NldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MjpcdC5zZWxmX3Rlc3RcdFx0PSBpZ2J2Zl9kaWFnX3Rlc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDUzOlx0LmdldF9zc2V0X2NvdW50XHRcdD0gaWdidmZfZ2V0X3NzZXRfY291bnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU0Olx0LmdldF9zdHJpbmdzXHRcdD0gaWdidmZfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU1Olx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IGlnYnZmX2dldF9ldGh0b29sX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1NjpcdC5nZXRfY29hbGVzY2VcdFx0PSBpZ2J2Zl9nZXRfY29hbGVzY2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU3Olx0LnNldF9jb2FsZXNjZVx0XHQ9IGlnYnZmX3NldF9jb2FsZXNjZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NTg6XHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IGlnYnZmX2dldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NTk6XHQuc2V0X2xpbmtfa3NldHRpbmdzXHQ9IGlnYnZmX3NldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDYyOnZvaWQgaWdidmZfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDYzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NjQ6XHRuZXRkZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZpZ2J2Zl9ldGh0b29sX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTctLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTg6c3RydWN0IGlnYnZmX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE5OnN0cnVjdCBpZ2J2Zl9hZGFwdGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oPTI3PWVudW0gbGF0ZW5jeV9yYW5nZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC04NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6ODY6ZW51bSBpZ2J2Zl9ib2FyZHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC04Ny1cdGJvYXJkX3ZmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjkxOnN0cnVjdCBpZ2J2Zl9xdWV1ZV9zdGF0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTkyLVx0dTY0IHBhY2tldHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC05OC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6OTk6c3RydWN0IGlnYnZmX2J1ZmZlciB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTEwMC1cdGRtYV9hZGRyX3QgZG1hO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxMTk6dW5pb24gaWdidmZfZGVzYyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTEyMC1cdHVuaW9uIGUxMDAwX2Fkdl9yeF9kZXNjIHJ4X2Rlc2M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjEyNTpzdHJ1Y3QgaWdidmZfcmluZyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjEyNjpcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyOyAgLyogYmFja2xpbmsgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTI3Olx0dW5pb24gaWdidmZfZGVzYyAqZGVzYztcdC8qIHBvaW50ZXIgdG8gcmluZyBtZW1vcnkgICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTEyOC1cdGRtYV9hZGRyX3QgZG1hO1x0XHQvKiBwaHlzIGFkZHJlc3Mgb2YgcmluZyAgICAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTM4LVx0LyogYXJyYXkgb2YgYnVmZmVyIGluZm9ybWF0aW9uIHN0cnVjdHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTM5Olx0c3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE0MC1cdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxNTE6XHRzdHJ1Y3QgaWdidmZfcXVldWVfc3RhdHMgc3RhdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE1Mi19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTU0LS8qIGJvYXJkIHNwZWNpZmljIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTU1OnN0cnVjdCBpZ2J2Zl9hZGFwdGVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTU2LVx0c3RydWN0IHRpbWVyX2xpc3Qgd2F0Y2hkb2dfdGltZXI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE2MTpcdGNvbnN0IHN0cnVjdCBpZ2J2Zl9pbmZvICplaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTYyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTc1LVx0LyogVHggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTc2Olx0c3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcgLyogT25lIHBlciBhY3RpdmUgcXVldWUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTc3LVx0X19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE5MC1cdC8qIFJ4ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE5MTpcdHN0cnVjdCBpZ2J2Zl9yaW5nICpyeF9yaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xOTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjIyOTpzdHJ1Y3QgaWdidmZfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTIzMC1cdGVudW0gZTEwMDBfbWFjX3R5cGVcdG1hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTIzMy1cdHZvaWRcdFx0XHQoKmluaXRfb3BzKShzdHJ1Y3QgZTEwMDBfaHcgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjIzNDpcdHMzMlx0XHRcdCgqZ2V0X3ZhcmlhbnRzKShzdHJ1Y3QgaWdidmZfYWRhcHRlciAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjM1LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI0NzplbnVtIGlnYnZmX3N0YXRlX3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNDgtXHRfX0lHQlZGX1RFU1RJTkcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI1MzpleHRlcm4gY2hhciBpZ2J2Zl9kcml2ZXJfbmFtZVtdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI1NTp2b2lkIGlnYnZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTc6aW50IGlnYnZmX3VwKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTg6dm9pZCBpZ2J2Zl9kb3duKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTk6dm9pZCBpZ2J2Zl9yZWluaXRfbG9ja2VkKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNjA6aW50IGlnYnZmX3NldHVwX3J4X3Jlc291cmNlcyhzdHJ1Y3QgaWdidmZfYWRhcHRlciAqLCBzdHJ1Y3QgaWdidmZfcmluZyAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjYxOmludCBpZ2J2Zl9zZXR1cF90eF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKiwgc3RydWN0IGlnYnZmX3JpbmcgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI2Mjp2b2lkIGlnYnZmX2ZyZWVfcnhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9yaW5nICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNjM6dm9pZCBpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyhzdHJ1Y3QgaWdidmZfcmluZyAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjY0OnZvaWQgaWdidmZfdXBkYXRlX3N0YXRzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjQtI2luY2x1ZGUgXHUwMDNjbmV0L2lwNl9jaGVja3N1bS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyNTojaW5jbHVkZSBcJiMzNDtpZ2J2Zi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjI3OmNoYXIgaWdidmZfZHJpdmVyX25hbWVbXSA9IFwmIzM0O2lnYnZmXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mjg6c3RhdGljIGNvbnN0IGNoYXIgaWdidmZfZHJpdmVyX3N0cmluZ1tdID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI5LVx0XHQgIFwmIzM0O0ludGVsKFIpIEdpZ2FiaXQgVmlydHVhbCBGdW5jdGlvbiBOZXR3b3JrIERyaXZlclwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjMwOnN0YXRpYyBjb25zdCBjaGFyIGlnYnZmX2NvcHlyaWdodFtdID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTMxLVx0XHQgIFwmIzM0O0NvcHlyaWdodCAoYykgMjAwOSAtIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uXCYjMzQ7O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTM2PU1PRFVMRV9QQVJNX0RFU0MoZGVidWcsIFwmIzM0O0RlYnVnIGxldmVsICgwPW5vbmUsLi4uLDE2PWFsbClcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozODpzdGF0aWMgaW50IGlnYnZmX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM5OnN0YXRpYyB2b2lkIGlnYnZmX3Jlc2V0KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDA6c3RhdGljIHZvaWQgaWdidmZfc2V0X2ludGVycnVwdF9jYXBhYmlsaXR5KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDE6c3RhdGljIHZvaWQgaWdidmZfcmVzZXRfaW50ZXJydXB0X2NhcGFiaWxpdHkoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQzOnN0YXRpYyBzdHJ1Y3QgaWdidmZfaW5mbyBpZ2J2Zl92Zl9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDQtXHQubWFjXHRcdD0gZTEwMDBfdmZhZGFwdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUwOnN0YXRpYyBzdHJ1Y3QgaWdidmZfaW5mbyBpZ2J2Zl9pMzUwX3ZmX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MS1cdC5tYWNcdFx0PSBlMTAwMF92ZmFkYXB0X2kzNTAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1NzpzdGF0aWMgY29uc3Qgc3RydWN0IGlnYnZmX2luZm8gKmlnYnZmX2luZm9fdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1ODpcdFtib2FyZF92Zl1cdD0gXHUwMDI2aWdidmZfdmZfaW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjU5Olx0W2JvYXJkX2kzNTBfdmZdXHQ9IFx1MDAyNmlnYnZmX2kzNTBfdmZfaW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTYwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo2MzogKiBpZ2J2Zl9kZXNjX3VudXNlZCAtIGNhbGN1bGF0ZSBpZiB3ZSBoYXZlIHVudXNlZCBkZXNjcmlwdG9yc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjQtICogQHJpbmc6IGFkZHJlc3Mgb2YgcmVjZWl2ZSByaW5nIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjUtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NjY6c3RhdGljIGludCBpZ2J2Zl9kZXNjX3VudXNlZChzdHJ1Y3QgaWdidmZfcmluZyAqcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTY3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy03NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjc1OiAqIGlnYnZmX3JlY2VpdmVfc2tiIC0gaGVscGVyIGZ1bmN0aW9uIHRvIGhhbmRsZSBSeCBpbmRpY2F0aW9uc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNzYtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtODItICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6ODM6c3RhdGljIHZvaWQgaWdidmZfcmVjZWl2ZV9za2Ioc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy04NC1cdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjEwMzpzdGF0aWMgaW5saW5lIHZvaWQgaWdidmZfcnhfY2hlY2tzdW1fYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTA0LVx0XHRcdFx0XHQgdTMyIHN0YXR1c19lcnIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTI4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MTI5OiAqIGlnYnZmX2FsbG9jX3J4X2J1ZmZlcnMgLSBSZXBsYWNlIHVzZWQgcmVjZWl2ZSBidWZmZXJzOyBwYWNrZXQgc3BsaXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEzMC0gKiBAcnhfcmluZzogYWRkcmVzcyBvZiByaW5nIHN0cnVjdHVyZSB0byByZXBvcHVsYXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTMyLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjEzMzpzdGF0aWMgdm9pZCBpZ2J2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpZ2J2Zl9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTM0LVx0XHRcdFx0ICAgaW50IGNsZWFuZWRfY291bnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MTM2Olx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSByeF9yaW5nLVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzctXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gYWRhcHRlci1cdTAwM2VuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTM5LVx0dW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoxNDA6XHRzdHJ1Y3QgaWdidmZfYnVmZmVyICpidWZmZXJfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTE0MS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjM2OiAqIGlnYnZmX2NsZWFuX3J4X2lycSAtIFNlbmQgcmVjZWl2ZWQgZGF0YSB1cCB0aGUgbmV0d29yayBzdGFjazsgbGVnYWN5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzctICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjQzLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjI0NDpzdGF0aWMgYm9vbCBpZ2J2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNDUtXHRcdFx0ICAgICAgIGludCAqd29ya19kb25lLCBpbnQgd29ya190b19kbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI0Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyNDc6XHRzdHJ1Y3QgaWdidmZfcmluZyAqcnhfcmluZyA9IGFkYXB0ZXItXHUwMDNlcnhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI0OC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLVx1MDAzZW5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNTAtXHR1bmlvbiBlMTAwMF9hZHZfcnhfZGVzYyAqcnhfZGVzYywgKm5leHRfcnhkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjUxOlx0c3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm8sICpuZXh0X2J1ZmZlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI1Mi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MzUwOlx0XHRpZ2J2Zl9yeF9jaGVja3N1bV9hZHYoYWRhcHRlciwgc3RhdGVyciwgc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM1MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozNTQ6XHRcdGlnYnZmX3JlY2VpdmVfc2tiKGFkYXB0ZXIsIG5ldGRldiwgc2tiLCBzdGF0ZXJyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzU1LVx0XHRcdFx0ICByeF9kZXNjLVx1MDAzZXdiLnVwcGVyLnZsYW4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM2MS1cdFx0aWYgKGNsZWFuZWRfY291bnQgXHUwMDNlPSBJR0JWRl9SWF9CVUZGRVJfV1JJVEUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM2MjpcdFx0XHRpZ2J2Zl9hbGxvY19yeF9idWZmZXJzKHJ4X3JpbmcsIGNsZWFuZWRfY291bnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzYzLVx0XHRcdGNsZWFuZWRfY291bnQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM3My1cdHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiA9IGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozNzQ6XHRjbGVhbmVkX2NvdW50ID0gaWdidmZfZGVzY191bnVzZWQocnhfcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNzYtXHRpZiAoY2xlYW5lZF9jb3VudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM3NzpcdFx0aWdidmZfYWxsb2NfcnhfYnVmZmVycyhyeF9yaW5nLCBjbGVhbmVkX2NvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM3OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozODY6c3RhdGljIHZvaWQgaWdidmZfcHV0X3R4YnVmKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mzg3Olx0XHRcdCAgICBzdHJ1Y3QgaWdidmZfYnVmZmVyICpidWZmZXJfaW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM4OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDA5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDEwOiAqIGlnYnZmX3NldHVwX3R4X3Jlc291cmNlcyAtIGFsbG9jYXRlIFR4IHJlc291cmNlcyAoRGVzY3JpcHRvcnMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MTEtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDE1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQxNjppbnQgaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDE3Olx0XHRcdCAgICAgc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQyMjpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGlnYnZmX2J1ZmZlcikgKiB0eF9yaW5nLVx1MDAzZWNvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDIzLVx0dHhfcmluZy1cdTAwM2VidWZmZXJfaW5mbyA9IHZ6YWxsb2Moc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDQ4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDQ5OiAqIGlnYnZmX3NldHVwX3J4X3Jlc291cmNlcyAtIGFsbG9jYXRlIFJ4IHJlc291cmNlcyAoRGVzY3JpcHRvcnMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00NTAtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDU0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQ1NTppbnQgaWdidmZfc2V0dXBfcnhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDU2Olx0XHRcdCAgICAgc3RydWN0IGlnYnZmX3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00NTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQ2MTpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGlnYnZmX2J1ZmZlcikgKiByeF9yaW5nLVx1MDAzZWNvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDYyLVx0cnhfcmluZy1cdTAwM2VidWZmZXJfaW5mbyA9IHZ6YWxsb2Moc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDkyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDkzOiAqIGlnYnZmX2NsZWFuX3R4X3JpbmcgLSBGcmVlIFR4IEJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ5NC0gKiBAdHhfcmluZzogcmluZyB0byBiZSBjbGVhbmVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OTUtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDk2OnN0YXRpYyB2b2lkIGlnYnZmX2NsZWFuX3R4X3Jpbmcoc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDk4Olx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSB0eF9yaW5nLVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo0OTk6XHRzdHJ1Y3QgaWdidmZfYnVmZmVyICpidWZmZXJfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUwMC1cdHVuc2lnbmVkIGxvbmcgc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MDgtXHRcdGJ1ZmZlcl9pbmZvID0gXHUwMDI2dHhfcmluZy1cdTAwM2VidWZmZXJfaW5mb1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUwOTpcdFx0aWdidmZfcHV0X3R4YnVmKGFkYXB0ZXIsIGJ1ZmZlcl9pbmZvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUxMC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUxMjpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGlnYnZmX2J1ZmZlcikgKiB0eF9yaW5nLVx1MDAzZWNvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTEzLVx0bWVtc2V0KHR4X3JpbmctXHUwMDNlYnVmZmVyX2luZm8sIDAsIHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUyNS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUyNjogKiBpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyAtIEZyZWUgVHggUmVzb3VyY2VzIHBlciBRdWV1ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTI3LSAqIEB0eF9yaW5nOiByaW5nIHRvIGZyZWUgcmVzb3VyY2VzIGZyb21cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MzAtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NTMxOnZvaWQgaWdidmZfZnJlZV90eF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUzNC1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzM0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBpZ2J2ZmAgYW5kIERldGVybWluaW5nIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBzbyB0aGUgYGlnYnZmYCBkcml2ZXIgaXMgZGVmaW5pdGVseSBwcmVzZW50IGFuZCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0JiMzOTtzIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpcyB0aGUga2V5IHRlc3QgZW52aXJvbm1lbnQuIFFFTVUgZW11bGF0ZXMgYGlnYmAsIGFuZCBzaW5jZSBgaWdiYCBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gYGlnYnZmYCAqc2hvdWxkKiBiZSBwcm9iZS1hYmxlIGlmIFNSLUlPViBpcyBlbmFibGVkIG9uIHRoZSBgaWdiYCBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2RvZXMgc3l6a2FsbGVyIGV2ZW4gZW5hYmxlIFNSLUlPViBvbiBgaWdiYD8mIzM0OyBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSByZWNhbGwuIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYSBgc3l6X3BjaXZmYCBjYWxsPyBObywgaXQgZG9lc24mIzM5O3QuCgpCdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQ6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiByZXR1cm4gZmFsc2UuJiMzNDsgVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgYGlnYnZmYCB0cnVseSAqaW1wb3NzaWJsZSogdG8gcmVhY2g/IElmIFFFTVUgZW11bGF0ZXMgYGlnYmAsIGFuZCBgaWdiYCBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gKnRlY2huaWNhbGx5KiwgYGlnYnZmYCBpcyByZWFjaGFibGUgd2l0aGluIFFFTVUgd2l0aCBzcGVjaWZpYyBjb25maWd1cmF0aW9uLgoKSG93ZXZlciwgdGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggd2FzIGFwcGxpZWQgYnkgYHN5ei1jbHVzdGVyYCBhbmQgdGhlIGF1dGhvciBpcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2Agc3VnZ2VzdHMgdGhhdCBzeXprYWxsZXIgKmRpZCogZmluZCBhIGJ1ZyBvciBpcyBhY3RpdmVseSBmdXp6aW5nIHRoaXMgY29kZSEgVGhpcyBpcyBzaWduaWZpY2FudC4gSXQmIzM5O3MgYSBzaW11bGF0ZWQgcGF0Y2gsIGJ1dCBpdCBjb25maXJtcyB0aGUgcGF0aCBpcyByZWxldmFudC4KCkkgbmVlZCB0byBsb29rIGF0IHRoZSBjb2RlLiBUaGUgY2hhbmdlIGluIGBpZ2J2Zi9uZXRkZXYuY2AgaW52b2x2ZXMgcmVtb3ZpbmcgYGlmIChjb3VudCkgY291bnQtLTtgIGJlZm9yZSBhIGB3aGlsZSAoY291bnQtLSlgIGxvb3Agd2l0aGluIGBpZ2J2Zl90eF9tYXBfYWR2YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFsdGVyaW5nIGxvb3AgYmVoYXZpb3IsIHdoaWNoIGlzIGRlZmluaXRlbHkgaW50ZXJlc3RpbmcuCgpXaGF0IGFib3V0IGBpY2VgIGFuZCBgaWRwZmA/IFRob3NlIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzLCBhbmQgdGhlcmUmIzM5O3Mgbm8gd2F5IHRoZXkmIzM5O3JlIHJlYWNoYWJsZSBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudC4gQnV0IGBpZ2J2ZmAgKmlzKiByZWFjaGFibGUgaWYgU1ItSU9WIG9uIGBpZ2JgIGlzIHV0aWxpemVkLgoKTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzOiAmIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsgU2luY2UgYGlnYnZmYCAqaXMqIHJlYWNoYWJsZSAoYWxiZWl0IHdpdGggY29uZmlndXJhdGlvbikgaW4gUUVNVSwgYW5kIHNpbmNlIHRoZSBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyBgaWdidmZfdHhfbWFwX2FkdmAsIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYXR0ZW50aW9uIG5vdyBzaGlmdHMgc3BlY2lmaWNhbGx5IHRvIGBpZ2J2Zl90eF9tYXBfYWR2YC4gSXQmIzM5O3MgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGNhbGxlZCBieSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAuIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGNhbGwgc2l0ZXMgZm9yIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdidmZfdHhfbWFwX2FkdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yMTA3PXN0YXRpYyBpbnQgaWdidmZfbWF5YmVfc3RvcF90eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjEzNjpzdGF0aWMgaW5saW5lIGludCBpZ2J2Zl90eF9tYXBfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNy1cdFx0XHRcdCAgIHN0cnVjdCBpZ2J2Zl9yaW5nICp0eF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIyNjU9c3RhdGljIG5ldGRldl90eF90IGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzIyLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMzIzOlx0Y291bnQgPSBpZ2J2Zl90eF9tYXBfYWR2KGFkYXB0ZXIsIHR4X3JpbmcsIHNrYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzI0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDA4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIElHQlZGIFRyYW5zbWl0IFBhdGgqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgaWdidmZfdHhfbWFwX2FkdmAgaXMgZ2V0dGluZyBpbnZva2VkIGJ5IGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YC4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgY29ubmVjdGlvbi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGVyZSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgY2FsbGVkIGZyb20uIEFoLCBpdCYjMzk7cyBgaWdidmZfeG1pdF9mcmFtZWAuIEFscmlnaHQsIG5vdyBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIHdob2xlIHRyYW5zbWl0IGZsb3cuIFRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGBpZ2J2Zl94bWl0X2ZyYW1lYC4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IG9uZSBpcyBoYW5kbGluZyB0aGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdidmZfeG1pdF9mcmFtZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yMjA2PXN0YXRpYyBpbmxpbmUgdm9pZCBpZ2J2Zl90eF9xdWV1ZV9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjI2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjIyNjU6c3RhdGljIG5ldGRldl90eF90IGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIyNjYtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjMzOTpzdGF0aWMgbmV0ZGV2X3R4X3QgaWdidmZfeG1pdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM0MC1cdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMzUyOlx0cmV0dXJuIGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc2tiLCBuZXRkZXYsIHR4X3JpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1My19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjY2OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlnYnZmX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjY3MS1cdC5uZG9fc3RvcFx0XHQ9IGlnYnZmX2Nsb3NlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjY3MjpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGlnYnZmX3htaXRfZnJhbWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNjczLVx0Lm5kb19zZXRfcnhfbW9kZVx0PSBpZ2J2Zl9zZXRfcnhfbW9kZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzIzNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDcxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBpZ2J2Zl94bWl0X2ZyYW1lYCwgd2hpY2ggSSBrbm93IGlzIHRoZSBgbmRvX3N0YXJ0X3htaXRgIGZ1bmN0aW9uIGluIHRoZSBgaWdidmZgIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IE15IGluaXRpYWwgdGhvdWdodCBpcyB5ZXMsIGlmIGBpZ2J2ZmAgaXMgZXZlbiAqcmVhY2hhYmxlKi4gVXN1YWxseSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGZvY3VzIG9uIGBpZ2J2ZmAgYmVjYXVzZSBpdCBuZWVkcyBTUi1JT1Ygc2V0IHVwIG9uIHRoZSBgaWdiYCBkZXZpY2UsIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIFFFTVUgY29uZmlncyB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgcHJvdmlkZS4KCldhaXQsIHRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gYGZhbHNlYCBpZiB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBJcyBgaWdidmZgIGltcG9zc2libGUgdG8gcmVhY2g/IE5vLCBhY3R1YWxseSwgd2l0aCB0aGUgcmlnaHQgUUVNVSBjb25maWd1cmF0aW9uIOKAkyBzcGVjaWZpY2FsbHkgZW11bGF0aW5nIGBpZ2JgIGFuZCBlbmFibGluZyBTUi1JT1Yg4oCTIGl0ICppcyogcmVhY2hhYmxlLiBgaWNlYCBhbmQgYGlkcGZgLCBvbiB0aGUgb3RoZXIgaGFuZCwgYXJlIGEgbm8tZ28gc2luY2UgdGhlcmUgaXNuJiMzOTt0IHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhvc2UuCgpCdXQgd2hhdCBpZiB0aGUgcGF0Y2ggaXMganVzdCBwaHlzaWNhbCBuZXR3b3JrIGRyaXZlciBjaGFuZ2VzPyBUaG9zZSBhcmUgdXN1YWxseSB1bnJlYWNoYWJsZSB1bmxlc3MgdGhlcmUgaXMgYW4gZW11bGF0b3IsIGFuZCBgaWdidmZgIGhhcyBhbiBlbXVsYXRvciAoUUVNVSBgaWdiYCB3aXRoIFNSLUlPVikuIE5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24sIHdoaWNoIGlzIGBJR0JWRmAuCgpXaGF0IGFib3V0IGBpY2VgIGFuZCBgaWRwZmA/IFRob3NlIGNvbmZpZ3MgYXJlIGBJQ0VgIGFuZCBgSURQRmAsIHJlc3BlY3RpdmVseS4KCklmIEkmIzM5O20gZ29pbmcgdG8gc2F5IHRoaXMgaXMgd29ydGggZnV6emluZyAoYFdvcnRoRnV6emluZz10cnVlYCksIHRoZW4gSSBuZWVkIHRvIGxpc3QgZWl0aGVyIGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YCBvciBgaWdidmZfeG1pdF9mcmFtZWAgaW4gYEZvY3VzU3ltYm9sc2AuIExldCYjMzk7cyBkb3VibGUtY2hlY2sgYWdhaW4sIGBpZ2JgIHdpdGggU1ItSU9WIGlzIHN1cHBvcnRlZCBmcm9tIFFFTVUgdmVyc2lvbiA4LjAsIHNvIHllcywgSSBjYW4gcHJvYmUgYGlnYnZmYC4KClRoZXJlZm9yZSwgSSYjMzk7bSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYCBiZWNhdXNlIGBpZ2J2ZmAgKmlzKiByZWFjaGFibGUgdGhyb3VnaCBRRU1VJiMzOTtzIGBpZ2JgIGVtdWxhdGlvbi4KClRoZSBwYXRjaCAqYWxzbyogdG91Y2hlcyBgaWNlYCBhbmQgYGlkcGZgLCBidXQgdGhleSBhcmUgbm90IHJlYWNoYWJsZS4gSSBzaG91bGRuJiMzOTt0IGZvY3VzIG9uIHRoZW0uIEkgKnNob3VsZCogbGlzdCB0aGVpciBjb25maWdzLCB0aG91Z2gsIGJlY2F1c2UgJiMzNDtEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzLi4uIE9ubHkgbGlzdCB0aG9zZSB0aGF0IHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OyBCdXQgd2FpdCwgYXJlIHRoZXkgKnRydWx5KiB1bnJlYWNoYWJsZT8KClRoZSBwcm9tcHQgc2F5cyB0aGF0IGlmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFNpbmNlIGBpZ2J2ZmAgaXMgcmVhY2hhYmxlLCB0aGUgcGF0Y2gsIGFzIGEgd2hvbGUsIGlzIHdvcnRoIGZ1enppbmcgKGF0IGxlYXN0IHRoZSBgaWdidmZgIHBhcnQpLgoKU28sIGluIHRoZSBlbmQsIEkmIzM5O2xsIGxpc3QgYElHQlZGYCwgYElDRWAsIGFuZCBgSURQRmAuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgYGlkcGZfaWRjLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZHBmX2lkY192ZGV2X210dV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTEwNzE9dm9pZCBpZHBmX2lkY19pc3N1ZV9yZXNldF9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX2NvcmVfZGV2X2luZm8gKmNkZXZfaW5mbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMDcyOnZvaWQgaWRwZl9pZGNfdmRldl9tdHVfZXZlbnQoc3RydWN0IGlpZGNfcmRtYV92cG9ydF9kZXZfaW5mbyAqdmRldl9pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTA3My1cdFx0XHQgICAgIGVudW0gaWlkY19yZG1hX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jPTExMj1zdGF0aWMgaW50IGlkcGZfaWRjX2luaXRfYXV4X3Zwb3J0X2RldihzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jLTE0Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYzoxNDg6ICogaWRwZl9pZGNfdmRldl9tdHVfZXZlbnQgLSBGdW5jdGlvbiB0byBoYW5kbGUgSURDIHZwb3J0IG10dSBjaGFuZ2UgZXZlbnRzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMtMTQ5LSAqIEB2ZGV2X2luZm86IElEQyB2cG9ydCBkZXZpY2UgaW5mbyBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jLTE1MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYzoxNTI6dm9pZCBpZHBmX2lkY192ZGV2X210dV9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2Rldl9pbmZvICp2ZGV2X2luZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMtMTUzLVx0XHRcdCAgICAgZW51bSBpaWRjX3JkbWFfZXZlbnRfdHlwZSBldmVudF90eXBlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0yMDA0PWludCBpZHBmX2luaXRpYXRlX3NvZnRfcmVzZXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yMDUzLVx0Y2FzZSBJRFBGX1NSX01UVV9DSEFOR0U6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MjA1NDpcdFx0aWRwZl9pZGNfdmRldl9tdHVfZXZlbnQodnBvcnQtXHUwMDNldmRldl9pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTIwNTUtXHRcdFx0XHRcdElJRENfUkRNQV9FVkVOVF9CRUZPUkVfTVRVX0NIQU5HRSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTIxMTYtXHRpZiAocmVzZXRfY2F1c2UgPT0gSURQRl9TUl9NVFVfQ0hBTkdFKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jOjIxMTc6XHRcdGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHZwb3J0LVx1MDAzZXZkZXZfaW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yMTE4LVx0XHRcdFx0XHRJSURDX1JETUFfRVZFTlRfQUZURVJfTVRVX0NIQU5HRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1Mzc1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEcml2ZXIgUmVhY2hhYmlsaXR5IGFuZCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBkcml2ZXIgY29kZSBhbmQgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlzIHdoYXQmIzM5O3MgYWN0dWFsbHkgKnJlbGV2YW50KiB0byBpbnZlc3RpZ2F0ZS4gYGlkcGZgIGlzbiYjMzk7dCByZWFjaGFibGUgd2l0aGluIHRoZSBRRU1VIGVudmlyb25tZW50LCBhbmQgbmVpdGhlciBpcyBgaWNlYCwgc28gdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gU2luY2UgYGlnYnZmYCAqaXMqIHJlYWNoYWJsZSwgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLgoKVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBzZWVtIHRvIGNlbnRlciBhcm91bmQgYGlnYnZmYCwgYW5kIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBpZ2J2Zl90eF9tYXBfYWR2YCBmdW5jdGlvbi4gQWgsIGl0JiMzOTtzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiDigJMgbWVhbmluZyBpdCYjMzk7cyBjb21waWxlZCBkaXJlY3RseSBpbnRvIGl0cyBjYWxsaW5nIGZ1bmN0aW9ucy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gdHJhY2UgKnVwKiB0aGUgY2FsbCBjaGFpbi4gYGlnYnZmX3R4X21hcF9hZHZgIGlzIGNhbGxlZCBieSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAuIEkmIzM5O2xsIGFkZCBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgdG8gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdCwgdGhhdCBtYWtlcyBzZW5zZS4gV2FpdCBhIG1pbnV0ZS4uLiB0aGF0IGZ1bmN0aW9uIGlzIGFsc28gc3RhdGljISBUaGUgKmV4cG9ydGVkKiBvbmUgaXMgYWN0dWFsbHkgYGlnYnZmX3htaXRfZnJhbWVgLCBzbyBJJiMzOTtsbCBhZGQgdGhhdCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCBpbnN0ZWFkLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNoYW5nZXMgaW4gYGljZV9tYWluLmNgLiBIbW0sIHRoaXMgbW9kaWZpY2F0aW9uIGluIGBpY2VfcmVzdW1lYCBpbnRyb2R1Y2VzIGEgd2FpdGluZyBtZWNoYW5pc20gd2l0aCBgaWNlX3dhaXRfZm9yX3Jlc2V0YC4gVGhlIGNvZGUgYXR0ZW1wdHMgdG8gd2FpdCBmb3IgdGhlIHNjaGVkdWxlZCByZXNldCB0byBmaW5pc2ggYmVmb3JlIHJldHVybmluZywgd2hpY2ggc2VlbXMgc2Vuc2libGUgZm9yIGhhbmRsaW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRoaXMuCgpUaGVuLCB0aGVyZSYjMzk7cyBhIGNoYW5nZSBpbiBgaWNlX3ZmX2xpYi5jYCB3aGljaCBpbmNsdWRlcyBgaWNlX3Jlc2V0X2ludGVycnVwdHNgLCB3aGljaCB6ZXJvZXMgb3V0IGludGVycnVwdC1yZWxhdGVkIHJlZ2lzdGVycy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY29uc2lkZXJhdGlvbiBmb3IgaW50ZXJydXB0IG1hbmFnZW1lbnQgYW5kIGhvdyBpdCBtaWdodCBpbnRlcmFjdCB3aXRoIG91ciB0YXJnZXQgY29kZS4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIGNvbmZpZ3VyYXRpb24uIEdpdmVuIHRoYXQgb25seSBgaWdidmZgIGlzIHJlYWNoYWJsZSwgSSBuZWVkIHRvIGxpc3Qgd2hhdCBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBsaXN0IHdoYXQgbmVlZHMgdG8gYmUgKmV4cGxpY2l0bHkqIGVuYWJsZWQuIEkgaW5pdGlhbGx5IGFzc3VtZWQgdGhhdCBzaW5jZSBgaWNlYCBhbmQgYGlkcGZgIGFyZW4mIzM5O3QgcmVhY2hhYmxlLCBJIGNvdWxkIGV4Y2x1ZGUgdGhlbS4gSG93ZXZlciwgaWYgSSBleGNsdWRlIGBJQ0VgIGFuZCBgSURQRmAsIHRoZSBtb2RpZmllZCBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBtb2R1bGVzIHdvbiYjMzk7dCBldmVuIGJlIGNvbXBpbGVkIGluIHRoZSBmaXJzdCBwbGFjZSwgYW5kIHRodXMsIHdvbiYjMzk7dCBiZSB0ZXN0ZWQuIFNvLCBpdCYjMzk7cyBiZXN0IHRvIGJlIGNvbXByZWhlbnNpdmUuIFRodXMsIEkgbmVlZCB0byBpbmNsdWRlIHRoZW0gdG8gZW5zdXJlIHRoZSBidWlsZCBwcm9jZXNzIHBpY2tzIHRoZW0gdXAuIFNvLCBpdCBzZWVtcyBJIHNob3VsZCBsaXN0IGBJQ0VgLCBgSURQRmAsIGFuZCBgSUdCVkZgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4KCkJ1dCwgSSBtdXN0IHZlcmlmeSB0aGF0IGBJR0JWRmAgaXMgdGhlIGNvcnJlY3QgY29uZmlnLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBjb25maXJtIHRoaXMgY29uZmlndXJhdGlvbiBpcyB0aGUgY29ycmVjdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElHQlZGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3OTYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBJbnNwZWN0aW9uOiBJbnRlbCBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gVGhlIHRhc2sgYXQgaGFuZCBsaWtlbHkgaW52b2x2ZXMgY29uZmlndXJpbmcgb3IgbW9kaWZ5aW5nIHRoZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXIsIHNvIGEgbmF0dXJhbCBmaXJzdCBzdGVwIGlzIHRvIGV4YW1pbmUgaXRzIEtjb25maWcgZmlsZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgc3RhcnRpbmcgd2l0aCB0aGUgZm91bmRhdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBhbHJlYWR5IGF2YWlsYWJsZSwgd2hhdCYjMzk7cyBjb250cm9sbGluZyB3aGF0LCBhbmQgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBtb2R1bGVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGRlZmluaXRpb24gZm9yIGhvdyB0aGlzIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGluIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbS4gRnJvbSB0aGVyZSBJJiMzOTtsbCBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgY29udHJvbCB2YXJpYWJsZXMgZm9yIHRoZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSUdCVkYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xMjA9Y29uZmlnIElHQl9EQ0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTI5OmNvbmZpZyBJR0JWRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xMzAtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSA4MjU3NiBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxMTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IEkmIzM5O20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OgoKKipDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCBgSUdCVkZgIGlzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24sIHRoYXQmIzM5O3MgY2xlYXIuIEJ1dCBub3cgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIHdoYXQgYWJvdXQgdGhlIGludGVycGxheSB3aXRoIGBJQ0VgIGFuZCBgSURQRmA/IFdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBnb2luZyB0byB3b3JrIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHByaW1hcnkgb25lLiBBcmUgdGhleSBkZXBlbmRlbmNpZXM/IERvIHRoZXkgb3ZlcnJpZGUgc3BlY2lmaWMgcGFyYW1ldGVycz8gT3IgZG8gdGhleSBvcGVyYXRlIG9uIG9ydGhvZ29uYWwgYXNwZWN0cyBvZiB0aGUgc3lzdGVtPyBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0aHJlZSBpcyBjcnVjaWFsIGZvciBwcm9wZXIgb3BlcmF0aW9uIGFuZCBkZWJ1Z2dpbmcuIExldCYjMzk7cyBzZWUgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzdHJ1Y3R1cmVkIHRvIGdhaW4gY2xhcml0eSBvbiB0aGVpciBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJQ0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yNjg9Y29uZmlnIEk0MEVWRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyOTE6Y29uZmlnIElDRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yOTItXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzIwOmNvbmZpZyBJQ0VfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzIxLVx0Ym9vbCBcJiMzNDtJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIFN1cHBvcnQgSFdNT04gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzozMzE6Y29uZmlnIElDRV9TV0lUQ0hERVZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzMyLVx0Ym9vbCBcJiMzNDtTd2l0Y2hkZXYgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzozNDU6Y29uZmlnIElDRV9IV1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gcGxhdGZvcm1zIHdpdGggUFRNIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2MzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgRGlnaXRhbCBQdWJsaXNoaW5nIExhbmRzY2FwZSoqCgpTbywgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZGlnaXRhbCBwdWJsaXNoaW5nLiBJJiMzOTttIHRha2luZyBzdG9jayBoZXJlLCBjb25zaWRlcmluZyBhbGwgdGhlIGFuZ2xlcy4gRFJNLCBhY2Nlc3NpYmlsaXR5IHN0YW5kYXJkcywgRVBVQiAzLCB0aGUgb25nb2luZyBkZWJhdGUgYXJvdW5kIGZpeGVkLWxheW91dCBmb3JtYXRzIHZlcnN1cyByZWZsb3dhYmxlIHRleHQuLi4gSSYjMzk7bSByZWFsbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGNvbXBsZXhpdGllcyBpbnZvbHZlZCBpbiBjcmVhdGluZyBhbmQgZGlzdHJpYnV0aW5nIGNvbnRlbnQuIFRoZW4sIGEga2V5IHF1ZXN0aW9uIGhpdHMgbWU6IFdoYXQgYWJvdXQgdGhlIEludGVybmF0aW9uYWwgRGlnaXRhbCBQdWJsaXNoaW5nIEZvcnVtIOKAkyB0aGUgKklEUEYqPyBXZSBhbGwga25vdyBpdHMgaGlzdG9yeSBhbmQgaXRzIGV2b2x1dGlvbi4gTm93LCB3aXRoIGl0cyByb2xlIGhhdmluZyB0cmFuc2Zvcm1lZCBvdmVyIHRoZSB5ZWFycywgSSBuZWVkIHRvIGNvbnNpZGVyIGl0cyBsYXN0aW5nIHNpZ25pZmljYW5jZSwgb3Igd2hldGhlciBpdHMgcGxhY2UgaGFzIGJlZW4gdGFrZW4gYnkgb3RoZXIgaW5kdXN0cnkgYm9kaWVzLiBXZSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoZSBpbXBsaWNhdGlvbnMgb24gZnV0dXJlIHN0YW5kYXJkcyBhbmQgYnVzaW5lc3MgbW9kZWxzLiBXaGF0IGltcGFjdCBkaWQgdGhleSBoYXZlPyBXaGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlaXIgd29yayBvbiBhY2Nlc3NpYmlsaXR5IGFuZCBtZXRhZGF0YT8gSG93IGRvZXMgdGhhdCBzdGlsbCBmYWN0b3IgaW50byB0aGUgZGlnaXRhbCBwdWJsaXNoaW5nIHNwYWNlIG5vdz8gU28gbXVjaCB0byBjb25zaWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElEUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6NDpjb25maWcgSURQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz0xNz1pZiBJRFBGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTk6Y29uZmlnIElEUEZfU0lOR0xFUVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTIwLVx0Ym9vbCBcJiMzNDtpZHBmIHNpbmdsZXEgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA2OAoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAxMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQYXRjaCBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIHBhdGNoIHRvdWNoZXMgYElDRWAsIGBJRFBGYCwgYW5kIGBJR0JWRmAgZHJpdmVycy4gVGhlIHByb21wdCByZW1pbmRzIG1lIHRvIGlnbm9yZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSWYgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB1bnJlYWNoYWJsZSBjb2RlLCBJJiMzOTttIHN1cHBvc2VkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSG93ZXZlciwgYElHQlZGYCBpcyBkaWZmZXJlbnQuIEl0JiMzOTtzIGVtdWxhdGVkIHZpYSBRRU1VJiMzOTtzIGBpZ2JgIGRyaXZlciwgd2hpY2ggc3VwcG9ydHMgU1ItSU9WLCBzbyBpdCAqaXMqIHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMgaG93IHRvIGlkZW50aWZ5IHJlbGV2YW50IGZvY3VzIHN5bWJvbHMuIEkgc2VlIGNoYW5nZXMgaW4gYGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHZgIGFuZCBgaWdidmZfeG1pdF9mcmFtZWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGluY2x1ZGUgYGlnYnZmX3htaXRfZnJhbWVgIGluIGBGb2N1c1N5bWJvbHNgLiBCdXQgd2FpdCwgdGhlIG5vdGVzIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIElzIGBpZ2J2Zl94bWl0X2ZyYW1lYCBhIGhvdC1wYXRoPyBZZXMsIGl0JiMzOTtzIGBuZG9fc3RhcnRfeG1pdGAsIHNvIGl0JiMzOTtzIGNhbGxlZCBmb3IgZXZlcnkgcGFja2V0LgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgc29tZXRoaW5nIGVsc2UuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGlnYnZmX3R4X21hcF9hZHZgLCBidXQgdGhhdCYjMzk7cyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24uIE5vdCBhIHN5bWJvbCEgSG1tLCBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgYWxzbyBzdGF0aWMuIFNob3VsZCBJIGp1c3QgbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHk/CgpCdXQgbGV0JiMzOTtzIHJlY29uc2lkZXIgYGlnYnZmX3htaXRfZnJhbWVgLiBXaGlsZSBpdCAqaXMqIGhvdC1wYXRoLCBpdCYjMzk7cyBzcGVjaWZpYyB0byB0aGUgYGlnYnZmYCBkcml2ZXIuIEl0JiMzOTtzIG5vdCBhIGdlbmVyaWMga2VybmVsIGhvdC1wYXRoIGZ1bmN0aW9uIGxpa2UgYF9fZGV2X3F1ZXVlX3htaXRgLCBga2ZyZWVgLCBvciBga21hbGxvY2AuIEl0IGlzIHNwZWNpZmljIHRvIHRoZSBgaWdidmZgIGFuZCBub3QgYSBnZW5lcmFsIGhvdC1wYXRoIGZ1bmN0aW9uLiBTbywgYGlnYnZmX3htaXRfZnJhbWVgIGlzIGZpbmUhCgpJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBvdGhlciBkcml2ZXJzLiBgaWNlX3Jlc3VtZWAsIGBpY2VfcmVzZXRfaW50ZXJydXB0c2AsIGBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHRgIGFuZCBgaWRwZl9pZGNfdmRldl9tdHVfZXZlbnRgLiBTaW5jZSBgSUNFYCBhbmQgYElEUEZgIGFyZW4mIzM5O3QgcmVhY2hhYmxlLCBJIHdvbiYjMzk7dCBsaXN0IGFueSBvZiAqdGhlaXIqIGZ1bmN0aW9ucyBpbiBgRm9jdXNTeW1ib2xzYC4gQnV0IGl0IGlzIG9rYXkgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3MuCgpGaW5hbGx5LCBJJiMzOTtsbCByZS1leGFtaW5lIHRoZSBgaWdidmZfdHhfbWFwX2FkdmAgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGl0IGZpeGVzIGEgYnVnIHdoZXJlIGBjb3VudGAgd2FzIGJlaW5nIGRlY3JlbWVudGVkIGluY29ycmVjdGx5LiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IHNvbWUgdW5yZWFjaGFibGUgb3B0aW1pemF0aW9uLgoKU28sIGhlcmUmIzM5O3MgdGhlIHBsYW46IEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWAKKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7aWdidmZfeG1pdF9mcmFtZSYjMzQ7XWAKKiAgIGBFbmFibGVDb25maWdzYDogYFsmIzM0O0lHQlZGJiMzNDssICYjMzQ7SUNFJiMzNDssICYjMzQ7SURQRiYjMzQ7XWAKKiAgIGBSZWFzb25pbmdgOiAmIzM0O1RoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBJQ0UgYW5kIElEUEYgYXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcnMgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24sIElHQlZGIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFFFTVUmIzM5O3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SUdCVkYmIzM0OywKICAgICYjMzQ7SUNFJiMzNDssCiAgICAmIzM0O0lEUEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZ2J2Zl94bWl0X2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIElDRSBhbmQgSURQRiBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVycyB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiwgSUdCVkYgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUUVNVSYjMzk7cyBpZ2IgU1ItSU9WIGVtdWxhdGlvbi4gVGhlIGNoYW5nZSBpbiBpZ2J2Zl90eF9tYXBfYWR2IG1vZGlmaWVzIHRoZSB0cmFuc21pdCBwYXRoIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0JWRiYjMzQ7LAogICAgJiMzNDtJQ0UmIzM0OywKICAgICYjMzQ7SURQRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lnYnZmX3htaXRfZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJiMzOTtzIGlnYiBTUi1JT1YgZW11bGF0aW9uLiBUaGUgY2hhbmdlIGluIGlnYnZmX3R4X21hcF9hZHYgbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHBhdGggbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzowMS42MjIwOTYxNDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTAwMjAwMDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJR0JWRlwiLFxuICAgIFwiSUNFXCIsXG4gICAgXCJJRFBGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdidmZfeG1pdF9mcmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIElDRSBhbmQgSURQRiBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVycyB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiwgSUdCVkYgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUUVNVSdzIGlnYiBTUi1JT1YgZW11bGF0aW9uLiBUaGUgY2hhbmdlIGluIGlnYnZmX3R4X21hcF9hZHYgbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHBhdGggbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjE3OjAxLjYyMjEwNDU1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzOTE1NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTE2MjkwNTUzMTY1ZWIyZTYyMzUxMmUwZmM5ZWRiMWY4MDBiZGRlZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDA1OjE3OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG5pbmRleCBlMmZkMmRhYjAzZTM2My4uZDg4ODM1NDgyZDNhYWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbkBAIC01NjM3LDYgKzU2MzcsMTYgQEAgc3RhdGljIGludCBpY2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0LyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovXFxuIFxcdG1vZF90aW1lcihcXHUwMDI2cGYtXFx1MDAzZXNlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgKyBwZi1cXHUwMDNlc2Vydl90bXJfcGVyaW9kKSk7XFxuIFxcbitcXHQvKiBCZXN0LWVmZm9ydCB3YWl0IGZvciB0aGUgc2NoZWR1bGVkIHJlc2V0IHRvIGZpbmlzaCBzbyB0aGF0IHRoZVxcbitcXHQgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2VcXG4rXFx0ICogKGUuZy4gTmV0d29ya01hbmFnZXIpIG1heSB0cnkgdG8gb3BlbiB0aGUgbmV0IGRldmljZSB3aGlsZSB0aGVcXG4rXFx0ICogYXN5bmNocm9ub3VzIHJlc2V0IGlzIHN0aWxsIGluIHByb2dyZXNzLCBoaXR0aW5nIC1FQlVTWS5cXG4rXFx0ICovXFxuK1xcdHJldCA9IGljZV93YWl0X2Zvcl9yZXNldChwZiwgc2Vjc190b19qaWZmaWVzKDEwKSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiV2FpdCBmb3IgcmVzZXQgdGltZWQgb3V0ICgxMHMpIGR1cmluZyByZXN1bWU6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZXQpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXFxuaW5kZXggMjdlNGFjYjE2MjBmMGMuLjdjZThmNjZlZWJiZjNlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXFxuQEAgLTg0Nyw2ICs4NDcsMzAgQEAgc3RhdGljIHZvaWQgaWNlX25vdGlmeV92Zl9yZXNldChzdHJ1Y3QgaWNlX3ZmICp2ZilcXG4gXFx0XFx0XFx0ICAgICAgTlVMTCk7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBpY2VfcmVzZXRfaW50ZXJydXB0cyAtIGNsZWFyIGFsbCBxdWV1ZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBmb3IgYSBWU0lcXG4rICogQHZzaTogdGhlIFZTSSB3aG9zZSBpbnRlcnJ1cHQgcmVnaXN0ZXJzIHNob3VsZCBiZSBjbGVhcmVkXFxuKyAqXFxuKyAqIFplcm8gdGhlIFFJTlRfUlFDVEwgYW5kIFFJTlRfVFFDVEwgcmVnaXN0ZXJzIGZvciBhbGwgYWxsb2NhdGVkIHF1ZXVlc1xcbisgKiBpbiB0aGUgVlNJLiBUaGlzIGNsZWFycyB0aGUgZW50aXJlIHJlZ2lzdGVyIGluY2x1ZGluZyBNU0lYX0lORFgsIElUUl9JTkRYLFxcbisgKiBDQVVTRV9FTkEgYW5kIE5FWFRRIGZpZWxkcywgdW5saWtlIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCgpIHdoaWNoIG9ubHlcXG4rICogY2xlYXJzIHRoZSBDQVVTRV9FTkEgYml0LlxcbisgKi9cXG4rdm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxcbit7XFxuK1xcdHN0cnVjdCBpY2VfcGYgKnBmID0gdnNpLVxcdTAwM2ViYWNrO1xcbitcXHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlaHc7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0aWNlX2Zvcl9lYWNoX2FsbG9jX3J4cSh2c2ksIGkpXFxuK1xcdFxcdHdyMzIoaHcsIFFJTlRfUlFDVEwodnNpLVxcdTAwM2VyeHFfbWFwW2ldKSwgMCk7XFxuK1xcbitcXHRpY2VfZm9yX2VhY2hfYWxsb2NfdHhxKHZzaSwgaSlcXG4rXFx0XFx0d3IzMihodywgUUlOVF9UUUNUTCh2c2ktXFx1MDAzZXR4cV9tYXBbaV0pLCAwKTtcXG4rXFxuK1xcdGljZV9mbHVzaChodyk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2VfcmVzZXRfdmYgLSBSZXNldCBhIHBhcnRpY3VsYXIgVkZcXG4gICogQHZmOiBwb2ludGVyIHRvIHRoZSBWRiBzdHJ1Y3R1cmVcXG5AQCAtOTE4LDYgKzk0Miw5IEBAIGludCBpY2VfcmVzZXRfdmYoc3RydWN0IGljZV92ZiAqdmYsIHUzMiBmbGFncylcXG4gXFxuIFxcdGljZV9kaXNfdmZfcXModmYpO1xcbiBcXG4rXFx0LyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovXFxuK1xcdGljZV9yZXNldF9pbnRlcnJ1cHRzKHZzaSk7XFxuK1xcbiBcXHQvKiBDYWxsIERpc2FibGUgTEFOIFR4IHF1ZXVlIEFRIHdoZXRoZXIgb3Igbm90IHF1ZXVlcyBhcmVcXG4gXFx0ICogZW5hYmxlZC4gVGhpcyBpcyBuZWVkZWQgZm9yIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiBWRlIuXFxuIFxcdCAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcXG5pbmRleCA1MzkyYjA0MDQ5ODYyMS4uMzIxZDI5YzI1YjdjMTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXFxuQEAgLTI2LDYgKzI2LDcgQEBcXG4gdm9pZCBpY2VfaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XFxuIHZvaWQgaWNlX2RlaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XFxuIHZvaWQgaWNlX2Rpc192Zl9xcyhzdHJ1Y3QgaWNlX3ZmICp2Zik7XFxuK3ZvaWQgaWNlX3Jlc2V0X2ludGVycnVwdHMoc3RydWN0IGljZV92c2kgKnZzaSk7XFxuIGludCBpY2VfY2hlY2tfdmZfaW5pdChzdHJ1Y3QgaWNlX3ZmICp2Zik7XFxuIGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgaWNlX2Vycl90b192aXJ0X2VycihpbnQgZXJyKTtcXG4gc3RydWN0IGljZV9wb3J0X2luZm8gKmljZV92Zl9nZXRfcG9ydF9pbmZvKHN0cnVjdCBpY2VfdmYgKnZmKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xcbmluZGV4IDMxYmUyZjc2MTgxYzA3Li40MzFjOWM1NDZiMDRmZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXFxuQEAgLTIyNCw2ICsyMjQsMjQgQEAgdm9pZCBpY2VfdmZfZW5hX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxcbiBcXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pO1xcbiB9XFxuIFxcbisvKipcXG4rICogaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0IC0gZGlzYWJsZSBSeCBxdWV1ZSBpbnRlcnJ1cHQgdmlhIFFJTlRfUlFDVExcXG4rICogQHZzaTogVlNJIG9mIHRoZSBWRiB0byBjb25maWd1cmVcXG4rICogQHFfaWR4OiBWRiBxdWV1ZSBpbmRleCB1c2VkIHRvIGRldGVybWluZSB0aGUgcXVldWUgaW4gdGhlIFBGJ3Mgc3BhY2VcXG4rICovXFxuK3N0YXRpYyB2b2lkIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXFxuK3tcXG4rXFx0c3RydWN0IGljZV9odyAqaHcgPSBcXHUwMDI2dnNpLVxcdTAwM2ViYWNrLVxcdTAwM2VodztcXG4rXFx0dTMyIHBmcSA9IHZzaS1cXHUwMDNlcnhxX21hcFtxX2lkeF07XFxuK1xcdHUzMiByZWc7XFxuK1xcbitcXHRyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpO1xcbitcXHRyZWcgXFx1MDAyNj0gflFJTlRfUlFDVExfQ0FVU0VfRU5BX007XFxuK1xcdHdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTtcXG4rXFxuK1xcdGljZV9mbHVzaChodyk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2VfdmNfZW5hX3FzX21zZ1xcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIGluZm9cXG5AQCAtNDE2LDYgKzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcXG4gXFx0XFx0XFx0Z290byBlcnJvcl9wYXJhbTtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCBcXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRilcXG4rXFx0XFx0XFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XFxuIFxcdFxcdGJpdG1hcF96ZXJvKHZmLVxcdTAwM2VyeHFfZW5hLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpO1xcbiBcXHR9IGVsc2UgaWYgKHFfbWFwKSB7XFxuIFxcdFxcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpIHtcXG5AQCAtNDM2LDYgKzQ1Niw3IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcXG4gXFx0XFx0XFx0XFx0Z290byBlcnJvcl9wYXJhbTtcXG4gXFx0XFx0XFx0fVxcbiBcXG4rXFx0XFx0XFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XFxuIFxcdFxcdFxcdC8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi9cXG4gXFx0XFx0XFx0Y2xlYXJfYml0KHZmX3FfaWQsIHZmLVxcdTAwM2VyeHFfZW5hKTtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmNcXG5pbmRleCBiN2Q2YjA4ZmM4OWU4OS4uOWY3NjQxMzU1MDdjMjkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jXFxuQEAgLTE2Miw5ICsxNjIsMTIgQEAgdm9pZCBpZHBmX2lkY192ZGV2X210dV9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2Rldl9pbmZvICp2ZGV2X2luZm8sXFxuIFxcbiBcXHRzZXRfYml0KGV2ZW50X3R5cGUsIGV2ZW50LnR5cGUpO1xcbiBcXG4tXFx0ZGV2aWNlX2xvY2soXFx1MDAyNnZkZXZfaW5mby1cXHUwMDNlYWRldi1cXHUwMDNlZGV2KTtcXG4tXFx0YWRldiA9IHZkZXZfaW5mby1cXHUwMDNlYWRldjtcXG4tXFx0aWYgKCFhZGV2IHx8ICFhZGV2LVxcdTAwM2VkZXYuZHJpdmVyKVxcbitcXHRhZGV2ID0gUkVBRF9PTkNFKHZkZXZfaW5mby1cXHUwMDNlYWRldik7XFxuK1xcdGlmICghYWRldilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZGV2aWNlX2xvY2soXFx1MDAyNmFkZXYtXFx1MDAzZWRldik7XFxuK1xcdGlmICghYWRldi1cXHUwMDNlZGV2LmRyaXZlcilcXG4gXFx0XFx0Z290byB1bmxvY2s7XFxuIFxcdGlhZHJ2ID0gY29udGFpbmVyX29mKGFkZXYtXFx1MDAzZWRldi5kcml2ZXIsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IGlpZGNfcmRtYV92cG9ydF9hdXhpbGlhcnlfZHJ2LFxcbkBAIC0xNzIsNyArMTc1LDcgQEAgdm9pZCBpZHBmX2lkY192ZGV2X210dV9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX3Zwb3J0X2Rldl9pbmZvICp2ZGV2X2luZm8sXFxuIFxcdGlmIChpYWRydi1cXHUwMDNlZXZlbnRfaGFuZGxlcilcXG4gXFx0XFx0aWFkcnYtXFx1MDAzZWV2ZW50X2hhbmRsZXIodmRldl9pbmZvLCBcXHUwMDI2ZXZlbnQpO1xcbiB1bmxvY2s6XFxuLVxcdGRldmljZV91bmxvY2soXFx1MDAyNnZkZXZfaW5mby1cXHUwMDNlYWRldi1cXHUwMDNlZGV2KTtcXG4rXFx0ZGV2aWNlX3VubG9jayhcXHUwMDI2YWRldi1cXHUwMDNlZGV2KTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcXG5pbmRleCAwYTNkMGExY2JhNDMzYy4uYzY4NmVlMTIwYTE0M2YgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xcbkBAIC0yMTkwLDggKzIxOTAsNiBAQCBzdGF0aWMgaW5saW5lIGludCBpZ2J2Zl90eF9tYXBfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRidWZmZXJfaW5mby1cXHUwMDNldGltZV9zdGFtcCA9IDA7XFxuIFxcdGJ1ZmZlcl9pbmZvLVxcdTAwM2VsZW5ndGggPSAwO1xcbiBcXHRidWZmZXJfaW5mby1cXHUwMDNlbWFwcGVkX2FzX3BhZ2UgPSBmYWxzZTtcXG4tXFx0aWYgKGNvdW50KVxcbi1cXHRcXHRjb3VudC0tO1xcbiBcXG4gXFx0LyogY2xlYXIgdGltZXN0YW1wIGFuZCBkbWEgbWFwcGluZ3MgZm9yIHJlbWFpbmluZyBwb3J0aW9uIG9mIHBhY2tldCAqL1xcbiBcXHR3aGlsZSAoY291bnQtLSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzowMi4wMzY5NTE3MTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NTg3MTMzMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklHQlZGXCIsXG4gICAgXCJJQ0VcIixcbiAgICBcIklEUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZ2J2Zl94bWl0X2ZyYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJ3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MTYyOTA1NTMxNjVlYjJlNjIzNTEyZTBmYzllZGIxZjgwMGJkZGVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwNToxNzowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbmluZGV4IGUyZmQyZGFiMDNlMzYzLi5kODg4MzU0ODJkM2FhYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuQEAgLTU2MzcsNiArNTYzNywxNiBAQCBzdGF0aWMgaW50IGljZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0LyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovXG4gXHRtb2RfdGltZXIoXHUwMDI2cGYtXHUwMDNlc2Vydl90bXIsIHJvdW5kX2ppZmZpZXMoamlmZmllcyArIHBmLVx1MDAzZXNlcnZfdG1yX3BlcmlvZCkpO1xuIFxuK1x0LyogQmVzdC1lZmZvcnQgd2FpdCBmb3IgdGhlIHNjaGVkdWxlZCByZXNldCB0byBmaW5pc2ggc28gdGhhdCB0aGVcbitcdCAqIGRldmljZSBpcyBvcGVyYXRpb25hbCBiZWZvcmUgcmV0dXJuaW5nLiBXaXRob3V0IHRoaXMsIHVzZXJzcGFjZVxuK1x0ICogKGUuZy4gTmV0d29ya01hbmFnZXIpIG1heSB0cnkgdG8gb3BlbiB0aGUgbmV0IGRldmljZSB3aGlsZSB0aGVcbitcdCAqIGFzeW5jaHJvbm91cyByZXNldCBpcyBzdGlsbCBpbiBwcm9ncmVzcywgaGl0dGluZyAtRUJVU1kuXG4rXHQgKi9cbitcdHJldCA9IGljZV93YWl0X2Zvcl9yZXNldChwZiwgc2Vjc190b19qaWZmaWVzKDEwKSk7XG4rXHRpZiAocmV0KVxuK1x0XHRkZXZfZXJyKGRldiwgXCJXYWl0IGZvciByZXNldCB0aW1lZCBvdXQgKDEwcykgZHVyaW5nIHJlc3VtZTogJWRcXG5cIixcbitcdFx0XHRyZXQpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXG5pbmRleCAyN2U0YWNiMTYyMGYwYy4uN2NlOGY2NmVlYmJmM2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXG5AQCAtODQ3LDYgKzg0NywzMCBAQCBzdGF0aWMgdm9pZCBpY2Vfbm90aWZ5X3ZmX3Jlc2V0KHN0cnVjdCBpY2VfdmYgKnZmKVxuIFx0XHRcdCAgICAgIE5VTEwpO1xuIH1cbiBcbisvKipcbisgKiBpY2VfcmVzZXRfaW50ZXJydXB0cyAtIGNsZWFyIGFsbCBxdWV1ZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBmb3IgYSBWU0lcbisgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGludGVycnVwdCByZWdpc3RlcnMgc2hvdWxkIGJlIGNsZWFyZWRcbisgKlxuKyAqIFplcm8gdGhlIFFJTlRfUlFDVEwgYW5kIFFJTlRfVFFDVEwgcmVnaXN0ZXJzIGZvciBhbGwgYWxsb2NhdGVkIHF1ZXVlc1xuKyAqIGluIHRoZSBWU0kuIFRoaXMgY2xlYXJzIHRoZSBlbnRpcmUgcmVnaXN0ZXIgaW5jbHVkaW5nIE1TSVhfSU5EWCwgSVRSX0lORFgsXG4rICogQ0FVU0VfRU5BIGFuZCBORVhUUSBmaWVsZHMsIHVubGlrZSBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQoKSB3aGljaCBvbmx5XG4rICogY2xlYXJzIHRoZSBDQVVTRV9FTkEgYml0LlxuKyAqL1xuK3ZvaWQgaWNlX3Jlc2V0X2ludGVycnVwdHMoc3RydWN0IGljZV92c2kgKnZzaSlcbit7XG4rXHRzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS1cdTAwM2ViYWNrO1xuK1x0c3RydWN0IGljZV9odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VodztcbitcdGludCBpO1xuK1xuK1x0aWNlX2Zvcl9lYWNoX2FsbG9jX3J4cSh2c2ksIGkpXG4rXHRcdHdyMzIoaHcsIFFJTlRfUlFDVEwodnNpLVx1MDAzZXJ4cV9tYXBbaV0pLCAwKTtcbitcbitcdGljZV9mb3JfZWFjaF9hbGxvY190eHEodnNpLCBpKVxuK1x0XHR3cjMyKGh3LCBRSU5UX1RRQ1RMKHZzaS1cdTAwM2V0eHFfbWFwW2ldKSwgMCk7XG4rXG4rXHRpY2VfZmx1c2goaHcpO1xuK31cbitcbiAvKipcbiAgKiBpY2VfcmVzZXRfdmYgLSBSZXNldCBhIHBhcnRpY3VsYXIgVkZcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIHN0cnVjdHVyZVxuQEAgLTkxOCw2ICs5NDIsOSBAQCBpbnQgaWNlX3Jlc2V0X3ZmKHN0cnVjdCBpY2VfdmYgKnZmLCB1MzIgZmxhZ3MpXG4gXG4gXHRpY2VfZGlzX3ZmX3FzKHZmKTtcbiBcbitcdC8qIGNsZWFudXAgaW50ZXJydXB0IHJlZ2lzdGVycyAqL1xuK1x0aWNlX3Jlc2V0X2ludGVycnVwdHModnNpKTtcbitcbiBcdC8qIENhbGwgRGlzYWJsZSBMQU4gVHggcXVldWUgQVEgd2hldGhlciBvciBub3QgcXVldWVzIGFyZVxuIFx0ICogZW5hYmxlZC4gVGhpcyBpcyBuZWVkZWQgZm9yIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiBWRlIuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcbmluZGV4IDUzOTJiMDQwNDk4NjIxLi4zMjFkMjljMjViN2MxOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG5AQCAtMjYsNiArMjYsNyBAQFxuIHZvaWQgaWNlX2luaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpO1xuIHZvaWQgaWNlX2RlaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTtcbit2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xuIGludCBpY2VfY2hlY2tfdmZfaW5pdChzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSBpY2VfZXJyX3RvX3ZpcnRfZXJyKGludCBlcnIpO1xuIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuaW5kZXggMzFiZTJmNzYxODFjMDcuLjQzMWM5YzU0NmIwNGZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXG5AQCAtMjI0LDYgKzIyNCwyNCBAQCB2b2lkIGljZV92Zl9lbmFfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXG4gXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pO1xuIH1cbiBcbisvKipcbisgKiBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQgLSBkaXNhYmxlIFJ4IHF1ZXVlIGludGVycnVwdCB2aWEgUUlOVF9SUUNUTFxuKyAqIEB2c2k6IFZTSSBvZiB0aGUgVkYgdG8gY29uZmlndXJlXG4rICogQHFfaWR4OiBWRiBxdWV1ZSBpbmRleCB1c2VkIHRvIGRldGVybWluZSB0aGUgcXVldWUgaW4gdGhlIFBGJ3Mgc3BhY2VcbisgKi9cbitzdGF0aWMgdm9pZCBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxuK3tcbitcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2dnNpLVx1MDAzZWJhY2stXHUwMDNlaHc7XG4rXHR1MzIgcGZxID0gdnNpLVx1MDAzZXJ4cV9tYXBbcV9pZHhdO1xuK1x0dTMyIHJlZztcbitcbitcdHJlZyA9IHJkMzIoaHcsIFFJTlRfUlFDVEwocGZxKSk7XG4rXHRyZWcgXHUwMDI2PSB+UUlOVF9SUUNUTF9DQVVTRV9FTkFfTTtcbitcdHdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTtcbitcbitcdGljZV9mbHVzaChodyk7XG4rfVxuK1xuIC8qKlxuICAqIGljZV92Y19lbmFfcXNfbXNnXG4gICogQHZmOiBwb2ludGVyIHRvIHRoZSBWRiBpbmZvXG5AQCAtNDE2LDYgKzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcbiBcdFx0XHRnb3RvIGVycm9yX3BhcmFtO1xuIFx0XHR9XG4gXG4rXHRcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRilcbitcdFx0XHRpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTtcbiBcdFx0Yml0bWFwX3plcm8odmYtXHUwMDNlcnhxX2VuYSwgSUNFX01BWF9SU1NfUVNfUEVSX1ZGKTtcbiBcdH0gZWxzZSBpZiAocV9tYXApIHtcbiBcdFx0Zm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCBcdTAwMjZxX21hcCwgSUNFX01BWF9SU1NfUVNfUEVSX1ZGKSB7XG5AQCAtNDM2LDYgKzQ1Niw3IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcbiBcdFx0XHRcdGdvdG8gZXJyb3JfcGFyYW07XG4gXHRcdFx0fVxuIFxuK1x0XHRcdGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCh2c2ksIHZmX3FfaWQpO1xuIFx0XHRcdC8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi9cbiBcdFx0XHRjbGVhcl9iaXQodmZfcV9pZCwgdmYtXHUwMDNlcnhxX2VuYSk7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmNcbmluZGV4IGI3ZDZiMDhmYzg5ZTg5Li45Zjc2NDEzNTUwN2MyOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jXG5AQCAtMTYyLDkgKzE2MiwxMiBAQCB2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcbiBcbiBcdHNldF9iaXQoZXZlbnRfdHlwZSwgZXZlbnQudHlwZSk7XG4gXG4tXHRkZXZpY2VfbG9jayhcdTAwMjZ2ZGV2X2luZm8tXHUwMDNlYWRldi1cdTAwM2VkZXYpO1xuLVx0YWRldiA9IHZkZXZfaW5mby1cdTAwM2VhZGV2O1xuLVx0aWYgKCFhZGV2IHx8ICFhZGV2LVx1MDAzZWRldi5kcml2ZXIpXG4rXHRhZGV2ID0gUkVBRF9PTkNFKHZkZXZfaW5mby1cdTAwM2VhZGV2KTtcbitcdGlmICghYWRldilcbitcdFx0cmV0dXJuO1xuK1xuK1x0ZGV2aWNlX2xvY2soXHUwMDI2YWRldi1cdTAwM2VkZXYpO1xuK1x0aWYgKCFhZGV2LVx1MDAzZWRldi5kcml2ZXIpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFx0aWFkcnYgPSBjb250YWluZXJfb2YoYWRldi1cdTAwM2VkZXYuZHJpdmVyLFxuIFx0XHRcdCAgICAgc3RydWN0IGlpZGNfcmRtYV92cG9ydF9hdXhpbGlhcnlfZHJ2LFxuQEAgLTE3Miw3ICsxNzUsNyBAQCB2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcbiBcdGlmIChpYWRydi1cdTAwM2VldmVudF9oYW5kbGVyKVxuIFx0XHRpYWRydi1cdTAwM2VldmVudF9oYW5kbGVyKHZkZXZfaW5mbywgXHUwMDI2ZXZlbnQpO1xuIHVubG9jazpcbi1cdGRldmljZV91bmxvY2soXHUwMDI2dmRldl9pbmZvLVx1MDAzZWFkZXYtXHUwMDNlZGV2KTtcbitcdGRldmljZV91bmxvY2soXHUwMDI2YWRldi1cdTAwM2VkZXYpO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jXG5pbmRleCAwYTNkMGExY2JhNDMzYy4uYzY4NmVlMTIwYTE0M2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcbkBAIC0yMTkwLDggKzIxOTAsNiBAQCBzdGF0aWMgaW5saW5lIGludCBpZ2J2Zl90eF9tYXBfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuIFx0YnVmZmVyX2luZm8tXHUwMDNldGltZV9zdGFtcCA9IDA7XG4gXHRidWZmZXJfaW5mby1cdTAwM2VsZW5ndGggPSAwO1xuIFx0YnVmZmVyX2luZm8tXHUwMDNlbWFwcGVkX2FzX3BhZ2UgPSBmYWxzZTtcbi1cdGlmIChjb3VudClcbi1cdFx0Y291bnQtLTtcbiBcbiBcdC8qIGNsZWFyIHRpbWVzdGFtcCBhbmQgZG1hIG1hcHBpbmdzIGZvciByZW1haW5pbmcgcG9ydGlvbiBvZiBwYWNrZXQgKi9cbiBcdHdoaWxlIChjb3VudC0tKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzowMi4wMzY5NTUwODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODQ1MzA3NTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgc2V2ZXJhbCBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzOiBgaWNlYCwgYGlkcGZgLCBgaWdidmZgLCBhbG9uZyB3aXRoIHNvbWUgcmVsYXRlZCBsaWJyYXJpZXMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgdGhlc2UgZHJpdmVycyBhcmUgcmVhY2hhYmxlIHdpdGhpbiBhIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgZ2l2ZW4gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgaGFyZHdhcmUtZGVwZW5kZW50IGNvbXBvbmVudHMuXG5cbkZpcnN0LCBgaWNlYCAoSW50ZWwgRTgwMCBTZXJpZXMpIGFuZCBgaWRwZmAgKEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbikgYXJlIGltbWVkaWF0ZWx5IHN1c3BlY3QuIFRoZXNlIGFyZSBwaHlzaWNhbCBFdGhlcm5ldCBkZXZpY2VzLCBhbmQgdHlwaWNhbGx5LCBRRU1VIGRvZXNuJ3Qgb2ZmZXIgZGlyZWN0IGVtdWxhdGlvbiBmb3Igc3VjaCByZWNlbnQsIHNwZWNpYWxpemVkIGhhcmR3YXJlLiBNeSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoZXkncmUgKm5vdCogZGlyZWN0bHkgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCB1bmxlc3MgeW91J3JlIHVzaW5nIHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiAod2hpY2ggc3l6a2FsbGVyIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGZvciB0aGVtKS4gSSdkIG5lZWQgdG8gY29uZmlybSB0aGlzIHdpdGggc2VhcmNoZXMsIGJ1dCBteSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIG5lZ2F0aXZlIGhlcmUuXG5cblRoZW4gd2UgaGF2ZSBgaWdidmZgIChJbnRlbCBHaWdhYml0IFZpcnR1YWwgRnVuY3Rpb24pLiAgVGhpcyBpcyB0aGUgVkYgZHJpdmVyIGZvciBgaWdiYC4gIFFFTVUgKmRvZXMqIGhhdmUgYGlnYmAgZW11bGF0aW9uLiBOb3csIGRvZXMgUUVNVSBleHRlbmQgdG8gdGhlIFZGIGRyaXZlcnM/ICBJZiBRRU1VIGhhcyBTUi1JT1Ygc3VwcG9ydCBmb3IgdGhlIGBpZ2JgIGRldmljZSwgdGhlIGBpZ2J2ZmAgZHJpdmVyICpjb3VsZCogYmUgcmVhY2hhYmxlIGlmIFNSLUlPViBpcyBwcm9wZXJseSBjb25maWd1cmVkIGluIHRoZSBlbXVsYXRlZCBlbnZpcm9ubWVudC4gIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXIncyBzZXR1cCBpcyBsaWtlbHkgdG8gY29uZmlndXJlIFNSLUlPViBmb3IgYGlnYmAgYnkgZGVmYXVsdCwgb3IgaWYgaXQgd291bGQgcmVxdWlyZSBhIHNwZWNpYWwgY29uZmlndXJhdGlvbiwgZ2l2ZW4gdGhhdCBpdCBzdGF0ZXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuICBJIG5lZWQgdG8gY2hlY2sgc3l6a2FsbGVyJ3MgZG9jdW1lbnRhdGlvbiBvciBjb25maWd1cmF0aW9uIHByYWN0aWNlcyB0byBzZWUgaWYgU1ItSU9WIGlzIGEgc3RhbmRhcmQgcGFydCBvZiBpdHMgYGlnYmAgc3VwcG9ydC5cblxuTGV0J3MgbG9vayBhdCB0aGlzIHNwZWNpZmljIGNvZGUgY2hhbmdlIGluIGBpZ2J2Zi9uZXRkZXYuY2AuICBJdCdzIGp1c3QgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhhdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGZhY3QgdGhhdCB0aGlzIGlzICpwb3RlbnRpYWxseSogcmVhY2hhYmxlLlxuXG5MZXQgbWUgdGhpbmsgYSBiaXQgbW9yZS4gIEV2ZW4gaWYgUUVNVSBlbXVsYXRlcyBgaWdiYCwgZG9lcyBzeXprYWxsZXIgaGF2ZSB0ZXN0IGNhc2VzIHNldCB1cCBmb3IgYGlnYnZmYD8gIEkgbmVlZCB0byBjaGVjayBmb3IgbWVudGlvbnMgb2YgYGlnYnZmYCBpbiBhbnkgc3l6a2FsbGVyLXJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBvciBjb2RlYmFzZSAoaWYgSSBoYWQgYWNjZXNzKSwgYnV0IEkgZG9uJ3QuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIFBDSSBkcml2ZXIsIGl0IG1pZ2h0IGJlIHJlYWNoYWJsZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGB2aGNpYCwgYnV0IHVzdWFsbHkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBpcyB2ZXJ5IGxpbWl0ZWQuIFRoaXMgcGF0Y2ggbW9zdGx5IG1vZGlmaWVzIGBpY2VgLCBhbmQgYGlkcGZgLlxuXG5TbywgdGhlIGJpZ2dlc3QgcmlzayBpcyB0aGF0LCB3aGlsZSBgaWdiYCAqY2FuKiBiZSBlbXVsYXRlZCwgYW5kIGBpZ2J2ZmAgKmNvdWxkKiBiZSByZWFjaGFibGUgdGhyb3VnaCBTUi1JT1YsIHRoZSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAgKm1heSBub3QqIGhhdmUgdGhpcyBjb25maWd1cmVkLiBHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zLCBpZiBJIHJldHVybiB0cnVlLCBJIG5lZWQgdG8gcHJvdmlkZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBIb3dldmVyLCBpZiBJIHJldHVybiBmYWxzZSwgSSBqdXN0IG5lZWQgdG8gc3RhdGUgdGhhdCBpdCdzIG5vdCByZWFjaGFibGUuIFNpbmNlIGBpY2VgIGFuZCBgaWRwZmAgYXJlIG5vdCByZWFjaGFibGUsIGFuZCBgaWdidmZgIGlzIHBvdGVudGlhbGx5IHJlYWNoYWJsZSBidXQgcmVxdWlyZXMgdmVyeSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLCBJIHNob3VsZCBlcnIgb24gdGhlIHNpZGUgb2YgY2F1dGlvbiBhbmQgcmV0dXJuICoqZmFsc2UqKi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzoyMC40OTAwMzM2MDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NzM4ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYnZmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0ODYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL01ha2VmaWxlLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfSUdCVkYpICs9IGlnYnZmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL01ha2VmaWxlOjk6aWdidmYteSA6PSB2Zi5vIG1ieC5vIGV0aHRvb2wubyBuZXRkZXYub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ6LyogZXRodG9vbCBzdXBwb3J0IGZvciBpZ2J2ZiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMjojaW5jbHVkZSBcXFwiaWdidmYuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE1OnN0cnVjdCBpZ2J2Zl9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE2LVxcdGNoYXIgc3RhdF9zdHJpbmdbRVRIX0dTVFJJTkdfTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yMi0jZGVmaW5lIElHQlZGX1NUQVQoY3VycmVudCwgYmFzZSkgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzpcXHRcXHRzaXplb2YoKChzdHJ1Y3QgaWdidmZfYWRhcHRlciAqKTApLVxcdTAwM2VjdXJyZW50KSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNDpcXHRcXHRvZmZzZXRvZihzdHJ1Y3QgaWdidmZfYWRhcHRlciwgY3VycmVudCksIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjU6XFx0XFx0b2Zmc2V0b2Yoc3RydWN0IGlnYnZmX2FkYXB0ZXIsIGJhc2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNzpzdGF0aWMgY29uc3Qgc3RydWN0IGlnYnZmX3N0YXRzIGlnYnZmX2dzdHJpbmdzX3N0YXRzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI4LVxcdHsgXFxcInJ4X3BhY2tldHNcXFwiLCBJR0JWRl9TVEFUKHN0YXRzLmdwcmMsIHN0YXRzLmJhc2VfZ3ByYykgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU6I2RlZmluZSBJR0JWRl9HTE9CQUxfU1RBVFNfTEVOIEFSUkFZX1NJWkUoaWdidmZfZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NzpzdGF0aWMgY29uc3QgY2hhciBpZ2J2Zl9nc3RyaW5nc190ZXN0W11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDgtXFx0XFxcIkxpbmsgdGVzdCAgIChvbi9vZmZsaW5lKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NTE6I2RlZmluZSBJR0JWRl9URVNUX0xFTiBBUlJBWV9TSVpFKGlnYnZmX2dzdHJpbmdzX3Rlc3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo1MzpzdGF0aWMgaW50IGlnYnZmX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy01NC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo1NjpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTU3LVxcdHN0cnVjdCBlMTAwMF9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjkwOnN0YXRpYyBpbnQgaWdidmZfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTkxLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo5NjpzdGF0aWMgdm9pZCBpZ2J2Zl9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy05Ny1cXHRcXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMDE6c3RhdGljIGludCBpZ2J2Zl9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xMDItXFx0XFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMDc6c3RhdGljIHUzMiBpZ2J2Zl9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTA4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTA5OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTExMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTE0OnN0YXRpYyB2b2lkIGlnYnZmX3NldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1MzIgZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTE1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTE2OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTIxOnN0YXRpYyBpbnQgaWdidmZfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxMjc6c3RhdGljIHZvaWQgaWdidmZfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTI4LVxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEyOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjEzMDpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTEzMS1cXHRzdHJ1Y3QgZTEwMDBfaHcgKmh3ID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTUyOnN0YXRpYyBpbnQgaWdidmZfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE1NzpzdGF0aWMgaW50IGlnYnZmX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTU4LVxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTYzOnN0YXRpYyBpbnQgaWdidmZfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xNjQtXFx0XFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxNjk6c3RhdGljIHZvaWQgaWdidmZfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTcwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmRydmluZm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE3MjpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTc0OlxcdHN0cnNjcHkoZHJ2aW5mby1cXHUwMDNlZHJpdmVyLCAgaWdidmZfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTc1LVxcdHN0cnNjcHkoZHJ2aW5mby1cXHUwMDNlYnVzX2luZm8sIHBjaV9uYW1lKGFkYXB0ZXItXFx1MDAzZXBkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MTc5OnN0YXRpYyB2b2lkIGlnYnZmX2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTgwLVxcdFxcdFxcdFxcdHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xODMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODQ6XFx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODU6XFx0c3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcgPSBhZGFwdGVyLVxcdTAwM2V0eF9yaW5nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxODY6XFx0c3RydWN0IGlnYnZmX3JpbmcgKnJ4X3JpbmcgPSBhZGFwdGVyLVxcdTAwM2VyeF9yaW5nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0xODctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoxOTQ6c3RhdGljIGludCBpZ2J2Zl9zZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE5NS1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTE5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjE5OTpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjIwMDpcXHRzdHJ1Y3QgaWdidmZfcmluZyAqdGVtcF9yaW5nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yMDEtXFx0aW50IGVyciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzA6XFx0dGVtcF9yaW5nID0gdm1hbGxvYyhzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjMxLVxcdGlmICghdGVtcF9yaW5nKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyMzY6XFx0aWdidmZfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI0Mi1cXHRpZiAobmV3X3R4X2NvdW50ICE9IGFkYXB0ZXItXFx1MDAzZXR4X3JpbmctXFx1MDAzZWNvdW50KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI0MzpcXHRcXHRtZW1jcHkodGVtcF9yaW5nLCBhZGFwdGVyLVxcdTAwM2V0eF9yaW5nLCBzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNDUtXFx0XFx0dGVtcF9yaW5nLVxcdTAwM2Vjb3VudCA9IG5ld190eF9jb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjQ2OlxcdFxcdGVyciA9IGlnYnZmX3NldHVwX3R4X3Jlc291cmNlcyhhZGFwdGVyLCB0ZW1wX3JpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNDctXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI1MDpcXHRcXHRpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyhhZGFwdGVyLVxcdTAwM2V0eF9yaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNTI6XFx0XFx0bWVtY3B5KGFkYXB0ZXItXFx1MDAzZXR4X3JpbmcsIHRlbXBfcmluZywgc2l6ZW9mKHN0cnVjdCBpZ2J2Zl9yaW5nKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI1My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjU1LVxcdGlmIChuZXdfcnhfY291bnQgIT0gYWRhcHRlci1cXHUwMDNlcnhfcmluZy1cXHUwMDNlY291bnQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjU2OlxcdFxcdG1lbWNweSh0ZW1wX3JpbmcsIGFkYXB0ZXItXFx1MDAzZXJ4X3JpbmcsIHNpemVvZihzdHJ1Y3QgaWdidmZfcmluZykpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI1OC1cXHRcXHR0ZW1wX3JpbmctXFx1MDAzZWNvdW50ID0gbmV3X3J4X2NvdW50O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzoyNTk6XFx0XFx0ZXJyID0gaWdidmZfc2V0dXBfcnhfcmVzb3VyY2VzKGFkYXB0ZXIsIHRlbXBfcmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI2MC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjYzOlxcdFxcdGlnYnZmX2ZyZWVfcnhfcmVzb3VyY2VzKGFkYXB0ZXItXFx1MDAzZXJ4X3JpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI2NTpcXHRcXHRtZW1jcHkoYWRhcHRlci1cXHUwMDNlcnhfcmluZywgdGVtcF9yaW5nLCBzaXplb2Yoc3RydWN0IGlnYnZmX3JpbmcpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjY2LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMjY3LWVycl9zZXR1cDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjY4OlxcdGlnYnZmX3VwKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNjktXFx0dmZyZWUodGVtcF9yaW5nKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI3NTpzdGF0aWMgaW50IGlnYnZmX2xpbmtfdGVzdChzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciwgdTY0ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MjkyOnN0YXRpYyB2b2lkIGlnYnZmX2RpYWdfdGVzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0yOTMtXFx0XFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX3Rlc3QgKmV0aF90ZXN0LCB1NjQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI5NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjI5NTpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTI5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMDEtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjMwMjpcXHRpZiAoaWdidmZfbGlua190ZXN0KGFkYXB0ZXIsIFxcdTAwMjZkYXRhWzBdKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzAzLVxcdFxcdGV0aF90ZXN0LVxcdTAwM2VmbGFncyB8PSBFVEhfVEVTVF9GTF9GQUlMRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMDk6c3RhdGljIHZvaWQgaWdidmZfZ2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zMTAtXFx0XFx0XFx0ICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozMTY6c3RhdGljIGludCBpZ2J2Zl9zZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMxNy1cXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzIyOnN0YXRpYyBpbnQgaWdidmZfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMyMy1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzI2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzI3OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzM3OnN0YXRpYyBpbnQgaWdidmZfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTMzOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzQxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzQyOlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzQzLVxcdHN0cnVjdCBlMTAwMF9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozNzQ6c3RhdGljIGludCBpZ2J2Zl9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM3NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM3NjpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzc4LVxcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM3OTpcXHRcXHRpZ2J2Zl9yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODAtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzozODM6c3RhdGljIHZvaWQgaWdidmZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzg0LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzg2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mzg3OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtMzg4LVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy0zODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjM5MDpcXHRpZ2J2Zl91cGRhdGVfc3RhdHMoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSUdCVkZfR0xPQkFMX1NUQVRTX0xFTjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5Mi1cXHRcXHRjaGFyICpwID0gKGNoYXIgKilhZGFwdGVyICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6MzkzOlxcdFxcdFxcdCAgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9vZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5NC1cXHRcXHRjaGFyICpiID0gKGNoYXIgKilhZGFwdGVyICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mzk1OlxcdFxcdFxcdCAgaWdidmZfZ3N0cmluZ3Nfc3RhdHNbaV0uYmFzZV9zdGF0X29mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6Mzk2OlxcdFxcdGRhdGFbaV0gPSAoKGlnYnZmX2dzdHJpbmdzX3N0YXRzW2ldLnNpemVvZl9zdGF0ID09XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTM5Ny1cXHRcXHRcXHQgICAgc2l6ZW9mKHU2NCkpID8gKCoodTY0ICopcCAtICoodTY0ICopYikgOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDAyOnN0YXRpYyBpbnQgaWdidmZfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHN0cmluZ3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQxNDpzdGF0aWMgdm9pZCBpZ2J2Zl9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1MzIgc3RyaW5nc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MTUtXFx0XFx0XFx0ICAgICAgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDIxLVxcdGNhc2UgRVRIX1NTX1RFU1Q6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQyMjpcXHRcXHRtZW1jcHkoZGF0YSwgKmlnYnZmX2dzdHJpbmdzX3Rlc3QsIHNpemVvZihpZ2J2Zl9nc3RyaW5nc190ZXN0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQyMy1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MjUtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIElHQlZGX0dMT0JBTF9TVEFUU19MRU47IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0MjY6XFx0XFx0XFx0bWVtY3B5KHAsIGlnYnZmX2dzdHJpbmdzX3N0YXRzW2ldLnN0YXRfc3RyaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00MjctXFx0XFx0XFx0ICAgICAgIEVUSF9HU1RSSU5HX0xFTik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpZ2J2Zl9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDM1LVxcdC5zdXBwb3J0ZWRfY29hbGVzY2VfcGFyYW1zID0gRVRIVE9PTF9DT0FMRVNDRV9SWF9VU0VDUyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDM2OlxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gaWdidmZfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQzNzpcXHQuZ2V0X3JlZ3NfbGVuXFx0XFx0PSBpZ2J2Zl9nZXRfcmVnc19sZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQzODpcXHQuZ2V0X3JlZ3NcXHRcXHQ9IGlnYnZmX2dldF9yZWdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0Mzk6XFx0LmdldF93b2xcXHRcXHQ9IGlnYnZmX2dldF93b2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0MDpcXHQuc2V0X3dvbFxcdFxcdD0gaWdidmZfc2V0X3dvbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQxOlxcdC5nZXRfbXNnbGV2ZWxcXHRcXHQ9IGlnYnZmX2dldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQyOlxcdC5zZXRfbXNnbGV2ZWxcXHRcXHQ9IGlnYnZmX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQzOlxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBpZ2J2Zl9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NDQtXFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NDU6XFx0LmdldF9lZXByb21fbGVuXFx0XFx0PSBpZ2J2Zl9nZXRfZWVwcm9tX2xlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ2OlxcdC5nZXRfZWVwcm9tXFx0XFx0PSBpZ2J2Zl9nZXRfZWVwcm9tLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NDc6XFx0LnNldF9lZXByb21cXHRcXHQ9IGlnYnZmX3NldF9lZXByb20sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ0ODpcXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gaWdidmZfZ2V0X3JpbmdwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDQ5OlxcdC5zZXRfcmluZ3BhcmFtXFx0XFx0PSBpZ2J2Zl9zZXRfcmluZ3BhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NTA6XFx0LmdldF9wYXVzZXBhcmFtXFx0XFx0PSBpZ2J2Zl9nZXRfcGF1c2VwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDUxOlxcdC5zZXRfcGF1c2VwYXJhbVxcdFxcdD0gaWdidmZfc2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MjpcXHQuc2VsZl90ZXN0XFx0XFx0PSBpZ2J2Zl9kaWFnX3Rlc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1MzpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGlnYnZmX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NTQ6XFx0LmdldF9zdHJpbmdzXFx0XFx0PSBpZ2J2Zl9nZXRfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmM6NDU1OlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gaWdidmZfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1NjpcXHQuZ2V0X2NvYWxlc2NlXFx0XFx0PSBpZ2J2Zl9nZXRfY29hbGVzY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1NzpcXHQuc2V0X2NvYWxlc2NlXFx0XFx0PSBpZ2J2Zl9zZXRfY29hbGVzY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1ODpcXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBpZ2J2Zl9nZXRfbGlua19rc2V0dGluZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ1OTpcXHQuc2V0X2xpbmtfa3NldHRpbmdzXFx0PSBpZ2J2Zl9zZXRfbGlua19rc2V0dGluZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jLTQ2MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvZXRodG9vbC5jOjQ2Mjp2b2lkIGlnYnZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYy00NjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2V0aHRvb2wuYzo0NjQ6XFx0bmV0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZpZ2J2Zl9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9ldGh0b29sLmMtNDY1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTctLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE4OnN0cnVjdCBpZ2J2Zl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTk6c3RydWN0IGlnYnZmX2FkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg9Mjc9ZW51bSBsYXRlbmN5X3JhbmdlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDo4NjplbnVtIGlnYnZmX2JvYXJkcyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC04Ny1cXHRib2FyZF92ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDo5MTpzdHJ1Y3QgaWdidmZfcXVldWVfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtOTItXFx0dTY0IHBhY2tldHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTk4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6OTk6c3RydWN0IGlnYnZmX2J1ZmZlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xMDAtXFx0ZG1hX2FkZHJfdCBkbWE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTExOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjExOTp1bmlvbiBpZ2J2Zl9kZXNjIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTEyMC1cXHR1bmlvbiBlMTAwMF9hZHZfcnhfZGVzYyByeF9kZXNjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxMjU6c3RydWN0IGlnYnZmX3Jpbmcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTI2OlxcdHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyOyAgLyogYmFja2xpbmsgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjEyNzpcXHR1bmlvbiBpZ2J2Zl9kZXNjICpkZXNjO1xcdC8qIHBvaW50ZXIgdG8gcmluZyBtZW1vcnkgICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xMjgtXFx0ZG1hX2FkZHJfdCBkbWE7XFx0XFx0LyogcGh5cyBhZGRyZXNzIG9mIHJpbmcgICAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTM4LVxcdC8qIGFycmF5IG9mIGJ1ZmZlciBpbmZvcm1hdGlvbiBzdHJ1Y3RzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxMzk6XFx0c3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNDAtXFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE1MTpcXHRzdHJ1Y3QgaWdidmZfcXVldWVfc3RhdHMgc3RhdHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNTItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTU0LS8qIGJvYXJkIHNwZWNpZmljIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE1NTpzdHJ1Y3QgaWdidmZfYWRhcHRlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNTYtXFx0c3RydWN0IHRpbWVyX2xpc3Qgd2F0Y2hkb2dfdGltZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjE2MTpcXHRjb25zdCBzdHJ1Y3QgaWdidmZfaW5mbyAqZWk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTE3NS1cXHQvKiBUeCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MTc2OlxcdHN0cnVjdCBpZ2J2Zl9yaW5nICp0eF9yaW5nIC8qIE9uZSBwZXIgYWN0aXZlIHF1ZXVlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xNzctXFx0X19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMTkwLVxcdC8qIFJ4ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoxOTE6XFx0c3RydWN0IGlnYnZmX3JpbmcgKnJ4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0xOTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTIyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjIyOTpzdHJ1Y3QgaWdidmZfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yMzAtXFx0ZW51bSBlMTAwMF9tYWNfdHlwZVxcdG1hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjMzLVxcdHZvaWRcXHRcXHRcXHQoKmluaXRfb3BzKShzdHJ1Y3QgZTEwMDBfaHcgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyMzQ6XFx0czMyXFx0XFx0XFx0KCpnZXRfdmFyaWFudHMpKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjM1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTI0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI0NzplbnVtIGlnYnZmX3N0YXRlX3Qge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjQ4LVxcdF9fSUdCVkZfVEVTVElORyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmgtMjUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjUzOmV4dGVybiBjaGFyIGlnYnZmX2RyaXZlcl9uYW1lW107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTU6dm9pZCBpZ2J2Zl9zZXRfZXRodG9vbF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaC0yNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNTc6aW50IGlnYnZmX3VwKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjU4OnZvaWQgaWdidmZfZG93bihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI1OTp2b2lkIGlnYnZmX3JlaW5pdF9sb2NrZWQoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNjA6aW50IGlnYnZmX3NldHVwX3J4X3Jlc291cmNlcyhzdHJ1Y3QgaWdidmZfYWRhcHRlciAqLCBzdHJ1Y3QgaWdidmZfcmluZyAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI2MTppbnQgaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICosIHN0cnVjdCBpZ2J2Zl9yaW5nICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL2lnYnZmLmg6MjYyOnZvaWQgaWdidmZfZnJlZV9yeF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX3JpbmcgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvaWdidmYuaDoyNjM6dm9pZCBpZ2J2Zl9mcmVlX3R4X3Jlc291cmNlcyhzdHJ1Y3QgaWdidmZfcmluZyAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oOjI2NDp2b2lkIGlnYnZmX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgaWdidmZfYWRhcHRlciAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9pZ2J2Zi5oLTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI0LSNpbmNsdWRlIFxcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjU6I2luY2x1ZGUgXFxcImlnYnZmLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mjc6Y2hhciBpZ2J2Zl9kcml2ZXJfbmFtZVtdID0gXFxcImlnYnZmXFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyODpzdGF0aWMgY29uc3QgY2hhciBpZ2J2Zl9kcml2ZXJfc3RyaW5nW10gPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI5LVxcdFxcdCAgXFxcIkludGVsKFIpIEdpZ2FiaXQgVmlydHVhbCBGdW5jdGlvbiBOZXR3b3JrIERyaXZlclxcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MzA6c3RhdGljIGNvbnN0IGNoYXIgaWdidmZfY29weXJpZ2h0W10gPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTMxLVxcdFxcdCAgXFxcIkNvcHlyaWdodCAoYykgMjAwOSAtIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uXFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTM2PU1PRFVMRV9QQVJNX0RFU0MoZGVidWcsIFxcXCJEZWJ1ZyBsZXZlbCAoMD1ub25lLC4uLiwxNj1hbGwpXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mzg6c3RhdGljIGludCBpZ2J2Zl9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mzk6c3RhdGljIHZvaWQgaWdidmZfcmVzZXQoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDA6c3RhdGljIHZvaWQgaWdidmZfc2V0X2ludGVycnVwdF9jYXBhYmlsaXR5KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQxOnN0YXRpYyB2b2lkIGlnYnZmX3Jlc2V0X2ludGVycnVwdF9jYXBhYmlsaXR5KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQzOnN0YXRpYyBzdHJ1Y3QgaWdidmZfaW5mbyBpZ2J2Zl92Zl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ0LVxcdC5tYWNcXHRcXHQ9IGUxMDAwX3ZmYWRhcHQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1MDpzdGF0aWMgc3RydWN0IGlnYnZmX2luZm8gaWdidmZfaTM1MF92Zl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUxLVxcdC5tYWNcXHRcXHQ9IGUxMDAwX3ZmYWRhcHRfaTM1MCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjU3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWdidmZfaW5mbyAqaWdidmZfaW5mb190YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1ODpcXHRbYm9hcmRfdmZdXFx0PSBcXHUwMDI2aWdidmZfdmZfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo1OTpcXHRbYm9hcmRfaTM1MF92Zl1cXHQ9IFxcdTAwMjZpZ2J2Zl9pMzUwX3ZmX2luZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTYyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjYzOiAqIGlnYnZmX2Rlc2NfdW51c2VkIC0gY2FsY3VsYXRlIGlmIHdlIGhhdmUgdW51c2VkIGRlc2NyaXB0b3JzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNjQtICogQHJpbmc6IGFkZHJlc3Mgb2YgcmVjZWl2ZSByaW5nIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTY1LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo2NjpzdGF0aWMgaW50IGlnYnZmX2Rlc2NfdW51c2VkKHN0cnVjdCBpZ2J2Zl9yaW5nICpyaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTc0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjc1OiAqIGlnYnZmX3JlY2VpdmVfc2tiIC0gaGVscGVyIGZ1bmN0aW9uIHRvIGhhbmRsZSBSeCBpbmRpY2F0aW9uc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTc2LSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtODItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjgzOnN0YXRpYyB2b2lkIGlnYnZmX3JlY2VpdmVfc2tiKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTg0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MTAzOnN0YXRpYyBpbmxpbmUgdm9pZCBpZ2J2Zl9yeF9jaGVja3N1bV9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTA0LVxcdFxcdFxcdFxcdFxcdCB1MzIgc3RhdHVzX2Vyciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEyOC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoxMjk6ICogaWdidmZfYWxsb2NfcnhfYnVmZmVycyAtIFJlcGxhY2UgdXNlZCByZWNlaXZlIGJ1ZmZlcnM7IHBhY2tldCBzcGxpdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEzMC0gKiBAcnhfcmluZzogYWRkcmVzcyBvZiByaW5nIHN0cnVjdHVyZSB0byByZXBvcHVsYXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjEzMzpzdGF0aWMgdm9pZCBpZ2J2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpZ2J2Zl9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTEzNC1cXHRcXHRcXHRcXHQgICBpbnQgY2xlYW5lZF9jb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjEzNjpcXHRzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlciA9IHJ4X3JpbmctXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMTM3LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLVxcdTAwM2VuZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0xMzktXFx0dW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MTQwOlxcdHN0cnVjdCBpZ2J2Zl9idWZmZXIgKmJ1ZmZlcl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTE0MS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjIzNjogKiBpZ2J2Zl9jbGVhbl9yeF9pcnEgLSBTZW5kIHJlY2VpdmVkIGRhdGEgdXAgdGhlIG5ldHdvcmsgc3RhY2s7IGxlZ2FjeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNy0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI0My0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjQ0OnN0YXRpYyBib29sIGlnYnZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNDUtXFx0XFx0XFx0ICAgICAgIGludCAqd29ya19kb25lLCBpbnQgd29ya190b19kbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjI0NzpcXHRzdHJ1Y3QgaWdidmZfcmluZyAqcnhfcmluZyA9IGFkYXB0ZXItXFx1MDAzZXJ4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjQ4LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLVxcdTAwM2VuZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNTAtXFx0dW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2MsICpuZXh0X3J4ZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyNTE6XFx0c3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm8sICpuZXh0X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNTItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozNTA6XFx0XFx0aWdidmZfcnhfY2hlY2tzdW1fYWR2KGFkYXB0ZXIsIHN0YXRlcnIsIHNrYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzUxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM1NDpcXHRcXHRpZ2J2Zl9yZWNlaXZlX3NrYihhZGFwdGVyLCBuZXRkZXYsIHNrYiwgc3RhdGVycixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNTUtXFx0XFx0XFx0XFx0ICByeF9kZXNjLVxcdTAwM2V3Yi51cHBlci52bGFuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM2MS1cXHRcXHRpZiAoY2xlYW5lZF9jb3VudCBcXHUwMDNlPSBJR0JWRl9SWF9CVUZGRVJfV1JJVEUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozNjI6XFx0XFx0XFx0aWdidmZfYWxsb2NfcnhfYnVmZmVycyhyeF9yaW5nLCBjbGVhbmVkX2NvdW50KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNjMtXFx0XFx0XFx0Y2xlYW5lZF9jb3VudCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNzMtXFx0cnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbiA9IGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6Mzc0OlxcdGNsZWFuZWRfY291bnQgPSBpZ2J2Zl9kZXNjX3VudXNlZChyeF9yaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzc2LVxcdGlmIChjbGVhbmVkX2NvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM3NzpcXHRcXHRpZ2J2Zl9hbGxvY19yeF9idWZmZXJzKHJ4X3JpbmcsIGNsZWFuZWRfY291bnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTM4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzozODY6c3RhdGljIHZvaWQgaWdidmZfcHV0X3R4YnVmKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjM4NzpcXHRcXHRcXHQgICAgc3RydWN0IGlnYnZmX2J1ZmZlciAqYnVmZmVyX2luZm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQwOS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo0MTA6ICogaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzIC0gYWxsb2NhdGUgVHggcmVzb3VyY2VzIChEZXNjcmlwdG9ycylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MTEtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MTUtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQxNjppbnQgaWdidmZfc2V0dXBfdHhfcmVzb3VyY2VzKHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQxNzpcXHRcXHRcXHQgICAgIHN0cnVjdCBpZ2J2Zl9yaW5nICp0eF9yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDIyOlxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGlnYnZmX2J1ZmZlcikgKiB0eF9yaW5nLVxcdTAwM2Vjb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00MjMtXFx0dHhfcmluZy1cXHUwMDNlYnVmZmVyX2luZm8gPSB2emFsbG9jKHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDQ4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQ0OTogKiBpZ2J2Zl9zZXR1cF9yeF9yZXNvdXJjZXMgLSBhbGxvY2F0ZSBSeCByZXNvdXJjZXMgKERlc2NyaXB0b3JzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ1MC0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ1NC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDU1OmludCBpZ2J2Zl9zZXR1cF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDU2OlxcdFxcdFxcdCAgICAgc3RydWN0IGlnYnZmX3JpbmcgKnJ4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo0NjE6XFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgaWdidmZfYnVmZmVyKSAqIHJ4X3JpbmctXFx1MDAzZWNvdW50O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ2Mi1cXHRyeF9yaW5nLVxcdTAwM2VidWZmZXJfaW5mbyA9IHZ6YWxsb2Moc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OTItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDkzOiAqIGlnYnZmX2NsZWFuX3R4X3JpbmcgLSBGcmVlIFR4IEJ1ZmZlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy00OTQtICogQHR4X3Jpbmc6IHJpbmcgdG8gYmUgY2xlYW5lZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTQ5NS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NDk2OnN0YXRpYyB2b2lkIGlnYnZmX2NsZWFuX3R4X3Jpbmcoc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNDk3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzo0OTg6XFx0c3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSB0eF9yaW5nLVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjQ5OTpcXHRzdHJ1Y3QgaWdidmZfYnVmZmVyICpidWZmZXJfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MDAtXFx0dW5zaWduZWQgbG9uZyBzaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTA4LVxcdFxcdGJ1ZmZlcl9pbmZvID0gXFx1MDAyNnR4X3JpbmctXFx1MDAzZWJ1ZmZlcl9pbmZvW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUwOTpcXHRcXHRpZ2J2Zl9wdXRfdHhidWYoYWRhcHRlciwgYnVmZmVyX2luZm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUxMC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjUxMjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBpZ2J2Zl9idWZmZXIpICogdHhfcmluZy1cXHUwMDNlY291bnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTEzLVxcdG1lbXNldCh0eF9yaW5nLVxcdTAwM2VidWZmZXJfaW5mbywgMCwgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy01MjUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NTI2OiAqIGlnYnZmX2ZyZWVfdHhfcmVzb3VyY2VzIC0gRnJlZSBUeCBSZXNvdXJjZXMgcGVyIFF1ZXVlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTI3LSAqIEB0eF9yaW5nOiByaW5nIHRvIGZyZWUgcmVzb3VyY2VzIGZyb21cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUzMC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6NTMxOnZvaWQgaWdidmZfZnJlZV90eF9yZXNvdXJjZXMoc3RydWN0IGlnYnZmX3JpbmcgKnR4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtNTMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTUzNC1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTc6MjAuNTk5Nzg1NzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzM5NzY0MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBpZ2J2ZmAgYW5kIERldGVybWluaW5nIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cbk9rYXksIHNvIHRoZSBgaWdidmZgIGRyaXZlciBpcyBkZWZpbml0ZWx5IHByZXNlbnQgYW5kIGl0J3MgYSBQQ0kgZHJpdmVyLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBpdCdzIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpcyB0aGUga2V5IHRlc3QgZW52aXJvbm1lbnQuIFFFTVUgZW11bGF0ZXMgYGlnYmAsIGFuZCBzaW5jZSBgaWdiYCBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gYGlnYnZmYCAqc2hvdWxkKiBiZSBwcm9iZS1hYmxlIGlmIFNSLUlPViBpcyBlbmFibGVkIG9uIHRoZSBgaWdiYCBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcImRvZXMgc3l6a2FsbGVyIGV2ZW4gZW5hYmxlIFNSLUlPViBvbiBgaWdiYD9cIiBJIGNhbid0IGltbWVkaWF0ZWx5IHJlY2FsbC4gV2FpdCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBhIGBzeXpfcGNpdmZgIGNhbGw/IE5vLCBpdCBkb2Vzbid0LlxuXG5CdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQ6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiByZXR1cm4gZmFsc2UuXCIgVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgYGlnYnZmYCB0cnVseSAqaW1wb3NzaWJsZSogdG8gcmVhY2g/IElmIFFFTVUgZW11bGF0ZXMgYGlnYmAsIGFuZCBgaWdiYCBzdXBwb3J0cyBTUi1JT1YsIHRoZW4gKnRlY2huaWNhbGx5KiwgYGlnYnZmYCBpcyByZWFjaGFibGUgd2l0aGluIFFFTVUgd2l0aCBzcGVjaWZpYyBjb25maWd1cmF0aW9uLlxuXG5Ib3dldmVyLCB0aGUgZmFjdCB0aGF0IHRoZSBwYXRjaCB3YXMgYXBwbGllZCBieSBgc3l6LWNsdXN0ZXJgIGFuZCB0aGUgYXV0aG9yIGlzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAgc3VnZ2VzdHMgdGhhdCBzeXprYWxsZXIgKmRpZCogZmluZCBhIGJ1ZyBvciBpcyBhY3RpdmVseSBmdXp6aW5nIHRoaXMgY29kZSEgVGhpcyBpcyBzaWduaWZpY2FudC4gSXQncyBhIHNpbXVsYXRlZCBwYXRjaCwgYnV0IGl0IGNvbmZpcm1zIHRoZSBwYXRoIGlzIHJlbGV2YW50LlxuXG5JIG5lZWQgdG8gbG9vayBhdCB0aGUgY29kZS4gVGhlIGNoYW5nZSBpbiBgaWdidmYvbmV0ZGV2LmNgIGludm9sdmVzIHJlbW92aW5nIGBpZiAoY291bnQpIGNvdW50LS07YCBiZWZvcmUgYSBgd2hpbGUgKGNvdW50LS0pYCBsb29wIHdpdGhpbiBgaWdidmZfdHhfbWFwX2FkdmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbHRlcmluZyBsb29wIGJlaGF2aW9yLCB3aGljaCBpcyBkZWZpbml0ZWx5IGludGVyZXN0aW5nLlxuXG5XaGF0IGFib3V0IGBpY2VgIGFuZCBgaWRwZmA/IFRob3NlIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzLCBhbmQgdGhlcmUncyBubyB3YXkgdGhleSdyZSByZWFjaGFibGUgaW4gdGhlIHRlc3QgZW52aXJvbm1lbnQuIEJ1dCBgaWdidmZgICppcyogcmVhY2hhYmxlIGlmIFNSLUlPViBvbiBgaWdiYCBpcyB1dGlsaXplZC5cblxuTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzOiBcIklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXCIgU2luY2UgYGlnYnZmYCAqaXMqIHJlYWNoYWJsZSAoYWxiZWl0IHdpdGggY29uZmlndXJhdGlvbikgaW4gUUVNVSwgYW5kIHNpbmNlIHRoZSBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyBgaWdidmZfdHhfbWFwX2FkdmAsIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYXR0ZW50aW9uIG5vdyBzaGlmdHMgc3BlY2lmaWNhbGx5IHRvIGBpZ2J2Zl90eF9tYXBfYWR2YC4gSXQncyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gY2FsbGVkIGJ5IGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YC4gSSBuZWVkIHRvIHZlcmlmeSBpdHMgY2FsbCBzaXRlcyBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3MzQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTc6MjkuOTM5NTUyNzU5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MDk4MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYnZmX3R4X21hcF9hZHZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIxMDc9c3RhdGljIGludCBpZ2J2Zl9tYXliZV9zdG9wX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBzaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMTM2OnN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNy1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWdidmZfcmluZyAqdHhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIyNjU9c3RhdGljIG5ldGRldl90eF90IGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzMjItXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjMyMzpcXHRjb3VudCA9IGlnYnZmX3R4X21hcF9hZHYoYWRhcHRlciwgdHhfcmluZywgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzozMC4wMTM2NTUwMTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAzNjM0MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldDpcblxuKipEaXZpbmcgaW50byB0aGUgSUdCVkYgVHJhbnNtaXQgUGF0aCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGlnYnZmX3R4X21hcF9hZHZgIGlzIGdldHRpbmcgaW52b2tlZCBieSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAuIFRoYXQncyB0aGUgZmlyc3QgY29ubmVjdGlvbi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGVyZSBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgY2FsbGVkIGZyb20uIEFoLCBpdCdzIGBpZ2J2Zl94bWl0X2ZyYW1lYC4gQWxyaWdodCwgbm93IEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgd2hvbGUgdHJhbnNtaXQgZmxvdy4gVGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYGlnYnZmX3htaXRfZnJhbWVgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIuIExldCdzIHNlZSBob3cgdGhhdCBvbmUgaXMgaGFuZGxpbmcgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQwOCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjE3OjMzLjQxNzI5MzA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTkwMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYnZmX3htaXRfZnJhbWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIyMDY9c3RhdGljIGlubGluZSB2b2lkIGlnYnZmX3R4X3F1ZXVlX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIyNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjI2NTpzdGF0aWMgbmV0ZGV2X3R4X3QgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIyNjYtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjMzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMzM5OnN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM0MC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjM1MjpcXHRyZXR1cm4gaWdidmZfeG1pdF9mcmFtZV9yaW5nX2Fkdihza2IsIG5ldGRldiwgdHhfcmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1My19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yNjY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWdidmZfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTI2NzEtXFx0Lm5kb19zdG9wXFx0XFx0PSBpZ2J2Zl9jbG9zZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyNjcyOlxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gaWdidmZfeG1pdF9mcmFtZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yNjczLVxcdC5uZG9fc2V0X3J4X21vZGVcXHQ9IGlnYnZmX3NldF9yeF9tb2RlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzozMy40NzU4ODczMTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE4MjU1MDk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgaWdidmZfeG1pdF9mcmFtZWAsIHdoaWNoIEkga25vdyBpcyB0aGUgYG5kb19zdGFydF94bWl0YCBmdW5jdGlvbiBpbiB0aGUgYGlnYnZmYCBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgeWVzLCBpZiBgaWdidmZgIGlzIGV2ZW4gKnJlYWNoYWJsZSouIFVzdWFsbHksIHN5emthbGxlciBkb2Vzbid0IGZvY3VzIG9uIGBpZ2J2ZmAgYmVjYXVzZSBpdCBuZWVkcyBTUi1JT1Ygc2V0IHVwIG9uIHRoZSBgaWdiYCBkZXZpY2UsIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIFFFTVUgY29uZmlncyB0aGF0IHN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBwcm92aWRlLlxuXG5XYWl0LCB0aGUgcHJvbXB0IHNheXMgdG8gcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gSXMgYGlnYnZmYCBpbXBvc3NpYmxlIHRvIHJlYWNoPyBObywgYWN0dWFsbHksIHdpdGggdGhlIHJpZ2h0IFFFTVUgY29uZmlndXJhdGlvbiDigJMgc3BlY2lmaWNhbGx5IGVtdWxhdGluZyBgaWdiYCBhbmQgZW5hYmxpbmcgU1ItSU9WIOKAkyBpdCAqaXMqIHJlYWNoYWJsZS4gYGljZWAgYW5kIGBpZHBmYCwgb24gdGhlIG90aGVyIGhhbmQsIGFyZSBhIG5vLWdvIHNpbmNlIHRoZXJlIGlzbid0IHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhvc2UuXG5cbkJ1dCB3aGF0IGlmIHRoZSBwYXRjaCBpcyBqdXN0IHBoeXNpY2FsIG5ldHdvcmsgZHJpdmVyIGNoYW5nZXM/IFRob3NlIGFyZSB1c3VhbGx5IHVucmVhY2hhYmxlIHVubGVzcyB0aGVyZSBpcyBhbiBlbXVsYXRvciwgYW5kIGBpZ2J2ZmAgaGFzIGFuIGVtdWxhdG9yIChRRU1VIGBpZ2JgIHdpdGggU1ItSU9WKS4gTm93LCBsZXQncyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCB3aGljaCBpcyBgSUdCVkZgLlxuXG5XaGF0IGFib3V0IGBpY2VgIGFuZCBgaWRwZmA/IFRob3NlIGNvbmZpZ3MgYXJlIGBJQ0VgIGFuZCBgSURQRmAsIHJlc3BlY3RpdmVseS5cblxuSWYgSSdtIGdvaW5nIHRvIHNheSB0aGlzIGlzIHdvcnRoIGZ1enppbmcgKGBXb3J0aEZ1enppbmc9dHJ1ZWApLCB0aGVuIEkgbmVlZCB0byBsaXN0IGVpdGhlciBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgb3IgYGlnYnZmX3htaXRfZnJhbWVgIGluIGBGb2N1c1N5bWJvbHNgLiBMZXQncyBkb3VibGUtY2hlY2sgYWdhaW4sIGBpZ2JgIHdpdGggU1ItSU9WIGlzIHN1cHBvcnRlZCBmcm9tIFFFTVUgdmVyc2lvbiA4LjAsIHNvIHllcywgSSBjYW4gcHJvYmUgYGlnYnZmYC5cblxuVGhlcmVmb3JlLCBJJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgYmVjYXVzZSBgaWdidmZgICppcyogcmVhY2hhYmxlIHRocm91Z2ggUUVNVSdzIGBpZ2JgIGVtdWxhdGlvbi5cblxuVGhlIHBhdGNoICphbHNvKiB0b3VjaGVzIGBpY2VgIGFuZCBgaWRwZmAsIGJ1dCB0aGV5IGFyZSBub3QgcmVhY2hhYmxlLiBJIHNob3VsZG4ndCBmb2N1cyBvbiB0aGVtLiBJICpzaG91bGQqIGxpc3QgdGhlaXIgY29uZmlncywgdGhvdWdoLCBiZWNhdXNlIFwiRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncy4uLiBPbmx5IGxpc3QgdGhvc2UgdGhhdCBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuXCIgQnV0IHdhaXQsIGFyZSB0aGV5ICp0cnVseSogdW5yZWFjaGFibGU/XG5cblRoZSBwcm9tcHQgc2F5cyB0aGF0IGlmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFNpbmNlIGBpZ2J2ZmAgaXMgcmVhY2hhYmxlLCB0aGUgcGF0Y2gsIGFzIGEgd2hvbGUsIGlzIHdvcnRoIGZ1enppbmcgKGF0IGxlYXN0IHRoZSBgaWdidmZgIHBhcnQpLlxuXG5TbywgaW4gdGhlIGVuZCwgSSdsbCBsaXN0IGBJR0JWRmAsIGBJQ0VgLCBhbmQgYElEUEZgLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGBpZHBmX2lkYy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyMzYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTc6NDMuNjU4NDQzNDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTkzOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTEwNzE9dm9pZCBpZHBmX2lkY19pc3N1ZV9yZXNldF9ldmVudChzdHJ1Y3QgaWlkY19yZG1hX2NvcmVfZGV2X2luZm8gKmNkZXZfaW5mbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTA3Mjp2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMDczLVxcdFxcdFxcdCAgICAgZW51bSBpaWRjX3JkbWFfZXZlbnRfdHlwZSBldmVudF90eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYz0xMTI9c3RhdGljIGludCBpZHBmX2lkY19pbml0X2F1eF92cG9ydF9kZXYoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jLTE0Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmM6MTQ4OiAqIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50IC0gRnVuY3Rpb24gdG8gaGFuZGxlIElEQyB2cG9ydCBtdHUgY2hhbmdlIGV2ZW50c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYy0xNDktICogQHZkZXZfaW5mbzogSURDIHZwb3J0IGRldmljZSBpbmZvIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9pZGMuYy0xNTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2lkYy5jOjE1Mjp2b2lkIGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHN0cnVjdCBpaWRjX3JkbWFfdnBvcnRfZGV2X2luZm8gKnZkZXZfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfaWRjLmMtMTUzLVxcdFxcdFxcdCAgICAgZW51bSBpaWRjX3JkbWFfZXZlbnRfdHlwZSBldmVudF90eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jPTIwMDQ9aW50IGlkcGZfaW5pdGlhdGVfc29mdF9yZXNldChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMjA1My1cXHRjYXNlIElEUEZfU1JfTVRVX0NIQU5HRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MjA1NDpcXHRcXHRpZHBmX2lkY192ZGV2X210dV9ldmVudCh2cG9ydC1cXHUwMDNldmRldl9pbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yMDU1LVxcdFxcdFxcdFxcdFxcdElJRENfUkRNQV9FVkVOVF9CRUZPUkVfTVRVX0NIQU5HRSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMtMjExNi1cXHRpZiAocmVzZXRfY2F1c2UgPT0gSURQRl9TUl9NVFVfQ0hBTkdFKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoyMTE3OlxcdFxcdGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50KHZwb3J0LVxcdTAwM2V2ZGV2X2luZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTIxMTgtXFx0XFx0XFx0XFx0XFx0SUlEQ19SRE1BX0VWRU5UX0FGVEVSX01UVV9DSEFOR0UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo0My43MTg0NDIwMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU5Nzk2NzU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRHJpdmVyIFJlYWNoYWJpbGl0eSBhbmQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGRyaXZlciBjb2RlIGFuZCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXMgd2hhdCdzIGFjdHVhbGx5ICpyZWxldmFudCogdG8gaW52ZXN0aWdhdGUuIGBpZHBmYCBpc24ndCByZWFjaGFibGUgd2l0aGluIHRoZSBRRU1VIGVudmlyb25tZW50LCBhbmQgbmVpdGhlciBpcyBgaWNlYCwgc28gdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gU2luY2UgYGlnYnZmYCAqaXMqIHJlYWNoYWJsZSwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uXG5cblRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgc2VlbSB0byBjZW50ZXIgYXJvdW5kIGBpZ2J2ZmAsIGFuZCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaWdidmZfdHhfbWFwX2FkdmAgZnVuY3Rpb24uIEFoLCBpdCdzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiDigJMgbWVhbmluZyBpdCdzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gaXRzIGNhbGxpbmcgZnVuY3Rpb25zLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB0cmFjZSAqdXAqIHRoZSBjYWxsIGNoYWluLiBgaWdidmZfdHhfbWFwX2FkdmAgaXMgY2FsbGVkIGJ5IGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YC4gSSdsbCBhZGQgYGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHZgIHRvIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QsIHRoYXQgbWFrZXMgc2Vuc2UuIFdhaXQgYSBtaW51dGUuLi4gdGhhdCBmdW5jdGlvbiBpcyBhbHNvIHN0YXRpYyEgVGhlICpleHBvcnRlZCogb25lIGlzIGFjdHVhbGx5IGBpZ2J2Zl94bWl0X2ZyYW1lYCwgc28gSSdsbCBhZGQgdGhhdCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCBpbnN0ZWFkLlxuXG5Ob3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBjaGFuZ2VzIGluIGBpY2VfbWFpbi5jYC4gSG1tLCB0aGlzIG1vZGlmaWNhdGlvbiBpbiBgaWNlX3Jlc3VtZWAgaW50cm9kdWNlcyBhIHdhaXRpbmcgbWVjaGFuaXNtIHdpdGggYGljZV93YWl0X2Zvcl9yZXNldGAuIFRoZSBjb2RlIGF0dGVtcHRzIHRvIHdhaXQgZm9yIHRoZSBzY2hlZHVsZWQgcmVzZXQgdG8gZmluaXNoIGJlZm9yZSByZXR1cm5pbmcsIHdoaWNoIHNlZW1zIHNlbnNpYmxlIGZvciBoYW5kbGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEknbGwgbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRoaXMuXG5cblRoZW4sIHRoZXJlJ3MgYSBjaGFuZ2UgaW4gYGljZV92Zl9saWIuY2Agd2hpY2ggaW5jbHVkZXMgYGljZV9yZXNldF9pbnRlcnJ1cHRzYCwgd2hpY2ggemVyb2VzIG91dCBpbnRlcnJ1cHQtcmVsYXRlZCByZWdpc3RlcnMuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNvbnNpZGVyYXRpb24gZm9yIGludGVycnVwdCBtYW5hZ2VtZW50IGFuZCBob3cgaXQgbWlnaHQgaW50ZXJhY3Qgd2l0aCBvdXIgdGFyZ2V0IGNvZGUuXG5cbkFscmlnaHQsIGJhY2sgdG8gdGhlIGNvbmZpZ3VyYXRpb24uIEdpdmVuIHRoYXQgb25seSBgaWdidmZgIGlzIHJlYWNoYWJsZSwgSSBuZWVkIHRvIGxpc3Qgd2hhdCBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBsaXN0IHdoYXQgbmVlZHMgdG8gYmUgKmV4cGxpY2l0bHkqIGVuYWJsZWQuIEkgaW5pdGlhbGx5IGFzc3VtZWQgdGhhdCBzaW5jZSBgaWNlYCBhbmQgYGlkcGZgIGFyZW4ndCByZWFjaGFibGUsIEkgY291bGQgZXhjbHVkZSB0aGVtLiBIb3dldmVyLCBpZiBJIGV4Y2x1ZGUgYElDRWAgYW5kIGBJRFBGYCwgdGhlIG1vZGlmaWVkIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIG1vZHVsZXMgd29uJ3QgZXZlbiBiZSBjb21waWxlZCBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCB0aHVzLCB3b24ndCBiZSB0ZXN0ZWQuIFNvLCBpdCdzIGJlc3QgdG8gYmUgY29tcHJlaGVuc2l2ZS4gVGh1cywgSSBuZWVkIHRvIGluY2x1ZGUgdGhlbSB0byBlbnN1cmUgdGhlIGJ1aWxkIHByb2Nlc3MgcGlja3MgdGhlbSB1cC4gU28sIGl0IHNlZW1zIEkgc2hvdWxkIGxpc3QgYElDRWAsIGBJRFBGYCwgYW5kIGBJR0JWRmAgaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LlxuXG5CdXQsIEkgbXVzdCB2ZXJpZnkgdGhhdCBgSUdCVkZgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZy4gVGhpcyB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gdG8gY29uZmlybSB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgdGhlIGNvcnJlY3Qgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTM3NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo1My4zMTY0MTI0NDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTcyMDA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUdCVkZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo1My4zNzQ1OTg5NzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMzgwMjY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbjogSW50ZWwgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gVGhlIHRhc2sgYXQgaGFuZCBsaWtlbHkgaW52b2x2ZXMgY29uZmlndXJpbmcgb3IgbW9kaWZ5aW5nIHRoZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXIsIHNvIGEgbmF0dXJhbCBmaXJzdCBzdGVwIGlzIHRvIGV4YW1pbmUgaXRzIEtjb25maWcgZmlsZS4gTGV0J3MgbWFrZSBzdXJlIHdlJ3JlIHN0YXJ0aW5nIHdpdGggdGhlIGZvdW5kYXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBhbHJlYWR5IGF2YWlsYWJsZSwgd2hhdCdzIGNvbnRyb2xsaW5nIHdoYXQsIGFuZCBob3cgdGhlIHZhcmlvdXMgZmVhdHVyZXMgYW5kIG1vZHVsZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIFRoYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgIGZpbGUgc2hvdWxkIGdpdmUgbWUgdGhlIGNvcmUgZGVmaW5pdGlvbiBmb3IgaG93IHRoaXMgZHJpdmVyIGlzIHN0cnVjdHVyZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBGcm9tIHRoZXJlIEknbGwgYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgdmFyaWFibGVzIGZvciB0aGUgSW50ZWwgRXRoZXJuZXQgZHJpdmVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3OTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo1Ni43ODg0MDQ2NThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTEzODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJR0JWRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xMjA9Y29uZmlnIElHQl9EQ0FcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTI5OmNvbmZpZyBJR0JWRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTMwLVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSA4MjU3NiBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjE3OjU2Ljg1NDUyNjM0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg2Njc1MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkNvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgYElHQlZGYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uLCB0aGF0J3MgY2xlYXIuIEJ1dCBub3cgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIHdoYXQgYWJvdXQgdGhlIGludGVycGxheSB3aXRoIGBJQ0VgIGFuZCBgSURQRmA/IFdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBnb2luZyB0byB3b3JrIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHByaW1hcnkgb25lLiBBcmUgdGhleSBkZXBlbmRlbmNpZXM/IERvIHRoZXkgb3ZlcnJpZGUgc3BlY2lmaWMgcGFyYW1ldGVycz8gT3IgZG8gdGhleSBvcGVyYXRlIG9uIG9ydGhvZ29uYWwgYXNwZWN0cyBvZiB0aGUgc3lzdGVtPyBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0aHJlZSBpcyBjcnVjaWFsIGZvciBwcm9wZXIgb3BlcmF0aW9uIGFuZCBkZWJ1Z2dpbmcuIExldCdzIHNlZSBob3cgdGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIHN0cnVjdHVyZWQgdG8gZ2FpbiBjbGFyaXR5IG9uIHRoZWlyIGludGVyYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxMTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxNzo1OS45NDEyMDUxMzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjkwODkyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUNFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI2OD1jb25maWcgSTQwRVZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjI5MTpjb25maWcgSUNFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yOTItXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzIwOmNvbmZpZyBJQ0VfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMyMS1cXHRib29sIFxcXCJJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIFN1cHBvcnQgSFdNT04gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzMxOmNvbmZpZyBJQ0VfU1dJVENIREVWXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0zMzItXFx0Ym9vbCBcXFwiU3dpdGNoZGV2IFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjM0NTpjb25maWcgSUNFX0hXVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTM0Ni1cXHRib29sIFxcXCJTdXBwb3J0IEhXIGNyb3NzLXRpbWVzdGFtcCBvbiBwbGF0Zm9ybXMgd2l0aCBQVE0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTg6MDAuMTM4MTI0MDEyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDY0MzMwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgRGlnaXRhbCBQdWJsaXNoaW5nIExhbmRzY2FwZSoqXG5cblNvLCB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIGRpZ2l0YWwgcHVibGlzaGluZy4gSSdtIHRha2luZyBzdG9jayBoZXJlLCBjb25zaWRlcmluZyBhbGwgdGhlIGFuZ2xlcy4gRFJNLCBhY2Nlc3NpYmlsaXR5IHN0YW5kYXJkcywgRVBVQiAzLCB0aGUgb25nb2luZyBkZWJhdGUgYXJvdW5kIGZpeGVkLWxheW91dCBmb3JtYXRzIHZlcnN1cyByZWZsb3dhYmxlIHRleHQuLi4gSSdtIHJlYWxseSB0aGlua2luZyBhYm91dCB0aGUgY29tcGxleGl0aWVzIGludm9sdmVkIGluIGNyZWF0aW5nIGFuZCBkaXN0cmlidXRpbmcgY29udGVudC4gVGhlbiwgYSBrZXkgcXVlc3Rpb24gaGl0cyBtZTogV2hhdCBhYm91dCB0aGUgSW50ZXJuYXRpb25hbCBEaWdpdGFsIFB1Ymxpc2hpbmcgRm9ydW0g4oCTIHRoZSAqSURQRio/IFdlIGFsbCBrbm93IGl0cyBoaXN0b3J5IGFuZCBpdHMgZXZvbHV0aW9uLiBOb3csIHdpdGggaXRzIHJvbGUgaGF2aW5nIHRyYW5zZm9ybWVkIG92ZXIgdGhlIHllYXJzLCBJIG5lZWQgdG8gY29uc2lkZXIgaXRzIGxhc3Rpbmcgc2lnbmlmaWNhbmNlLCBvciB3aGV0aGVyIGl0cyBwbGFjZSBoYXMgYmVlbiB0YWtlbiBieSBvdGhlciBpbmR1c3RyeSBib2RpZXMuIFdlIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGltcGxpY2F0aW9ucyBvbiBmdXR1cmUgc3RhbmRhcmRzIGFuZCBidXNpbmVzcyBtb2RlbHMuIFdoYXQgaW1wYWN0IGRpZCB0aGV5IGhhdmU/IFdoYXQncyBnb2luZyBvbiB3aXRoIHRoZWlyIHdvcmsgb24gYWNjZXNzaWJpbGl0eSBhbmQgbWV0YWRhdGE/IEhvdyBkb2VzIHRoYXQgc3RpbGwgZmFjdG9yIGludG8gdGhlIGRpZ2l0YWwgcHVibGlzaGluZyBzcGFjZSBub3c/IFNvIG11Y2ggdG8gY29uc2lkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjM1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxODowMy42NDQ1NTk3NzlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTk4NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJRFBGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6NDpjb25maWcgSURQRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy01LVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz0xNz1pZiBJRFBGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZzoxOTpjb25maWcgSURQRl9TSU5HTEVRXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTIwLVxcdGJvb2wgXFxcImlkcGYgc2luZ2xlcSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxODowMy43MTk1Njg4MzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4MjYxOTY0MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIHBhdGNoIHRvdWNoZXMgYElDRWAsIGBJRFBGYCwgYW5kIGBJR0JWRmAgZHJpdmVycy4gVGhlIHByb21wdCByZW1pbmRzIG1lIHRvIGlnbm9yZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSWYgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB1bnJlYWNoYWJsZSBjb2RlLCBJJ20gc3VwcG9zZWQgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBIb3dldmVyLCBgSUdCVkZgIGlzIGRpZmZlcmVudC4gSXQncyBlbXVsYXRlZCB2aWEgUUVNVSdzIGBpZ2JgIGRyaXZlciwgd2hpY2ggc3VwcG9ydHMgU1ItSU9WLCBzbyBpdCAqaXMqIHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcyBob3cgdG8gaWRlbnRpZnkgcmVsZXZhbnQgZm9jdXMgc3ltYm9scy4gSSBzZWUgY2hhbmdlcyBpbiBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgYW5kIGBpZ2J2Zl94bWl0X2ZyYW1lYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW5jbHVkZSBgaWdidmZfeG1pdF9mcmFtZWAgaW4gYEZvY3VzU3ltYm9sc2AuIEJ1dCB3YWl0LCB0aGUgbm90ZXMgc2F5IHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4gSXMgYGlnYnZmX3htaXRfZnJhbWVgIGEgaG90LXBhdGg/IFllcywgaXQncyBgbmRvX3N0YXJ0X3htaXRgLCBzbyBpdCdzIGNhbGxlZCBmb3IgZXZlcnkgcGFja2V0LlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCBzb21ldGhpbmcgZWxzZS4gVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgaWdidmZfdHhfbWFwX2FkdmAsIGJ1dCB0aGF0J3MgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLiBOb3QgYSBzeW1ib2whIEhtbSwgYGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHZgIGlzIGFsc28gc3RhdGljLiBTaG91bGQgSSBqdXN0IGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5P1xuXG5CdXQgbGV0J3MgcmVjb25zaWRlciBgaWdidmZfeG1pdF9mcmFtZWAuIFdoaWxlIGl0ICppcyogaG90LXBhdGgsIGl0J3Mgc3BlY2lmaWMgdG8gdGhlIGBpZ2J2ZmAgZHJpdmVyLiBJdCdzIG5vdCBhIGdlbmVyaWMga2VybmVsIGhvdC1wYXRoIGZ1bmN0aW9uIGxpa2UgYF9fZGV2X3F1ZXVlX3htaXRgLCBga2ZyZWVgLCBvciBga21hbGxvY2AuIEl0IGlzIHNwZWNpZmljIHRvIHRoZSBgaWdidmZgIGFuZCBub3QgYSBnZW5lcmFsIGhvdC1wYXRoIGZ1bmN0aW9uLiBTbywgYGlnYnZmX3htaXRfZnJhbWVgIGlzIGZpbmUhXG5cbkknbGwgcXVpY2tseSBjaGVjayB0aGUgb3RoZXIgZHJpdmVycy4gYGljZV9yZXN1bWVgLCBgaWNlX3Jlc2V0X2ludGVycnVwdHNgLCBgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0YCBhbmQgYGlkcGZfaWRjX3ZkZXZfbXR1X2V2ZW50YC4gU2luY2UgYElDRWAgYW5kIGBJRFBGYCBhcmVuJ3QgcmVhY2hhYmxlLCBJIHdvbid0IGxpc3QgYW55IG9mICp0aGVpciogZnVuY3Rpb25zIGluIGBGb2N1c1N5bWJvbHNgLiBCdXQgaXQgaXMgb2theSB0byBlbmFibGUgdGhlc2UgY29uZmlncy5cblxuRmluYWxseSwgSSdsbCByZS1leGFtaW5lIHRoZSBgaWdidmZfdHhfbWFwX2FkdmAgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGl0IGZpeGVzIGEgYnVnIHdoZXJlIGBjb3VudGAgd2FzIGJlaW5nIGRlY3JlbWVudGVkIGluY29ycmVjdGx5LiBUaGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3Qgc29tZSB1bnJlYWNoYWJsZSBvcHRpbWl6YXRpb24uXG5cblNvLCBoZXJlJ3MgdGhlIHBsYW46IEknbGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGg6XG5cbiogICBgV29ydGhGdXp6aW5nYDogYHRydWVgXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXCJpZ2J2Zl94bWl0X2ZyYW1lXCJdYFxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIklHQlZGXCIsIFwiSUNFXCIsIFwiSURQRlwiXWBcbiogICBgUmVhc29uaW5nYDogXCJUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJ3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODA2OCwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjE4OjE2LjU0NTc2NzcxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgzMTIzNTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklHQlZGXCIsXG4gICAgXCJJQ0VcIixcbiAgICBcIklEUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZ2J2Zl94bWl0X2ZyYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgSUNFIGFuZCBJRFBGIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgc29mdHdhcmUgZW11bGF0aW9uLCBJR0JWRiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBRRU1VJ3MgaWdiIFNSLUlPViBlbXVsYXRpb24uIFRoZSBjaGFuZ2UgaW4gaWdidmZfdHhfbWFwX2FkdiBtb2RpZmllcyB0aGUgdHJhbnNtaXQgcGF0aCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJR0JWRlwiLFxuICAgIFwiSUNFXCIsXG4gICAgXCJJRFBGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdidmZfeG1pdF9mcmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIElDRSBhbmQgSURQRiBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVycyB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiwgSUdCVkYgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUUVNVSdzIGlnYiBTUi1JT1YgZW11bGF0aW9uLiBUaGUgY2hhbmdlIGluIGlnYnZmX3R4X21hcF9hZHYgbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHBhdGggbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdxhx[1] Phase: Succeeded StartedAt: 2026-07-01 05:18:43 +0000 UTC FinishedAt: 2026-07-01 05:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 05:18:43 +0000 UTC FinishedAt: 2026-07-01 05:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2] Phase: Succeeded StartedAt: 2026-07-01 05:18:43 +0000 UTC FinishedAt: 2026-07-01 07:19:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 05:18:43 +0000 UTC FinishedAt: 2026-07-01 07:19:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 05:18:43 +0000 UTC FinishedAt: 2026-07-01 05:18:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 05:18:43 +0000 UTC FinishedAt: 2026-07-01 05:18:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowhdxhx/series-workflowhdxhx-convert-artifact-390148626/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 05:18:53 +0000 UTC FinishedAt: 2026-07-01 05:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 05:18:53 +0000 UTC FinishedAt: 2026-07-01 05:52:30 +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:*86079cdf-6438-40f7-a70f-3e3f26f1c40d,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-workflowhdxhx/series-workflowhdxhx-convert-artifact-390148626/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": "42bf4fc5-d372-48cf-8bb7-eabf598026da", "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-workflowhdxhx/series-workflowhdxhx-build-action-2807804816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 05:18:53 +0000 UTC FinishedAt: 2026-07-01 05:50:30 +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:*86079cdf-6438-40f7-a70f-3e3f26f1c40d,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-workflowhdxhx/series-workflowhdxhx-convert-artifact-390148626/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": "42bf4fc5-d372-48cf-8bb7-eabf598026da", "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-workflowhdxhx/series-workflowhdxhx-build-action-2807804816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 05:52:30 +0000 UTC FinishedAt: 2026-07-01 05:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 05:52:30 +0000 UTC FinishedAt: 2026-07-01 05:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 05:52:30 +0000 UTC FinishedAt: 2026-07-01 05:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 05:52:30 +0000 UTC FinishedAt: 2026-07-01 05:52:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowhdxhx/series-workflowhdxhx-convert-artifact-1762103853/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 05:52:40 +0000 UTC FinishedAt: 2026-07-01 05:54:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 05:52:40 +0000 UTC FinishedAt: 2026-07-01 05:54:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*42bf4fc5-d372-48cf-8bb7-eabf598026da,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-workflowhdxhx/series-workflowhdxhx-build-action-2807804816/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-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 05:54:41 +0000 UTC FinishedAt: 2026-07-01 05:54:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 05:54:41 +0000 UTC FinishedAt: 2026-07-01 05:54:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 05:54:41 +0000 UTC FinishedAt: 2026-07-01 06:23:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 05:54:41 +0000 UTC FinishedAt: 2026-07-01 06:23:16 +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:*86079cdf-6438-40f7-a70f-3e3f26f1c40d,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-workflowhdxhx/series-workflowhdxhx-convert-artifact-1762103853/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": "14e33431-ddf7-435f-8471-b128edd987af", "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-workflowhdxhx/series-workflowhdxhx-build-action-1514919561/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 05:54:41 +0000 UTC FinishedAt: 2026-07-01 06:23:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*86079cdf-6438-40f7-a70f-3e3f26f1c40d,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-workflowhdxhx/series-workflowhdxhx-convert-artifact-1762103853/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": "14e33431-ddf7-435f-8471-b128edd987af", "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-workflowhdxhx/series-workflowhdxhx-build-action-1514919561/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 06:23:16 +0000 UTC FinishedAt: 2026-07-01 06:23:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 06:23:16 +0000 UTC FinishedAt: 2026-07-01 06:23:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 06:23:16 +0000 UTC FinishedAt: 2026-07-01 06:25:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 06:23:16 +0000 UTC FinishedAt: 2026-07-01 06:25:09 +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:*14e33431-ddf7-435f-8471-b128edd987af,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-workflowhdxhx/series-workflowhdxhx-build-action-1514919561/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-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 06:25:19 +0000 UTC FinishedAt: 2026-07-01 07:19:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 06:25:19 +0000 UTC FinishedAt: 2026-07-01 07:19:17 +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":["igbvf_xmit_frame"],"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:*42bf4fc5-d372-48cf-8bb7-eabf598026da,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*14e33431-ddf7-435f-8471-b128edd987af,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-workflowhdxhx/series-workflowhdxhx-build-action-2807804816/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-workflowhdxhx/series-workflowhdxhx-build-action-1514919561/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 06:25:19 +0000 UTC FinishedAt: 2026-07-01 06:25:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 06:25:19 +0000 UTC FinishedAt: 2026-07-01 06:25:27 +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":["igbvf_xmit_frame"],"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-workflowhdxhx/series-workflowhdxhx-convert-artifact-3163375762/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 06:25:19 +0000 UTC FinishedAt: 2026-07-01 06:25:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 06:25:19 +0000 UTC FinishedAt: 2026-07-01 06:25:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 06:25:19 +0000 UTC FinishedAt: 2026-07-01 06:25:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 06:25:42 +0000 UTC FinishedAt: 2026-07-01 07:19:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdxhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igbvf_xmit_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGBVF","ICE","IDPF"],"series_id":"35a02457-be2e-4f9d-a495-e84c570cd534","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 06:25:42 +0000 UTC FinishedAt: 2026-07-01 07:19:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*42bf4fc5-d372-48cf-8bb7-eabf598026da,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*14e33431-ddf7-435f-8471-b128edd987af,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-workflowhdxhx/series-workflowhdxhx-build-action-2807804816/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-workflowhdxhx/series-workflowhdxhx-build-action-1514919561/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-workflowhdxhx/series-workflowhdxhx-convert-artifact-3163375762/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,}