Name: series-workflow9w2wn Phase: Succeeded StartedAt: 2026-06-30 05:30:26 +0000 UTC FinishedAt: 2026-06-30 09:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[0] Phase: Succeeded StartedAt: 2026-06-30 05:30:26 +0000 UTC FinishedAt: 2026-06-30 05:43:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 05:30:26 +0000 UTC FinishedAt: 2026-06-30 05:43:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTDUMP_DEBUGFS", "DEBUG_WX", "IOMMU_SVA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTDUMP_DEBUGFS", "DEBUG_WX", "IOMMU_SVA" ], "series_id": "cea53d7a-30df-41c3-8648-19424e3dfd01" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "pagetable_free_kernel", "kernel_pgtable_free_rcu", "kernel_pgtable_work_func", "ptdump_walk_pgd", "walk_page_range_debug" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BURFVNUF9ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0RFQlVHX1dYJiMzNDssCiAgICAmIzM0O0lPTU1VX1NWQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2V0YWJsZV9mcmVlX2tlcm5lbCYjMzQ7LAogICAgJiMzNDtrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSYjMzQ7LAogICAgJiMzNDtrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMmIzM0OywKICAgICYjMzQ7cHRkdW1wX3dhbGtfcGdkJiMzNDssCiAgICAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjU1MzI5ZmUxZWI0ZmVlMTEzMTc5NjMxODA5YTNmZjMyMTg2MjMwZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDA1OjM5OjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc5NDA4YTE3YTFiMGRhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tLmhcbkBAIC0zNjk1LDE0ICYjNDM7MzY5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxuIFx0X19mcmVlX3BhZ2VzKHBhZ2UsIGNvbXBvdW5kX29yZGVyKHBhZ2UpKTtcbiB9XG4gXG4tI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXG4gdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xuLSNlbHNlXG4tc3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbi17XG4tXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbi19XG4tI2VuZGlmXG4gLyoqXG4gICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcbiAgKiBAcHQ6XHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZXdhbGsuYyBiL21tL3BhZ2V3YWxrLmNcbmluZGV4IDNhZTI1ODZmZjQ1YjQ0Li5jMGJlODc1ODA5ODlkYSAxMDA2NDRcbi0tLSBhL21tL3BhZ2V3YWxrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2V3YWxrLmNcbkBAIC02MjAsNyAmIzQzOzYyMCw3IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4gICogTm90ZTogQmUgY2FyZWZ1bCB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZXMgdGFibGVzLCB0aGUgY2FsbGVyIG1heSBiZSBuZWVkIHRvXG4gICogdGFrZSBvdGhlciBlZmZlY3RpdmUgYXBwcm9hY2hlcyAobW1hcCBsb2NrIG1heSBiZSBpbnN1ZmZpY2llbnQpIHRvIHByZXZlbnRcbiAgKiB0aGUgaW50ZXJtZWRpYXRlIGtlcm5lbCBwYWdlIHRhYmxlcyBiZWxvbmdpbmcgdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzIHJhbmdlXG4tICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSkuXG4mIzQzOyAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUsIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbikuXG4gICovXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuQEAgLTY0Myw3ICYjNDM7NjQzLDcgQEAgaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gd2FsayB0aGUga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkuIEl0IHNob3VsZCBiZVxuICAqIGd1YXJhbnRlZWQgdGhhdCB0aGUgY2FsbGVyIGhhcyBleGNsdXNpdmUgYWNjZXNzIG92ZXIgdGhlIHJhbmdlIHRoZXkgYXJlXG4gICogb3BlcmF0aW5nIG9uIC0gdGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gY29uY3VycmVudCBhY2Nlc3MsIGZvciBleGFtcGxlLFxuLSAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMuXG4mIzQzOyAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMsIG9yIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbi5cbiAgKi9cbiBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbiBcdFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsIHBnZF90ICpwZ2QsIHZvaWQgKnByaXZhdGUpXG5AQCAtNjkyLDkgJiM0Mzs2OTIsMTMgQEAgaW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbiBcdH07XG4gXG4gXHQvKiBGb3IgY29udmVuaWVuY2UsIHdlIGFsbG93IHRyYXZlcnNhbCBvZiBrZXJuZWwgbWFwcGluZ3MuICovXG4tXHRpZiAobW0gPT0gXHUwMDI2aW5pdF9tbSlcbi1cdFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLFxuLVx0XHRcdFx0XHRcdCAgICBwZ2QsIHByaXZhdGUpO1xuJiM0MztcdGlmIChtbSA9PSBcdTAwMjZpbml0X21tKSB7XG4mIzQzO1x0XHRSQ1VfTE9DS0RFUF9XQVJOKCFyY3VfcmVhZF9sb2NrX2hlbGQoKSxcbiYjNDM7XHRcdFx0XHQgXCYjMzQ7UkNVIHJlYWQgbG9jayBtdXN0IGJlIGhlbGQgYWNyb3NzIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLCBwZ2QsXG4mIzQzO1x0XHRcdFx0XHRcdFx0cHJpdmF0ZSk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChzdGFydCBcdTAwM2U9IGVuZCB8fCAhd2Fsay5tbSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpXG5kaWZmIC0tZ2l0IGEvbW0vcGd0YWJsZS1nZW5lcmljLmMgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xuaW5kZXggYjkxYjFhOTgwMjljN2YuLjdhMzJlNDgyMTk1N2NjIDEwMDY0NFxuLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BndGFibGUtZ2VuZXJpYy5jXG5AQCAtNDEwLDYgJiM0Mzs0MTAsMTMgQEAgcHRlX3QgKnB0ZV9vZmZzZXRfbWFwX2xvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXG4gXHRnb3RvIGFnYWluO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0ZGVzYyAqcHQgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHB0ZGVzYywgcHRfcmN1X2hlYWQpO1xuJiM0MztcbiYjNDM7XHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbiYjNDM7fVxuJiM0MztcbiAjaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbiBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbkBAIC00MzQsOCAmIzQzOzQ0MSwxNSBAQCBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3Bpbl91bmxvY2soXHUwMDI2a2VybmVsX3BndGFibGVfd29yay5sb2NrKTtcbiBcbiBcdGlvbW11X3N2YV9pbnZhbGlkYXRlX2t2YV9yYW5nZShQQUdFX09GRlNFVCwgVExCX0ZMVVNIX0FMTCk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXNcbiYjNDM7XHQgKiBmcmVlLCBzbyB0aGV5IHdhbGsgdW5kZXIgcmN1X3JlYWRfbG9jaygpLiBGcmVlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kOlxuJiM0MztcdCAqIGEgd2Fsa2VyIGVpdGhlciBhbHJlYWR5IHNhdyB0aGUgY2xlYXJlZCBQTUQsIG9yIGtlZXBzIHRoZSBwYWdlIGFsaXZlXG4mIzQzO1x0ICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLlxuJiM0MztcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHB0LCBuZXh0LCBcdTAwMjZwYWdlX2xpc3QsIHB0X2xpc3QpXG4tXHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuJiM0MztcdFx0Y2FsbF9yY3UoXHUwMDI2cHQtXHUwMDNlcHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTtcbiB9XG4gXG4gdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5AQCAtNDQ2LDQgJiM0Mzs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4gXG4gXHRzY2hlZHVsZV93b3JrKFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsud29yayk7XG4gfVxuJiM0MzsjZWxzZVxuJiM0Mzt2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbiYjNDM7e1xuJiM0MztcdC8qIERlZmVyIHRoZSBmcmVlIGJ5IGEgZ3JhY2UgcGVyaW9kOyBzZWUga2VybmVsX3BndGFibGVfd29ya19mdW5jKCkuICovXG4mIzQzO1x0Y2FsbF9yY3UoXHUwMDI2cHQtXHUwMDNlcHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTtcbiYjNDM7fVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmNcbmluZGV4IDk3MzAyMDAwMDA5NmNmLi41MGNkOTZhMzNkZmQyNyAxMDA2NDRcbi0tLSBhL21tL3B0ZHVtcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wdGR1bXAuY1xuQEAgLTE3OCwxMSAmIzQzOzE3OCwxMyBAQCB2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG4gXG4gXHRnZXRfb25saW5lX21lbXMoKTtcbiBcdG1tYXBfd3JpdGVfbG9jayhtbSk7XG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0d2hpbGUgKHJhbmdlLVx1MDAzZXN0YXJ0ICE9IHJhbmdlLVx1MDAzZWVuZCkge1xuIFx0XHR3YWxrX3BhZ2VfcmFuZ2VfZGVidWcobW0sIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsXG4gXHRcdFx0XHQgICAgICBcdTAwMjZwdGR1bXBfb3BzLCBwZ2QsIHN0KTtcbiBcdFx0cmFuZ2UmIzQzOyYjNDM7O1xuIFx0fVxuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xuIFx0cHV0X29ubGluZV9tZW1zKCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFREVU1QX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7REVCVUdfV1gmIzM0OywKICAgICYjMzQ7SU9NTVVfU1ZBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFnZXRhYmxlX2ZyZWVfa2VybmVsJiMzNDssCiAgICAmIzM0O2tlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1JiMzNDssCiAgICAmIzM0O2tlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyYjMzQ7LAogICAgJiMzNDtwdGR1bXBfd2Fsa19wZ2QmIzM0OywKICAgICYjMzQ7d2Fsa19wYWdlX3JhbmdlX2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIGRlZmVyIGZyZWVpbmcgb2Yga2VybmVsIHBhZ2UgdGFibGVzIHVzaW5nIFJDVS4gVGhpcyBwcmV2ZW50cyB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBsb2NrbGVzcyBwYWdlIHRhYmxlIHdhbGtzLCBzdWNoIGFzIHRob3NlIHBlcmZvcm1lZCBieSBwdGR1bXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxpZmVjeWNsZSBvZiBrZXJuZWwgcGFnZSB0YWJsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI1NTMyOWZlMWViNGZlZTExMzE3OTYzMTgwOWEzZmYzMjE4NjIzMGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAzMCAwNTozOToxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCA0ODVkZjljMmRiZGRiMy4uNzk0MDhhMTdhMWIwZGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tLmgKQEAgLTM2OTUsMTQgJiM0MzszNjk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpCiAJX19mcmVlX3BhZ2VzKHBhZ2UsIGNvbXBvdW5kX29yZGVyKHBhZ2UpKTsKIH0KIAotI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFCiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7Ci0jZWxzZQotc3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCkKLXsKLQlfX3BhZ2V0YWJsZV9mcmVlKHB0KTsKLX0KLSNlbmRpZgogLyoqCiAgKiBwYWdldGFibGVfZnJlZSAtIEZyZWUgcGFnZXRhYmxlcwogICogQHB0OglUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yCmRpZmYgLS1naXQgYS9tbS9wYWdld2Fsay5jIGIvbW0vcGFnZXdhbGsuYwppbmRleCAzYWUyNTg2ZmY0NWI0NC4uYzBiZTg3NTgwOTg5ZGEgMTAwNjQ0Ci0tLSBhL21tL3BhZ2V3YWxrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGFnZXdhbGsuYwpAQCAtNjIwLDcgJiM0Mzs2MjAsNyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LAogICogTm90ZTogQmUgY2FyZWZ1bCB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZXMgdGFibGVzLCB0aGUgY2FsbGVyIG1heSBiZSBuZWVkIHRvCiAgKiB0YWtlIG90aGVyIGVmZmVjdGl2ZSBhcHByb2FjaGVzIChtbWFwIGxvY2sgbWF5IGJlIGluc3VmZmljaWVudCkgdG8gcHJldmVudAogICogdGhlIGludGVybWVkaWF0ZSBrZXJuZWwgcGFnZSB0YWJsZXMgYmVsb25naW5nIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyByYW5nZQotICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSkuCiYjNDM7ICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSwgdm1hcCBodWdlIHBhZ2UgcHJvbW90aW9uKS4KICAqLwogaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCiAJCWNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKQpAQCAtNjQzLDcgJiM0Mzs2NDMsNyBAQCBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHdhbGsgdGhlIGtlcm5lbCBwYWdlIHRhYmxlcyBsb2NrbGVzc2x5LiBJdCBzaG91bGQgYmUKICAqIGd1YXJhbnRlZWQgdGhhdCB0aGUgY2FsbGVyIGhhcyBleGNsdXNpdmUgYWNjZXNzIG92ZXIgdGhlIHJhbmdlIHRoZXkgYXJlCiAgKiBvcGVyYXRpbmcgb24gLSB0aGF0IHRoZXJlIHNob3VsZCBiZSBubyBjb25jdXJyZW50IGFjY2VzcywgZm9yIGV4YW1wbGUsCi0gKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLgomIzQzOyAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMsIG9yIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbi4KICAqLwogaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCiAJCWNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKQpAQCAtNjkyLDkgJiM0Mzs2OTIsMTMgQEAgaW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCwKIAl9OwogCiAJLyogRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0cmF2ZXJzYWwgb2Yga2VybmVsIG1hcHBpbmdzLiAqLwotCWlmIChtbSA9PSAmYW1wO2luaXRfbW0pCi0JCXJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIG9wcywKLQkJCQkJCSAgICBwZ2QsIHByaXZhdGUpOwomIzQzOwlpZiAobW0gPT0gJmFtcDtpbml0X21tKSB7CiYjNDM7CQlSQ1VfTE9DS0RFUF9XQVJOKCFyY3VfcmVhZF9sb2NrX2hlbGQoKSwKJiM0MzsJCQkJICYjMzQ7UkNVIHJlYWQgbG9jayBtdXN0IGJlIGhlbGQgYWNyb3NzIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGsmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBvcHMsIHBnZCwKJiM0MzsJCQkJCQkJcHJpdmF0ZSk7CiYjNDM7CX0KJiM0MzsKIAlpZiAoc3RhcnQgJmd0Oz0gZW5kIHx8ICF3YWxrLm1tKQogCQlyZXR1cm4gLUVJTlZBTDsKIAlpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpCmRpZmYgLS1naXQgYS9tbS9wZ3RhYmxlLWdlbmVyaWMuYyBiL21tL3BndGFibGUtZ2VuZXJpYy5jCmluZGV4IGI5MWIxYTk4MDI5YzdmLi43YTMyZTQ4MjE5NTdjYyAxMDA2NDQKLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGd0YWJsZS1nZW5lcmljLmMKQEAgLTQxMCw2ICYjNDM7NDEwLDEzIEBAIHB0ZV90ICpwdGVfb2Zmc2V0X21hcF9sb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLAogCWdvdG8gYWdhaW47CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRkZXNjICpwdCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgcHRkZXNjLCBwdF9yY3VfaGVhZCk7CiYjNDM7CiYjNDM7CV9fcGFnZXRhYmxlX2ZyZWUocHQpOwomIzQzO30KJiM0MzsKICNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRQogc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKQEAgLTQzNCw4ICYjNDM7NDQxLDE1IEBAIHN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3Bpbl91bmxvY2soJmFtcDtrZXJuZWxfcGd0YWJsZV93b3JrLmxvY2spOwogCiAJaW9tbXVfc3ZhX2ludmFsaWRhdGVfa3ZhX3JhbmdlKFBBR0VfT0ZGU0VULCBUTEJfRkxVU0hfQUxMKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXMKJiM0MzsJICogZnJlZSwgc28gdGhleSB3YWxrIHVuZGVyIHJjdV9yZWFkX2xvY2soKS4gRnJlZSBhZnRlciBhIGdyYWNlIHBlcmlvZDoKJiM0MzsJICogYSB3YWxrZXIgZWl0aGVyIGFscmVhZHkgc2F3IHRoZSBjbGVhcmVkIFBNRCwgb3Iga2VlcHMgdGhlIHBhZ2UgYWxpdmUKJiM0MzsJICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLgomIzQzOwkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHQsIG5leHQsICZhbXA7cGFnZV9saXN0LCBwdF9saXN0KQotCQlfX3BhZ2V0YWJsZV9mcmVlKHB0KTsKJiM0MzsJCWNhbGxfcmN1KCZhbXA7cHQtJmd0O3B0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7CiB9CiAKIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KQpAQCAtNDQ2LDQgJiM0Mzs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpCiAKIAlzY2hlZHVsZV93b3JrKCZhbXA7a2VybmVsX3BndGFibGVfd29yay53b3JrKTsKIH0KJiM0MzsjZWxzZQomIzQzO3ZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KQomIzQzO3sKJiM0MzsJLyogRGVmZXIgdGhlIGZyZWUgYnkgYSBncmFjZSBwZXJpb2Q7IHNlZSBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoKS4gKi8KJiM0MzsJY2FsbF9yY3UoJmFtcDtwdC0mZ3Q7cHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTsKJiM0Mzt9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmMKaW5kZXggOTczMDIwMDAwMDk2Y2YuLjUwY2Q5NmEzM2RmZDI3IDEwMDY0NAotLS0gYS9tbS9wdGR1bXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wdGR1bXAuYwpAQCAtMTc4LDExICYjNDM7MTc4LDEzIEBAIHZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCkKIAogCWdldF9vbmxpbmVfbWVtcygpOwogCW1tYXBfd3JpdGVfbG9jayhtbSk7CiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKIAl3aGlsZSAocmFuZ2UtJmd0O3N0YXJ0ICE9IHJhbmdlLSZndDtlbmQpIHsKIAkJd2Fsa19wYWdlX3JhbmdlX2RlYnVnKG1tLCByYW5nZS0mZ3Q7c3RhcnQsIHJhbmdlLSZndDtlbmQsCiAJCQkJICAgICAgJmFtcDtwdGR1bXBfb3BzLCBwZ2QsIHN0KTsKIAkJcmFuZ2UmIzQzOyYjNDM7OwogCX0KJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAJbW1hcF93cml0ZV91bmxvY2sobW0pOwogCXB1dF9vbmxpbmVfbWVtcygpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNDgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBJbXBsaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgd2FycmFudCB0YXJnZXRlZCBmdXp6aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IGJlZm9yZSBJIGNhbiBwcm9wZXJseSBwcmlvcml0aXplIHRoaXMuCgpUaGUgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIGNvcmUgZmlsZXMsIGFuZCBhIHF1aWNrIGdsYW5jZSB0ZWxscyBtZSB0aGlzIGlzbiYjMzk7dCBqdXN0IGEgdHJpdmlhbCBmaXguIGBpbmNsdWRlL2xpbnV4L21tLmhgIGhhcyBhIGNvbmRpdGlvbmFsIHJlbW92YWwsIHdoaWNoIHVzdWFsbHkgZ2V0cyBteSBhdHRlbnRpb24gc2luY2UgdGhlIGNvbmZpZyBvcHRpb24gaXMgYmVpbmcgY2hhbmdlZC4gVGhlIHJlbW92YWwgb2YgdGhlIGAjaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGFyb3VuZCB0aGUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgZGVjbGFyYXRpb24gaW4gYGluY2x1ZGUvbGludXgvbW0uaGAgaXMsIG9uIGl0cyBvd24sIG5vdCB0b28gd29ycnlpbmcsIGJ1dCBpdCYjMzk7cyBwYXJ0IG9mIGEgYmlnZ2VyIGNoYW5nZSwgc28gSSYjMzk7bGwga2VlcCB0aGF0IGluIG1pbmQgYXMgYSBkZXBlbmRlbmN5LiBUaGUgbW9kaWZpY2F0aW9ucyB0byBgbW0vcGFnZXdhbGsuY2Agd2l0aCB0aGUgYFJDVV9MT0NLREVQX1dBUk5gIGluZGljYXRlIHBvdGVudGlhbCBjb25jdXJyZW5jeSBjb25jZXJucyB3aXRoaW4gcGFnZSB0YWJsZSB3YWxrcywgcGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gYGluaXRfbW1gLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGF0IEkgbmVlZCB0byBsb29rIGNsb3NlbHkgZm9yIHBvc3NpYmxlIHJhY2VzLiBJIHNlZSB0aGF0IGBtbS9wZ3RhYmxlLWdlbmVyaWMuY2AgaXMgYmVpbmcgc3Vic3RhbnRpYWxseSBhbHRlcmVkOiBpdCBhZGRzIGEgbmV3IGZ1bmN0aW9uLCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLCBhbmQgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGFuIGV4aXN0aW5nIG9uZS4gUmVwbGFjaW5nIGBfX3BhZ2V0YWJsZV9mcmVlYCB3aXRoIGBjYWxsX3JjdWAgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UsIGltcGx5aW5nIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgUkNVLWRlbGF5ZWQgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIGdvYWwgaXMgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIG9wZXJhdGlvbnMgbGlrZSBwYWdlIHRhYmxlIGR1bXBzLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyB2ZXJ5IHJlbGV2YW50LiBGaW5hbGx5LCB0aGUgaW50cm9kdWN0aW9uIG9mIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGluIGBtbS9wdGR1bXAuY2AgYXJvdW5kIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIGNvbmZpcm1zIHRoZSBpbnRlbnQgdG8gcHJvdGVjdCB0aGVzZSBvcGVyYXRpb25zLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgaG93IHdlIGZyZWUga2VybmVsIHBhZ2UgdGFibGVzLiBTbywgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZC4gSSBzZWUgdGhhdCB0aGUgb3ZlcmFsbCBnb2FsIG9mIHRoZSBwYXRjaCBpcyBSQ1UtZGVsYXllZCBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcywgd2hpY2ggaGFzIHRvIGJlIHRyaWdnZXJlZCBieSBzb21ldGhpbmcuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB3aGVyZSBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpcyBhY3R1YWxseSBjYWxsZWQuIElmIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIHVucmVhY2hhYmxlLCB0aGVuIHRoaXMgcGF0Y2ggd2lsbCBiZSBsb3ctcHJpb3JpdHksIGJ1dCBpZiBpdCBpcyByZWFjaGFibGUsIHRoZW4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYW5kIGhvdyB0byBmdXp6IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2V0YWJsZV9mcmVlX2tlcm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21tLmg9MzY5MT1zdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5Ny1cbmluY2x1ZGUvbGludXgvbW0uaDozNjk4OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk5LS8qKlxuLS1cbmluY2x1ZGUvbGludXgvbW0uaD0zNzA2PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcwOS1cdFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XG5pbmNsdWRlL2xpbnV4L21tLmg6MzcxMDpcdFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcbmluY2x1ZGUvbGludXgvbW0uaC0zNzExLVx0fSBlbHNlIHtcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MzQ9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTQtXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NTU6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTYte1xuLS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2My0jZWxzZVxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDY0OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDY1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjAxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBgcGFnZXRhYmxlX2ZyZWVgIGFuZCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBwYWdldGFibGVfZnJlZWAuIEkga25vdyBmcm9tIG1lbW9yeSB0aGF0IHRoaXMgaGFwcGVucyB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEtBU0FOLiBCdXQgbGV0JiMzOTtzIHZlcmlmeSB0aGF0LiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IHRoZSBleGFjdCB0cmlnZ2VyLiBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIG9wZW4gdXAgYGluY2x1ZGUvbGludXgvbW0uaGAgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBwYWdldGFibGVfZnJlZWAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZXhhY3QgY29uZGl0aW9uYWwgdGhhdCBnb3Zlcm5zIHRoZSBjYWxsIHRvIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIHNvIEkgY2FuIGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsLiBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBob3cgS0FTQU4gaW50ZXJhY3RzIHdpdGggcGFnZSB0YWJsZSBmcmVlaW5nLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1ha2UgYW55IGFzc3VtcHRpb25zIGJhc2VkIG9uIGZ1enp5IHJlY2FsbC4gVGltZSB0byBkaWcgaW4gYW5kIGNvbmZpcm0gdGhlIGV4YWN0IGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2V0YWJsZV9mcmVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW0uaD0zNjgzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHB0ZGVzYyAqcGFnZXRhYmxlX2FsbG9jX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5MC1cbmluY2x1ZGUvbGludXgvbW0uaDozNjkxOnN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTIte1xuLS1cbmluY2x1ZGUvbGludXgvbW0uaC0zNjk3LVxuaW5jbHVkZS9saW51eC9tbS5oOjM2OTg6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xuaW5jbHVkZS9saW51eC9tbS5oLTM2OTktLyoqXG5pbmNsdWRlL2xpbnV4L21tLmg6MzcwMDogKiBwYWdldGFibGVfZnJlZSAtIEZyZWUgcGFnZXRhYmxlc1xuaW5jbHVkZS9saW51eC9tbS5oLTM3MDEtICogQHB0Olx0VGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvclxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDItICpcbmluY2x1ZGUvbGludXgvbW0uaDozNzAzOiAqIHBhZ2V0YWJsZV9mcmVlIGZyZWVzIHRoZSBtZW1vcnkgb2YgYWxsIHBhZ2UgdGFibGVzIGRlc2NyaWJlZCBieSBhIHBhZ2VcbmluY2x1ZGUvbGludXgvbW0uaC0zNzA0LSAqIHRhYmxlIGRlc2NyaXB0b3IgYW5kIHRoZSBtZW1vcnkgZm9yIHRoZSBkZXNjcmlwdG9yIGl0c2VsZi5cbmluY2x1ZGUvbGludXgvbW0uaC0zNzA1LSAqL1xuaW5jbHVkZS9saW51eC9tbS5oOjM3MDY6c3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDcte1xuLS1cbmluY2x1ZGUvbGludXgvbW0uaC0zNzA5LVx0XHRwdGRlc2NfY2xlYXJfa2VybmVsKHB0KTtcbmluY2x1ZGUvbGludXgvbW0uaDozNzEwOlx0XHRwYWdldGFibGVfZnJlZV9rZXJuZWwocHQpO1xuaW5jbHVkZS9saW51eC9tbS5oLTM3MTEtXHR9IGVsc2Uge1xuaW5jbHVkZS9saW51eC9tbS5oOjM3MTI6XHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuaW5jbHVkZS9saW51eC9tbS5oLTM3MTMtXHR9XG4tLVxuaW5jbHVkZS9saW51eC9tbS5oPTM4MDg9c3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9kdG9yX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHRkZXNjKVxuLS1cbmluY2x1ZGUvbGludXgvbW0uaC0zODEwLVx0cGFnZXRhYmxlX2R0b3IocHRkZXNjKTtcbmluY2x1ZGUvbGludXgvbW0uaDozODExOlx0cGFnZXRhYmxlX2ZyZWUocHRkZXNjKTtcbmluY2x1ZGUvbGludXgvbW0uaC0zODEyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDUxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIFBhZ2UgVGFibGUgRGVhbGxvY2F0aW9uIEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGFyb3VuZCBwYWdlIHRhYmxlIGZyZWVpbmcuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGNhbGwgdG8gYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAuIE15IGh1bmNoIGlzIHRoYXQgdGhlcmUmIzM5O3MgYSBwcmVjZWRpbmcgY2hlY2sg4oCTIHBlcmhhcHMgYSBmdW5jdGlvbiBjYWxsLCBvciBhIG1hY3JvIOKAkyB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgcGFnZSB0YWJsZSBiZWluZyB0YXJnZXRlZCBieSB0aGUgcHJvY2VzcyBpcywgaW4gZmFjdCwgYSBrZXJuZWwtc3BlY2lmaWMgcGFnZSB0YWJsZS4gVGhlIG5hbWUgc2VlbXMgdG8gc3VnZ2VzdCBzb21ldGhpbmcgbGlrZSBgcHRkZXNjX2lzX2tlcm5lbGAsIG9yIG1heWJlIGl0JiMzOTtzIGBwdF9pc19rZXJuZWxgLCBvciBzb21lIHZhcmlhdGlvbiBvbiB0aGF0IHRoZW1lLiBJIG5lZWQgdG8gaWRlbnRpZnkgKnRoYXQqIGNoZWNrLiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiB0aGF0IGRldGVybWluZXMgd2hlbiBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpcyBhY3R1YWxseSBpbnZva2VkLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGFuZCBzZWUgd2hhdCB2YXJpYWJsZSBvciBmdW5jdGlvbiBjYWxsIGlzIGJlaW5nIHRlc3RlZCBpbW1lZGlhdGVseSBiZWZvcmVoYW5kLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgbWVtb3J5IHJlY2xhaW0gc3RyYXRlZ3kgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzcwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzAwOlx0ICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcbjM3MDE6XHQgKiBAcHQ6XHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXG4zNzAyOlx0ICpcbjM3MDM6XHQgKiBwYWdldGFibGVfZnJlZSBmcmVlcyB0aGUgbWVtb3J5IG9mIGFsbCBwYWdlIHRhYmxlcyBkZXNjcmliZWQgYnkgYSBwYWdlXG4zNzA0Olx0ICogdGFibGUgZGVzY3JpcHRvciBhbmQgdGhlIG1lbW9yeSBmb3IgdGhlIGRlc2NyaXB0b3IgaXRzZWxmLlxuMzcwNTpcdCAqL1xuMzcwNjpcdHN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbjM3MDc6XHR7XG4zNzA4Olx0XHRpZiAocHRkZXNjX3Rlc3Rfa2VybmVsKHB0KSkge1xuMzcwOTpcdFx0XHRwdGRlc2NfY2xlYXJfa2VybmVsKHB0KTtcbjM3MTA6XHRcdFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcbjM3MTE6XHRcdH0gZWxzZSB7XG4zNzEyOlx0XHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuMzcxMzpcdFx0fVxuMzcxNDpcdH1cbjM3MTU6XHRcbjM3MTY6XHQjaWYgZGVmaW5lZChDT05GSUdfU1BMSVRfUFRFX1BUTE9DS1MpXG4zNzE3Olx0I2lmIEFMTE9DX1NQTElUX1BUTE9DS1NcbjM3MTg6XHR2b2lkIF9faW5pdCBwdGxvY2tfY2FjaGVfaW5pdCh2b2lkKTtcbjM3MTk6XHRib29sIHB0bG9ja19hbGxvYyhzdHJ1Y3QgcHRkZXNjICpwdGRlc2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgUGFnZSBUYWJsZSBGcmVlaW5nIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcGFnZXRhYmxlX2ZyZWVgIGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSYjMzk7cyBiZWVuIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIElmIHRoZSBwYWdlIHRhYmxlIGRlc2NyaXB0b3IsIGBwdGAsIHBhc3NlcyB0aGUgYHB0ZGVzY190ZXN0X2tlcm5lbChwdClgIHRlc3QsIGl0IG5vdyBjYWxscyBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgdGhpcyBkZWZlcnMgdGhlIGFjdHVhbCBmcmVlaW5nIG9mIHRoZSBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIHVzZXMgUkNVLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgY29uY3VycmVuY3kuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byByZWFsbHkgZGlnIGludG8gaGVyZSBhcmUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIHRoZW4gYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCwgd2hpY2ggaXMgb2J2aW91c2x5IHRoZSBSQ1UgaW50ZXJmYWNlLCBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgYW5kIGZpbmFsbHksIHRoZSByYXRoZXIgdW5leHBlY3RlZCBgcHRkdW1wX3dhbGtfcGdkYC4gV2FpdCwgYHB0ZHVtcF93YWxrX3BnZGA/IFRoYXQmIzM5O3MgcGFydCBvZiB0aGUgcGFnZSB0YWJsZSBkdW1wIG1lY2hhbmlzbSwgd2hpY2ggaXMgYSAqZGVidWdnaW5nKiBmZWF0dXJlISBUaGF0JiMzOTtzIG9kZCB0aGF0IGl0JiMzOTtzIGluIGEgcGF0aCB0aWVkIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuICBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQgY29ubmVjdGlvbiBtb3JlIGNsb3NlbHkgbGF0ZXIuCgpCdXQsIGJhY2sgdG8gdGhlIG1haW4gcG9pbnQsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIGRlZmluaXRlbHkgY29yZSBNTS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBkZWZlcnJlZCBmcmVlaW5nLiBJdCYjMzk7cyBjcnVjaWFsIGZvciB0aGUga2VybmVsJiMzOTtzIHN0YWJpbGl0eSB1bmRlciBoZWF2eSBsb2FkIG9yIGV2ZW4gaW4gZ2VuZXJhbC4KCk5vdywgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaXMgYSBjb21waWxlLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGFuZCB3aGF0IGl0cyBpbXBsaWNhdGlvbnMgYXJlLiBUaGF0IHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIHRoaXMgYmVoYXZpb3IgaXMgZW5nYWdlZCBhbmQgaWYgaXQgY2FuIGNhdXNlIHByb2JsZW1zIGlmIGRpc2FibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWc9NTg9Y29uZmlnIFg4NlxuLS1cbmFyY2gveDg2L0tjb25maWctMjgzLVx0c2VsZWN0IEhBVkVfUEVSRl9VU0VSX1NUQUNLX0RVTVBcbmFyY2gveDg2L0tjb25maWc6Mjg0Olx0c2VsZWN0IEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcdGlmIElPTU1VX1NWQVxuYXJjaC94ODYvS2NvbmZpZy0yODUtXHRzZWxlY3QgTU1VX0dBVEhFUl9SQ1VfVEFCTEVfRlJFRVxuLS1cbm1tL0tjb25maWc9MTAyMD1jb25maWcgSEFWRV9HSUdBTlRJQ19GT0xJT1Ncbi0tXG5tbS9LY29uZmlnLTEwMjMtXG5tbS9LY29uZmlnOjEwMjQ6Y29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbm1tL0tjb25maWctMTAyNS1cdGRlZl9ib29sIG5cbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MTM9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxuLS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQxOS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jOjQyMDojaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQyMS1zdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg3NgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgQXN5bmNocm9ub3VzIFBhZ2UgVGFibGUgRnJlZWluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBhbmQgYElPTU1VX1NWQWAgb24geDg2IGp1bXBzIG91dC4gVGhlIGluaXRpYWwgbG9naWMgc3VnZ2VzdHMgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGNvbnRpbmdlbnQgb24gYElPTU1VX1NWQWAgZm9yIHg4Ni4gSG93ZXZlciwgdGhpcyBwYXRjaCBzZWVtcyB0byBmdW5kYW1lbnRhbGx5IGNoYW5nZSB0aGUgZ2FtZS4gVGhlIGFkZGl0aW9uIG9mIHRoYXQgY3J1Y2lhbCBgI2Vsc2VgIGJsb2NrIHdpdGhpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgIGlzIHRoZSBrZXkuIE5vdywgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaXMgKmFsd2F5cyogZGVmaW5lZC4gQW5kLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGVuYWJsZWQgb3Igbm90LCBpdCAqYWx3YXlzKiBkZWZlcnMgdGhlIGZyZWVpbmcgcHJvY2VzcyB1c2luZyBSQ1UsIGVpdGhlciBkaXJlY3RseSBvciB2aWEgYSB3b3JrcXVldWUuIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBiZWhhdmlvci4gV2UmIzM5O3ZlIG1vdmVkIGZyb20gcG90ZW50aWFsIHN5bmNocm9ub3VzIGZyZWVpbmcgdG8gKmd1YXJhbnRlZWQqIGFzeW5jaHJvbm91cyBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMuCgpCdXQgd2FpdCwgdGhlcmUmIzM5O3MgbW9yZS4gVGhlIG1vZGlmaWNhdGlvbiB0byBgbW0vcGFnZXdhbGsuY2AgYW5kIGBtbS9wdGR1bXAuY2AgaXMgaW1tZWRpYXRlbHkgY29uY2VybmluZy4gSSBrbm93IHRoYXQgYHB0ZHVtcF93YWxrX3BnZGAgaXMgdXNlZCBieSB0aGUgYFBURFVNUF9ERUJVR0ZTYCBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyBjcml0aWNhbCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXppbmcgcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyBmdXJ0aGVyLiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zIHdpdGhpbiB0aGUgZGVidWcgYW5kIHRyYWNpbmcgdXRpbGl0aWVzLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgYnJlYWsgYW55IGFzc3VtcHRpb25zIHRob3NlIHRvb2xzIHJlbHkgb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBhc3luY2hyb25vdXMgZnJlZWluZyBpbnRlcmFjdHMgd2l0aCB0aGUgcGFnZSB0YWJsZSBkdW1wIGNvZGUsIGFuZCB3aGV0aGVyIGl0IGludHJvZHVjZXMgYW55IHJhY2UgY29uZGl0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwdGR1bXBfd2Fsa19wZ2QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MTY9c3RydWN0IHB0ZHVtcF9pbmZvIHtcbi0tXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yMS1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oOjIyOnZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvKTtcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTIzLSNpZmRlZiBDT05GSUdfQVJNX1BURFVNUF9ERUJVR0ZTXG4tLVxuYXJjaC9hcm0vbW0vZHVtcC5jPTM5OD1zdGF0aWMgdm9pZCB3YWxrX3BnZChzdHJ1Y3QgcGdfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL2FybS9tbS9kdW1wLmMtNDE0LVxuYXJjaC9hcm0vbW0vZHVtcC5jOjQxNTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbylcbmFyY2gvYXJtL21tL2R1bXAuYy00MTYte1xuLS1cbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jLTEwLVxuYXJjaC9hcm0vbW0vcHRkdW1wX2RlYnVnZnMuYzoxMTpcdHB0ZHVtcF93YWxrX3BnZChtLCBpbmZvKTtcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmMtMTItXHRyZXR1cm4gMDtcbi0tXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTI3OT12b2lkIG5vdGVfcGFnZV9mbHVzaChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpwdF9zdClcbi0tXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTI4NS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6Mjg2OnN0YXRpYyB2b2lkIGFybTY0X3B0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTI4Ny17XG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTI4OC1cdHN0YXRpY19icmFuY2hfaW5jKFx1MDAyNmFybTY0X3B0ZHVtcF9sb2NrX2tleSk7XG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jOjI4OTpcdHB0ZHVtcF93YWxrX3BnZChzdCwgbW0sIE5VTEwpO1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yOTAtXHRzdGF0aWNfYnJhbmNoX2RlYyhcdTAwMjZhcm02NF9wdGR1bXBfbG9ja19rZXkpO1xuLS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM9MjkzPXZvaWQgcHRkdW1wX3dhbGsoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgcHRkdW1wX2luZm8gKmluZm8pXG4tLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zMjAtXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jOjMyMTpcdGFybTY0X3B0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIGluZm8tXHUwMDNlbW0pO1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zMjItfVxuLS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM9MzM4PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXG4tLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zNjItXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jOjM2MzpcdGFybTY0X3B0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0pO1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zNjQtXG4tLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYz0zMzQ9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zNTEtXHQvKiBUcmF2ZXJzZSBrZXJuZWwgcGFnZSB0YWJsZXMgKi9cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM6MzUyOlx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgXHUwMDI2aW5pdF9tbSwgTlVMTCk7XG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTM1My1cdHJldHVybiAwO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9MzY4PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zOTEtXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jOjM5MjpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zOTMtXG4tLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz0zNTM9c3RhdGljIHZvaWQgcHRkdW1wX3dhbGsoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgcHRkX21tX2luZm8gKnBpbmZvKVxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtMzcyLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYzozNzM6XHRwdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBwaW5mby1cdTAwM2VtbSwgTlVMTCk7XG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTM3NC19XG4tLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz0zNzY9Ym9vbCBwdGR1bXBfY2hlY2tfd3godm9pZClcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTM5OS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6NDAwOlx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgXHUwMDI2aW5pdF9tbSwgTlVMTCk7XG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTQwMS1cbi0tXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM9MTgyPWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIxMC1cdFx0cmV0dXJuIHRydWU7XG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MjExOlx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgXHUwMDI2aW5pdF9tbSwgTlVMTCk7XG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjEyLVx0aWYgKHN0Lnd4X3BhZ2VzKSB7XG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTIyNj1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjUwLVx0bXV0ZXhfbG9jayhcdTAwMjZjcGFfbXV0ZXgpO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjI1MTpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1Mi1cdG11dGV4X3VubG9jayhcdTAwMjZjcGFfbXV0ZXgpO1xuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaD0zMD1zdHJ1Y3Qgc2VxX2ZpbGU7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzE6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzI6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTMzLVx0XHRcdFx0ICAgYm9vbCB1c2VyKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozNDpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjM1OiNkZWZpbmUgcHRkdW1wX2NoZWNrX3d4IHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jaGVja3d4XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMzYtdm9pZCBwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz04PXN0YXRpYyBpbnQgcHRkdW1wX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTkte1xuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjEwOlx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgXHUwMDI2aW5pdF9tbSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTExLVx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTE2PXN0YXRpYyBpbnQgcHRkdW1wX2N1cmtubF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMTgtXHRpZiAoY3VycmVudC1cdTAwM2VtbS1cdTAwM2VwZ2QpXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6MTk6XHRcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIGN1cnJlbnQtXHUwMDNlbW0sIGZhbHNlKTtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0yMC1cdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0yNj1zdGF0aWMgaW50IHB0ZHVtcF9jdXJ1c3Jfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTI4LVx0aWYgKGN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlcGdkKVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjI5Olx0XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBjdXJyZW50LVx1MDAzZW1tLCB0cnVlKTtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0zMC1cdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0zNz1zdGF0aWMgaW50IHB0ZHVtcF9lZmlfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTM5LVx0aWYgKGVmaV9tbS5wZ2QpXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6NDA6XHRcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIFx1MDAyNmVmaV9tbSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTQxLVx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM9NDE2PXN0YXRpYyB2b2lkIG5vdGVfcGFnZV9mbHVzaChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpwdF9zdClcbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00MjItXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0MjM6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00MjQtXHRcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCxcbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NTctXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NTg6XHRwdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBtbSwgcGdkKTtcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ1OS1cbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzMtXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NzQ6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3NS17XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NzY6XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShtLCBtbSwgbW0tXHUwMDNlcGdkLCBmYWxzZSwgdHJ1ZSk7XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzctfVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDc4LVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDc5OnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ4MC1cdFx0XHRcdCAgIGJvb2wgdXNlcilcbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00ODYtI2VuZGlmXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0ODc6XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShtLCBtbSwgcGdkLCBmYWxzZSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDg4LX1cbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYz00OTA9dm9pZCBwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTAwLVx0cGdkID0ga2VybmVsX3RvX3VzZXJfcGdkcChwZ2QpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTAxOlx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoTlVMTCwgXHUwMDI2aW5pdF9tbSwgcGdkLCB0cnVlLCBmYWxzZSk7XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDItI2VuZGlmXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTA0LVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTA1OmJvb2wgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NoZWNrd3godm9pZClcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwNi17XG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTA5LVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTEwOlx0cmV0dXJuIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKE5VTEwsIFx1MDAyNmluaXRfbW0sIElOSVRfUEdELCB0cnVlLCBmYWxzZSk7XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MTEtfVxuLS1cbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYz03NT12b2lkIF9faW5pdCBlZmlfZHVtcF9wYWdldGFibGUodm9pZClcbi0tXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzMyLmMtNzctI2lmZGVmIENPTkZJR19FRklfUEdUX0RVTVBcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYzo3ODpcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbChOVUxMLCBcdTAwMjZpbml0X21tKTtcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYy03OS0jZW5kaWZcbi0tXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmM9NDIzPXZvaWQgX19pbml0IGVmaV9kdW1wX3BhZ2V0YWJsZSh2b2lkKVxuLS1cbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYy00MjUtI2lmZGVmIENPTkZJR19FRklfUEdUX0RVTVBcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYzo0MjY6XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoTlVMTCwgXHUwMDI2ZWZpX21tKTtcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYy00MjctI2VuZGlmXG4tLVxuaW5jbHVkZS9saW51eC9wdGR1bXAuaD0xMz1zdHJ1Y3QgcHRkdW1wX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTI3LVxuaW5jbHVkZS9saW51eC9wdGR1bXAuaDoyODpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKHN0cnVjdCBzZXFfZmlsZSAqbSxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMjktXHRcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMzAtXHRcdFx0XHRib29sIGNoZWNrd3gsIGJvb2wgZG1lc2cpO1xuaW5jbHVkZS9saW51eC9wdGR1bXAuaDozMTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpO1xuaW5jbHVkZS9saW51eC9wdGR1bXAuaC0zMi1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKTtcbi0tXG5tbS9wdGR1bXAuYz0xNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwdGR1bXBfb3BzID0ge1xuLS1cbm1tL3B0ZHVtcC5jLTE3NC1cbm1tL3B0ZHVtcC5jOjE3NTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG5tbS9wdGR1bXAuYy0xNzYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTMwMwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWFjaGFiaWxpdHkgaW4gTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gYHB0ZHVtcF93YWxrX3BnZGAgaXMgY2FsbGVkIGJ5IGBwdGR1bXBfY2hlY2tfd3hgLCBhbmQgKnRoYXQqIGZ1bmN0aW9uIGdldHMgaW52b2tlZCBkdXJpbmcgYm9vdC4gU28sIG5vIHF1ZXN0aW9uLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjb2RlLiBXZSBrbm93IHdlJiMzOTtyZSBnb2luZyB0byBnZXQgdG8gaXQuIE1ha2VzIHNlbnNlLgoKQW5kIHRoZW4sIGlmIEkmIzM5O20gdW5kZXJzdGFuZGluZyB0aGlzIHJpZ2h0LCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBnZXRzIGNhbGxlZCAqYW55dGltZSoga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBmcmVlZC4gUmlnaHQsIHJpZ2h0LCB0aGluZ3MgbGlrZSB3aGVuIHdlJiMzOTtyZSByZWxlYXNpbmcgYHZtYWxsb2NgIG1lbW9yeSBvciBmcmVlaW5nIGh1Z2UgcGFnZXMgbWFwcGVkIHdpdGggYHZtYXBgLiBHb3QgaXQuIFRoYXQmIzM5O3MgYSBwcmV0dHkgd2lkZSBuZXQuCgpIbW0uLi4ganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O20gZ29pbmcgdG8gcmUtZXhhbWluZSB0aGUgY2FsbGVycyBvZiBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYC4gSnVzdCB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgcmVhY2ggaXMgc3RpbGwgY29ycmVjdC4gSXQgcGF5cyB0byBiZSB0aG9yb3VnaCB3aXRoIHRoaXMgc3R1ZmYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2V0YWJsZV9mcmVlX2tlcm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21tLmg9MzY5MT1zdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5Ny1cbmluY2x1ZGUvbGludXgvbW0uaDozNjk4OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk5LS8qKlxuLS1cbmluY2x1ZGUvbGludXgvbW0uaD0zNzA2PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcwOS1cdFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XG5pbmNsdWRlL2xpbnV4L21tLmg6MzcxMDpcdFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcbmluY2x1ZGUvbGludXgvbW0uaC0zNzExLVx0fSBlbHNlIHtcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MzQ9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTQtXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NTU6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTYte1xuLS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2My0jZWxzZVxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDY0OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDY1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgYHBhZ2V0YWJsZV9mcmVlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgcGFnZXRhYmxlX2ZyZWVgIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciwgd2VsbCwgZnJlZWluZyBwYWdlIHRhYmxlcy4gSSBrbm93IGl0JiMzOTtzIGNhbGxlZCBmcm9tIHZhcmlvdXMgb3RoZXIgZnJlZWluZyBmdW5jdGlvbnM6IGBwYWdldGFibGVfZHRvcl9mcmVlYCwgYW5kIHRoZW4sIGRlcGVuZGluZyBvbiB0aGUgbGV2ZWwgb2YgdGhlIHBhZ2UgdGFibGUsIGBwdWRfZnJlZWAsIGBwbWRfZnJlZWAsIGFuZCBgcHRlX2ZyZWVfa2VybmVsYCwgYW5kIHByb2JhYmx5IG90aGVycyBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSByZWNhbGxpbmcuIFNlZW1zIGxpa2UgdGhlIGNvbW1vbiBkZW5vbWluYXRvci4KClJpZ2h0LCBzbyBsZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBwYWdldGFibGVfZnJlZWAgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhhY3QgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIGxvd2VyIGxldmVsIGZyZWVpbmcgcm91dGluZXMsIGNvbnNpZGVyaW5nIGl0cyBjYWxsZWQgZnJvbSBhbGwgdGhlIHZhcmlvdXMgbGV2ZWxzIG9mIHBhZ2UgdGFibGUgbWFuYWdlbWVudC4gTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdldGFibGVfZnJlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L21tL2luaXRfNjQuYz0xMDA5PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCBmcmVlX3BhZ2V0YWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9yZGVyKVxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMDI2LVx0fSBlbHNlIHtcbmFyY2gveDg2L21tL2luaXRfNjQuYzoxMDI3Olx0XHRwYWdldGFibGVfZnJlZShwYWdlX3B0ZGVzYyhwYWdlKSk7XG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTAyOC1cdH1cbi0tXG5hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jPTQxMz1zdGF0aWMgdm9pZCBjcGFfY29sbGFwc2VfbGFyZ2VfcGFnZXMoc3RydWN0IGNwYV9kYXRhICpjcGEpXG4tLVxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy00NDAtXHRcdGxpc3RfZGVsKFx1MDAyNnB0ZGVzYy1cdTAwM2VwdF9saXN0KTtcbmFyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmM6NDQxOlx0XHRwYWdldGFibGVfZnJlZShwdGRlc2MpO1xuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy00NDItXHR9XG4tLVxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYz0xMjMzPXN0YXRpYyBpbnQgc3BsaXRfbGFyZ2VfcGFnZShzdHJ1Y3QgY3BhX2RhdGEgKmNwYSwgcHRlX3QgKmtwdGUsXG4tLVxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy0xMjQ2LVx0aWYgKF9fc3BsaXRfbGFyZ2VfcGFnZShjcGEsIGtwdGUsIGFkZHJlc3MsIHB0ZGVzYykpXG5hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jOjEyNDc6XHRcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XG5hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jLTEyNDgtXG4tLVxuYXJjaC94ODYvbW0vcGd0YWJsZS5jPTE1MD1zdGF0aWMgdm9pZCBmcmVlX3BtZHMoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWRzW10sIGludCBjb3VudClcbi0tXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMtMTU5LVx0XHRcdHBhZ2V0YWJsZV9kdG9yKHB0ZGVzYyk7XG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM6MTYwOlx0XHRcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMtMTYxLVx0XHRcdG1tX2RlY19ucl9wbWRzKG1tKTtcbi0tXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM9MTY1PXN0YXRpYyBpbnQgcHJlYWxsb2NhdGVfcG1kcyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZHNbXSwgaW50IGNvdW50KVxuLS1cbmFyY2gveDg2L21tL3BndGFibGUuYy0xODEtXHRcdGlmIChwdGRlc2MgXHUwMDI2XHUwMDI2ICFwYWdldGFibGVfcG1kX2N0b3IobW0sIHB0ZGVzYykpIHtcbmFyY2gveDg2L21tL3BndGFibGUuYzoxODI6XHRcdFx0cGFnZXRhYmxlX2ZyZWUocHRkZXNjKTtcbmFyY2gveDg2L21tL3BndGFibGUuYy0xODMtXHRcdFx0cHRkZXNjID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MDEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcqKgoKT2theSwgc28gaXQmIzM5O3MgY29uZmlybWVkOiBgcGFnZXRhYmxlX2ZyZWVgICppcyogZGVmaW5pdGVseSBpbiB1c2UuIFRoaXMgcGF0Y2ggaXMgbWFraW5nIHNvbWUgZnVuZGFtZW50YWwgY2hhbmdlcyB0byBob3cga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBmcmVlZCwgb3B0aW5nIGZvciBkZWZlcnJlZCBmcmVlaW5nIHVzaW5nIFJDVS4gVGhlIHByaW1hcnkgbW90aXZhdGlvbiBoZXJlLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHRvIG1pdGlnYXRlIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIHNwZWNpZmljYWxseSB3aGVuIGxvY2tsZXNzbHkgdHJhdmVyc2luZyBrZXJuZWwgcGFnZSB0YWJsZXMsIHNvbWV0aGluZyB0aGF0JiMzOTtzIGNydWNpYWwgZHVyaW5nIHByb2Nlc3NlcyBsaWtlIGBwdGR1bXBgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlcmVmb3JlIHdvcnRoeSBvZiB0aG9yb3VnaCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBhcmVhcyBvZiBmb2N1cyBhcmUgZ29pbmcgdG8gYmUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAsIHdoaWNoIGFyZSB0aGUgb2J2aW91cyBjYW5kaWRhdGVzLCBhbG9uZ3NpZGUgYHB0ZHVtcF93YWxrX3BnZGAsIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCwgYW5kIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzYCDigJMgdGhvc2UgZnVuY3Rpb25zIHJlcHJlc2VudCB0aGUgYXJlYXMgdGhpcyBwYXRjaCBpcyBpbnRlbmRlZCB0byBwcm90ZWN0LgoKV2FpdCBhIHNlY29uZCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIGFsc28gc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIHRvIG5vdyBjYWxsIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAgYmV0dGVyLiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCB0byBmdWxseSBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGNhbGwgY2hhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0PTM4Mj1XZSBhbHNvIHBlcm1pdCBhIHRydWx5IHVudXN1YWwgY2FzZSBpcyB0aGUgdHJhdmVyc2FsIG9mIG5vbi1WTUEgcmFuZ2VzIGluXG5Eb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0OjM4MzoqKnVzZXJsYW5kKiogcmFuZ2VzLCBhcyBwcm92aWRlZCBmb3IgYnkgOmM6ZnVuYzpgIXdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuXG5Eb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0LTM4NC1cbi0tXG5tbS9pbnRlcm5hbC5oPTE4NDA9aW50IHdhbGtfcGFnZV9yYW5nZV92bWFfdW5zYWZlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbm1tL2ludGVybmFsLmgtMTg0Mi1cdFx0dm9pZCAqcHJpdmF0ZSk7XG5tbS9pbnRlcm5hbC5oOjE4NDM6aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbm1tL2ludGVybmFsLmgtMTg0NC1cdFx0XHQgIHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcbi0tXG5tbS9wYWdld2Fsay5jPTY0OD1pbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9wYWdld2Fsay5jLTY2Ny0vKipcbm1tL3BhZ2V3YWxrLmM6NjY4OiAqIHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyAtIHdhbGsgYSByYW5nZSBvZiBwYWdldGFibGVzIG5vdCBiYWNrZWQgYnkgYSB2bWFcbm1tL3BhZ2V3YWxrLmMtNjY5LSAqIEBtbTpcdFx0bW1fc3RydWN0IHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IHByb2Nlc3Mgb2YgcGFnZSB0YWJsZSB3YWxrXG4tLVxubW0vcGFnZXdhbGsuYy02ODEtICovXG5tbS9wYWdld2Fsay5jOjY4MjppbnQgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxubW0vcGFnZXdhbGsuYy02ODMtXHRcdFx0ICB1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXG4tLVxubW0vcHRkdW1wLmM9MTc1PXZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZClcbi0tXG5tbS9wdGR1bXAuYy0xODItXHR3aGlsZSAocmFuZ2UtXHUwMDNlc3RhcnQgIT0gcmFuZ2UtXHUwMDNlZW5kKSB7XG5tbS9wdGR1bXAuYzoxODM6XHRcdHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhtbSwgcmFuZ2UtXHUwMDNlc3RhcnQsIHJhbmdlLVx1MDAzZWVuZCxcbm1tL3B0ZHVtcC5jLTE4NC1cdFx0XHRcdCAgICAgIFx1MDAyNnB0ZHVtcF9vcHMsIHBnZCwgc3QpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzkxMQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKlRyYWNpbmcgdGhlIERlcGVuZGVuY3kgQ2hhaW4gaW4gdGhlIFBhZ2UgVGFibGUgRHVtcCBDb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AgaGFzIGEgdmVyeSBzcGVjaWZpYyBwdXJwb3Nl4oCUaXQmIzM5O3MgYmVpbmcgdXRpbGl6ZWQgZGlyZWN0bHkgYnkgYHB0ZHVtcF93YWxrX3BnZGAuIFRoZW4sIGBwdGR1bXBfd2Fsa19wZ2RgIGl0c2VsZiBoYXMgdHdvIHByaW1hcnkgY29uc3VtZXJzOiBgUFREVU1QX0RFQlVHRlNgIGFuZCBgUFREVU1QX0NPUkVgLiBHaXZlbiB0aGUgb3B0aW9ucywgSSB3YW50IHRvIGludmVzdGlnYXRlIHRoZSBgUFREVU1QX0RFQlVHRlNgIHVzYWdlLiBJdCBzZWVtcyB0byBoYXZlIHRoZSBoaWdoZXIgbGV2ZWwgb2YgZGVwZW5kZW5jeSBzbyB0aGlzIGlzIHdoZXJlIEkgd2lsbCBzdGFydCBteSB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQVERVTVBfREVCVUdGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FyY2gvYXJtNjQvcHRkdW1wLnJzdD0yMz1jb25maWd1cmF0aW9ucyBhbmQgbW91bnQgZGVidWdmczo6XG5Eb2N1bWVudGF0aW9uL2FyY2gvYXJtNjQvcHRkdW1wLnJzdC0yNC1cbkRvY3VtZW50YXRpb24vYXJjaC9hcm02NC9wdGR1bXAucnN0OjI1OiBDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxuRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L3B0ZHVtcC5yc3QtMjYtXG4tLVxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zz0zPWNvbmZpZyBBUk1fUFREVU1QX0NPUkVcbi0tXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnLTUtXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnOjY6Y29uZmlnIEFSTV9QVERVTVBfREVCVUdGU1xuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zy03LVx0Ym9vbCBcJiMzNDtFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXCYjMzQ7XG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MjI9dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgcHRkdW1wX2luZm8gKmluZm8pO1xuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg6MjM6I2lmZGVmIENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlNcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTI0LSNkZWZpbmUgRUZJX1JVTlRJTUVfTUFQX0VORFx0U1pfMUdcbi0tXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaD0yNz1zdGF0aWMgaW5saW5lIHZvaWQgcHRkdW1wX2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvLFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMjgtXHRcdFx0XHRcdCAgIGNvbnN0IGNoYXIgKm5hbWUpIHsgfVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg6Mjk6I2VuZGlmIC8qIENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlMgKi9cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTMwLVxuLS1cbmFyY2gvYXJtL21tL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19BUk1fUFREVU1QX0NPUkUpXHQmIzQzOz0gZHVtcC5vXG5hcmNoL2FybS9tbS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfQVJNX1BURFVNUF9ERUJVR0ZTKVx0JiM0Mzs9IHB0ZHVtcF9kZWJ1Z2ZzLm9cbmFyY2gvYXJtL21tL01ha2VmaWxlLTE5LW9iai0kKENPTkZJR19NT0RVTEVTKVx0XHQmIzQzOz0gcHJvYy1zeW1zLm9cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3B0ZHVtcC5oPTcwPXZvaWQgbm90ZV9wYWdlX2ZsdXNoKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0KTtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmg6NzE6I2lmZGVmIENPTkZJR19QVERVTVBfREVCVUdGU1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaC03Mi0jZGVmaW5lIEVGSV9SVU5USU1FX01BUF9FTkRcdERFRkFVTFRfTUFQX1dJTkRPV182NFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmg9NzU9c3RhdGljIGlubGluZSB2b2lkIHB0ZHVtcF9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmgtNzYtXHRcdFx0XHRcdCAgIGNvbnN0IGNoYXIgKm5hbWUpIHsgfVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaDo3NzojZW5kaWYgLyogQ09ORklHX1BURFVNUF9ERUJVR0ZTICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTc4LSNlbHNlXG4tLVxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZT04PW9iai0kKENPTkZJR19QVERVTVApXHRcdCYjNDM7PSBwdGR1bXAub1xuYXJjaC9hcm02NC9tbS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcdCYjNDM7PSBwdGR1bXBfZGVidWdmcy5vXG5hcmNoL2FybTY0L21tL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19UUkFOU19UQUJMRSlcdCYjNDM7PSB0cmFuc19wZ2Qub1xuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnPTc5PUNPTkZJR19QUENfRUFSTFlfREVCVUc9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWc6ODA6Q09ORklHX1BURFVNUF9ERUJVR0ZTPXlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BQQ19CT09LM1NfNjQpXHQmIzQzOz0gYm9vazNzNjQub1xuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9NYWtlZmlsZS0xMC1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvTWFrZWZpbGU6MTE6aWZkZWYgQ09ORklHX1BURFVNUF9ERUJVR0ZTXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19QUENfQk9PSzNTXzMyKVx0JiM0Mzs9IGJhdHMubyBzZWdtZW50X3JlZ3Mub1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9NDA2PXN0YXRpYyBpbnQgX19pbml0IHB0ZHVtcF9pbml0KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy00MTktXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jOjQyMDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19QVERVTVBfREVCVUdGUykpXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTQyMS1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtrZXJuZWxfcGFnZV90YWJsZXNcJiMzNDssIDA0MDAsIE5VTEwsIE5VTEwsIFx1MDAyNnB0ZHVtcF9mb3BzKTtcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9ODQyPUNPTkZJR19ERUJVR19XWD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODQzOkNPTkZJR19QVERVTVBfREVCVUdGUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctODQ0LUNPTkZJR19ERUJVR19PQkpFQ1RTPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9ODIxPUNPTkZJR19ERUJVR19XWD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6ODIyOkNPTkZJR19QVERVTVBfREVCVUdGUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctODIzLUNPTkZJR19ERUJVR19NRU1PUllfSU5JVD15XG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTE4Mj1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yMjQtXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MjI1OiNpZmRlZiBDT05GSUdfUFREVU1QX0RFQlVHRlNcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yMjYtc3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTI1NT1ERUZJTkVfU0hPV19BVFRSSUJVVEUocHRkdW1wKTtcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYzoyNTY6I2VuZGlmIC8qIENPTkZJR19QVERVTVBfREVCVUdGUyAqL1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1Ny1cbi0tXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM9MzE1PXN0YXRpYyBpbnQgcHRfZHVtcF9pbml0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTM1NS1cdHNvcnQoXHUwMDI2bWFya2Vyc1sxXSwgbWFya2Vyc19jbnQgLSAxLCBzaXplb2YoKm1hcmtlcnMpLCBwdGR1bXBfY21wLCBOVUxMKTtcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYzozNTY6I2lmZGVmIENPTkZJR19QVERVTVBfREVCVUdGU1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTM1Ny1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7a2VybmVsX3BhZ2VfdGFibGVzXCYjMzQ7LCAwNDAwLCBOVUxMLCBOVUxMLCBcdTAwMjZwdGR1bXBfZm9wcyk7XG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MzU4OiNlbmRpZiAvKiBDT05GSUdfUFREVU1QX0RFQlVHRlMgKi9cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0zNTktXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9tbS9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfUFREVU1QKVx0XHQmIzQzOz0gZHVtcF9wYWdldGFibGVzLm9cbmFyY2gveDg2L21tL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcdCYjNDM7PSBkZWJ1Z19wYWdldGFibGVzLm9cbmFyY2gveDg2L21tL01ha2VmaWxlLTM5LVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2FybS1ydW50aW1lLmMtMjctXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9hcm0tcnVudGltZS5jOjI4OiNpZiBkZWZpbmVkKENPTkZJR19QVERVTVBfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVJNX1BURFVNUF9ERUJVR0ZTKVxuZHJpdmVycy9maXJtd2FyZS9lZmkvYXJtLXJ1bnRpbWUuYy0yOS0jaW5jbHVkZSBcdTAwM2Nhc20vcHRkdW1wLmhcdTAwM2Vcbi0tXG5rZXJuZWwvY29uZmlncy9kZWJ1Zy5jb25maWc9Nzg9Q09ORklHX0tBU0FOX1ZNQUxMT0M9eVxua2VybmVsL2NvbmZpZ3MvZGVidWcuY29uZmlnOjc5OkNPTkZJR19QVERVTVBfREVCVUdGUz15XG5rZXJuZWwvY29uZmlncy9kZWJ1Zy5jb25maWctODAtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XG4tLVxubW0vS2NvbmZpZy5kZWJ1Zz0yMTk9Y29uZmlnIFBURFVNUFxuLS1cbm1tL0tjb25maWcuZGVidWctMjIxLVxubW0vS2NvbmZpZy5kZWJ1ZzoyMjI6Y29uZmlnIFBURFVNUF9ERUJVR0ZTXG5tbS9LY29uZmlnLmRlYnVnLTIyMy1cdGJvb2wgXCYjMzQ7RXhwb3J0IGtlcm5lbCBwYWdldGFibGUgbGF5b3V0IHRvIHVzZXJzcGFjZSB2aWEgZGVidWdmc1wmIzM0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND0xMTQ9Q09ORklHX1BST1ZFX0xPQ0tJTkc9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjExNTpDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTExNi1DT05GSUdfUkNfREVWSUNFUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD05NT1DT05GSUdfUFJPVkVfTE9DS0lORz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4Ojk2OkNPTkZJR19QVERVTVBfREVCVUdGUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4LTk3LUNPTkZJR19SQ19ERVZJQ0VTPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYzNzMKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgRGVidWdnaW5nIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYFBURFVNUF9ERUJVR0ZTYC4gVGhhdCYjMzk7cyBhIHByZXR0eSBnZW5lcmljIGNvbmZpZyBvcHRpb24sIEkgc2VlIGl0IHBvcHBpbmcgdXAgaW4gdmFyaW91cyBwbGFjZXMuIFRoZW4gdGhlcmUmIzM5O3MgYERFQlVHX1dYYCwgYW5kIHRoYXQgb25lIHNwZWNpZmljYWxseSBzZWVtcyB0byBsZXZlcmFnZSBgcHRkdW1wX2NoZWNrX3d4YC4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCB0cmFjayB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmZWF0dXJlcyBpbnRlcmNvbm5lY3QuIE9rYXksIGxldCYjMzk7cyB6b29tIGluIG9uIGBERUJVR19XWGAgYW5kIHNlZSB3aGF0IHRoYXQmIzM5O3MgYWxsIGFib3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERUJVR19XWCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjY1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnPTY9Y29uZmlnIEFSTV9QVERVTVBfREVCVUdGU1xuLS1cbmFyY2gvYXJtL0tjb25maWcuZGVidWctMTktXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnOjIwOmNvbmZpZyBBUk1fREVCVUdfV1hcbmFyY2gvYXJtL0tjb25maWcuZGVidWctMjEtXHRib29sIFwmIzM0O1dhcm4gb24gVyYjNDM7WCBtYXBwaW5ncyBhdCBib290XCYjMzQ7XG4tLVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnPTI1Mz1DT05GSUdfREVCVUdfRlM9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjI1NDpDT05GSUdfQVJNX0RFQlVHX1dYPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy0yNTUtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTMwMz1DT05GSUdfREVCVUdfRlM9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnOjMwNDpDT05GSUdfQVJNX0RFQlVHX1dYPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy0zMDUtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc9MjI3PUNPTkZJR19ERUJVR19GUz15XG5hcmNoL2FybS9jb25maWdzL3NobW9iaWxlX2RlZmNvbmZpZzoyMjg6Q09ORklHX0FSTV9ERUJVR19XWD15XG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MzE9dm9pZCBwdGR1bXBfY2hlY2tfd3godm9pZCk7XG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMzQtXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDozNTojaWZkZWYgQ09ORklHX0FSTV9ERUJVR19XWFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMzYtI2RlZmluZSBhcm1fZGVidWdfY2hlY2t3eCgpIHB0ZHVtcF9jaGVja193eCgpXG4tLVxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XG4tLVxuYXJjaC9hcm02NC9LY29uZmlnLTEzLVx0c2VsZWN0IEFDUElfUFBUVCBpZiBBQ1BJXG5hcmNoL2FybTY0L0tjb25maWc6MTQ6XHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNS1cdHNlbGVjdCBBUkNIX0JJTkZNVF9FTEZfRVhUUkFfUEhEUlNcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZz0xMTg9Y29uZmlnIFBQQ1xuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzMi1cdHNlbGVjdCBBUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzoxMzM6XHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcdFx0aWYgU1RSSUNUX0tFUk5FTF9SV1hcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzNC1cdHNlbGVjdCBBUkNIX0hBU19ERVZNRU1fSVNfQUxMT1dFRFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0zOTY9Q09ORklHX0RFQlVHX1JPREFUQV9URVNUPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzozOTc6Q09ORklHX0RFQlVHX1dYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy0zOTgtQ09ORklHX0RFQlVHX1NUQUNLX1VTQUdFPXlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTE4ND1zdGF0aWMgdm9pZCBub3RlX3Byb3Rfd3goc3RydWN0IHBnX3N0YXRlICpzdCwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMTkzLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzoxOTQ6XHRXQVJOX09OQ0UoSVNfRU5BQkxFRChDT05GSUdfREVCVUdfV1gpLFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0xOTUtXHRcdCAgXCYjMzQ7cG93ZXJwYy9tbTogRm91bmQgaW5zZWN1cmUgVyYjNDM7WCBtYXBwaW5nIGF0IGFkZHJlc3MgJXAvJXBTXFxuXCYjMzQ7LFxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZz0xMz1jb25maWcgUklTQ1Zcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWctMzAtXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfVk1fUEdUQUJMRVxuYXJjaC9yaXNjdi9LY29uZmlnOjMxOlx0c2VsZWN0IEFSQ0hfSEFTX0RFQlVHX1dYXG5hcmNoL3Jpc2N2L0tjb25maWctMzItXHRzZWxlY3QgQVJDSF9IQVNfRUxGX0NPUkVfRUZMQUdTIGlmIEJJTkZNVF9FTEYgXHUwMDI2XHUwMDI2IEVMRl9DT1JFXG4tLVxuYXJjaC9zMzkwL0tjb25maWc9NzU9Y29uZmlnIFMzOTBcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy05MC1cdHNlbGVjdCBBUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFXG5hcmNoL3MzOTAvS2NvbmZpZzo5MTpcdHNlbGVjdCBBUkNIX0hBU19ERUJVR19XWFxuYXJjaC9zMzkwL0tjb25maWctOTItXHRzZWxlY3QgQVJDSF9IQVNfREVWTUVNX0lTX0FMTE9XRURcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9ODQxPUNPTkZJR19ERUJVR19ST0RBVEFfVEVTVD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODQyOkNPTkZJR19ERUJVR19XWD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctODQzLUNPTkZJR19QVERVTVBfREVCVUdGUz15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTgyMD1DT05GSUdfTUFHSUNfU1lTUlE9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjgyMTpDT05GSUdfREVCVUdfV1g9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTgyMi1DT05GSUdfUFREVU1QX0RFQlVHRlM9eVxuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz03MT1zdGF0aWMgdm9pZCBub3RlX3Byb3Rfd3goc3RydWN0IHBnX3N0YXRlICpzdCwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy04OC1cdFx0cmV0dXJuO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjg5Olx0V0FSTl9PTkNFKElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX1dYKSxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy05MC1cdFx0ICBcJiMzNDtzMzkwL21tOiBGb3VuZCBpbnNlY3VyZSBXJiM0MztYIG1hcHBpbmcgYXQgYWRkcmVzcyAlcFNcXG5cJiMzNDssXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0xMTEtXHRzZWxlY3QgQVJDSF9IQVNfVUJTQU5cbmFyY2gveDg2L0tjb25maWc6MTEyOlx0c2VsZWN0IEFSQ0hfSEFTX0RFQlVHX1dYXG5hcmNoL3g4Ni9LY29uZmlnLTExMy1cdHNlbGVjdCBBUkNIX0hBU19aT05FX0RNQV9TRVQgaWYgRVhQRVJUXG4tLVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTI2NT1DT05GSUdfTUFHSUNfU1lTUlE9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjI2NjpDT05GSUdfREVCVUdfV1g9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTI2Ny1DT05GSUdfREVCVUdfU1RBQ0tfVVNBR0U9eVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaD0zNj12b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7XG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTQzLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjQ0OiNpZmRlZiBDT05GSUdfREVCVUdfV1hcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaC00NS0jZGVmaW5lIGRlYnVnX2NoZWNrd3hfdXNlcigpXHRwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NTU1PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY1NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NTY5Olx0SVBXX0RFQlVHX1dYKFwmIzM0O05hbWU6ICVzXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjU3MC1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY1NzM9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9mcmVxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjYwOS1cdH0gZWxzZSB7XHRcdC8qIFNldCB0aGUgY2hhbm5lbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjYxMDpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBGcmVxL0NoYW5uZWwgLVx1MDAzZSAlZFxcblwmIzM0OywgZndycS1cdTAwM2VtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2MTEtXHRcdGVyciA9IGlwdzIxMDBfc2V0X2NoYW5uZWwocHJpdiwgZndycS1cdTAwM2VtLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NjE5PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfZnJlcShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NjM5Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBGcmVxL0NoYW5uZWwgLVx1MDAzZSAlZFxcblwmIzM0OywgcHJpdi1cdTAwM2VjaGFubmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2NDAtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NjQ0PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NjUxOlx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBNb2RlIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY2ODM9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjY5My1cdHdycXUtXHUwMDNlbW9kZSA9IHByaXYtXHUwMDNlaWVlZS1cdTAwM2Vpd19tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjY5NDpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgTW9kZSAtXHUwMDNlICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZW1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjY5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NzE4PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfcmFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjgzODpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgUmFuZ2VcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjgzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02ODQzPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjg2Mi1cdFx0Lyogd2UgZGlzYWJsZSBtYW5kYXRvcnkgQlNTSUQgYXNzb2NpYXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY4NjM6XHRcdElQV19ERUJVR19XWChcJiMzNDtleGl0IC0gZGlzYWJsZSBtYW5kYXRvcnkgQlNTSURcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjg2NC1cdFx0cHJpdi1cdTAwM2Vjb25maWcgXHUwMDI2PSB+Q0ZHX1NUQVRJQ19CU1NJRDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njg3NDpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgQlNTSUQgLVx1MDAzZSAlcE1cXG5cJiMzNDssIHdycXUtXHUwMDNlYXBfYWRkci5zYV9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY4NzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9Njg4MT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3dhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY4OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2ODk5Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dldHRpbmcgV0FQIEJTU0lEOiAlcE1cXG5cJiMzNDssIHdycXUtXHUwMDNlYXBfYWRkci5zYV9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MDAtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02OTAzPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfZXNzaWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTIzLVx0aWYgKGxlbmd0aCA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2OTI0Olx0XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyBFU1NJRCB0byBBTllcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjkyNS1cdFx0cHJpdi1cdTAwM2Vjb25maWcgXHUwMDI2PSB+Q0ZHX1NUQVRJQ19FU1NJRDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTM0LVx0aWYgKHByaXYtXHUwMDNlZXNzaWRfbGVuID09IGxlbmd0aCBcdTAwMjZcdTAwMjYgIW1lbWNtcChwcml2LVx1MDAzZWVzc2lkLCBleHRyYSwgbGVuZ3RoKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjkzNTpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O0VTU0lEIHNldCB0byBjdXJyZW50IEVTU0lELlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTM2LVx0XHRlcnIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2OTQwOlx0SVBXX0RFQlVHX1dYKFwmIzM0O1NldHRpbmcgRVNTSUQ6ICYjMzk7JSpwRSYjMzk7ICglZClcXG5cJiMzNDssIGxlbmd0aCwgZXNzaWQsIGxlbmd0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY5NTI9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5NjQtXHRpZiAocHJpdi1cdTAwM2Vjb25maWcgXHUwMDI2IENGR19TVEFUSUNfRVNTSUQgfHwgcHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IFNUQVRVU19BU1NPQ0lBVEVEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2OTY1Olx0XHRJUFdfREVCVUdfV1goXCYjMzQ7R2V0dGluZyBlc3NpZDogJiMzOTslKnBFJiMzOTtcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTY2LVx0XHRcdCAgICAgcHJpdi1cdTAwM2Vlc3NpZF9sZW4sIHByaXYtXHUwMDNlZXNzaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5NzAtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk3MTpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O0dldHRpbmcgZXNzaWQ6IEFOWVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTcyLVx0XHR3cnF1LVx1MDAzZWVzc2lkLmxlbmd0aCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9Njk3OT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk5NjpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgTmlja25hbWUgLVx1MDAzZSAlc1xcblwmIzM0OywgcHJpdi1cdTAwM2VuaWNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5OTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzAwMT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzAxNTpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgTmlja25hbWUgLVx1MDAzZSAlc1xcblwmIzM0OywgZXh0cmEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzAxNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MDIwPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfcmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcwNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MDU0Olx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBSYXRlIC1cdTAwM2UgJTA0WFxcblwmIzM0OywgcmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDU1LSAgICAgIGRvbmU6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzA2MD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3JhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDgzLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzA4NDpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O2ZhaWxlZCBxdWVyeWluZyBvcmRpbmFscy5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzA4NS1cdFx0Z290byBkb25lO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcxMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MTA1Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBSYXRlIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlYml0cmF0ZS52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcxMTI9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzE0MTpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgUlRTIFRocmVzaG9sZCAtXHUwMDNlIDB4JTA4WFxcblwmIzM0OywgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzE0Mi0gICAgICBkb25lOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcxNDc9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzE2MzpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgUlRTIFRocmVzaG9sZCAtXHUwMDNlIDB4JTA4WFxcblwmIzM0Oywgd3JxdS1cdTAwM2VydHMudmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzE2NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MTY4PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfdHhwb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzIwMjpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgVFggUG93ZXIgLVx1MDAzZSAlZFxcblwmIzM0OywgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzIwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MjA5PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfdHhwb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzIzMTpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgVFggUG93ZXIgLVx1MDAzZSAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2V0eHBvd2VyLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcyMzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzIzNj1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X2ZyYWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzI2MTpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgRnJhZyBUaHJlc2hvbGQgLVx1MDAzZSAlZFxcblwmIzM0OywgcHJpdi1cdTAwM2VpZWVlLVx1MDAzZWZ0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcyNjY9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9mcmFnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzI3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcyNzk6XHRJUFdfREVCVUdfV1goXCYjMzQ7R0VUIEZyYWcgVGhyZXNob2xkIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlZnJhZy52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjgwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcyODQ9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczMDQtXHRcdGVyciA9IGlwdzIxMDBfc2V0X3Nob3J0X3JldHJ5KHByaXYsIHdycXUtXHUwMDNlcmV0cnkudmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzMwNTpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBTaG9ydCBSZXRyeSBMaW1pdCAtXHUwMDNlICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzMwNi1cdFx0XHQgICAgIHdycXUtXHUwMDNlcmV0cnkudmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczMTEtXHRcdGVyciA9IGlwdzIxMDBfc2V0X2xvbmdfcmV0cnkocHJpdiwgd3JxdS1cdTAwM2VyZXRyeS52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzEyOlx0XHRJUFdfREVCVUdfV1goXCYjMzQ7U0VUIExvbmcgUmV0cnkgTGltaXQgLVx1MDAzZSAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczMTMtXHRcdFx0ICAgICB3cnF1LVx1MDAzZXJldHJ5LnZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzMyMTpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgQm90aCBSZXRyeSBMaW1pdHMgLVx1MDAzZSAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2VyZXRyeS52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzIyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTczMjg9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzU1Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBSZXRyeSAtXHUwMDNlICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZXJldHJ5LnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczNTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzM2MD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzM3MzpcdElQV19ERUJVR19XWChcJiMzNDtJbml0aWF0aW5nIHNjYW4uLi5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03Mzc2LVx0aWYgKGlwdzIxMDBfc2V0X3NjYW5fb3B0aW9ucyhwcml2KSB8fCBpcHcyMTAwX3N0YXJ0X3NjYW4ocHJpdikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjczNzc6XHRcdElQV19ERUJVR19XWChcJiMzNDtTdGFydCBzY2FuIGZhaWxlZC5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03NDI3PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfcG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDQyLVx0XHRlcnIgPSBpcHcyMTAwX3NldF9wb3dlcl9tb2RlKHByaXYsIElQV19QT1dFUl9NT0RFX0NBTSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3NDQzOlx0XHRJUFdfREVCVUdfV1goXCYjMzQ7U0VUIFBvd2VyIE1hbmFnZW1lbnQgTW9kZSAtXHUwMDNlIG9mZlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDQ0LVx0XHRnb3RvIGRvbmU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzQ1Mi1cdGRlZmF1bHQ6XHRcdC8qIE90aGVyd2lzZSB3ZSBkb24mIzM5O3Qgc3VwcG9ydCBpdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ1MzpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBQTSBNb2RlOiAlWCBub3Qgc3VwcG9ydGVkLlxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0NTQtXHRcdFx0ICAgICB3cnF1LVx1MDAzZXBvd2VyLmZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ2NDpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgUG93ZXIgTWFuYWdlbWVudCBNb2RlIC1cdTAwM2UgMHglMDJYXFxuXCYjMzQ7LCBwcml2LVx1MDAzZXBvd2VyX21vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzQ2NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03NDcyPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfcG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ4OTpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgUG93ZXIgTWFuYWdlbWVudCBNb2RlIC1cdTAwM2UgJTAyWFxcblwmIzM0OywgcHJpdi1cdTAwM2Vwb3dlcl9tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0OTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9ODA2NT1zdGF0aWMgc3RydWN0IGl3X3N0YXRpc3RpY3MgKmlwdzIxMDBfd3hfd2lyZWxlc3Nfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTY5LVx0XHRpZiAoYmVhY29uX3F1YWwgPT0gcXVhbGl0eSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjgxNzA6XHRcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1F1YWxpdHkgY2xhbXBlZCBieSBNaXNzZWQgQmVhY29uc1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTcxLVx0XHRlbHNlIGlmICh0eF9xdWFsID09IHF1YWxpdHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTcyOlx0XHRcdElQV19ERUJVR19XWChcJiMzNDtRdWFsaXR5IGNsYW1wZWQgYnkgVHggUmV0cmllc1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTczLVx0XHRlbHNlIGlmIChxdWFsaXR5ICE9IDEwMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjgxNzQ6XHRcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1F1YWxpdHkgY2xhbXBlZCBieSBTaWduYWwgU3RyZW5ndGhcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE3NS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6ODE3NjpcdFx0XHRJUFdfREVCVUdfV1goXCYjMzQ7UXVhbGl0eSBub3QgY2xhbXBlZC5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE3Ny0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTk3LSAgICAgIGZhaWxfZ2V0X29yZGluYWw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTk4Olx0SVBXX0RFQlVHX1dYKFwmIzM0O2ZhaWxlZCBxdWVyeWluZyBvcmRpbmFscy5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz04MjEzPXN0YXRpYyB2b2lkIGlwdzIxMDBfd3hfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODIyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjgyMjU6XHRJUFdfREVCVUdfV1goXCYjMzQ7ZW50ZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODIyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MjQ4LVx0aWYgKCEocHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IFNUQVRVU19BU1NPQ0lBVEVEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6ODI0OTpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O0NvbmZpZ3VyaW5nIEVTU0lEXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgyNTAtXHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VhY3Rpb25fbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oPTM5PXN0cnVjdCBpcHcyMTAwX3J4X3BhY2tldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuaC05OS0jZGVmaW5lIElQV19ERUJVR19JTkZPKGYuLi4pICAgIElQV19ERUJVRyhJUFdfRExfSU5GTywgIyMgZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oOjEwMDojZGVmaW5lIElQV19ERUJVR19XWChmLi4uKSAgICAgSVBXX0RFQlVHKElQV19ETF9XWCwgIyMgZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oLTEwMS0jZGVmaW5lIElQV19ERUJVR19TQ0FOKGYuLi4pICAgSVBXX0RFQlVHKElQV19ETF9TQ0FOLCAjIyBmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTYwMjE9c3RhdGljIHZvaWQgaXB3X3NldF9maXhlZF9yYXRlKHN0cnVjdCBpcHdfcHJpdiAqcHJpdiwgaW50IG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjAzNi1cdFx0XHQvKiBJbnZhbGlkIGZpeGVkIHJhdGUgbWFzayAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjAzNzpcdFx0XHRJUFdfREVCVUdfV1hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTYwMzgtXHRcdFx0ICAgIChcJiMzNDtpbnZhbGlkIGZpeGVkIHJhdGUgbWFzayBpbiBpcHdfc2V0X2ZpeGVkX3JhdGVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTYwNTAtXHRcdFx0XHQvKiBJbnZhbGlkIGZpeGVkIHJhdGUgbWFzayAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjA1MTpcdFx0XHRcdElQV19ERUJVR19XWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjA1Mi1cdFx0XHRcdCAgICAoXCYjMzQ7aW52YWxpZCBmaXhlZCByYXRlIG1hc2sgaW4gaXB3X3NldF9maXhlZF9yYXRlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDYxLVx0XHRcdC8qIEludmFsaWQgZml4ZWQgcmF0ZSBtYXNrICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo2MDYyOlx0XHRcdElQV19ERUJVR19XWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjA2My1cdFx0XHQgICAgKFwmIzM0O2ludmFsaWQgZml4ZWQgcmF0ZSBtYXNrIGluIGlwd19zZXRfZml4ZWRfcmF0ZVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9NjIyMj1zdGF0aWMgaW50IGlwd19yZXF1ZXN0X3NjYW5faGVscGVyKHN0cnVjdCBpcHdfcHJpdiAqcHJpdiwgaW50IHR5cGUsIGludCBkaXJlY3QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjI2NC1cdGlmICh0eXBlID09IElXX1NDQU5fVFlQRV9QQVNTSVZFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo2MjY1Olx0XHRJUFdfREVCVUdfV1goXCYjMzQ7dXNlIHBhc3NpdmUgc2Nhbm5pbmdcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjI2Ni1cdFx0c2Nhbl90eXBlID0gSVBXX1NDQU5fUEFTU0lWRV9GVUxMX0RXRUxMX1NDQU47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9ODYwMD1zdGF0aWMgaW50IGlwd193eF9zZXRfZnJlcShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MTEtXHRpZiAoZndycS1cdTAwM2VtID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2MTI6XHRcdElQV19ERUJVR19XWChcJiMzNDtTRVQgRnJlcS9DaGFubmVsIC1cdTAwM2UgYW55XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MTMtXHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VtdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODYzNi1cdFx0aWYgKGZsYWdzIFx1MDAyNiBMSUJJUFdfQ0hfUEFTU0lWRV9PTkxZKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4NjM3Olx0XHRcdElQV19ERUJVR19XWChcJiMzNDtJbnZhbGlkIEFkLUhvYyBjaGFubmVsIGZvciA4MDIuMTFhXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MzgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODY0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2NDI6XHRJUFdfREVCVUdfV1goXCYjMzQ7U0VUIEZyZXEvQ2hhbm5lbCAtXHUwMDNlICVkXFxuXCYjMzQ7LCBmd3JxLVx1MDAzZW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODY0My1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VtdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9ODY0OT1zdGF0aWMgaW50IGlwd193eF9nZXRfZnJlcShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2ODMtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4Njg0Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBGcmVxL0NoYW5uZWwgLVx1MDAzZSAlZFxcblwmIzM0OywgcHJpdi1cdTAwM2VjaGFubmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2ODUtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04Njg4PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODY5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2OTU6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0IE1PREU6ICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZW1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODY5Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04NzQwPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODc0Ni1cdHdycXUtXHUwMDNlbW9kZSA9IHByaXYtXHUwMDNlaWVlZS1cdTAwM2Vpd19tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODc0NzpcdElQV19ERUJVR19XWChcJiMzNDtHZXQgTU9ERSAtXHUwMDNlICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZW1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODc0OC1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04NzY5PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4ODU5Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBSYW5nZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04ODYwLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9ODg2Mz1zdGF0aWMgaW50IGlwd193eF9zZXRfd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODg3NC1cdFx0Lyogd2UgZGlzYWJsZSBtYW5kYXRvcnkgQlNTSUQgYXNzb2NpYXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4NzU6XHRcdElQV19ERUJVR19XWChcJiMzNDtTZXR0aW5nIEFQIEJTU0lEIHRvIEFOWVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04ODc2LVx0XHRwcml2LVx1MDAzZWNvbmZpZyBcdTAwMjY9IH5DRkdfU1RBVElDX0JTU0lEO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4ODUtXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChwcml2LVx1MDAzZWJzc2lkLCB3cnF1LVx1MDAzZWFwX2FkZHIuc2FfZGF0YSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4ODY6XHRcdElQV19ERUJVR19XWChcJiMzNDtCU1NJRCBzZXQgdG8gY3VycmVudCBCU1NJRC5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODg4Ny1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4ODkxOlx0SVBXX0RFQlVHX1dYKFwmIzM0O1NldHRpbmcgbWFuZGF0b3J5IEJTU0lEIHRvICVwTVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4OTItXHRcdCAgICAgd3JxdS1cdTAwM2VhcF9hZGRyLnNhX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTg5MDU9c3RhdGljIGludCBpcHdfd3hfZ2V0X3dhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTIxOlx0SVBXX0RFQlVHX1dYKFwmIzM0O0dldHRpbmcgV0FQIEJTU0lEOiAlcE1cXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04OTIyLVx0XHQgICAgIHdycXUtXHUwMDNlYXBfYWRkci5zYV9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTI3PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5MzctICAgICAgICB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTM4OiAgICAgICAgICAgICAgICBJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyBFU1NJRCB0byBBTllcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODkzOS0gICAgICAgICAgICAgICAgaXB3X2Rpc2Fzc29jaWF0ZShwcml2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04OTUxLVx0ICAgIFx1MDAyNlx1MDAyNiAocHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IChTVEFUVVNfQVNTT0NJQVRFRCB8IFNUQVRVU19BU1NPQ0lBVElORykpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTUyOlx0XHRJUFdfREVCVUdfV1goXCYjMzQ7RVNTSUQgc2V0IHRvIGN1cnJlbnQgRVNTSUQuXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5NTMtXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04OTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODk1NzpcdElQV19ERUJVR19XWChcJiMzNDtTZXR0aW5nIEVTU0lEOiAmIzM5OyUqcEUmIzM5OyAoJWQpXFxuXCYjMzQ7LCBsZW5ndGgsIGV4dHJhLCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTcxPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5ODEtXHQgICAgcHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IChTVEFUVVNfQVNTT0NJQVRFRCB8IFNUQVRVU19BU1NPQ0lBVElORykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg5ODI6XHRcdElQV19ERUJVR19XWChcJiMzNDtHZXR0aW5nIGVzc2lkOiAmIzM5OyUqcEUmIzM5O1xcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5ODMtXHRcdFx0ICAgICBwcml2LVx1MDAzZWVzc2lkX2xlbiwgcHJpdi1cdTAwM2Vlc3NpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk4Ny1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTg4Olx0XHRJUFdfREVCVUdfV1goXCYjMzQ7R2V0dGluZyBlc3NpZDogQU5ZXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5ODktXHRcdHdycXUtXHUwMDNlZXNzaWQubGVuZ3RoID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTk2PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9uaWNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwMDI6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyBuaWNrIHRvICYjMzk7JXMmIzM5O1xcblwmIzM0OywgZXh0cmEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAwMy1cdGlmICh3cnF1LVx1MDAzZWRhdGEubGVuZ3RoIFx1MDAzZSBJV19FU1NJRF9NQVhfU0laRSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDE1PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9uaWNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAxOS1cdHN0cnVjdCBpcHdfcHJpdiAqcHJpdiA9IGxpYmlwd19wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MDIwOlx0SVBXX0RFQlVHX1dYKFwmIzM0O0dldHRpbmcgbmlja1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDIxLVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDI5PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9zZW5zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwMzY6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyByb2FtaW5nIHRocmVzaG9sZCB0byAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2VzZW5zLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwMzc6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyBkaXNhc3NvY2lhdGUgdGhyZXNob2xkIHRvICVkXFxuXCYjMzQ7LCAzKndycXUtXHUwMDNlc2Vucy52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDM4LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDU5PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9zZW5zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTA2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwNjk6XHRJUFdfREVCVUdfV1goXCYjMzQ7R0VUIHJvYW1pbmcgdGhyZXNob2xkIC1cdTAwM2UgJXMgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDcwLVx0XHQgICAgIHdycXUtXHUwMDNlcG93ZXIuZGlzYWJsZWQgPyBcJiMzNDtPRkZcJiMzNDsgOiBcJiMzNDtPTlwmIzM0Oywgd3JxdS1cdTAwM2Vwb3dlci52YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTA3NT1zdGF0aWMgaW50IGlwd193eF9zZXRfcmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MTU4Olx0SVBXX0RFQlVHX1dYKFwmIzM0O2ludmFsaWQgcmF0ZSBzcGVjaWZpZWQsIHJldHVybmluZyBlcnJvclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTU5LVx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTE2MS0gICAgICBhcHBseTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxNjI6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyByYXRlIG1hc2sgdG8gMHglMDhYIFslc11cXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTYzLVx0XHQgICAgIG1hc2ssIGZpeGVkID8gXCYjMzQ7Zml4ZWRcJiMzNDsgOiBcJiMzNDtzdWItcmF0ZXNcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNzEtXHRpZiAocHJpdi1cdTAwM2VyYXRlc19tYXNrID09IG1hc2spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxNzI6XHRcdElQV19ERUJVR19XWChcJiMzNDtNYXNrIHNldCB0byBjdXJyZW50IG1hc2suXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNzMtXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MTg4PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTE5Ni1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxOTc6XHRJUFdfREVCVUdfV1goXCYjMzQ7R0VUIFJhdGUgLVx1MDAzZSAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2ViaXRyYXRlLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxOTgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MjAxPXN0YXRpYyBpbnQgaXB3X3d4X3NldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MjE5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTIyMDpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgUlRTIFRocmVzaG9sZCAtXHUwMDNlICVkXFxuXCYjMzQ7LCBwcml2LVx1MDAzZXJ0c190aHJlc2hvbGQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTIyMS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkyMjQ9c3RhdGljIGludCBpcHdfd3hfZ2V0X3J0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMzMtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MjM0Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBSVFMgVGhyZXNob2xkIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlcnRzLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMzUtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MjcyPXN0YXRpYyBpbnQgaXB3X3d4X2dldF90eHBvdyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5Mjg0Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBUWCBQb3dlciAtXHUwMDNlICVzICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTI4NS1cdFx0ICAgICB3cnF1LVx1MDAzZXBvd2VyLmRpc2FibGVkID8gXCYjMzQ7T0ZGXCYjMzQ7IDogXCYjMzQ7T05cJiMzNDssIHdycXUtXHUwMDNlcG93ZXIudmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkyOTA9c3RhdGljIGludCBpcHdfd3hfc2V0X2ZyYWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MzA5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTMxMDpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgRnJhZyBUaHJlc2hvbGQgLVx1MDAzZSAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2VmcmFnLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzMTEtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MzE0PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9mcmFnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTMyMy1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkzMjQ6XHRJUFdfREVCVUdfV1goXCYjMzQ7R0VUIEZyYWcgVGhyZXNob2xkIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlZnJhZy52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MzI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkzMjk9c3RhdGljIGludCBpcHdfd3hfc2V0X3JldHJ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTM1Ni1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkzNTc6XHRJUFdfREVCVUdfV1goXCYjMzQ7U0VUIHJldHJ5IGxpbWl0IC1cdTAwM2Ugc2hvcnQ6JWQgbG9uZzolZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzNTgtXHRcdCAgICAgcHJpdi1cdTAwM2VzaG9ydF9yZXRyeV9saW1pdCwgcHJpdi1cdTAwM2Vsb25nX3JldHJ5X2xpbWl0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MzYyPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5Mzg4Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCByZXRyeSAtXHUwMDNlICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZXJldHJ5LnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTM5Mz1zdGF0aWMgaW50IGlwd193eF9zZXRfc2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDg0MAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhZ2UgVGFibGUgRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBjb2RlLCBhbmQgYERFQlVHX1dYYCBzZWVtcyB0byBiZSBhIGdlbmVyYWwgb3B0aW9uLiBSaWdodCwgc28gYENPTkZJR19QVERVTVBfREVCVUdGU2AgYW5kIGBDT05GSUdfREVCVUdfV1hgIGFyZSB0aGUgcmVhbCBwbGF5ZXJzIGhlcmUsIHNpbmNlIHRoZXkgbGV2ZXJhZ2UgYHB0ZHVtcF93YWxrX3BnZGAuIEhtbSwgbm93IHRoZSBxdWVzdGlvbiBpczogaXMgYENPTkZJR19ERUJVR19XWGAgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBkbyBJIG5lZWQgdG8gZXhwbGljaXRseSBpbmNsdWRlIGl0PyBJdCYjMzk7cyBwcm9iYWJseSBiZXR0ZXIgdG8gZ28gYWhlYWQgYW5kIGluY29ycG9yYXRlIGJvdGggYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBpbnRvIGBFbmFibGVDb25maWdzYCB0byBrZWVwIHRoaW5ncyBjbGVhbi4KCldhaXQgYSBtaW51dGUsIHRoaXMgcGF0Y2ggYWxzbyBjaGFuZ2VzIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIHNvIGl0JiMzOTtzIGNhbGxpbmcgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIHdoZW4gaXQmIzM5O3Mgb3BlcmF0aW5nIG9uIGAmYW1wO2luaXRfbW1gLiBPa2F5LCBhbmQgdGhhdCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZWAgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiBgbW0vcGFnZXdhbGsuY2AuIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCBub3cgdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbW0vcHJvY2Vzc19hZGRycy5yc3Q9MzY4PWVzdGFibGlzaGluZyBhbmQgdGVhcmluZyBkb3duIHBhZ2UgaXRzIHBhZ2UgdGFibGVzLlxuRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdC0zNjktXG5Eb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0OjM3MDpIb3dldmVyLCBmb3IgY29udmVuaWVuY2Ugd2UgcHJvdmlkZSB0aGUgOmM6ZnVuYzpgIXdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgXG5Eb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0LTM3MS1mdW5jdGlvbiB3aGljaCBpcyBzeW5jaHJvbmlzZWQgdmlhIHRoZSBtbWFwIGxvY2sgb24gdGhlIDpjOm1hY3JvOmAhaW5pdF9tbWBcbi0tXG5hcmNoL2FybTY0L21tL21tdS5jPTkyNT1zdGF0aWMgaW50IHJhbmdlX3NwbGl0X3RvX3B0ZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGdmcF90IGdmcClcbi0tXG5hcmNoL2FybTY0L21tL21tdS5jLTkyOS1cdGxhenlfbW11X21vZGVfZW5hYmxlKCk7XG5hcmNoL2FybTY0L21tL21tdS5jOjkzMDpcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3Moc3RhcnQsIGVuZCxcbmFyY2gvYXJtNjQvbW0vbW11LmMtOTMxLVx0XHRcdFx0XHRcdTAwMjZzcGxpdF90b19wdGVzX29wcywgTlVMTCwgXHUwMDI2Z2ZwKTtcbi0tXG5hcmNoL2FybTY0L21tL3BhZ2VhdHRyLmM9MTA1PXN0YXRpYyBpbnQgdXBkYXRlX3JhbmdlX3Byb3QodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplLFxuLS1cbmFyY2gvYXJtNjQvbW0vcGFnZWF0dHIuYy0xMjQtXHQgKi9cbmFyY2gvYXJtNjQvbW0vcGFnZWF0dHIuYzoxMjU6XHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHN0YXJ0LCBzdGFydCAmIzQzOyBzaXplLFxuYXJjaC9hcm02NC9tbS9wYWdlYXR0ci5jLTEyNi1cdFx0XHRcdFx0XHQgICAgXHUwMDI2cGFnZWF0dHJfb3BzLCBOVUxMLCBcdTAwMjZkYXRhKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9wYWdlYXR0ci5jPTEwNz1zdGF0aWMgaW50IF9fc2V0X21lbW9yeSh1bnNpZ25lZCBsb25nIGFkZHIsIGludCBudW1wYWdlcywgcGdwcm90X3Qgc2V0X21hc2ssIHBncHJvdF90IGNsZWFyX21hc2spXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vcGFnZWF0dHIuYy0xMjAtXHRtbWFwX3dyaXRlX2xvY2soXHUwMDI2aW5pdF9tbSk7XG5hcmNoL2xvb25nYXJjaC9tbS9wYWdlYXR0ci5jOjEyMTpcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXHUwMDI2cGFnZWF0dHJfb3BzLCBOVUxMLCBcdTAwMjZtYXNrcyk7XG5hcmNoL2xvb25nYXJjaC9tbS9wYWdlYXR0ci5jLTEyMi1cdG1tYXBfd3JpdGVfdW5sb2NrKFx1MDAyNmluaXRfbW0pO1xuLS1cbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jPTY1PXZvaWQgKmFyY2hfZG1hX3NldF91bmNhY2hlZCh2b2lkICpjcHVfYWRkciwgc2l6ZV90IHNpemUpXG4tLVxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmMtNzQtXHRtbWFwX3dyaXRlX2xvY2soXHUwMDI2aW5pdF9tbSk7XG5hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYzo3NTpcdGVycm9yID0gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh2YSwgdmEgJiM0Mzsgc2l6ZSxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jLTc2LVx0XHRcdFx1MDAyNnNldF9ub2NhY2hlX3dhbGtfb3BzLCBOVUxMLCBOVUxMKTtcbi0tXG5hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYz04ND12b2lkIGFyY2hfZG1hX2NsZWFyX3VuY2FjaGVkKHZvaWQgKmNwdV9hZGRyLCBzaXplX3Qgc2l6ZSlcbi0tXG5hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYy04OS1cdC8qIHdhbGtfcGFnZV9yYW5nZSBzaG91bGRuJiMzOTt0IGJlIGFibGUgdG8gZmFpbCBoZXJlICovXG5hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYzo5MDpcdFdBUk5fT04od2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh2YSwgdmEgJiM0Mzsgc2l6ZSxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jLTkxLVx0XHRcdFx1MDAyNmNsZWFyX25vY2FjaGVfd2Fsa19vcHMsIE5VTEwsIE5VTEwpKTtcbi0tXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmM9MjYyPXN0YXRpYyBpbnQgX19zZXRfbWVtb3J5KHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IG51bXBhZ2VzLCBwZ3Byb3RfdCBzZXRfbWFzayxcbi0tXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzAxLVxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMwMjpcdFx0XHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKGxtX3N0YXJ0LCBsbV9lbmQsXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzAzLVx0XHRcdFx0XHRcdCAgICBcdTAwMjZwYWdlYXR0cl9vcHMsIE5VTEwsIFx1MDAyNm1hc2tzKTtcbi0tXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzE5LVxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMyMDpcdFx0cmV0ID0gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShsbV9zdGFydCwgbG1fZW5kLFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMyMS1cdFx0XHRcdFx0ICAgIFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCwgXHUwMDI2bWFza3MpO1xuLS1cbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMjUtXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmM6MzI2Olx0cmV0ID0gIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXHUwMDI2cGFnZWF0dHJfb3BzLCBOVUxMLFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMyNy1cdFx0XHRcdCAgICAgXHUwMDI2bWFza3MpO1xuLS1cbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMzctI2Vsc2VcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYzozMzg6XHRyZXQgPSAgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBcdTAwMjZwYWdlYXR0cl9vcHMsIE5VTEwsXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzM5LVx0XHRcdFx0ICAgICBcdTAwMjZtYXNrcyk7XG4tLVxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oPTEzMT1pbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzMtXHRcdHZvaWQgKnByaXZhdGUpO1xuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oOjEzNDppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oLTEzNS1cdFx0dW5zaWduZWQgbG9uZyBlbmQsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oLTEzNi1cdFx0cGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSk7XG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmg6MTM3OmludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmgtMTM4LVx0XHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXG4tLVxubW0vaHVnZXRsYl92bWVtbWFwLmM9MTU2PXN0YXRpYyBpbnQgdm1lbW1hcF9yZW1hcF9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuYy0xNjMtXHRtbWFwX3JlYWRfbG9jayhcdTAwMjZpbml0X21tKTtcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jOjE2NDpcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXHUwMDI2dm1lbW1hcF9yZW1hcF9vcHMsXG5tbS9odWdldGxiX3ZtZW1tYXAuYy0xNjUtXHRcdFx0XHQgICAgTlVMTCwgd2Fsayk7XG4tLVxubW0vcGFnZXdhbGsuYz01OTc9aW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5tbS9wYWdld2Fsay5jLTYwNy0vKipcbm1tL3BhZ2V3YWxrLmM6NjA4OiAqIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UgLSB3YWxrIGEgcmFuZ2Ugb2Yga2VybmVsIHBhZ2V0YWJsZXMuXG5tbS9wYWdld2Fsay5jLTYwOS0gKiBAc3RhcnQ6XHRzdGFydCBhZGRyZXNzIG9mIHRoZSB2aXJ0dWFsIGFkZHJlc3MgcmFuZ2Vcbi0tXG5tbS9wYWdld2Fsay5jLTYyNC0gKi9cbm1tL3BhZ2V3YWxrLmM6NjI1OmludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxubW0vcGFnZXdhbGsuYy02MjYtXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuLS1cbm1tL3BhZ2V3YWxrLmMtNjM3LVxubW0vcGFnZXdhbGsuYzo2Mzg6XHRyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyhzdGFydCwgZW5kLCBvcHMsIHBnZCxcbm1tL3BhZ2V3YWxrLmMtNjM5LVx0XHRcdFx0XHRcdCAgICAgcHJpdmF0ZSk7XG4tLVxubW0vcGFnZXdhbGsuYy02NDctICovXG5tbS9wYWdld2Fsay5jOjY0ODppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbm1tL3BhZ2V3YWxrLmMtNjQ5LVx0XHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcbi0tXG5tbS9wYWdld2Fsay5jPTY4Mj1pbnQgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbm1tL3BhZ2V3YWxrLmMtNjk3LVx0XHRcdFx0IFwmIzM0O1JDVSByZWFkIGxvY2sgbXVzdCBiZSBoZWxkIGFjcm9zcyBrZXJuZWwgcGFnZSB0YWJsZSB3YWxrXCYjMzQ7KTtcbm1tL3BhZ2V3YWxrLmM6Njk4Olx0XHRyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBvcHMsIHBnZCxcbm1tL3BhZ2V3YWxrLmMtNjk5LVx0XHRcdFx0XHRcdFx0cHJpdmF0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjkxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uY3VycmVuY3kgSW1wbGljYXRpb25zIG9mIFBhZ2UgVGFibGUgRGVidWdnaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHRoZSBjb3JlIGlzc3VlIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIHBhZ2UgdGFibGUgd2Fsa2luZyBjb2RlIGludGVyYWN0cyB3aXRoIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgbG9ja3MsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgZGVidWdnaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZWAgaXMgdXNlZCB3aXRoaW4gYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW5pdGlhbCBtZW1vcnkgbWFwIChgbW0gPT0gJmFtcDtpbml0X21tYCkuIFRoaXMgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AgZnVuY3Rpb24sIGluIHR1cm4sIGlzIGNhbGxlZCBieSBgcHRkdW1wX3dhbGtfcGdkYCwgd2hpY2ggc291bmRzIGxpa2Ugb3VyIGNyaXRpY2FsIGRlYnVnZ2luZyBlbnRyeSBwb2ludC4gSG93ZXZlciwgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGF0IGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCBoYXMgb3RoZXIgY2FsbGVycyB0b28sIGxpa2UgYHZtZW1tYXBfcmVtYXBfcmFuZ2VgIGFuZCBgX19zZXRfbWVtb3J5YC4KClRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYWRkaW5nIGFuIGBSQ1VfTE9DS0RFUF9XQVJOYCBjaGVjay4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGUgZGV2ZWxvcGVycyBhcmUgY29uY2VybmVkIGFib3V0IHBvdGVudGlhbCBSQ1UgbG9jayBpc3N1ZXMgaW4gdGhpcyBmdW5jdGlvbiwgc28gaXQgaGFzIHRvIGJlIGEgY3JpdGljYWwgcG9pbnQuCgpUaGVyZWZvcmUsIHRoZSBrZXkgc3ltYm9scyB0aGF0IHdhcnJhbnQgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFyZTogYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAsIGBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmNgLCBgcHRkdW1wX3dhbGtfcGdkYCwgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciwgZXNwZWNpYWxseSBjb25jZXJuaW5nIFJDVSB1c2FnZS4KCk5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGUgYXN5bmNocm9ub3VzIHBhdGggaXMgYWx3YXlzIHByZXNlbnQuIENoZWNraW5nIGBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmNgLCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGlzIGNvbnRyb2xsZWQgYnkgYCNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAuIE9rYXksIGJ1dCBpZiB0aGF0JiMzOTtzIG5vdCBlbmFibGVkLCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBjYWxscyBgY2FsbF9yY3UoJmFtcDtwdC0mZ3Q7cHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KWAuIFNvLCBhdCBsZWFzdCwgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCBpcyBhbHdheXMgY29tcGlsZWQgYW5kIHBhcnQgb2YgdGhpcyBzdWJzeXN0ZW0sIGFuZCBzbyBpcyBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGhvdyBgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGVuYWJsZWQuIEFoLCBpdCYjMzk7cyBzZWxlY3RlZCBieSB4ODYgc3lzdGVtcyBpZiBgSU9NTVVfU1ZBYCBpcyBkZWZpbmVkLiBUaGlzIGdpdmVzIG1lIGFuIGlkZWEgLSBJIGNhbiBwcm9iYWJseSByZXByb2R1Y2UgdGhpcyBzY2VuYXJpbyBieSBpbmNsdWRpbmcgYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgc2ltcGxlc3Qgd2F5IHRvIGdldCB0aGUgZGVidWcgZmFjaWxpdGllcyBlbmFibGVkLCBhcyB0aGVzZSBvcHRpb25zIGFyZSBsaWtlbHkgdG8gYnJpbmcgaW4gdGhlIG5lY2Vzc2FyeSBjb2RlIHBhdGhzLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBhcmUgYXZhaWxhYmxlLCB3aGljaCBsaWtlbHkgbWVhbnMgY2hlY2tpbmcgdGhlIHJlbGV2YW50IGRlYnVnIEtjb25maWcgZmlsZXMgbGlrZSBgbW0vS2NvbmZpZy5kZWJ1Z2AgYW5kIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQVERVTVBfREVCVUdGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnPTIxOT1jb25maWcgUFREVU1QXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy0yMjEtXG5tbS9LY29uZmlnLmRlYnVnOjIyMjpjb25maWcgUFREVU1QX0RFQlVHRlNcbm1tL0tjb25maWcuZGVidWctMjIzLVx0Ym9vbCBcJiMzNDtFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDU5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlciBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IEJyYWluJiMzOTtzIFNjcmFtYmxlIG9uIGEgRGVidWcgRmxhZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGF0IGxpdHRsZSBmbGFnLCBgREVCVUdfV1hgLCBqdXN0IHBvcHBlZCBpbnRvIG15IGhlYWQuIEl0JiMzOTtzIGEgY2xhc3NpYy4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIGxvY2FsIHNldHRpbmcgb3IgYSBnbG9iYWwgb25lPyBXaGF0IHNwZWNpZmljIG1vZHVsZSBvciBzZWN0aW9uIG9mIHRoZSBjb2RlIGlzIGl0IHRpZWQgdG8/IElzIGl0IGEgY29tcGlsZS10aW1lIGZsYWcsIG9yIGEgcnVudGltZSBjb25maWd1cmF0aW9uPyBUaGUgc3BlY2lmaWMgbmFtaW5nIGNvbnZlbnRpb24gaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB0aGlzIGlzIGxpa2VseSBhIGZsYWcgdG8gc2hvdyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaW4gYSBXaW5kb3dpbmcgZW52aXJvbm1lbnQuIEkgaW5zdGFudGx5IHRoaW5rIG9mIG15IHByaW9yIHdvcmsgaW4gc2ltaWxhciBwcm9qZWN0cy4gV2hhdCYjMzk7cyB0aGUgV1ggbGlicmFyeSBpdCBpcyBwb2ludGluZyB0bz8gSXMgdGhpcyByZWZlcnJpbmcgdG8gYSBzcGVjaWZpYyBHVUkgdG9vbGtpdCBsaWtlIHd4V2lkZ2V0cz8gV2hhdCBraW5kIG9mIGRlYnVnIG91dHB1dCBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBUcmFjaW5nLCB2ZXJib3NlIGxvZ2dpbmcsIHBlcmhhcHMgZXZlbiBhc3NlcnRpb24gaGFuZGxpbmc/CgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIHNjb3BlLiBXaGVyZSBpcyBpdCBkZWZpbmVkPyBIb3cgaXMgaXQgdXNlZD8gSSBzdGFydCBtZW50YWxseSB0cmFjaW5nIGhvdyBpdCBtaWdodCBpbmZsdWVuY2UgdGhlIGV4ZWN1dGlvbiBmbG93LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIGRlYnVnZ2luZyB0aGlzIGZsYWcgZW5hYmxlcywgYW5kIHdoYXQgaXQmIzM5O3MgKnN1cHBvc2VkKiB0byBkby4gSXQgY2FuIGRyYXN0aWNhbGx5IGltcGFjdCBwZXJmb3JtYW5jZS4gQSBxdWljayBtZW50YWwgc2VhcmNoIHRocm91Z2ggdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGBpZmRlZmAgc3RhdGVtZW50cyBvciBjb25kaXRpb25hbCBjaGVja3MgaXMgaW4gb3JkZXIuCgpJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zIGluIG15IG1pbmQ6IEFyZSB0aGVyZSBhbnkgcmVsYXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9yIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdGhhdCBtaWdodCBhbHNvIGNvbnRyb2wgdGhlIGRlYnVnIGJlaGF2aW9yPyBIb3cgY2FuIEkgdmVyaWZ5IHRoYXQgdGhpcyBmbGFnIGlzICphY3R1YWxseSogd29ya2luZyBhcyBpbnRlbmRlZD8gV2lsbCB0dXJuaW5nIGl0IG9uLCBvciBvZmYsIGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnM/IEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIG5lZWQgZm9yIGNhcmVmdWwgdGVzdGluZywgd2hldGhlciBpdCYjMzk7cyB1bml0IHRlc3RzLCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgZXZlbiBtYW51YWwgVUkgaW50ZXJhY3Rpb24gZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJZiBJJiMzOTttIHVzaW5nIGFuIElERSBJJiMzOTttIHByb2JhYmx5IG1lbnRhbGx5IGNoZWNraW5nIG15IGRlYnVnZ2VyIHNldHRpbmdzIHRvIGVuc3VyZSB0aGF0IHRoZSBJREUga25vd3MgdGhhdCB0aGUgZW52aXJvbm1lbnQgZm9yIHRoaXMgc2V0dGluZyBleGlzdHMuCgpUaGlzIGlzIHRoZSBraW5kIG9mIGRldGFpbCB0aGF0IHNlcGFyYXRlcyBmaW5kaW5nIHRoZSByb290IGNhdXNlIG9mIGFuIGlzc3VlLCBhbmQgc2ltcGx5IG1ha2luZyByYW5kb20gY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmbGFnICpiZWZvcmUqIEkgZ28gYW55IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBERUJVR19XWCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnPTE4Mz1jb25maWcgQVJDSF9IQVNfREVCVUdfV1hcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTE4NS1cbm1tL0tjb25maWcuZGVidWc6MTg2OmNvbmZpZyBERUJVR19XWFxubW0vS2NvbmZpZy5kZWJ1Zy0xODctXHRib29sIFwmIzM0O1dhcm4gb24gVyYjNDM7WCBtYXBwaW5ncyBhdCBib290XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MDE1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIEkgbmVlZCB0byBnZXQgdGhpcyByaWdodC4KCioqRXhhbWluaW5nIHRoZSBSZWxldmFudCBDb25maWd1cmF0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIGBQVERVTVBfREVCVUdGU2AgYW5kIGBERUJVR19XWGAgYXMgdGhlIGtleSBjb25maWdzIHRvIGV4YW1pbmUgaGVyZS4gSSYjMzk7bSBwcmV0dHkgY2VydGFpbiBhYm91dCB0aGF0LiBOb3csIEkgdmFndWVseSByZWNhbGwgc2VlaW5nIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBpbiB0aGUgbWl4LCBidXQgSSBrbm93IGl0JiMzOTtzIG5vdCBhIHN0YW5kYWxvbmUsIGl0JiMzOTtzIGFjdHVhbGx5IGRlcGVuZGVudCBvbiBgSU9NTVVfU1ZBYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZSAtIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIGBJT01NVV9TVkFgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBpbiByZWxhdGlvbiB0byB0aGVzZSBvdGhlciBzZXR0aW5ncy4gSXQmIzM5O3MgdGhlIGx5bmNocGluLCBpdCB3b3VsZCBhcHBlYXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJT01NVV9TVkEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9LY29uZmlnPTE1Mz1jb25maWcgSU9NTVVfRE1BXG4tLVxuZHJpdmVycy9pb21tdS9LY29uZmlnLTE2MS0jIFNoYXJlZCBWaXJ0dWFsIEFkZHJlc3NpbmdcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZzoxNjI6Y29uZmlnIElPTU1VX1NWQVxuZHJpdmVycy9pb21tdS9LY29uZmlnLTE2My1cdHNlbGVjdCBJT01NVV9NTV9EQVRBXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzUxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgd2UgY2FuIGRlZmluaXRlbHkgZW5hYmxlIGZ1enppbmcuIFRoZSBjaGFuZ2UgdG91Y2hlcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgaG93IHRoZSBrZXJuZWwgZnJlZXMgcGFnZSB0YWJsZXMuIERlZmVycmluZyB0aGUgZnJlZWluZyBwcm9jZXNzIHVzaW5nIFJDVSB0byBwcmV2ZW50IHRob3NlIG5hc3R5IHVzZS1hZnRlci1mcmVlIGVycm9ycyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcyAtIGxpa2Ugd2hlbiBgcHRkdW1wYCBpcyBydW5uaW5nIC0gaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBpcyBzb21ldGhpbmcgdGhhdCBjb3VsZCB2ZXJ5IHdlbGwgZXhwb3NlIHNvbWUgaW50ZXJlc3RpbmcgaXNzdWVzLgoKTXkgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBhbHRlcmluZyB0aGUgZnVuZGFtZW50YWwgbGlmZWN5Y2xlIG9mIGtlcm5lbCBwYWdlIHRhYmxlcy4gQW5kIHRoYXQmIzM5O3MgdXN1YWxseSBmZXJ0aWxlIGdyb3VuZCBmb3IgZmluZGluZyBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uLgoKSSYjMzk7bSBrZXlpbmcgaW4gb24gYSBmZXcgc3ltYm9scyBoZXJlLiBTcGVjaWZpY2FsbHksIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY2AsIHRob3NlIGFyZSB0aGUgb2J2aW91cyBvbmVzLiBUaGVuLCBgcHRkdW1wX3dhbGtfcGdkYCBhbmQgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2Ag4oCTIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgaXNzdWUgdGhlIHBhdGNoIGludGVuZHMgdG8gc29sdmUuCgpUaGUgc3VnZ2VzdGVkIGBFbmFibGVDb25maWdzYCBsb29rIHNvbGlkIOKAkyBgUFREVU1QX0RFQlVHRlNgLCBgREVCVUdfV1hgLCBhbmQgYElPTU1VX1NWQWAgd2lsbCBhbGwgaGVscCB3aXRoIHRlc3RpbmcuIEkgbGlrZSBgSU9NTVVfU1ZBYCBiZWNhdXNlIGl0IGd1YXJhbnRlZXMgdGhhdCBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaXMgZW5hYmxlZC4KCldhaXQgYSBzZWMuLi5JIG5lZWQgdG8gY2hlY2sgYElPTU1VX1NWQWAgYmVjYXVzZSBpdCBpcyBub3QgYXZhaWxhYmxlIG9uIGFsbCBhcmNoaXRlY3R1cmVzLCBidXQgeDg2IGF1dG9tYXRpY2FsbHkgc2VsZWN0cyBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaWYgYElPTU1VX1NWQWAgaXMgZW5hYmxlZC4gTGV0IG1lIHJlLWNoZWNrIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCB0byBjb25maXJtIGl0IGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMDIwPWNvbmZpZyBIQVZFX0dJR0FOVElDX0ZPTElPU1xuLS1cbm1tL0tjb25maWctMTAyMy1cbm1tL0tjb25maWc6MTAyNDpjb25maWcgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxubW0vS2NvbmZpZy0xMDI1LVx0ZGVmX2Jvb2wgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjEwMQoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiAzNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBhbmQgQ29kZSBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkZWZfYm9vbCBuYCBvcHRpb24sIHNwZWNpZmljYWxseSB0aGUgb25lIHRhcmdldGVkIGZvciB4ODYuIEkgc2VlIHRoYXQgSSBjYW4mIzM5O3QgZGlyZWN0bHkgZW5hYmxlIGl0IHdpdGggYEVuYWJsZUNvbmZpZ3NgLCBzaW5jZSBpdCBsYWNrcyBhbiBhc3NvY2lhdGVkIHByb21wdC4gVGhlIGtleSB0byBhY3RpdmF0aW5nIHRoaXMgdGhpbmcgb24geDg2IGFwcGVhcnMgdG8gYmUgZW5hYmxpbmcgYElPTU1VX1NWQWAg4oCTIGdvb2QuIFRoYXQmIzM5O3MgdGhlIHJvdXRlIEkgbmVlZCB0byB0YWtlLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgc3ltYm9scyBhY2NvdW50ZWQgZm9yLiBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZSBjaGVjayBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYC4gUmlnaHQsIEkgcmVtZW1iZXIgdGhhdCYjMzk7cyBkZWZpbmVkIGluIGBtbS9wYWdld2Fsay5jYC4gQW5kIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIGluIGBtbS9wdGR1bXAuY2AuIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCBhcmUgYm90aCBpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLiBXaGlsZSBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCBpcyBhbHNvIHRoZXJlLgoKQXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgaGVyZT8gSG1tLCBJIHNlZSB0aGF0IGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCBhbmQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3NgIGhhdmUgYmVlbiBtb2RpZmllZCBpbiBjb21tZW50cywgYnV0IG5vdCBpbiBhbnkgY29kZS4KCkFscmlnaHQsIHRoZSBjb2RlIGNoYW5nZXMgdGhlbXNlbHZlczogSSBzZWUgdGhlIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGRlY2xhcmF0aW9uIGluIGBpbmNsdWRlL2xpbnV4L21tLmhgLiBJbiBgbW0vcGFnZXdhbGsuY2AsIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIG5vdyBpbmNsdWRlcyBhbiBgUkNVX0xPQ0tERVBfV0FSTmAuIEluIGBtbS9wZ3RhYmxlLWdlbmVyaWMuY2AsIHRoZSBjaGFuZ2VzIGFyZSBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLCBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgYW5kIHRoZSBhZm9yZW1lbnRpb25lZCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYC4gTGFzdGx5LCBgbW0vcHRkdW1wLmNgIG5vdyBoYXMgYHB0ZHVtcF93YWxrX3BnZGAgYWRkaW5nIGByY3VfcmVhZF9sb2NrKClgLgoKU28sIGl0JiMzOTtzIHByZXR0eSBjbGVhcjogdGhlIGNvcmUgZm9jdXMgaXMgcHJlY2lzZWx5IHRoZSBzeW1ib2xzIEkgaWRlbnRpZmllZCBpbml0aWFsbHkuIExvb2tzIGdvb2QgdG8gbWUuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BURFVNUF9ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0RFQlVHX1dYJiMzNDssCiAgICAmIzM0O0lPTU1VX1NWQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2V0YWJsZV9mcmVlX2tlcm5lbCYjMzQ7LAogICAgJiMzNDtrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSYjMzQ7LAogICAgJiMzNDtrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMmIzM0OywKICAgICYjMzQ7cHRkdW1wX3dhbGtfcGdkJiMzNDssCiAgICAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVERVTVBfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtERUJVR19XWCYjMzQ7LAogICAgJiMzNDtJT01NVV9TVkEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWdldGFibGVfZnJlZV9rZXJuZWwmIzM0OywKICAgICYjMzQ7a2VybmVsX3BndGFibGVfZnJlZV9yY3UmIzM0OywKICAgICYjMzQ7a2VybmVsX3BndGFibGVfd29ya19mdW5jJiMzNDssCiAgICAmIzM0O3B0ZHVtcF93YWxrX3BnZCYjMzQ7LAogICAgJiMzNDt3YWxrX3BhZ2VfcmFuZ2VfZGVidWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gZGVmZXIgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMgdXNpbmcgUkNVLiBUaGlzIHByZXZlbnRzIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGxvY2tsZXNzIHBhZ2UgdGFibGUgd2Fsa3MsIHN1Y2ggYXMgdGhvc2UgcGVyZm9ybWVkIGJ5IHB0ZHVtcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbGlmZWN5Y2xlIG9mIGtlcm5lbCBwYWdlIHRhYmxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjM5OjEyLjMyOTg2NDU5M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjM1NjYyNTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVERVTVBfREVCVUdGU1wiLFxuICAgIFwiREVCVUdfV1hcIixcbiAgICBcIklPTU1VX1NWQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiLFxuICAgIFwia2VybmVsX3BndGFibGVfZnJlZV9yY3VcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY1wiLFxuICAgIFwicHRkdW1wX3dhbGtfcGdkXCIsXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTozOToxMi4zMjk4Njk4NDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDU3MzM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI1NTMyOWZlMWViNGZlZTExMzE3OTYzMTgwOWEzZmYzMjE4NjIzMGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDU6Mzk6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc5NDA4YTE3YTFiMGRhIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbW0uaFxcbkBAIC0zNjk1LDE0ICszNjk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXFxuIFxcdF9fZnJlZV9wYWdlcyhwYWdlLCBjb21wb3VuZF9vcmRlcihwYWdlKSk7XFxuIH1cXG4gXFxuLSNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcbiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7XFxuLSNlbHNlXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXFxuLXtcXG4tXFx0X19wYWdldGFibGVfZnJlZShwdCk7XFxuLX1cXG4tI2VuZGlmXFxuIC8qKlxcbiAgKiBwYWdldGFibGVfZnJlZSAtIEZyZWUgcGFnZXRhYmxlc1xcbiAgKiBAcHQ6XFx0VGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvclxcbmRpZmYgLS1naXQgYS9tbS9wYWdld2Fsay5jIGIvbW0vcGFnZXdhbGsuY1xcbmluZGV4IDNhZTI1ODZmZjQ1YjQ0Li5jMGJlODc1ODA5ODlkYSAxMDA2NDRcXG4tLS0gYS9tbS9wYWdld2Fsay5jXFxuKysrIGIvbW0vcGFnZXdhbGsuY1xcbkBAIC02MjAsNyArNjIwLDcgQEAgaW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4gICogTm90ZTogQmUgY2FyZWZ1bCB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZXMgdGFibGVzLCB0aGUgY2FsbGVyIG1heSBiZSBuZWVkIHRvXFxuICAqIHRha2Ugb3RoZXIgZWZmZWN0aXZlIGFwcHJvYWNoZXMgKG1tYXAgbG9jayBtYXkgYmUgaW5zdWZmaWNpZW50KSB0byBwcmV2ZW50XFxuICAqIHRoZSBpbnRlcm1lZGlhdGUga2VybmVsIHBhZ2UgdGFibGVzIGJlbG9uZ2luZyB0byB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgcmFuZ2VcXG4tICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSkuXFxuKyAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUsIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbikuXFxuICAqL1xcbiBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsIHBnZF90ICpwZ2QsIHZvaWQgKnByaXZhdGUpXFxuQEAgLTY0Myw3ICs2NDMsNyBAQCBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4gICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gd2FsayB0aGUga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkuIEl0IHNob3VsZCBiZVxcbiAgKiBndWFyYW50ZWVkIHRoYXQgdGhlIGNhbGxlciBoYXMgZXhjbHVzaXZlIGFjY2VzcyBvdmVyIHRoZSByYW5nZSB0aGV5IGFyZVxcbiAgKiBvcGVyYXRpbmcgb24gLSB0aGF0IHRoZXJlIHNob3VsZCBiZSBubyBjb25jdXJyZW50IGFjY2VzcywgZm9yIGV4YW1wbGUsXFxuLSAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMuXFxuKyAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMsIG9yIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbi5cXG4gICovXFxuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcXG5AQCAtNjkyLDkgKzY5MiwxMyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbiBcXHR9O1xcbiBcXG4gXFx0LyogRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0cmF2ZXJzYWwgb2Yga2VybmVsIG1hcHBpbmdzLiAqL1xcbi1cXHRpZiAobW0gPT0gXFx1MDAyNmluaXRfbW0pXFxuLVxcdFxcdHJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIG9wcyxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHBnZCwgcHJpdmF0ZSk7XFxuK1xcdGlmIChtbSA9PSBcXHUwMDI2aW5pdF9tbSkge1xcbitcXHRcXHRSQ1VfTE9DS0RFUF9XQVJOKCFyY3VfcmVhZF9sb2NrX2hlbGQoKSxcXG4rXFx0XFx0XFx0XFx0IFxcXCJSQ1UgcmVhZCBsb2NrIG11c3QgYmUgaGVsZCBhY3Jvc3Mga2VybmVsIHBhZ2UgdGFibGUgd2Fsa1xcXCIpO1xcbitcXHRcXHRyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBvcHMsIHBnZCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0cHJpdmF0ZSk7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChzdGFydCBcXHUwMDNlPSBlbmQgfHwgIXdhbGsubW0pXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpXFxuZGlmZiAtLWdpdCBhL21tL3BndGFibGUtZ2VuZXJpYy5jIGIvbW0vcGd0YWJsZS1nZW5lcmljLmNcXG5pbmRleCBiOTFiMWE5ODAyOWM3Zi4uN2EzMmU0ODIxOTU3Y2MgMTAwNjQ0XFxuLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmNcXG4rKysgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xcbkBAIC00MTAsNiArNDEwLDEzIEBAIHB0ZV90ICpwdGVfb2Zmc2V0X21hcF9sb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLFxcbiBcXHRnb3RvIGFnYWluO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuK3tcXG4rXFx0c3RydWN0IHB0ZGVzYyAqcHQgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHB0ZGVzYywgcHRfcmN1X2hlYWQpO1xcbitcXG4rXFx0X19wYWdldGFibGVfZnJlZShwdCk7XFxuK31cXG4rXFxuICNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcbiBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gXFxuQEAgLTQzNCw4ICs0NDEsMTUgQEAgc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsubG9jayk7XFxuIFxcbiBcXHRpb21tdV9zdmFfaW52YWxpZGF0ZV9rdmFfcmFuZ2UoUEFHRV9PRkZTRVQsIFRMQl9GTFVTSF9BTEwpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXNcXG4rXFx0ICogZnJlZSwgc28gdGhleSB3YWxrIHVuZGVyIHJjdV9yZWFkX2xvY2soKS4gRnJlZSBhZnRlciBhIGdyYWNlIHBlcmlvZDpcXG4rXFx0ICogYSB3YWxrZXIgZWl0aGVyIGFscmVhZHkgc2F3IHRoZSBjbGVhcmVkIFBNRCwgb3Iga2VlcHMgdGhlIHBhZ2UgYWxpdmVcXG4rXFx0ICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLlxcbitcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHB0LCBuZXh0LCBcXHUwMDI2cGFnZV9saXN0LCBwdF9saXN0KVxcbi1cXHRcXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcXG4rXFx0XFx0Y2FsbF9yY3UoXFx1MDAyNnB0LVxcdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpO1xcbiB9XFxuIFxcbiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG5AQCAtNDQ2LDQgKzQ2MCwxMCBAQCB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG4gXFxuIFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsud29yayk7XFxuIH1cXG4rI2Vsc2VcXG4rdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXFxuK3tcXG4rXFx0LyogRGVmZXIgdGhlIGZyZWUgYnkgYSBncmFjZSBwZXJpb2Q7IHNlZSBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoKS4gKi9cXG4rXFx0Y2FsbF9yY3UoXFx1MDAyNnB0LVxcdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpO1xcbit9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9tbS9wdGR1bXAuYyBiL21tL3B0ZHVtcC5jXFxuaW5kZXggOTczMDIwMDAwMDk2Y2YuLjUwY2Q5NmEzM2RmZDI3IDEwMDY0NFxcbi0tLSBhL21tL3B0ZHVtcC5jXFxuKysrIGIvbW0vcHRkdW1wLmNcXG5AQCAtMTc4LDExICsxNzgsMTMgQEAgdm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHB0ZHVtcF9zdGF0ZSAqc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkKVxcbiBcXG4gXFx0Z2V0X29ubGluZV9tZW1zKCk7XFxuIFxcdG1tYXBfd3JpdGVfbG9jayhtbSk7XFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0d2hpbGUgKHJhbmdlLVxcdTAwM2VzdGFydCAhPSByYW5nZS1cXHUwMDNlZW5kKSB7XFxuIFxcdFxcdHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhtbSwgcmFuZ2UtXFx1MDAzZXN0YXJ0LCByYW5nZS1cXHUwMDNlZW5kLFxcbiBcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2cHRkdW1wX29wcywgcGdkLCBzdCk7XFxuIFxcdFxcdHJhbmdlKys7XFxuIFxcdH1cXG4rXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdG1tYXBfd3JpdGVfdW5sb2NrKG1tKTtcXG4gXFx0cHV0X29ubGluZV9tZW1zKCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTozOToxMi43MjExNjE4MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MTk2NTMyMDQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVERVTVBfREVCVUdGU1wiLFxuICAgIFwiREVCVUdfV1hcIixcbiAgICBcIklPTU1VX1NWQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiLFxuICAgIFwia2VybmVsX3BndGFibGVfZnJlZV9yY3VcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY1wiLFxuICAgIFwicHRkdW1wX3dhbGtfcGdkXCIsXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI1NTMyOWZlMWViNGZlZTExMzE3OTYzMTgwOWEzZmYzMjE4NjIzMGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwNTozOToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc5NDA4YTE3YTFiMGRhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tLmhcbkBAIC0zNjk1LDE0ICszNjk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXG4gXHRfX2ZyZWVfcGFnZXMocGFnZSwgY29tcG91bmRfb3JkZXIocGFnZSkpO1xuIH1cbiBcbi0jaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7XG4tI2Vsc2Vcbi1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxuLXtcbi1cdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuLX1cbi0jZW5kaWZcbiAvKipcbiAgKiBwYWdldGFibGVfZnJlZSAtIEZyZWUgcGFnZXRhYmxlc1xuICAqIEBwdDpcdFRoZSBwYWdlIHRhYmxlIGRlc2NyaXB0b3JcbmRpZmYgLS1naXQgYS9tbS9wYWdld2Fsay5jIGIvbW0vcGFnZXdhbGsuY1xuaW5kZXggM2FlMjU4NmZmNDViNDQuLmMwYmU4NzU4MDk4OWRhIDEwMDY0NFxuLS0tIGEvbW0vcGFnZXdhbGsuY1xuKysrIGIvbW0vcGFnZXdhbGsuY1xuQEAgLTYyMCw3ICs2MjAsNyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuICAqIE5vdGU6IEJlIGNhcmVmdWwgdG8gd2FsayB0aGUga2VybmVsIHBhZ2VzIHRhYmxlcywgdGhlIGNhbGxlciBtYXkgYmUgbmVlZCB0b1xuICAqIHRha2Ugb3RoZXIgZWZmZWN0aXZlIGFwcHJvYWNoZXMgKG1tYXAgbG9jayBtYXkgYmUgaW5zdWZmaWNpZW50KSB0byBwcmV2ZW50XG4gICogdGhlIGludGVybWVkaWF0ZSBrZXJuZWwgcGFnZSB0YWJsZXMgYmVsb25naW5nIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyByYW5nZVxuLSAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUpLlxuKyAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUsIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbikuXG4gICovXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuQEAgLTY0Myw3ICs2NDMsNyBAQCBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbiAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseS4gSXQgc2hvdWxkIGJlXG4gICogZ3VhcmFudGVlZCB0aGF0IHRoZSBjYWxsZXIgaGFzIGV4Y2x1c2l2ZSBhY2Nlc3Mgb3ZlciB0aGUgcmFuZ2UgdGhleSBhcmVcbiAgKiBvcGVyYXRpbmcgb24gLSB0aGF0IHRoZXJlIHNob3VsZCBiZSBubyBjb25jdXJyZW50IGFjY2VzcywgZm9yIGV4YW1wbGUsXG4tICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cy5cbisgKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLCBvciB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24uXG4gICovXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuQEAgLTY5Miw5ICs2OTIsMTMgQEAgaW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbiBcdH07XG4gXG4gXHQvKiBGb3IgY29udmVuaWVuY2UsIHdlIGFsbG93IHRyYXZlcnNhbCBvZiBrZXJuZWwgbWFwcGluZ3MuICovXG4tXHRpZiAobW0gPT0gXHUwMDI2aW5pdF9tbSlcbi1cdFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLFxuLVx0XHRcdFx0XHRcdCAgICBwZ2QsIHByaXZhdGUpO1xuK1x0aWYgKG1tID09IFx1MDAyNmluaXRfbW0pIHtcbitcdFx0UkNVX0xPQ0tERVBfV0FSTighcmN1X3JlYWRfbG9ja19oZWxkKCksXG4rXHRcdFx0XHQgXCJSQ1UgcmVhZCBsb2NrIG11c3QgYmUgaGVsZCBhY3Jvc3Mga2VybmVsIHBhZ2UgdGFibGUgd2Fsa1wiKTtcbitcdFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLCBwZ2QsXG4rXHRcdFx0XHRcdFx0XHRwcml2YXRlKTtcbitcdH1cbitcbiBcdGlmIChzdGFydCBcdTAwM2U9IGVuZCB8fCAhd2Fsay5tbSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpXG5kaWZmIC0tZ2l0IGEvbW0vcGd0YWJsZS1nZW5lcmljLmMgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xuaW5kZXggYjkxYjFhOTgwMjljN2YuLjdhMzJlNDgyMTk1N2NjIDEwMDY0NFxuLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmNcbisrKyBiL21tL3BndGFibGUtZ2VuZXJpYy5jXG5AQCAtNDEwLDYgKzQxMCwxMyBAQCBwdGVfdCAqcHRlX29mZnNldF9tYXBfbG9jayhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCxcbiBcdGdvdG8gYWdhaW47XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbit7XG4rXHRzdHJ1Y3QgcHRkZXNjICpwdCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgcHRkZXNjLCBwdF9yY3VfaGVhZCk7XG4rXG4rXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbit9XG4rXG4gI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXG4gc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG5AQCAtNDM0LDggKzQ0MSwxNSBAQCBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3Bpbl91bmxvY2soXHUwMDI2a2VybmVsX3BndGFibGVfd29yay5sb2NrKTtcbiBcbiBcdGlvbW11X3N2YV9pbnZhbGlkYXRlX2t2YV9yYW5nZShQQUdFX09GRlNFVCwgVExCX0ZMVVNIX0FMTCk7XG4rXG4rXHQvKlxuK1x0ICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXNcbitcdCAqIGZyZWUsIHNvIHRoZXkgd2FsayB1bmRlciByY3VfcmVhZF9sb2NrKCkuIEZyZWUgYWZ0ZXIgYSBncmFjZSBwZXJpb2Q6XG4rXHQgKiBhIHdhbGtlciBlaXRoZXIgYWxyZWFkeSBzYXcgdGhlIGNsZWFyZWQgUE1ELCBvciBrZWVwcyB0aGUgcGFnZSBhbGl2ZVxuK1x0ICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLlxuK1x0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHQsIG5leHQsIFx1MDAyNnBhZ2VfbGlzdCwgcHRfbGlzdClcbi1cdFx0X19wYWdldGFibGVfZnJlZShwdCk7XG4rXHRcdGNhbGxfcmN1KFx1MDAyNnB0LVx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7XG4gfVxuIFxuIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxuQEAgLTQ0Niw0ICs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4gXG4gXHRzY2hlZHVsZV93b3JrKFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsud29yayk7XG4gfVxuKyNlbHNlXG4rdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4re1xuK1x0LyogRGVmZXIgdGhlIGZyZWUgYnkgYSBncmFjZSBwZXJpb2Q7IHNlZSBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoKS4gKi9cbitcdGNhbGxfcmN1KFx1MDAyNnB0LVx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7XG4rfVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmNcbmluZGV4IDk3MzAyMDAwMDA5NmNmLi41MGNkOTZhMzNkZmQyNyAxMDA2NDRcbi0tLSBhL21tL3B0ZHVtcC5jXG4rKysgYi9tbS9wdGR1bXAuY1xuQEAgLTE3OCwxMSArMTc4LDEzIEBAIHZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZClcbiBcbiBcdGdldF9vbmxpbmVfbWVtcygpO1xuIFx0bW1hcF93cml0ZV9sb2NrKG1tKTtcbitcdHJjdV9yZWFkX2xvY2soKTtcbiBcdHdoaWxlIChyYW5nZS1cdTAwM2VzdGFydCAhPSByYW5nZS1cdTAwM2VlbmQpIHtcbiBcdFx0d2Fsa19wYWdlX3JhbmdlX2RlYnVnKG1tLCByYW5nZS1cdTAwM2VzdGFydCwgcmFuZ2UtXHUwMDNlZW5kLFxuIFx0XHRcdFx0ICAgICAgXHUwMDI2cHRkdW1wX29wcywgcGdkLCBzdCk7XG4gXHRcdHJhbmdlKys7XG4gXHR9XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdG1tYXBfd3JpdGVfdW5sb2NrKG1tKTtcbiBcdHB1dF9vbmxpbmVfbWVtcygpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6Mzk6MTIuNzIxMTYzMTE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ2MTg0NzQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS2VybmVsIFBhdGNoIGZvciBGdXp6aW5nIEltcGxpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCB3YXJyYW50IHRhcmdldGVkIGZ1enppbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3QgYmVmb3JlIEkgY2FuIHByb3Blcmx5IHByaW9yaXRpemUgdGhpcy5cblxuVGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBjb3JlIGZpbGVzLCBhbmQgYSBxdWljayBnbGFuY2UgdGVsbHMgbWUgdGhpcyBpc24ndCBqdXN0IGEgdHJpdmlhbCBmaXguIGBpbmNsdWRlL2xpbnV4L21tLmhgIGhhcyBhIGNvbmRpdGlvbmFsIHJlbW92YWwsIHdoaWNoIHVzdWFsbHkgZ2V0cyBteSBhdHRlbnRpb24gc2luY2UgdGhlIGNvbmZpZyBvcHRpb24gaXMgYmVpbmcgY2hhbmdlZC4gVGhlIHJlbW92YWwgb2YgdGhlIGAjaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGFyb3VuZCB0aGUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgZGVjbGFyYXRpb24gaW4gYGluY2x1ZGUvbGludXgvbW0uaGAgaXMsIG9uIGl0cyBvd24sIG5vdCB0b28gd29ycnlpbmcsIGJ1dCBpdCdzIHBhcnQgb2YgYSBiaWdnZXIgY2hhbmdlLCBzbyBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kIGFzIGEgZGVwZW5kZW5jeS4gVGhlIG1vZGlmaWNhdGlvbnMgdG8gYG1tL3BhZ2V3YWxrLmNgIHdpdGggdGhlIGBSQ1VfTE9DS0RFUF9XQVJOYCBpbmRpY2F0ZSBwb3RlbnRpYWwgY29uY3VycmVuY3kgY29uY2VybnMgd2l0aGluIHBhZ2UgdGFibGUgd2Fsa3MsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIGBpbml0X21tYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhhdCBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGZvciBwb3NzaWJsZSByYWNlcy4gSSBzZWUgdGhhdCBgbW0vcGd0YWJsZS1nZW5lcmljLmNgIGlzIGJlaW5nIHN1YnN0YW50aWFsbHkgYWx0ZXJlZDogaXQgYWRkcyBhIG5ldyBmdW5jdGlvbiwgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCwgYW5kIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBhbiBleGlzdGluZyBvbmUuIFJlcGxhY2luZyBgX19wYWdldGFibGVfZnJlZWAgd2l0aCBgY2FsbF9yY3VgIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCBpbXBseWluZyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIFJDVS1kZWxheWVkIGZyZWVpbmcgb2Yga2VybmVsIHBhZ2UgdGFibGVzLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBnb2FsIGlzIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBvcGVyYXRpb25zIGxpa2UgcGFnZSB0YWJsZSBkdW1wcywgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoZSBhZGRpdGlvbiBvZiBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgdmVyeSByZWxldmFudC4gRmluYWxseSwgdGhlIGludHJvZHVjdGlvbiBvZiBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYHJjdV9yZWFkX3VubG9jaygpYCBpbiBgbW0vcHRkdW1wLmNgIGFyb3VuZCBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBjb25maXJtcyB0aGUgaW50ZW50IHRvIHByb3RlY3QgdGhlc2Ugb3BlcmF0aW9ucy5cblxuVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgZnVuZGFtZW50YWxseSBhbHRlcmluZyBob3cgd2UgZnJlZSBrZXJuZWwgcGFnZSB0YWJsZXMuIFNvLCBJIG5lZWQgdG8gc2VlIHdoYXQncyBhY3R1YWxseSBiZWluZyBjYWxsZWQuIEkgc2VlIHRoYXQgdGhlIG92ZXJhbGwgZ29hbCBvZiB0aGUgcGF0Y2ggaXMgUkNVLWRlbGF5ZWQgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMsIHdoaWNoIGhhcyB0byBiZSB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaXMgYWN0dWFsbHkgY2FsbGVkLiBJZiBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpcyB1bnJlYWNoYWJsZSwgdGhlbiB0aGlzIHBhdGNoIHdpbGwgYmUgbG93LXByaW9yaXR5LCBidXQgaWYgaXQgaXMgcmVhY2hhYmxlLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgdG8gZnV6eiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0OCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjM5OjIwLjE4MzAxMjQ0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAzMzc3MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tLmg9MzY5MT1zdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk3LVxcbmluY2x1ZGUvbGludXgvbW0uaDozNjk4OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5OS0vKipcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaD0zNzA2PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0zNzA5LVxcdFxcdHB0ZGVzY19jbGVhcl9rZXJuZWwocHQpO1xcbmluY2x1ZGUvbGludXgvbW0uaDozNzEwOlxcdFxcdHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MTEtXFx0fSBlbHNlIHtcXG4tLVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jPTQzND1zdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDU0LVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jOjQ1NTp2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTYte1xcbi0tXFxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDYzLSNlbHNlXFxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDY0OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjM5OjIxLjk4NjM5NDU2NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTEyNjc5NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYHBhZ2V0YWJsZV9mcmVlYCBhbmQgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBwYWdldGFibGVfZnJlZWAuIEkga25vdyBmcm9tIG1lbW9yeSB0aGF0IHRoaXMgaGFwcGVucyB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEtBU0FOLiBCdXQgbGV0J3MgdmVyaWZ5IHRoYXQuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhlIGV4YWN0IHRyaWdnZXIuIEl0J3MgdGltZSB0byBjaGVjayB0aGUgc291cmNlIGNvZGUuIExldCBtZSBvcGVuIHVwIGBpbmNsdWRlL2xpbnV4L21tLmhgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgcGFnZXRhYmxlX2ZyZWVgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGV4YWN0IGNvbmRpdGlvbmFsIHRoYXQgZ292ZXJucyB0aGUgY2FsbCB0byBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBzbyBJIGNhbiBjb25maXJtIG15IG1lbnRhbCBtb2RlbC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgaG93IEtBU0FOIGludGVyYWN0cyB3aXRoIHBhZ2UgdGFibGUgZnJlZWluZy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1ha2UgYW55IGFzc3VtcHRpb25zIGJhc2VkIG9uIGZ1enp5IHJlY2FsbC4gVGltZSB0byBkaWcgaW4gYW5kIGNvbmZpcm0gdGhlIGV4YWN0IGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjAxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6Mzk6MjUuMjM3NjY0MDUxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODYzMzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2V0YWJsZV9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvbW0uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tLmg9MzY4Mz1zdGF0aWMgaW5saW5lIHN0cnVjdCBwdGRlc2MgKnBhZ2V0YWJsZV9hbGxvY19ub3Byb2YoZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5MC1cXG5pbmNsdWRlL2xpbnV4L21tLmg6MzY5MTpzdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5Mi17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5Ny1cXG5pbmNsdWRlL2xpbnV4L21tLmg6MzY5ODp2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTktLyoqXFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MDA6ICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcwMS0gKiBAcHQ6XFx0VGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvclxcbmluY2x1ZGUvbGludXgvbW0uaC0zNzAyLSAqXFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MDM6ICogcGFnZXRhYmxlX2ZyZWUgZnJlZXMgdGhlIG1lbW9yeSBvZiBhbGwgcGFnZSB0YWJsZXMgZGVzY3JpYmVkIGJ5IGEgcGFnZVxcbmluY2x1ZGUvbGludXgvbW0uaC0zNzA0LSAqIHRhYmxlIGRlc2NyaXB0b3IgYW5kIHRoZSBtZW1vcnkgZm9yIHRoZSBkZXNjcmlwdG9yIGl0c2VsZi5cXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcwNS0gKi9cXG5pbmNsdWRlL2xpbnV4L21tLmg6MzcwNjpzdGF0aWMgaW5saW5lIHZvaWQgcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDcte1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDktXFx0XFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MTA6XFx0XFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcxMS1cXHR9IGVsc2Uge1xcbmluY2x1ZGUvbGludXgvbW0uaDozNzEyOlxcdFxcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xcbmluY2x1ZGUvbGludXgvbW0uaC0zNzEzLVxcdH1cXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaD0zODA4PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZHRvcl9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0ZGVzYylcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0zODEwLVxcdHBhZ2V0YWJsZV9kdG9yKHB0ZGVzYyk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjM4MTE6XFx0cGFnZXRhYmxlX2ZyZWUocHRkZXNjKTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzgxMi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjM5OjI1LjI5NDUzMjAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDQ0NDExMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBQYWdlIFRhYmxlIERlYWxsb2NhdGlvbiBBbmFseXNpcyoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cgYXJvdW5kIHBhZ2UgdGFibGUgZnJlZWluZy4gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBjYWxsIHRvIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBNeSBodW5jaCBpcyB0aGF0IHRoZXJlJ3MgYSBwcmVjZWRpbmcgY2hlY2sg4oCTIHBlcmhhcHMgYSBmdW5jdGlvbiBjYWxsLCBvciBhIG1hY3JvIOKAkyB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgcGFnZSB0YWJsZSBiZWluZyB0YXJnZXRlZCBieSB0aGUgcHJvY2VzcyBpcywgaW4gZmFjdCwgYSBrZXJuZWwtc3BlY2lmaWMgcGFnZSB0YWJsZS4gVGhlIG5hbWUgc2VlbXMgdG8gc3VnZ2VzdCBzb21ldGhpbmcgbGlrZSBgcHRkZXNjX2lzX2tlcm5lbGAsIG9yIG1heWJlIGl0J3MgYHB0X2lzX2tlcm5lbGAsIG9yIHNvbWUgdmFyaWF0aW9uIG9uIHRoYXQgdGhlbWUuIEkgbmVlZCB0byBpZGVudGlmeSAqdGhhdCogY2hlY2suIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBjb25kaXRpb25hbCBleHByZXNzaW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGVuIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIGFjdHVhbGx5IGludm9rZWQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgYW5kIHNlZSB3aGF0IHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGNhbGwgaXMgYmVpbmcgdGVzdGVkIGltbWVkaWF0ZWx5IGJlZm9yZWhhbmQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBtZW1vcnkgcmVjbGFpbSBzdHJhdGVneSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTozOToyOC45OTg5NzQ5MzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTMyMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9tbS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3MDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM3MDA6XFx0ICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcXG4zNzAxOlxcdCAqIEBwdDpcXHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXFxuMzcwMjpcXHQgKlxcbjM3MDM6XFx0ICogcGFnZXRhYmxlX2ZyZWUgZnJlZXMgdGhlIG1lbW9yeSBvZiBhbGwgcGFnZSB0YWJsZXMgZGVzY3JpYmVkIGJ5IGEgcGFnZVxcbjM3MDQ6XFx0ICogdGFibGUgZGVzY3JpcHRvciBhbmQgdGhlIG1lbW9yeSBmb3IgdGhlIGRlc2NyaXB0b3IgaXRzZWxmLlxcbjM3MDU6XFx0ICovXFxuMzcwNjpcXHRzdGF0aWMgaW5saW5lIHZvaWQgcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXFxuMzcwNzpcXHR7XFxuMzcwODpcXHRcXHRpZiAocHRkZXNjX3Rlc3Rfa2VybmVsKHB0KSkge1xcbjM3MDk6XFx0XFx0XFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XFxuMzcxMDpcXHRcXHRcXHRwYWdldGFibGVfZnJlZV9rZXJuZWwocHQpO1xcbjM3MTE6XFx0XFx0fSBlbHNlIHtcXG4zNzEyOlxcdFxcdFxcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xcbjM3MTM6XFx0XFx0fVxcbjM3MTQ6XFx0fVxcbjM3MTU6XFx0XFxuMzcxNjpcXHQjaWYgZGVmaW5lZChDT05GSUdfU1BMSVRfUFRFX1BUTE9DS1MpXFxuMzcxNzpcXHQjaWYgQUxMT0NfU1BMSVRfUFRMT0NLU1xcbjM3MTg6XFx0dm9pZCBfX2luaXQgcHRsb2NrX2NhY2hlX2luaXQodm9pZCk7XFxuMzcxOTpcXHRib29sIHB0bG9ja19hbGxvYyhzdHJ1Y3QgcHRkZXNjICpwdGRlc2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTozOToyOC45OTk1NzA1NTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTU4NTY1OTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcgTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcGFnZXRhYmxlX2ZyZWVgIGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIGJlZW4gYSBmdW5jdGlvbmFsIGNoYW5nZS4gSWYgdGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvciwgYHB0YCwgcGFzc2VzIHRoZSBgcHRkZXNjX3Rlc3Rfa2VybmVsKHB0KWAgdGVzdCwgaXQgbm93IGNhbGxzIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIHRoaXMgZGVmZXJzIHRoZSBhY3R1YWwgZnJlZWluZyBvZiB0aGUga2VybmVsIHBhZ2UgdGFibGVzIGFuZCB1c2VzIFJDVSwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGNvbmN1cnJlbmN5LlxuXG5UaGUga2V5IGZ1bmN0aW9ucyB0byByZWFsbHkgZGlnIGludG8gaGVyZSBhcmUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIHRoZW4gYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCwgd2hpY2ggaXMgb2J2aW91c2x5IHRoZSBSQ1UgaW50ZXJmYWNlLCBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgYW5kIGZpbmFsbHksIHRoZSByYXRoZXIgdW5leHBlY3RlZCBgcHRkdW1wX3dhbGtfcGdkYC4gV2FpdCwgYHB0ZHVtcF93YWxrX3BnZGA/IFRoYXQncyBwYXJ0IG9mIHRoZSBwYWdlIHRhYmxlIGR1bXAgbWVjaGFuaXNtLCB3aGljaCBpcyBhICpkZWJ1Z2dpbmcqIGZlYXR1cmUhIFRoYXQncyBvZGQgdGhhdCBpdCdzIGluIGEgcGF0aCB0aWVkIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuICBJJ2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgdGhhdCBjb25uZWN0aW9uIG1vcmUgY2xvc2VseSBsYXRlci5cblxuQnV0LCBiYWNrIHRvIHRoZSBtYWluIHBvaW50LCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpcyBkZWZpbml0ZWx5IGNvcmUgTU0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZGVmZXJyZWQgZnJlZWluZy4gSXQncyBjcnVjaWFsIGZvciB0aGUga2VybmVsJ3Mgc3RhYmlsaXR5IHVuZGVyIGhlYXZ5IGxvYWQgb3IgZXZlbiBpbiBnZW5lcmFsLlxuXG5Ob3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGEgY29tcGlsZS10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBhbmQgd2hhdCBpdHMgaW1wbGljYXRpb25zIGFyZS4gVGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCB0aGlzIGJlaGF2aW9yIGlzIGVuZ2FnZWQgYW5kIGlmIGl0IGNhbiBjYXVzZSBwcm9ibGVtcyBpZiBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1NiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQwOjM0LjU4NTIzMTI4NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg4ODcxODgzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L0tjb25maWc9NTg9Y29uZmlnIFg4Nlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yODMtXFx0c2VsZWN0IEhBVkVfUEVSRl9VU0VSX1NUQUNLX0RVTVBcXG5hcmNoL3g4Ni9LY29uZmlnOjI4NDpcXHRzZWxlY3QgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcdGlmIElPTU1VX1NWQVxcbmFyY2gveDg2L0tjb25maWctMjg1LVxcdHNlbGVjdCBNTVVfR0FUSEVSX1JDVV9UQUJMRV9GUkVFXFxuLS1cXG5tbS9LY29uZmlnPTEwMjA9Y29uZmlnIEhBVkVfR0lHQU5USUNfRk9MSU9TXFxuLS1cXG5tbS9LY29uZmlnLTEwMjMtXFxubW0vS2NvbmZpZzoxMDI0OmNvbmZpZyBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXFxubW0vS2NvbmZpZy0xMDI1LVxcdGRlZl9ib29sIG5cXG4tLVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jPTQxMz1zdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00MTktXFxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDIwOiNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQyMS1zdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6MzcuNDczOTYwMjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5NDMwMDkyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgQXN5bmNocm9ub3VzIFBhZ2UgVGFibGUgRnJlZWluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgYW5kIGBJT01NVV9TVkFgIG9uIHg4NiBqdW1wcyBvdXQuIFRoZSBpbml0aWFsIGxvZ2ljIHN1Z2dlc3RzIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBpcyBjb250aW5nZW50IG9uIGBJT01NVV9TVkFgIGZvciB4ODYuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggc2VlbXMgdG8gZnVuZGFtZW50YWxseSBjaGFuZ2UgdGhlIGdhbWUuIFRoZSBhZGRpdGlvbiBvZiB0aGF0IGNydWNpYWwgYCNlbHNlYCBibG9jayB3aXRoaW4gYG1tL3BndGFibGUtZ2VuZXJpYy5jYCBpcyB0aGUga2V5LiBOb3csIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzICphbHdheXMqIGRlZmluZWQuIEFuZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBpcyBlbmFibGVkIG9yIG5vdCwgaXQgKmFsd2F5cyogZGVmZXJzIHRoZSBmcmVlaW5nIHByb2Nlc3MgdXNpbmcgUkNVLCBlaXRoZXIgZGlyZWN0bHkgb3IgdmlhIGEgd29ya3F1ZXVlLiBUaGF0J3MgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBiZWhhdmlvci4gV2UndmUgbW92ZWQgZnJvbSBwb3RlbnRpYWwgc3luY2hyb25vdXMgZnJlZWluZyB0byAqZ3VhcmFudGVlZCogYXN5bmNocm9ub3VzIGZyZWVpbmcgZm9yIGtlcm5lbCBwYWdlIHRhYmxlcy5cblxuQnV0IHdhaXQsIHRoZXJlJ3MgbW9yZS4gVGhlIG1vZGlmaWNhdGlvbiB0byBgbW0vcGFnZXdhbGsuY2AgYW5kIGBtbS9wdGR1bXAuY2AgaXMgaW1tZWRpYXRlbHkgY29uY2VybmluZy4gSSBrbm93IHRoYXQgYHB0ZHVtcF93YWxrX3BnZGAgaXMgdXNlZCBieSB0aGUgYFBURFVNUF9ERUJVR0ZTYCBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyBjcml0aWNhbCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXppbmcgcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyBmdXJ0aGVyLiBJJ3ZlIGdvdCB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHN1YnRsZSByZWdyZXNzaW9ucyB3aXRoaW4gdGhlIGRlYnVnIGFuZCB0cmFjaW5nIHV0aWxpdGllcy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2hhbmdlIGRvZXNuJ3QgYnJlYWsgYW55IGFzc3VtcHRpb25zIHRob3NlIHRvb2xzIHJlbHkgb24uIEknbGwgbmVlZCB0byBjaGVjayBob3cgdGhlIGFzeW5jaHJvbm91cyBmcmVlaW5nIGludGVyYWN0cyB3aXRoIHRoZSBwYWdlIHRhYmxlIGR1bXAgY29kZSwgYW5kIHdoZXRoZXIgaXQgaW50cm9kdWNlcyBhbnkgcmFjZSBjb25kaXRpb25zLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3NiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MDo0Mi4zNjgyNjI5OTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzQ3NjU0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHRkdW1wX3dhbGtfcGdkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oPTE2PXN0cnVjdCBwdGR1bXBfaW5mbyB7XFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yMS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDoyMjp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyk7XFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMjMtI2lmZGVmIENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlNcXG4tLVxcbmFyY2gvYXJtL21tL2R1bXAuYz0zOTg9c3RhdGljIHZvaWQgd2Fsa19wZ2Qoc3RydWN0IHBnX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5hcmNoL2FybS9tbS9kdW1wLmMtNDE0LVxcbmFyY2gvYXJtL21tL2R1bXAuYzo0MTU6dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcHRkdW1wX2luZm8gKmluZm8pXFxuYXJjaC9hcm0vbW0vZHVtcC5jLTQxNi17XFxuLS1cXG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jPTc9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuLS1cXG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jLTEwLVxcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmM6MTE6XFx0cHRkdW1wX3dhbGtfcGdkKG0sIGluZm8pO1xcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmMtMTItXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTI3OT12b2lkIG5vdGVfcGFnZV9mbHVzaChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpwdF9zdClcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMjg1LVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6Mjg2OnN0YXRpYyB2b2lkIGFybTY0X3B0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODcte1xcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMjg4LVxcdHN0YXRpY19icmFuY2hfaW5jKFxcdTAwMjZhcm02NF9wdGR1bXBfbG9ja19rZXkpO1xcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6Mjg5OlxcdHB0ZHVtcF93YWxrX3BnZChzdCwgbW0sIE5VTEwpO1xcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMjkwLVxcdHN0YXRpY19icmFuY2hfZGVjKFxcdTAwMjZhcm02NF9wdGR1bXBfbG9ja19rZXkpO1xcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYz0yOTM9dm9pZCBwdGR1bXBfd2FsayhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbylcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzIwLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6MzIxOlxcdGFybTY0X3B0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBpbmZvLVxcdTAwM2VtbSk7XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zMjItfVxcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYz0zMzg9Ym9vbCBwdGR1bXBfY2hlY2tfd3godm9pZClcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzYyLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6MzYzOlxcdGFybTY0X3B0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSk7XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zNjQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTMzND1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzUxLVxcdC8qIFRyYXZlcnNlIGtlcm5lbCBwYWdlIHRhYmxlcyAqL1xcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM6MzUyOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSwgTlVMTCk7XFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zNTMtXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTM2OD1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zOTEtXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzozOTI6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIFxcdTAwMjZpbml0X21tLCBOVUxMKTtcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTM5My1cXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9MzUzPXN0YXRpYyB2b2lkIHB0ZHVtcF93YWxrKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZF9tbV9pbmZvICpwaW5mbylcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtMzcyLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6MzczOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBwaW5mby1cXHUwMDNlbW0sIE5VTEwpO1xcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtMzc0LX1cXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9Mzc2PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXFxuLS1cXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTM5OS1cXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jOjQwMDpcXHRwdGR1bXBfd2Fsa19wZ2QoXFx1MDAyNnN0LnB0ZHVtcCwgXFx1MDAyNmluaXRfbW0sIE5VTEwpO1xcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtNDAxLVxcbi0tXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTE4Mj1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIxMC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MjExOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSwgTlVMTCk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIxMi1cXHRpZiAoc3Qud3hfcGFnZXMpIHtcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0yMjY9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuLS1cXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjUwLVxcdG11dGV4X2xvY2soXFx1MDAyNmNwYV9tdXRleCk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjI1MTpcXHRwdGR1bXBfd2Fsa19wZ2QoXFx1MDAyNnN0LnB0ZHVtcCwgXFx1MDAyNmluaXRfbW0sIE5VTEwpO1xcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yNTItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjcGFfbXV0ZXgpO1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTMwPXN0cnVjdCBzZXFfZmlsZTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzE6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjMyOnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMzMtXFx0XFx0XFx0XFx0ICAgYm9vbCB1c2VyKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzQ6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzU6I2RlZmluZSBwdGR1bXBfY2hlY2tfd3ggcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NoZWNrd3hcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMzYtdm9pZCBwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTg9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTkte1xcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYzoxMDpcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBcXHUwMDI2aW5pdF9tbSwgZmFsc2UpO1xcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0xMS1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0xNj1zdGF0aWMgaW50IHB0ZHVtcF9jdXJrbmxfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuLS1cXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMTgtXFx0aWYgKGN1cnJlbnQtXFx1MDAzZW1tLVxcdTAwM2VwZ2QpXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjE5OlxcdFxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIGN1cnJlbnQtXFx1MDAzZW1tLCBmYWxzZSk7XFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTIwLVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTI2PXN0YXRpYyBpbnQgcHRkdW1wX2N1cnVzcl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0yOC1cXHRpZiAoY3VycmVudC1cXHUwMDNlbW0tXFx1MDAzZXBnZClcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6Mjk6XFx0XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgY3VycmVudC1cXHUwMDNlbW0sIHRydWUpO1xcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0zMC1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0zNz1zdGF0aWMgaW50IHB0ZHVtcF9lZmlfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuLS1cXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMzktXFx0aWYgKGVmaV9tbS5wZ2QpXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjQwOlxcdFxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIFxcdTAwMjZlZmlfbW0sIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtNDEtXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYz00MTY9c3RhdGljIHZvaWQgbm90ZV9wYWdlX2ZsdXNoKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnB0X3N0KVxcbi0tXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDIyLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjQyMzpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKHN0cnVjdCBzZXFfZmlsZSAqbSxcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00MjQtXFx0XFx0XFx0XFx0c3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NTctXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDU4OlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBtbSwgcGdkKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NTktXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzMtXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDc0OnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDc1LXtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NzY6XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUobSwgbW0sIG1tLVxcdTAwM2VwZ2QsIGZhbHNlLCB0cnVlKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzctfVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3OC1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0Nzk6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ4MC1cXHRcXHRcXHRcXHQgICBib29sIHVzZXIpXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00ODYtI2VuZGlmXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDg3OlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKG0sIG1tLCBwZ2QsIGZhbHNlLCBmYWxzZSk7XFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDg4LX1cXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jPTQ5MD12b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZClcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwMC1cXHRwZ2QgPSBrZXJuZWxfdG9fdXNlcl9wZ2RwKHBnZCk7XFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTAxOlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKE5VTEwsIFxcdTAwMjZpbml0X21tLCBwZ2QsIHRydWUsIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDItI2VuZGlmXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDQtXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTA1OmJvb2wgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NoZWNrd3godm9pZClcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDYte1xcbi0tXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTA5LVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjUxMDpcXHRyZXR1cm4gcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoTlVMTCwgXFx1MDAyNmluaXRfbW0sIElOSVRfUEdELCB0cnVlLCBmYWxzZSk7XFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTExLX1cXG4tLVxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYz03NT12b2lkIF9faW5pdCBlZmlfZHVtcF9wYWdldGFibGUodm9pZClcXG4tLVxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYy03Ny0jaWZkZWYgQ09ORklHX0VGSV9QR1RfRFVNUFxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYzo3ODpcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoTlVMTCwgXFx1MDAyNmluaXRfbW0pO1xcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYy03OS0jZW5kaWZcXG4tLVxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYz00MjM9dm9pZCBfX2luaXQgZWZpX2R1bXBfcGFnZXRhYmxlKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmMtNDI1LSNpZmRlZiBDT05GSUdfRUZJX1BHVF9EVU1QXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV82NC5jOjQyNjpcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoTlVMTCwgXFx1MDAyNmVmaV9tbSk7XFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV82NC5jLTQyNy0jZW5kaWZcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmg9MTM9c3RydWN0IHB0ZHVtcF9zdGF0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTI3LVxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmg6Mjg6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sXFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaC0yOS1cXHRcXHRcXHRcXHRzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCxcXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTMwLVxcdFxcdFxcdFxcdGJvb2wgY2hlY2t3eCwgYm9vbCBkbWVzZyk7XFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaDozMTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpO1xcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMzItYm9vbCBwdGR1bXBfY2hlY2tfd3godm9pZCk7XFxuLS1cXG5tbS9wdGR1bXAuYz0xNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwdGR1bXBfb3BzID0ge1xcbi0tXFxubW0vcHRkdW1wLmMtMTc0LVxcbm1tL3B0ZHVtcC5jOjE3NTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXFxubW0vcHRkdW1wLmMtMTc2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6NDQuNDQzMDMyNDcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODcxNTA3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFJlYWNoYWJpbGl0eSBpbiBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIGNhbGxlZCBieSBgcHRkdW1wX2NoZWNrX3d4YCwgYW5kICp0aGF0KiBmdW5jdGlvbiBnZXRzIGludm9rZWQgZHVyaW5nIGJvb3QuIFNvLCBubyBxdWVzdGlvbiwgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjb2RlLiBXZSBrbm93IHdlJ3JlIGdvaW5nIHRvIGdldCB0byBpdC4gTWFrZXMgc2Vuc2UuXG5cbkFuZCB0aGVuLCBpZiBJJ20gdW5kZXJzdGFuZGluZyB0aGlzIHJpZ2h0LCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBnZXRzIGNhbGxlZCAqYW55dGltZSoga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBmcmVlZC4gUmlnaHQsIHJpZ2h0LCB0aGluZ3MgbGlrZSB3aGVuIHdlJ3JlIHJlbGVhc2luZyBgdm1hbGxvY2AgbWVtb3J5IG9yIGZyZWVpbmcgaHVnZSBwYWdlcyBtYXBwZWQgd2l0aCBgdm1hcGAuIEdvdCBpdC4gVGhhdCdzIGEgcHJldHR5IHdpZGUgbmV0LlxuXG5IbW0uLi4ganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbSBnb2luZyB0byByZS1leGFtaW5lIHRoZSBjYWxsZXJzIG9mIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBKdXN0IHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByZWFjaCBpcyBzdGlsbCBjb3JyZWN0LiBJdCBwYXlzIHRvIGJlIHRob3JvdWdoIHdpdGggdGhpcyBzdHVmZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMDMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MDo0OC4yMzAxODYwMTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTQwNTM1MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZXRhYmxlX2ZyZWVfa2VybmVsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbW0uaD0zNjkxPXN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTctXFxuaW5jbHVkZS9saW51eC9tbS5oOjM2OTg6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk5LS8qKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oPTM3MDY9c3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDktXFx0XFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MTA6XFx0XFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcxMS1cXHR9IGVsc2Uge1xcbi0tXFxubW0vcGd0YWJsZS1nZW5lcmljLmM9NDM0PXN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTQtXFxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDU1OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ1Ni17XFxuLS1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NjMtI2Vsc2VcXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NjQ6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXFxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDY1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6NTAuMDI0MjQzNjI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDc3OTU2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBgcGFnZXRhYmxlX2ZyZWVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHBhZ2V0YWJsZV9mcmVlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIHJlc3BvbnNpYmxlIGZvciwgd2VsbCwgZnJlZWluZyBwYWdlIHRhYmxlcy4gSSBrbm93IGl0J3MgY2FsbGVkIGZyb20gdmFyaW91cyBvdGhlciBmcmVlaW5nIGZ1bmN0aW9uczogYHBhZ2V0YWJsZV9kdG9yX2ZyZWVgLCBhbmQgdGhlbiwgZGVwZW5kaW5nIG9uIHRoZSBsZXZlbCBvZiB0aGUgcGFnZSB0YWJsZSwgYHB1ZF9mcmVlYCwgYHBtZF9mcmVlYCwgYW5kIGBwdGVfZnJlZV9rZXJuZWxgLCBhbmQgcHJvYmFibHkgb3RoZXJzIEknbSBub3QgaW1tZWRpYXRlbHkgcmVjYWxsaW5nLiBTZWVtcyBsaWtlIHRoZSBjb21tb24gZGVub21pbmF0b3IuXG5cblJpZ2h0LCBzbyBsZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gYHBhZ2V0YWJsZV9mcmVlYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBleGFjdCBmdW5jdGlvbiBhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgbG93ZXIgbGV2ZWwgZnJlZWluZyByb3V0aW5lcywgY29uc2lkZXJpbmcgaXRzIGNhbGxlZCBmcm9tIGFsbCB0aGUgdmFyaW91cyBsZXZlbHMgb2YgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTU2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6NTMuNjcyMDQxNDk4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTA5NjgxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdldGFibGVfZnJlZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTAwOT1zdGF0aWMgdm9pZCBfX21lbWluaXQgZnJlZV9wYWdldGFibGUoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvcmRlcilcXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMDI2LVxcdH0gZWxzZSB7XFxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjEwMjc6XFx0XFx0cGFnZXRhYmxlX2ZyZWUocGFnZV9wdGRlc2MocGFnZSkpO1xcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMDI4LVxcdH1cXG4tLVxcbmFyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmM9NDEzPXN0YXRpYyB2b2lkIGNwYV9jb2xsYXBzZV9sYXJnZV9wYWdlcyhzdHJ1Y3QgY3BhX2RhdGEgKmNwYSlcXG4tLVxcbmFyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmMtNDQwLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZwdGRlc2MtXFx1MDAzZXB0X2xpc3QpO1xcbmFyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmM6NDQxOlxcdFxcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XFxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy00NDItXFx0fVxcbi0tXFxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYz0xMjMzPXN0YXRpYyBpbnQgc3BsaXRfbGFyZ2VfcGFnZShzdHJ1Y3QgY3BhX2RhdGEgKmNwYSwgcHRlX3QgKmtwdGUsXFxuLS1cXG5hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jLTEyNDYtXFx0aWYgKF9fc3BsaXRfbGFyZ2VfcGFnZShjcGEsIGtwdGUsIGFkZHJlc3MsIHB0ZGVzYykpXFxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYzoxMjQ3OlxcdFxcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XFxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy0xMjQ4LVxcbi0tXFxuYXJjaC94ODYvbW0vcGd0YWJsZS5jPTE1MD1zdGF0aWMgdm9pZCBmcmVlX3BtZHMoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWRzW10sIGludCBjb3VudClcXG4tLVxcbmFyY2gveDg2L21tL3BndGFibGUuYy0xNTktXFx0XFx0XFx0cGFnZXRhYmxlX2R0b3IocHRkZXNjKTtcXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM6MTYwOlxcdFxcdFxcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XFxuYXJjaC94ODYvbW0vcGd0YWJsZS5jLTE2MS1cXHRcXHRcXHRtbV9kZWNfbnJfcG1kcyhtbSk7XFxuLS1cXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM9MTY1PXN0YXRpYyBpbnQgcHJlYWxsb2NhdGVfcG1kcyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZHNbXSwgaW50IGNvdW50KVxcbi0tXFxuYXJjaC94ODYvbW0vcGd0YWJsZS5jLTE4MS1cXHRcXHRpZiAocHRkZXNjIFxcdTAwMjZcXHUwMDI2ICFwYWdldGFibGVfcG1kX2N0b3IobW0sIHB0ZGVzYykpIHtcXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM6MTgyOlxcdFxcdFxcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XFxuYXJjaC94ODYvbW0vcGd0YWJsZS5jLTE4My1cXHRcXHRcXHRwdGRlc2MgPSBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MDo1My43NDcxNDQwNTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcyODA5NTMxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS2VybmVsIFBhZ2UgVGFibGUgRnJlZWluZyoqXG5cbk9rYXksIHNvIGl0J3MgY29uZmlybWVkOiBgcGFnZXRhYmxlX2ZyZWVgICppcyogZGVmaW5pdGVseSBpbiB1c2UuIFRoaXMgcGF0Y2ggaXMgbWFraW5nIHNvbWUgZnVuZGFtZW50YWwgY2hhbmdlcyB0byBob3cga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBmcmVlZCwgb3B0aW5nIGZvciBkZWZlcnJlZCBmcmVlaW5nIHVzaW5nIFJDVS4gVGhlIHByaW1hcnkgbW90aXZhdGlvbiBoZXJlLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHRvIG1pdGlnYXRlIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIHNwZWNpZmljYWxseSB3aGVuIGxvY2tsZXNzbHkgdHJhdmVyc2luZyBrZXJuZWwgcGFnZSB0YWJsZXMsIHNvbWV0aGluZyB0aGF0J3MgY3J1Y2lhbCBkdXJpbmcgcHJvY2Vzc2VzIGxpa2UgYHB0ZHVtcGAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCB0aGVyZWZvcmUgd29ydGh5IG9mIHRob3JvdWdoIGZ1enppbmcuXG5cbk15IHByaW1hcnkgYXJlYXMgb2YgZm9jdXMgYXJlIGdvaW5nIHRvIGJlIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLCB3aGljaCBhcmUgdGhlIG9idmlvdXMgY2FuZGlkYXRlcywgYWxvbmdzaWRlIGBwdGR1bXBfd2Fsa19wZ2RgLCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZWAsIGFuZCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2Ag4oCTIHRob3NlIGZ1bmN0aW9ucyByZXByZXNlbnQgdGhlIGFyZWFzIHRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gcHJvdGVjdC5cblxuV2FpdCBhIHNlY29uZCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIGFsc28gc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIHRvIG5vdyBjYWxsIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAgYmV0dGVyLiBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIHRvIGZ1bGx5IGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY2FsbCBjaGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MDEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6NTguNDc1MjQxMDMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk3OTA4MTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbGtfcGFnZV9yYW5nZV9kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0PTM4Mj1XZSBhbHNvIHBlcm1pdCBhIHRydWx5IHVudXN1YWwgY2FzZSBpcyB0aGUgdHJhdmVyc2FsIG9mIG5vbi1WTUEgcmFuZ2VzIGluXFxuRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdDozODM6Kip1c2VybGFuZCoqIHJhbmdlcywgYXMgcHJvdmlkZWQgZm9yIGJ5IDpjOmZ1bmM6YCF3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLlxcbkRvY3VtZW50YXRpb24vbW0vcHJvY2Vzc19hZGRycy5yc3QtMzg0LVxcbi0tXFxubW0vaW50ZXJuYWwuaD0xODQwPWludCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hX3Vuc2FmZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL2ludGVybmFsLmgtMTg0Mi1cXHRcXHR2b2lkICpwcml2YXRlKTtcXG5tbS9pbnRlcm5hbC5oOjE4NDM6aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG5tbS9pbnRlcm5hbC5oLTE4NDQtXFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXFxuLS1cXG5tbS9wYWdld2Fsay5jPTY0OD1pbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNjY3LS8qKlxcbm1tL3BhZ2V3YWxrLmM6NjY4OiAqIHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyAtIHdhbGsgYSByYW5nZSBvZiBwYWdldGFibGVzIG5vdCBiYWNrZWQgYnkgYSB2bWFcXG5tbS9wYWdld2Fsay5jLTY2OS0gKiBAbW06XFx0XFx0bW1fc3RydWN0IHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IHByb2Nlc3Mgb2YgcGFnZSB0YWJsZSB3YWxrXFxuLS1cXG5tbS9wYWdld2Fsay5jLTY4MS0gKi9cXG5tbS9wYWdld2Fsay5jOjY4MjppbnQgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbm1tL3BhZ2V3YWxrLmMtNjgzLVxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBlbmQsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxcbi0tXFxubW0vcHRkdW1wLmM9MTc1PXZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZClcXG4tLVxcbm1tL3B0ZHVtcC5jLTE4Mi1cXHR3aGlsZSAocmFuZ2UtXFx1MDAzZXN0YXJ0ICE9IHJhbmdlLVxcdTAwM2VlbmQpIHtcXG5tbS9wdGR1bXAuYzoxODM6XFx0XFx0d2Fsa19wYWdlX3JhbmdlX2RlYnVnKG1tLCByYW5nZS1cXHUwMDNlc3RhcnQsIHJhbmdlLVxcdTAwM2VlbmQsXFxubW0vcHRkdW1wLmMtMTg0LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZwdGR1bXBfb3BzLCBwZ2QsIHN0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MDAuNDczMTU1MTY2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDYxMjYzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKlRyYWNpbmcgdGhlIERlcGVuZGVuY3kgQ2hhaW4gaW4gdGhlIFBhZ2UgVGFibGUgRHVtcCBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIGhhcyBhIHZlcnkgc3BlY2lmaWMgcHVycG9zZeKAlGl0J3MgYmVpbmcgdXRpbGl6ZWQgZGlyZWN0bHkgYnkgYHB0ZHVtcF93YWxrX3BnZGAuIFRoZW4sIGBwdGR1bXBfd2Fsa19wZ2RgIGl0c2VsZiBoYXMgdHdvIHByaW1hcnkgY29uc3VtZXJzOiBgUFREVU1QX0RFQlVHRlNgIGFuZCBgUFREVU1QX0NPUkVgLiBHaXZlbiB0aGUgb3B0aW9ucywgSSB3YW50IHRvIGludmVzdGlnYXRlIHRoZSBgUFREVU1QX0RFQlVHRlNgIHVzYWdlLiBJdCBzZWVtcyB0byBoYXZlIHRoZSBoaWdoZXIgbGV2ZWwgb2YgZGVwZW5kZW5jeSBzbyB0aGlzIGlzIHdoZXJlIEkgd2lsbCBzdGFydCBteSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzkxMSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQxOjA0LjYxOTI4NTAzNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0NzI3MDI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQVERVTVBfREVCVUdGU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2FyY2gvYXJtNjQvcHRkdW1wLnJzdD0yMz1jb25maWd1cmF0aW9ucyBhbmQgbW91bnQgZGVidWdmczo6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L3B0ZHVtcC5yc3QtMjQtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L3B0ZHVtcC5yc3Q6MjU6IENPTkZJR19QVERVTVBfREVCVUdGUz15XFxuRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L3B0ZHVtcC5yc3QtMjYtXFxuLS1cXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnPTM9Y29uZmlnIEFSTV9QVERVTVBfQ09SRVxcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zy01LVxcbmFyY2gvYXJtL0tjb25maWcuZGVidWc6Njpjb25maWcgQVJNX1BURFVNUF9ERUJVR0ZTXFxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zy03LVxcdGJvb2wgXFxcIkV4cG9ydCBrZXJuZWwgcGFnZXRhYmxlIGxheW91dCB0byB1c2Vyc3BhY2UgdmlhIGRlYnVnZnNcXFwiXFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaD0yMj12b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyk7XFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg6MjM6I2lmZGVmIENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlNcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yNC0jZGVmaW5lIEVGSV9SVU5USU1FX01BUF9FTkRcXHRTWl8xR1xcbi0tXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9Mjc9c3RhdGljIGlubGluZSB2b2lkIHB0ZHVtcF9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyxcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yOC1cXHRcXHRcXHRcXHRcXHQgICBjb25zdCBjaGFyICpuYW1lKSB7IH1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDoyOTojZW5kaWYgLyogQ09ORklHX0FSTV9QVERVTVBfREVCVUdGUyAqL1xcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTMwLVxcbi0tXFxuYXJjaC9hcm0vbW0vTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX0FSTV9QVERVTVBfQ09SRSlcXHQrPSBkdW1wLm9cXG5hcmNoL2FybS9tbS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfQVJNX1BURFVNUF9ERUJVR0ZTKVxcdCs9IHB0ZHVtcF9kZWJ1Z2ZzLm9cXG5hcmNoL2FybS9tbS9NYWtlZmlsZS0xOS1vYmotJChDT05GSUdfTU9EVUxFUylcXHRcXHQrPSBwcm9jLXN5bXMub1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaD03MD12b2lkIG5vdGVfcGFnZV9mbHVzaChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaDo3MTojaWZkZWYgQ09ORklHX1BURFVNUF9ERUJVR0ZTXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaC03Mi0jZGVmaW5lIEVGSV9SVU5USU1FX01BUF9FTkRcXHRERUZBVUxUX01BUF9XSU5ET1dfNjRcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmg9NzU9c3RhdGljIGlubGluZSB2b2lkIHB0ZHVtcF9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyxcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTc2LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKm5hbWUpIHsgfVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmg6Nzc6I2VuZGlmIC8qIENPTkZJR19QVERVTVBfREVCVUdGUyAqL1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmgtNzgtI2Vsc2VcXG4tLVxcbmFyY2gvYXJtNjQvbW0vTWFrZWZpbGU9OD1vYmotJChDT05GSUdfUFREVU1QKVxcdFxcdCs9IHB0ZHVtcC5vXFxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcXHQrPSBwdGR1bXBfZGVidWdmcy5vXFxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfVFJBTlNfVEFCTEUpXFx0Kz0gdHJhbnNfcGdkLm9cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnPTc5PUNPTkZJR19QUENfRUFSTFlfREVCVUc9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnOjgwOkNPTkZJR19QVERVTVBfREVCVUdGUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BQQ19CT09LM1NfNjQpXFx0Kz0gYm9vazNzNjQub1xcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvTWFrZWZpbGUtMTAtXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9NYWtlZmlsZToxMTppZmRlZiBDT05GSUdfUFREVU1QX0RFQlVHRlNcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19QUENfQk9PSzNTXzMyKVxcdCs9IGJhdHMubyBzZWdtZW50X3JlZ3Mub1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYz00MDY9c3RhdGljIGludCBfX2luaXQgcHRkdW1wX2luaXQodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtNDE5LVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM6NDIwOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QVERVTVBfREVCVUdGUykpXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy00MjEtXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwia2VybmVsX3BhZ2VfdGFibGVzXFxcIiwgMDQwMCwgTlVMTCwgTlVMTCwgXFx1MDAyNnB0ZHVtcF9mb3BzKTtcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz04NDI9Q09ORklHX0RFQlVHX1dYPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODQzOkNPTkZJR19QVERVTVBfREVCVUdGUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTg0NC1DT05GSUdfREVCVUdfT0JKRUNUUz15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9ODIxPUNPTkZJR19ERUJVR19XWD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjgyMjpDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy04MjMtQ09ORklHX0RFQlVHX01FTU9SWV9JTklUPXlcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0xODI9Ym9vbCBwdGR1bXBfY2hlY2tfd3godm9pZClcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yMjQtXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjIyNTojaWZkZWYgQ09ORklHX1BURFVNUF9ERUJVR0ZTXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIyNi1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0yNTU9REVGSU5FX1NIT1dfQVRUUklCVVRFKHB0ZHVtcCk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjI1NjojZW5kaWYgLyogQ09ORklHX1BURFVNUF9ERUJVR0ZTICovXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1Ny1cXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0zMTU9c3RhdGljIGludCBwdF9kdW1wX2luaXQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0zNTUtXFx0c29ydChcXHUwMDI2bWFya2Vyc1sxXSwgbWFya2Vyc19jbnQgLSAxLCBzaXplb2YoKm1hcmtlcnMpLCBwdGR1bXBfY21wLCBOVUxMKTtcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MzU2OiNpZmRlZiBDT05GSUdfUFREVU1QX0RFQlVHRlNcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMzU3LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImtlcm5lbF9wYWdlX3RhYmxlc1xcXCIsIDA0MDAsIE5VTEwsIE5VTEwsIFxcdTAwMjZwdGR1bXBfZm9wcyk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjM1ODojZW5kaWYgLyogQ09ORklHX1BURFVNUF9ERUJVR0ZTICovXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTM1OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L21tL01ha2VmaWxlPTM3PW9iai0kKENPTkZJR19QVERVTVApXFx0XFx0Kz0gZHVtcF9wYWdldGFibGVzLm9cXG5hcmNoL3g4Ni9tbS9NYWtlZmlsZTozODpvYmotJChDT05GSUdfUFREVU1QX0RFQlVHRlMpXFx0Kz0gZGVidWdfcGFnZXRhYmxlcy5vXFxuYXJjaC94ODYvbW0vTWFrZWZpbGUtMzktXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9hcm0tcnVudGltZS5jLTI3LVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2FybS1ydW50aW1lLmM6Mjg6I2lmIGRlZmluZWQoQ09ORklHX1BURFVNUF9ERUJVR0ZTKSB8fCBkZWZpbmVkKENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlMpXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvYXJtLXJ1bnRpbWUuYy0yOS0jaW5jbHVkZSBcXHUwMDNjYXNtL3B0ZHVtcC5oXFx1MDAzZVxcbi0tXFxua2VybmVsL2NvbmZpZ3MvZGVidWcuY29uZmlnPTc4PUNPTkZJR19LQVNBTl9WTUFMTE9DPXlcXG5rZXJuZWwvY29uZmlncy9kZWJ1Zy5jb25maWc6Nzk6Q09ORklHX1BURFVNUF9ERUJVR0ZTPXlcXG5rZXJuZWwvY29uZmlncy9kZWJ1Zy5jb25maWctODAtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnPTIxOT1jb25maWcgUFREVU1QXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTIyMS1cXG5tbS9LY29uZmlnLmRlYnVnOjIyMjpjb25maWcgUFREVU1QX0RFQlVHRlNcXG5tbS9LY29uZmlnLmRlYnVnLTIyMy1cXHRib29sIFxcXCJFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXFxcIlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0PTExND1DT05GSUdfUFJPVkVfTE9DS0lORz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjExNTpDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC0xMTYtQ09ORklHX1JDX0RFVklDRVM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD05NT1DT05GSUdfUFJPVkVfTE9DS0lORz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo5NjpDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHgtOTctQ09ORklHX1JDX0RFVklDRVM9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MTowNi40NjY1NjIzMzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgxOTYyNjY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIERlYnVnZ2luZyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgUFREVU1QX0RFQlVHRlNgLiBUaGF0J3MgYSBwcmV0dHkgZ2VuZXJpYyBjb25maWcgb3B0aW9uLCBJIHNlZSBpdCBwb3BwaW5nIHVwIGluIHZhcmlvdXMgcGxhY2VzLiBUaGVuIHRoZXJlJ3MgYERFQlVHX1dYYCwgYW5kIHRoYXQgb25lIHNwZWNpZmljYWxseSBzZWVtcyB0byBsZXZlcmFnZSBgcHRkdW1wX2NoZWNrX3d4YC4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCB0cmFjayB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmZWF0dXJlcyBpbnRlcmNvbm5lY3QuIE9rYXksIGxldCdzIHpvb20gaW4gb24gYERFQlVHX1dYYCBhbmQgc2VlIHdoYXQgdGhhdCdzIGFsbCBhYm91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzNzMsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MTowOS4yODYxOTI1MjRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzcyOTg3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREVCVUdfV1hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NjUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtL0tjb25maWcuZGVidWc9Nj1jb25maWcgQVJNX1BURFVNUF9ERUJVR0ZTXFxuLS1cXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnLTE5LVxcbmFyY2gvYXJtL0tjb25maWcuZGVidWc6MjA6Y29uZmlnIEFSTV9ERUJVR19XWFxcbmFyY2gvYXJtL0tjb25maWcuZGVidWctMjEtXFx0Ym9vbCBcXFwiV2FybiBvbiBXK1ggbWFwcGluZ3MgYXQgYm9vdFxcXCJcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz0yNTM9Q09ORklHX0RFQlVHX0ZTPXlcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc6MjU0OkNPTkZJR19BUk1fREVCVUdfV1g9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy0yNTUtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9MzAzPUNPTkZJR19ERUJVR19GUz15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnOjMwNDpDT05GSUdfQVJNX0RFQlVHX1dYPXlcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctMzA1LUNPTkZJR19TQ0hFRF9TVEFDS19FTkRfQ0hFQ0s9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc9MjI3PUNPTkZJR19ERUJVR19GUz15XFxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc6MjI4OkNPTkZJR19BUk1fREVCVUdfV1g9eVxcbi0tXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MzE9dm9pZCBwdGR1bXBfY2hlY2tfd3godm9pZCk7XFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0zNC1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDozNTojaWZkZWYgQ09ORklHX0FSTV9ERUJVR19XWFxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTM2LSNkZWZpbmUgYXJtX2RlYnVnX2NoZWNrd3goKSBwdGR1bXBfY2hlY2tfd3goKVxcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWctMTMtXFx0c2VsZWN0IEFDUElfUFBUVCBpZiBBQ1BJXFxuYXJjaC9hcm02NC9LY29uZmlnOjE0OlxcdHNlbGVjdCBBUkNIX0hBU19ERUJVR19XWFxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNS1cXHRzZWxlY3QgQVJDSF9CSU5GTVRfRUxGX0VYVFJBX1BIRFJTXFxuLS1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZz0xMTg9Y29uZmlnIFBQQ1xcbi0tXFxuYXJjaC9wb3dlcnBjL0tjb25maWctMTMyLVxcdHNlbGVjdCBBUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFXFxuYXJjaC9wb3dlcnBjL0tjb25maWc6MTMzOlxcdHNlbGVjdCBBUkNIX0hBU19ERUJVR19XWFxcdFxcdGlmIFNUUklDVF9LRVJORUxfUldYXFxuYXJjaC9wb3dlcnBjL0tjb25maWctMTM0LVxcdHNlbGVjdCBBUkNIX0hBU19ERVZNRU1fSVNfQUxMT1dFRFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTM5Nj1DT05GSUdfREVCVUdfUk9EQVRBX1RFU1Q9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzozOTc6Q09ORklHX0RFQlVHX1dYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctMzk4LUNPTkZJR19ERUJVR19TVEFDS19VU0FHRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTE4ND1zdGF0aWMgdm9pZCBub3RlX3Byb3Rfd3goc3RydWN0IHBnX3N0YXRlICpzdCwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0xOTMtXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzoxOTQ6XFx0V0FSTl9PTkNFKElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX1dYKSxcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTE5NS1cXHRcXHQgIFxcXCJwb3dlcnBjL21tOiBGb3VuZCBpbnNlY3VyZSBXK1ggbWFwcGluZyBhdCBhZGRyZXNzICVwLyVwU1xcXFxuXFxcIixcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZz0xMz1jb25maWcgUklTQ1ZcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0zMC1cXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfVk1fUEdUQUJMRVxcbmFyY2gvcmlzY3YvS2NvbmZpZzozMTpcXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcXG5hcmNoL3Jpc2N2L0tjb25maWctMzItXFx0c2VsZWN0IEFSQ0hfSEFTX0VMRl9DT1JFX0VGTEFHUyBpZiBCSU5GTVRfRUxGIFxcdTAwMjZcXHUwMDI2IEVMRl9DT1JFXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZz03NT1jb25maWcgUzM5MFxcbi0tXFxuYXJjaC9zMzkwL0tjb25maWctOTAtXFx0c2VsZWN0IEFSQ0hfSEFTX0RFQlVHX1ZNX1BHVEFCTEVcXG5hcmNoL3MzOTAvS2NvbmZpZzo5MTpcXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcXG5hcmNoL3MzOTAvS2NvbmZpZy05Mi1cXHRzZWxlY3QgQVJDSF9IQVNfREVWTUVNX0lTX0FMTE9XRURcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz04NDE9Q09ORklHX0RFQlVHX1JPREFUQV9URVNUPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODQyOkNPTkZJR19ERUJVR19XWD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTg0My1DT05GSUdfUFREVU1QX0RFQlVHRlM9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTgyMD1DT05GSUdfTUFHSUNfU1lTUlE9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo4MjE6Q09ORklHX0RFQlVHX1dYPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctODIyLUNPTkZJR19QVERVTVBfREVCVUdGUz15XFxuLS1cXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM9NzE9c3RhdGljIHZvaWQgbm90ZV9wcm90X3d4KHN0cnVjdCBwZ19zdGF0ZSAqc3QsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy04OC1cXHRcXHRyZXR1cm47XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjg5OlxcdFdBUk5fT05DRShJU19FTkFCTEVEKENPTkZJR19ERUJVR19XWCksXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTkwLVxcdFxcdCAgXFxcInMzOTAvbW06IEZvdW5kIGluc2VjdXJlIFcrWCBtYXBwaW5nIGF0IGFkZHJlc3MgJXBTXFxcXG5cXFwiLFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTExMS1cXHRzZWxlY3QgQVJDSF9IQVNfVUJTQU5cXG5hcmNoL3g4Ni9LY29uZmlnOjExMjpcXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcXG5hcmNoL3g4Ni9LY29uZmlnLTExMy1cXHRzZWxlY3QgQVJDSF9IQVNfWk9ORV9ETUFfU0VUIGlmIEVYUEVSVFxcbi0tXFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTI2NT1DT05GSUdfTUFHSUNfU1lTUlE9eVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoyNjY6Q09ORklHX0RFQlVHX1dYPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMjY3LUNPTkZJR19ERUJVR19TVEFDS19VU0FHRT15XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MzY9dm9pZCBwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTQzLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDo0NDojaWZkZWYgQ09ORklHX0RFQlVHX1dYXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTQ1LSNkZWZpbmUgZGVidWdfY2hlY2t3eF91c2VyKClcXHRwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY1NTU9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9uYW1lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY1Njk6XFx0SVBXX0RFQlVHX1dYKFxcXCJOYW1lOiAlc1xcXFxuXFxcIiwgd3JxdS1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjU3MC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY1NzM9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9mcmVxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjA5LVxcdH0gZWxzZSB7XFx0XFx0LyogU2V0IHRoZSBjaGFubmVsICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjYxMDpcXHRcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBGcmVxL0NoYW5uZWwgLVxcdTAwM2UgJWRcXFxcblxcXCIsIGZ3cnEtXFx1MDAzZW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2MTEtXFx0XFx0ZXJyID0gaXB3MjEwMF9zZXRfY2hhbm5lbChwcml2LCBmd3JxLVxcdTAwM2VtLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY2MTk9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9mcmVxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY2Mzk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgRnJlcS9DaGFubmVsIC1cXHUwMDNlICVkXFxcXG5cXFwiLCBwcml2LVxcdTAwM2VjaGFubmVsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjQwLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NjY0ND1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjY1MTpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBNb2RlIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2Vtb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NjY4Mz1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2OTMtXFx0d3JxdS1cXHUwMDNlbW9kZSA9IHByaXYtXFx1MDAzZWllZWUtXFx1MDAzZWl3X21vZGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjY5NDpcXHRJUFdfREVCVUdfV1goXFxcIkdFVCBNb2RlIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2Vtb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02Njk1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NjcxOD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3JhbmdlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY4Mzg6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUmFuZ2VcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY4MzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02ODQzPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODYyLVxcdFxcdC8qIHdlIGRpc2FibGUgbWFuZGF0b3J5IEJTU0lEIGFzc29jaWF0aW9uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njg2MzpcXHRcXHRJUFdfREVCVUdfV1goXFxcImV4aXQgLSBkaXNhYmxlIG1hbmRhdG9yeSBCU1NJRFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjg2NC1cXHRcXHRwcml2LVxcdTAwM2Vjb25maWcgXFx1MDAyNj0gfkNGR19TVEFUSUNfQlNTSUQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY4NzQ6XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgQlNTSUQgLVxcdTAwM2UgJXBNXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VhcF9hZGRyLnNhX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY4NzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02ODgxPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY4OTk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHZXR0aW5nIFdBUCBCU1NJRDogJXBNXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VhcF9hZGRyLnNhX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MDAtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02OTAzPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfZXNzaWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MjMtXFx0aWYgKGxlbmd0aCA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjkyNDpcXHRcXHRJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgRVNTSUQgdG8gQU5ZXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTI1LVxcdFxcdHByaXYtXFx1MDAzZWNvbmZpZyBcXHUwMDI2PSB+Q0ZHX1NUQVRJQ19FU1NJRDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MzQtXFx0aWYgKHByaXYtXFx1MDAzZWVzc2lkX2xlbiA9PSBsZW5ndGggXFx1MDAyNlxcdTAwMjYgIW1lbWNtcChwcml2LVxcdTAwM2Vlc3NpZCwgZXh0cmEsIGxlbmd0aCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2OTM1OlxcdFxcdElQV19ERUJVR19XWChcXFwiRVNTSUQgc2V0IHRvIGN1cnJlbnQgRVNTSUQuXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTM2LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY5NDA6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXR0aW5nIEVTU0lEOiAnJSpwRScgKCVkKVxcXFxuXFxcIiwgbGVuZ3RoLCBlc3NpZCwgbGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTQxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9Njk1Mj1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X2Vzc2lkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTY0LVxcdGlmIChwcml2LVxcdTAwM2Vjb25maWcgXFx1MDAyNiBDRkdfU1RBVElDX0VTU0lEIHx8IHByaXYtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IFNUQVRVU19BU1NPQ0lBVEVEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk2NTpcXHRcXHRJUFdfREVCVUdfV1goXFxcIkdldHRpbmcgZXNzaWQ6ICclKnBFJ1xcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTY2LVxcdFxcdFxcdCAgICAgcHJpdi1cXHUwMDNlZXNzaWRfbGVuLCBwcml2LVxcdTAwM2Vlc3NpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTcwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk3MTpcXHRcXHRJUFdfREVCVUdfV1goXFxcIkdldHRpbmcgZXNzaWQ6IEFOWVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjk3Mi1cXHRcXHR3cnF1LVxcdTAwM2Vlc3NpZC5sZW5ndGggPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9Njk3OT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk5NjpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBOaWNrbmFtZSAtXFx1MDAzZSAlc1xcXFxuXFxcIiwgcHJpdi1cXHUwMDNlbmljayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjk5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcwMDE9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9uaWNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcwMTU6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgTmlja25hbWUgLVxcdTAwM2UgJXNcXFxcblxcXCIsIGV4dHJhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDE2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzAyMD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X3JhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcwNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzA1NDpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBSYXRlIC1cXHUwMDNlICUwNFhcXFxcblxcXCIsIHJhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcwNTUtICAgICAgZG9uZTpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcwNjA9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDgzLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MDg0OlxcdFxcdElQV19ERUJVR19XWChcXFwiZmFpbGVkIHF1ZXJ5aW5nIG9yZGluYWxzLlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzA4NS1cXHRcXHRnb3RvIGRvbmU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcxMDU6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUmF0ZSAtXFx1MDAzZSAlZFxcXFxuXFxcIiwgd3JxdS1cXHUwMDNlYml0cmF0ZS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcxMTI9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcxNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzE0MTpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBSVFMgVGhyZXNob2xkIC1cXHUwMDNlIDB4JTA4WFxcXFxuXFxcIiwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcxNDItICAgICAgZG9uZTpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcxNDc9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcxNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzE2MzpcXHRJUFdfREVCVUdfV1goXFxcIkdFVCBSVFMgVGhyZXNob2xkIC1cXHUwMDNlIDB4JTA4WFxcXFxuXFxcIiwgd3JxdS1cXHUwMDNlcnRzLnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzE2OD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X3R4cG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcyMDI6XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgVFggUG93ZXIgLVxcdTAwM2UgJWRcXFxcblxcXCIsIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzIwOT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3R4cG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcyMzE6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgVFggUG93ZXIgLVxcdTAwM2UgJWRcXFxcblxcXCIsIHdycXUtXFx1MDAzZXR4cG93ZXIudmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcyMzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MjM2PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfZnJhZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzI2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MjYxOlxcdElQV19ERUJVR19XWChcXFwiU0VUIEZyYWcgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCBwcml2LVxcdTAwM2VpZWVlLVxcdTAwM2VmdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcyNjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MjY2PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfZnJhZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzI3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3Mjc5OlxcdElQV19ERUJVR19XWChcXFwiR0VUIEZyYWcgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VmcmFnLnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzI4ND1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X3JldHJ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzA0LVxcdFxcdGVyciA9IGlwdzIxMDBfc2V0X3Nob3J0X3JldHJ5KHByaXYsIHdycXUtXFx1MDAzZXJldHJ5LnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzA1OlxcdFxcdElQV19ERUJVR19XWChcXFwiU0VUIFNob3J0IFJldHJ5IExpbWl0IC1cXHUwMDNlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczMDYtXFx0XFx0XFx0ICAgICB3cnF1LVxcdTAwM2VyZXRyeS52YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzExLVxcdFxcdGVyciA9IGlwdzIxMDBfc2V0X2xvbmdfcmV0cnkocHJpdiwgd3JxdS1cXHUwMDNlcmV0cnkudmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjczMTI6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgTG9uZyBSZXRyeSBMaW1pdCAtXFx1MDAzZSAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzEzLVxcdFxcdFxcdCAgICAgd3JxdS1cXHUwMDNlcmV0cnkudmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzMyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzIxOlxcdElQV19ERUJVR19XWChcXFwiU0VUIEJvdGggUmV0cnkgTGltaXRzIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VyZXRyeS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzMyMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTczMjg9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzU1OlxcdElQV19ERUJVR19XWChcXFwiR0VUIFJldHJ5IC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VyZXRyeS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTczNjA9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9zY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjczNzM6XFx0SVBXX0RFQlVHX1dYKFxcXCJJbml0aWF0aW5nIHNjYW4uLi5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03Mzc2LVxcdGlmIChpcHcyMTAwX3NldF9zY2FuX29wdGlvbnMocHJpdikgfHwgaXB3MjEwMF9zdGFydF9zY2FuKHByaXYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzM3NzpcXHRcXHRJUFdfREVCVUdfV1goXFxcIlN0YXJ0IHNjYW4gZmFpbGVkLlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTc0Mjc9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9wb3dlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzQ0Mi1cXHRcXHRlcnIgPSBpcHcyMTAwX3NldF9wb3dlcl9tb2RlKHByaXYsIElQV19QT1dFUl9NT0RFX0NBTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ0MzpcXHRcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBQb3dlciBNYW5hZ2VtZW50IE1vZGUgLVxcdTAwM2Ugb2ZmXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDQ0LVxcdFxcdGdvdG8gZG9uZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0NTItXFx0ZGVmYXVsdDpcXHRcXHQvKiBPdGhlcndpc2Ugd2UgZG9uJ3Qgc3VwcG9ydCBpdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjc0NTM6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgUE0gTW9kZTogJVggbm90IHN1cHBvcnRlZC5cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzQ1NC1cXHRcXHRcXHQgICAgIHdycXUtXFx1MDAzZXBvd2VyLmZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0NjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ2NDpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBQb3dlciBNYW5hZ2VtZW50IE1vZGUgLVxcdTAwM2UgMHglMDJYXFxcXG5cXFwiLCBwcml2LVxcdTAwM2Vwb3dlcl9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDY1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzQ3Mj1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3Bvd2VyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjc0ODk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUG93ZXIgTWFuYWdlbWVudCBNb2RlIC1cXHUwMDNlICUwMlhcXFxcblxcXCIsIHByaXYtXFx1MDAzZXBvd2VyX21vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz04MDY1PXN0YXRpYyBzdHJ1Y3QgaXdfc3RhdGlzdGljcyAqaXB3MjEwMF93eF93aXJlbGVzc19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE2OS1cXHRcXHRpZiAoYmVhY29uX3F1YWwgPT0gcXVhbGl0eSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTcwOlxcdFxcdFxcdElQV19ERUJVR19XWChcXFwiUXVhbGl0eSBjbGFtcGVkIGJ5IE1pc3NlZCBCZWFjb25zXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTcxLVxcdFxcdGVsc2UgaWYgKHR4X3F1YWwgPT0gcXVhbGl0eSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTcyOlxcdFxcdFxcdElQV19ERUJVR19XWChcXFwiUXVhbGl0eSBjbGFtcGVkIGJ5IFR4IFJldHJpZXNcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgxNzMtXFx0XFx0ZWxzZSBpZiAocXVhbGl0eSAhPSAxMDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6ODE3NDpcXHRcXHRcXHRJUFdfREVCVUdfV1goXFxcIlF1YWxpdHkgY2xhbXBlZCBieSBTaWduYWwgU3RyZW5ndGhcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgxNzUtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjgxNzY6XFx0XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJRdWFsaXR5IG5vdCBjbGFtcGVkLlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE3Ny0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgxOTctICAgICAgZmFpbF9nZXRfb3JkaW5hbDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTk4OlxcdElQV19ERUJVR19XWChcXFwiZmFpbGVkIHF1ZXJ5aW5nIG9yZGluYWxzLlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTgyMTM9c3RhdGljIHZvaWQgaXB3MjEwMF93eF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgyMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6ODIyNTpcXHRJUFdfREVCVUdfV1goXFxcImVudGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MjI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODI0OC1cXHRpZiAoIShwcml2LVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBTVEFUVVNfQVNTT0NJQVRFRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MjQ5OlxcdFxcdElQV19ERUJVR19XWChcXFwiQ29uZmlndXJpbmcgRVNTSURcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgyNTAtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlYWN0aW9uX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oPTM5PXN0cnVjdCBpcHcyMTAwX3J4X3BhY2tldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oLTk5LSNkZWZpbmUgSVBXX0RFQlVHX0lORk8oZi4uLikgICAgSVBXX0RFQlVHKElQV19ETF9JTkZPLCAjIyBmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oOjEwMDojZGVmaW5lIElQV19ERUJVR19XWChmLi4uKSAgICAgSVBXX0RFQlVHKElQV19ETF9XWCwgIyMgZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuaC0xMDEtI2RlZmluZSBJUFdfREVCVUdfU0NBTihmLi4uKSAgIElQV19ERUJVRyhJUFdfRExfU0NBTiwgIyMgZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTYwMjE9c3RhdGljIHZvaWQgaXB3X3NldF9maXhlZF9yYXRlKHN0cnVjdCBpcHdfcHJpdiAqcHJpdiwgaW50IG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDM2LVxcdFxcdFxcdC8qIEludmFsaWQgZml4ZWQgcmF0ZSBtYXNrICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjAzNzpcXHRcXHRcXHRJUFdfREVCVUdfV1hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDM4LVxcdFxcdFxcdCAgICAoXFxcImludmFsaWQgZml4ZWQgcmF0ZSBtYXNrIGluIGlwd19zZXRfZml4ZWRfcmF0ZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDUwLVxcdFxcdFxcdFxcdC8qIEludmFsaWQgZml4ZWQgcmF0ZSBtYXNrICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjA1MTpcXHRcXHRcXHRcXHRJUFdfREVCVUdfV1hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDUyLVxcdFxcdFxcdFxcdCAgICAoXFxcImludmFsaWQgZml4ZWQgcmF0ZSBtYXNrIGluIGlwd19zZXRfZml4ZWRfcmF0ZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDYxLVxcdFxcdFxcdC8qIEludmFsaWQgZml4ZWQgcmF0ZSBtYXNrICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjA2MjpcXHRcXHRcXHRJUFdfREVCVUdfV1hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDYzLVxcdFxcdFxcdCAgICAoXFxcImludmFsaWQgZml4ZWQgcmF0ZSBtYXNrIGluIGlwd19zZXRfZml4ZWRfcmF0ZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz02MjIyPXN0YXRpYyBpbnQgaXB3X3JlcXVlc3Rfc2Nhbl9oZWxwZXIoc3RydWN0IGlwd19wcml2ICpwcml2LCBpbnQgdHlwZSwgaW50IGRpcmVjdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTYyNjQtXFx0aWYgKHR5cGUgPT0gSVdfU0NBTl9UWVBFX1BBU1NJVkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo2MjY1OlxcdFxcdElQV19ERUJVR19XWChcXFwidXNlIHBhc3NpdmUgc2Nhbm5pbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTYyNjYtXFx0XFx0c2Nhbl90eXBlID0gSVBXX1NDQU5fUEFTU0lWRV9GVUxMX0RXRUxMX1NDQU47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04NjAwPXN0YXRpYyBpbnQgaXB3X3d4X3NldF9mcmVxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04NjExLVxcdGlmIChmd3JxLVxcdTAwM2VtID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4NjEyOlxcdFxcdElQV19ERUJVR19XWChcXFwiU0VUIEZyZXEvQ2hhbm5lbCAtXFx1MDAzZSBhbnlcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MTMtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODYzNi1cXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBMSUJJUFdfQ0hfUEFTU0lWRV9PTkxZKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODYzNzpcXHRcXHRcXHRJUFdfREVCVUdfV1goXFxcIkludmFsaWQgQWQtSG9jIGNoYW5uZWwgZm9yIDgwMi4xMWFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MzgtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04NjQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2NDI6XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgRnJlcS9DaGFubmVsIC1cXHUwMDNlICVkXFxcXG5cXFwiLCBmd3JxLVxcdTAwM2VtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04NjQzLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTg2NDk9c3RhdGljIGludCBpcHdfd3hfZ2V0X2ZyZXEoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2ODMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODY4NDpcXHRJUFdfREVCVUdfV1goXFxcIkdFVCBGcmVxL0NoYW5uZWwgLVxcdTAwM2UgJWRcXFxcblxcXCIsIHByaXYtXFx1MDAzZWNoYW5uZWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2ODUtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04Njg4PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04Njk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2OTU6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXQgTU9ERTogJWRcXFxcblxcXCIsIHdycXUtXFx1MDAzZW1vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2OTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04NzQwPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04NzQ2LVxcdHdycXUtXFx1MDAzZW1vZGUgPSBwcml2LVxcdTAwM2VpZWVlLVxcdTAwM2Vpd19tb2RlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg3NDc6XFx0SVBXX0RFQlVHX1dYKFxcXCJHZXQgTU9ERSAtXFx1MDAzZSAlZFxcXFxuXFxcIiwgd3JxdS1cXHUwMDNlbW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODc0OC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTg3Njk9c3RhdGljIGludCBpcHdfd3hfZ2V0X3JhbmdlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04ODU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4NTk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUmFuZ2VcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4NjAtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04ODYzPXN0YXRpYyBpbnQgaXB3X3d4X3NldF93YXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4NzQtXFx0XFx0Lyogd2UgZGlzYWJsZSBtYW5kYXRvcnkgQlNTSUQgYXNzb2NpYXRpb24gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4ODc1OlxcdFxcdElQV19ERUJVR19XWChcXFwiU2V0dGluZyBBUCBCU1NJRCB0byBBTllcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4NzYtXFx0XFx0cHJpdi1cXHUwMDNlY29uZmlnIFxcdTAwMjY9IH5DRkdfU1RBVElDX0JTU0lEO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODg4NS1cXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChwcml2LVxcdTAwM2Vic3NpZCwgd3JxdS1cXHUwMDNlYXBfYWRkci5zYV9kYXRhKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4ODY6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJCU1NJRCBzZXQgdG8gY3VycmVudCBCU1NJRC5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4ODctXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04ODkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4OTE6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXR0aW5nIG1hbmRhdG9yeSBCU1NJRCB0byAlcE1cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODg5Mi1cXHRcXHQgICAgIHdycXUtXFx1MDAzZWFwX2FkZHIuc2FfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTA1PXN0YXRpYyBpbnQgaXB3X3d4X2dldF93YXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODkyMTpcXHRJUFdfREVCVUdfV1goXFxcIkdldHRpbmcgV0FQIEJTU0lEOiAlcE1cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODkyMi1cXHRcXHQgICAgIHdycXUtXFx1MDAzZWFwX2FkZHIuc2FfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTI3PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODkzNy0gICAgICAgIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTM4OiAgICAgICAgICAgICAgICBJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgRVNTSUQgdG8gQU5ZXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04OTM5LSAgICAgICAgICAgICAgICBpcHdfZGlzYXNzb2NpYXRlKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk1MS1cXHQgICAgXFx1MDAyNlxcdTAwMjYgKHByaXYtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IChTVEFUVVNfQVNTT0NJQVRFRCB8IFNUQVRVU19BU1NPQ0lBVElORykpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODk1MjpcXHRcXHRJUFdfREVCVUdfV1goXFxcIkVTU0lEIHNldCB0byBjdXJyZW50IEVTU0lELlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk1My1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODk1NzpcXHRJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgRVNTSUQ6ICclKnBFJyAoJWQpXFxcXG5cXFwiLCBsZW5ndGgsIGV4dHJhLCBsZW5ndGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5NTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTcxPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk4MS1cXHQgICAgcHJpdi1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgKFNUQVRVU19BU1NPQ0lBVEVEIHwgU1RBVFVTX0FTU09DSUFUSU5HKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg5ODI6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJHZXR0aW5nIGVzc2lkOiAnJSpwRSdcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk4My1cXHRcXHRcXHQgICAgIHByaXYtXFx1MDAzZWVzc2lkX2xlbiwgcHJpdi1cXHUwMDNlZXNzaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk4Ny1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg5ODg6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJHZXR0aW5nIGVzc2lkOiBBTllcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5ODktXFx0XFx0d3JxdS1cXHUwMDNlZXNzaWQubGVuZ3RoID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTg5OTY9c3RhdGljIGludCBpcHdfd3hfc2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkwMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTAwMjpcXHRJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgbmljayB0byAnJXMnXFxcXG5cXFwiLCBleHRyYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAwMy1cXHRpZiAod3JxdS1cXHUwMDNlZGF0YS5sZW5ndGggXFx1MDAzZSBJV19FU1NJRF9NQVhfU0laRSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkwMTU9c3RhdGljIGludCBpcHdfd3hfZ2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkwMTktXFx0c3RydWN0IGlwd19wcml2ICpwcml2ID0gbGliaXB3X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MDIwOlxcdElQV19ERUJVR19XWChcXFwiR2V0dGluZyBuaWNrXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDIxLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkwMjk9c3RhdGljIGludCBpcHdfd3hfc2V0X3NlbnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkwMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTAzNjpcXHRJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgcm9hbWluZyB0aHJlc2hvbGQgdG8gJWRcXFxcblxcXCIsIHdycXUtXFx1MDAzZXNlbnMudmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwMzc6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXR0aW5nIGRpc2Fzc29jaWF0ZSB0aHJlc2hvbGQgdG8gJWRcXFxcblxcXCIsIDMqd3JxdS1cXHUwMDNlc2Vucy52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAzOC1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDU5PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9zZW5zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwNjk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgcm9hbWluZyB0aHJlc2hvbGQgLVxcdTAwM2UgJXMgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTA3MC1cXHRcXHQgICAgIHdycXUtXFx1MDAzZXBvd2VyLmRpc2FibGVkID8gXFxcIk9GRlxcXCIgOiBcXFwiT05cXFwiLCB3cnF1LVxcdTAwM2Vwb3dlci52YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDc1PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxNTg6XFx0SVBXX0RFQlVHX1dYKFxcXCJpbnZhbGlkIHJhdGUgc3BlY2lmaWVkLCByZXR1cm5pbmcgZXJyb3JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNTktXFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTYxLSAgICAgIGFwcGx5OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxNjI6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXR0aW5nIHJhdGUgbWFzayB0byAweCUwOFggWyVzXVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTYzLVxcdFxcdCAgICAgbWFzaywgZml4ZWQgPyBcXFwiZml4ZWRcXFwiIDogXFxcInN1Yi1yYXRlc1xcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTE3MS1cXHRpZiAocHJpdi1cXHUwMDNlcmF0ZXNfbWFzayA9PSBtYXNrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTE3MjpcXHRcXHRJUFdfREVCVUdfV1goXFxcIk1hc2sgc2V0IHRvIGN1cnJlbnQgbWFzay5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNzMtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MTg4PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTk2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxOTc6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUmF0ZSAtXFx1MDAzZSAlZFxcXFxuXFxcIiwgd3JxdS1cXHUwMDNlYml0cmF0ZS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTE5OC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkyMDE9c3RhdGljIGludCBpcHdfd3hfc2V0X3J0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTIxOS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MjIwOlxcdElQV19ERUJVR19XWChcXFwiU0VUIFJUUyBUaHJlc2hvbGQgLVxcdTAwM2UgJWRcXFxcblxcXCIsIHByaXYtXFx1MDAzZXJ0c190aHJlc2hvbGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMjEtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MjI0PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMzMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTIzNDpcXHRJUFdfREVCVUdfV1goXFxcIkdFVCBSVFMgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VydHMudmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMzUtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MjcyPXN0YXRpYyBpbnQgaXB3X3d4X2dldF90eHBvdyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTI4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5Mjg0OlxcdElQV19ERUJVR19XWChcXFwiR0VUIFRYIFBvd2VyIC1cXHUwMDNlICVzICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyODUtXFx0XFx0ICAgICB3cnF1LVxcdTAwM2Vwb3dlci5kaXNhYmxlZCA/IFxcXCJPRkZcXFwiIDogXFxcIk9OXFxcIiwgd3JxdS1cXHUwMDNlcG93ZXIudmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTI5MD1zdGF0aWMgaW50IGlwd193eF9zZXRfZnJhZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTMwOS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MzEwOlxcdElQV19ERUJVR19XWChcXFwiU0VUIEZyYWcgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VmcmFnLnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MzExLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTMxND1zdGF0aWMgaW50IGlwd193eF9nZXRfZnJhZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTMyMy1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MzI0OlxcdElQV19ERUJVR19XWChcXFwiR0VUIEZyYWcgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VmcmFnLnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MzI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTMyOT1zdGF0aWMgaW50IGlwd193eF9zZXRfcmV0cnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzNTYtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTM1NzpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCByZXRyeSBsaW1pdCAtXFx1MDAzZSBzaG9ydDolZCBsb25nOiVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzNTgtXFx0XFx0ICAgICBwcml2LVxcdTAwM2VzaG9ydF9yZXRyeV9saW1pdCwgcHJpdi1cXHUwMDNlbG9uZ19yZXRyeV9saW1pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MzYyPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5Mzg4OlxcdElQV19ERUJVR19XWChcXFwiR0VUIHJldHJ5IC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VyZXRyeS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTM4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkzOTM9c3RhdGljIGludCBpcHdfd3hfc2V0X3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MToxMS4xMjM0OTY5NTJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxODczNTM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhZ2UgVGFibGUgRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gY29kZSwgYW5kIGBERUJVR19XWGAgc2VlbXMgdG8gYmUgYSBnZW5lcmFsIG9wdGlvbi4gUmlnaHQsIHNvIGBDT05GSUdfUFREVU1QX0RFQlVHRlNgIGFuZCBgQ09ORklHX0RFQlVHX1dYYCBhcmUgdGhlIHJlYWwgcGxheWVycyBoZXJlLCBzaW5jZSB0aGV5IGxldmVyYWdlIGBwdGR1bXBfd2Fsa19wZ2RgLiBIbW0sIG5vdyB0aGUgcXVlc3Rpb24gaXM6IGlzIGBDT05GSUdfREVCVUdfV1hgIGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgZG8gSSBuZWVkIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBpdD8gSXQncyBwcm9iYWJseSBiZXR0ZXIgdG8gZ28gYWhlYWQgYW5kIGluY29ycG9yYXRlIGJvdGggYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBpbnRvIGBFbmFibGVDb25maWdzYCB0byBrZWVwIHRoaW5ncyBjbGVhbi5cblxuV2FpdCBhIG1pbnV0ZSwgdGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2Agc28gaXQncyBjYWxsaW5nIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCB3aGVuIGl0J3Mgb3BlcmF0aW5nIG9uIGBcdTAwMjZpbml0X21tYC4gT2theSwgYW5kIHRoYXQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gYG1tL3BhZ2V3YWxrLmNgLiBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZWAgbm93IHRvIGdldCBhIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4NDAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MTUuNDQyMjM0Mzc1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAxMTQ0MzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdD0zNjg9ZXN0YWJsaXNoaW5nIGFuZCB0ZWFyaW5nIGRvd24gcGFnZSBpdHMgcGFnZSB0YWJsZXMuXFxuRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdC0zNjktXFxuRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdDozNzA6SG93ZXZlciwgZm9yIGNvbnZlbmllbmNlIHdlIHByb3ZpZGUgdGhlIDpjOmZ1bmM6YCF3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYFxcbkRvY3VtZW50YXRpb24vbW0vcHJvY2Vzc19hZGRycy5yc3QtMzcxLWZ1bmN0aW9uIHdoaWNoIGlzIHN5bmNocm9uaXNlZCB2aWEgdGhlIG1tYXAgbG9jayBvbiB0aGUgOmM6bWFjcm86YCFpbml0X21tYFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYz05MjU9c3RhdGljIGludCByYW5nZV9zcGxpdF90b19wdGVzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBnZnBfdCBnZnApXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTkyOS1cXHRsYXp5X21tdV9tb2RlX2VuYWJsZSgpO1xcbmFyY2gvYXJtNjQvbW0vbW11LmM6OTMwOlxcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3Moc3RhcnQsIGVuZCxcXG5hcmNoL2FybTY0L21tL21tdS5jLTkzMS1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2c3BsaXRfdG9fcHRlc19vcHMsIE5VTEwsIFxcdTAwMjZnZnApO1xcbi0tXFxuYXJjaC9hcm02NC9tbS9wYWdlYXR0ci5jPTEwNT1zdGF0aWMgaW50IHVwZGF0ZV9yYW5nZV9wcm90KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSxcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcGFnZWF0dHIuYy0xMjQtXFx0ICovXFxuYXJjaC9hcm02NC9tbS9wYWdlYXR0ci5jOjEyNTpcXHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHN0YXJ0LCBzdGFydCArIHNpemUsXFxuYXJjaC9hcm02NC9tbS9wYWdlYXR0ci5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCwgXFx1MDAyNmRhdGEpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vcGFnZWF0dHIuYz0xMDc9c3RhdGljIGludCBfX3NldF9tZW1vcnkodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgbnVtcGFnZXMsIHBncHJvdF90IHNldF9tYXNrLCBwZ3Byb3RfdCBjbGVhcl9tYXNrKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vcGFnZWF0dHIuYy0xMjAtXFx0bW1hcF93cml0ZV9sb2NrKFxcdTAwMjZpbml0X21tKTtcXG5hcmNoL2xvb25nYXJjaC9tbS9wYWdlYXR0ci5jOjEyMTpcXHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIFxcdTAwMjZwYWdlYXR0cl9vcHMsIE5VTEwsIFxcdTAwMjZtYXNrcyk7XFxuYXJjaC9sb29uZ2FyY2gvbW0vcGFnZWF0dHIuYy0xMjItXFx0bW1hcF93cml0ZV91bmxvY2soXFx1MDAyNmluaXRfbW0pO1xcbi0tXFxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmM9NjU9dm9pZCAqYXJjaF9kbWFfc2V0X3VuY2FjaGVkKHZvaWQgKmNwdV9hZGRyLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jLTc0LVxcdG1tYXBfd3JpdGVfbG9jayhcXHUwMDI2aW5pdF9tbSk7XFxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmM6NzU6XFx0ZXJyb3IgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHZhLCB2YSArIHNpemUsXFxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmMtNzYtXFx0XFx0XFx0XFx1MDAyNnNldF9ub2NhY2hlX3dhbGtfb3BzLCBOVUxMLCBOVUxMKTtcXG4tLVxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jPTg0PXZvaWQgYXJjaF9kbWFfY2xlYXJfdW5jYWNoZWQodm9pZCAqY3B1X2FkZHIsIHNpemVfdCBzaXplKVxcbi0tXFxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmMtODktXFx0Lyogd2Fsa19wYWdlX3JhbmdlIHNob3VsZG4ndCBiZSBhYmxlIHRvIGZhaWwgaGVyZSAqL1xcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jOjkwOlxcdFdBUk5fT04od2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh2YSwgdmEgKyBzaXplLFxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jLTkxLVxcdFxcdFxcdFxcdTAwMjZjbGVhcl9ub2NhY2hlX3dhbGtfb3BzLCBOVUxMLCBOVUxMKSk7XFxuLS1cXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmM9MjYyPXN0YXRpYyBpbnQgX19zZXRfbWVtb3J5KHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IG51bXBhZ2VzLCBwZ3Byb3RfdCBzZXRfbWFzayxcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMDEtXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMwMjpcXHRcXHRcXHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKGxtX3N0YXJ0LCBsbV9lbmQsXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMwMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCwgXFx1MDAyNm1hc2tzKTtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMTktXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMyMDpcXHRcXHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKGxtX3N0YXJ0LCBsbV9lbmQsXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMyMS1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCwgXFx1MDAyNm1hc2tzKTtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMjUtXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMyNjpcXHRyZXQgPSAgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBcXHUwMDI2cGFnZWF0dHJfb3BzLCBOVUxMLFxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMjctXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2bWFza3MpO1xcbi0tXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMzNy0jZWxzZVxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYzozMzg6XFx0cmV0ID0gIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCxcXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzM5LVxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNm1hc2tzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaD0xMzE9aW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzMtXFx0XFx0dm9pZCAqcHJpdmF0ZSk7XFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oOjEzNDppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzUtXFx0XFx0dW5zaWduZWQgbG9uZyBlbmQsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzYtXFx0XFx0cGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSk7XFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oOjEzNzppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzgtXFx0XFx0dW5zaWduZWQgbG9uZyBlbmQsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxcbi0tXFxubW0vaHVnZXRsYl92bWVtbWFwLmM9MTU2PXN0YXRpYyBpbnQgdm1lbW1hcF9yZW1hcF9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jLTE2My1cXHRtbWFwX3JlYWRfbG9jayhcXHUwMDI2aW5pdF9tbSk7XFxubW0vaHVnZXRsYl92bWVtbWFwLmM6MTY0OlxcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXFx1MDAyNnZtZW1tYXBfcmVtYXBfb3BzLFxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jLTE2NS1cXHRcXHRcXHRcXHQgICAgTlVMTCwgd2Fsayk7XFxuLS1cXG5tbS9wYWdld2Fsay5jPTU5Nz1pbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxubW0vcGFnZXdhbGsuYy02MDctLyoqXFxubW0vcGFnZXdhbGsuYzo2MDg6ICogd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSAtIHdhbGsgYSByYW5nZSBvZiBrZXJuZWwgcGFnZXRhYmxlcy5cXG5tbS9wYWdld2Fsay5jLTYwOS0gKiBAc3RhcnQ6XFx0c3RhcnQgYWRkcmVzcyBvZiB0aGUgdmlydHVhbCBhZGRyZXNzIHJhbmdlXFxuLS1cXG5tbS9wYWdld2Fsay5jLTYyNC0gKi9cXG5tbS9wYWdld2Fsay5jOjYyNTppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG5tbS9wYWdld2Fsay5jLTYyNi1cXHRcXHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNjM3LVxcbm1tL3BhZ2V3YWxrLmM6NjM4OlxcdHJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHN0YXJ0LCBlbmQsIG9wcywgcGdkLFxcbm1tL3BhZ2V3YWxrLmMtNjM5LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgcHJpdmF0ZSk7XFxuLS1cXG5tbS9wYWdld2Fsay5jLTY0Ny0gKi9cXG5tbS9wYWdld2Fsay5jOjY0ODppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG5tbS9wYWdld2Fsay5jLTY0OS1cXHRcXHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcXG4tLVxcbm1tL3BhZ2V3YWxrLmM9NjgyPWludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5tbS9wYWdld2Fsay5jLTY5Ny1cXHRcXHRcXHRcXHQgXFxcIlJDVSByZWFkIGxvY2sgbXVzdCBiZSBoZWxkIGFjcm9zcyBrZXJuZWwgcGFnZSB0YWJsZSB3YWxrXFxcIik7XFxubW0vcGFnZXdhbGsuYzo2OTg6XFx0XFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLCBwZ2QsXFxubW0vcGFnZXdhbGsuYy02OTktXFx0XFx0XFx0XFx0XFx0XFx0XFx0cHJpdmF0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQxOjE3LjI0MzM4MzI3N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTQwMDExNzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uY3VycmVuY3kgSW1wbGljYXRpb25zIG9mIFBhZ2UgVGFibGUgRGVidWdnaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB0aGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZSBwYWdlIHRhYmxlIHdhbGtpbmcgY29kZSBpbnRlcmFjdHMgd2l0aCBSQ1UgKFJlYWQtQ29weS1VcGRhdGUpIGxvY2tzLCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGRlYnVnZ2luZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIGlzIHVzZWQgd2l0aGluIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGluaXRpYWwgbWVtb3J5IG1hcCAoYG1tID09IFx1MDAyNmluaXRfbW1gKS4gVGhpcyBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBmdW5jdGlvbiwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IGBwdGR1bXBfd2Fsa19wZ2RgLCB3aGljaCBzb3VuZHMgbGlrZSBvdXIgY3JpdGljYWwgZGVidWdnaW5nIGVudHJ5IHBvaW50LiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIGhhcyBvdGhlciBjYWxsZXJzIHRvbywgbGlrZSBgdm1lbW1hcF9yZW1hcF9yYW5nZWAgYW5kIGBfX3NldF9tZW1vcnlgLlxuXG5UaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldHMgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AsIGFkZGluZyBhbiBgUkNVX0xPQ0tERVBfV0FSTmAgY2hlY2suIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIGRldmVsb3BlcnMgYXJlIGNvbmNlcm5lZCBhYm91dCBwb3RlbnRpYWwgUkNVIGxvY2sgaXNzdWVzIGluIHRoaXMgZnVuY3Rpb24sIHNvIGl0IGhhcyB0byBiZSBhIGNyaXRpY2FsIHBvaW50LlxuXG5UaGVyZWZvcmUsIHRoZSBrZXkgc3ltYm9scyB0aGF0IHdhcnJhbnQgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFyZTogYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAsIGBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmNgLCBgcHRkdW1wX3dhbGtfcGdkYCwgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciwgZXNwZWNpYWxseSBjb25jZXJuaW5nIFJDVSB1c2FnZS5cblxuTm93LCBsZXQncyBzZWUgaWYgdGhlIGFzeW5jaHJvbm91cyBwYXRoIGlzIGFsd2F5cyBwcmVzZW50LiBDaGVja2luZyBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgaXQncyBjbGVhciB0aGF0IGl0IGlzIGNvbnRyb2xsZWQgYnkgYCNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAuIE9rYXksIGJ1dCBpZiB0aGF0J3Mgbm90IGVuYWJsZWQsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGNhbGxzIGBjYWxsX3JjdShcdTAwMjZwdC1cdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpYC4gU28sIGF0IGxlYXN0LCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgIGlzIGFsd2F5cyBjb21waWxlZCBhbmQgcGFydCBvZiB0aGlzIHN1YnN5c3RlbSwgYW5kIHNvIGlzIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGhvdyBgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGVuYWJsZWQuIEFoLCBpdCdzIHNlbGVjdGVkIGJ5IHg4NiBzeXN0ZW1zIGlmIGBJT01NVV9TVkFgIGlzIGRlZmluZWQuIFRoaXMgZ2l2ZXMgbWUgYW4gaWRlYSAtIEkgY2FuIHByb2JhYmx5IHJlcHJvZHVjZSB0aGlzIHNjZW5hcmlvIGJ5IGluY2x1ZGluZyBgUFREVU1QX0RFQlVHRlNgIGFuZCBgREVCVUdfV1hgIGluIHRoZSBjb25maWd1cmF0aW9uLiBJdCBzZWVtcyBsaWtlIHRoZSBzaW1wbGVzdCB3YXkgdG8gZ2V0IHRoZSBkZWJ1ZyBmYWNpbGl0aWVzIGVuYWJsZWQsIGFzIHRoZXNlIG9wdGlvbnMgYXJlIGxpa2VseSB0byBicmluZyBpbiB0aGUgbmVjZXNzYXJ5IGNvZGUgcGF0aHMuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgUFREVU1QX0RFQlVHRlNgIGFuZCBgREVCVUdfV1hgIGFyZSBhdmFpbGFibGUsIHdoaWNoIGxpa2VseSBtZWFucyBjaGVja2luZyB0aGUgcmVsZXZhbnQgZGVidWcgS2NvbmZpZyBmaWxlcyBsaWtlIGBtbS9LY29uZmlnLmRlYnVnYCBhbmQgYGxpYi9LY29uZmlnLmRlYnVnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMyOTEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MjYuMzgzMzk4MzEyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTczNTg3MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVERVTVBfREVCVUdGU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnLmRlYnVnPTIxOT1jb25maWcgUFREVU1QXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTIyMS1cXG5tbS9LY29uZmlnLmRlYnVnOjIyMjpjb25maWcgUFREVU1QX0RFQlVHRlNcXG5tbS9LY29uZmlnLmRlYnVnLTIyMy1cXHRib29sIFxcXCJFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MToyOC4zNTY5OTIzNDdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNzQwMzcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipNeSBCcmFpbidzIFNjcmFtYmxlIG9uIGEgRGVidWcgRmxhZyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGF0IGxpdHRsZSBmbGFnLCBgREVCVUdfV1hgLCBqdXN0IHBvcHBlZCBpbnRvIG15IGhlYWQuIEl0J3MgYSBjbGFzc2ljLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMuIElzIHRoaXMgYSBsb2NhbCBzZXR0aW5nIG9yIGEgZ2xvYmFsIG9uZT8gV2hhdCBzcGVjaWZpYyBtb2R1bGUgb3Igc2VjdGlvbiBvZiB0aGUgY29kZSBpcyBpdCB0aWVkIHRvPyBJcyBpdCBhIGNvbXBpbGUtdGltZSBmbGFnLCBvciBhIHJ1bnRpbWUgY29uZmlndXJhdGlvbj8gVGhlIHNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmbGFnIHRvIHNob3cgZGVidWdnaW5nIGluZm9ybWF0aW9uIGluIGEgV2luZG93aW5nIGVudmlyb25tZW50LiBJIGluc3RhbnRseSB0aGluayBvZiBteSBwcmlvciB3b3JrIGluIHNpbWlsYXIgcHJvamVjdHMuIFdoYXQncyB0aGUgV1ggbGlicmFyeSBpdCBpcyBwb2ludGluZyB0bz8gSXMgdGhpcyByZWZlcnJpbmcgdG8gYSBzcGVjaWZpYyBHVUkgdG9vbGtpdCBsaWtlIHd4V2lkZ2V0cz8gV2hhdCBraW5kIG9mIGRlYnVnIG91dHB1dCBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBUcmFjaW5nLCB2ZXJib3NlIGxvZ2dpbmcsIHBlcmhhcHMgZXZlbiBhc3NlcnRpb24gaGFuZGxpbmc/XG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpdHMgc2NvcGUuIFdoZXJlIGlzIGl0IGRlZmluZWQ/IEhvdyBpcyBpdCB1c2VkPyBJIHN0YXJ0IG1lbnRhbGx5IHRyYWNpbmcgaG93IGl0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgZXhlY3V0aW9uIGZsb3cuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBncmFudWxhcml0eSBvZiB0aGUgZGVidWdnaW5nIHRoaXMgZmxhZyBlbmFibGVzLCBhbmQgd2hhdCBpdCdzICpzdXBwb3NlZCogdG8gZG8uIEl0IGNhbiBkcmFzdGljYWxseSBpbXBhY3QgcGVyZm9ybWFuY2UuIEEgcXVpY2sgbWVudGFsIHNlYXJjaCB0aHJvdWdoIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBgaWZkZWZgIHN0YXRlbWVudHMgb3IgY29uZGl0aW9uYWwgY2hlY2tzIGlzIGluIG9yZGVyLlxuXG5JJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgbWluZDogQXJlIHRoZXJlIGFueSByZWxhdGVkIGVudmlyb25tZW50IHZhcmlhYmxlcywgY29uZmlndXJhdGlvbiBmaWxlcywgb3IgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0aGF0IG1pZ2h0IGFsc28gY29udHJvbCB0aGUgZGVidWcgYmVoYXZpb3I/IEhvdyBjYW4gSSB2ZXJpZnkgdGhhdCB0aGlzIGZsYWcgaXMgKmFjdHVhbGx5KiB3b3JraW5nIGFzIGludGVuZGVkPyBXaWxsIHR1cm5pbmcgaXQgb24sIG9yIG9mZiwgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucz8gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBuZWVkIGZvciBjYXJlZnVsIHRlc3RpbmcsIHdoZXRoZXIgaXQncyB1bml0IHRlc3RzLCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgZXZlbiBtYW51YWwgVUkgaW50ZXJhY3Rpb24gZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJZiBJJ20gdXNpbmcgYW4gSURFIEknbSBwcm9iYWJseSBtZW50YWxseSBjaGVja2luZyBteSBkZWJ1Z2dlciBzZXR0aW5ncyB0byBlbnN1cmUgdGhhdCB0aGUgSURFIGtub3dzIHRoYXQgdGhlIGVudmlyb25tZW50IGZvciB0aGlzIHNldHRpbmcgZXhpc3RzLlxuXG5UaGlzIGlzIHRoZSBraW5kIG9mIGRldGFpbCB0aGF0IHNlcGFyYXRlcyBmaW5kaW5nIHRoZSByb290IGNhdXNlIG9mIGFuIGlzc3VlLCBhbmQgc2ltcGx5IG1ha2luZyByYW5kb20gY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmbGFnICpiZWZvcmUqIEkgZ28gYW55IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDU5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MTozMy4xOTQzOTk2NjlaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTcwNTU1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFQlVHX1dYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWcuZGVidWc9MTgzPWNvbmZpZyBBUkNIX0hBU19ERUJVR19XWFxcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0xODUtXFxubW0vS2NvbmZpZy5kZWJ1ZzoxODY6Y29uZmlnIERFQlVHX1dYXFxubW0vS2NvbmZpZy5kZWJ1Zy0xODctXFx0Ym9vbCBcXFwiV2FybiBvbiBXK1ggbWFwcGluZ3MgYXQgYm9vdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MzUuMDUxNDYzMzY1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODYwODIxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgSSBuZWVkIHRvIGdldCB0aGlzIHJpZ2h0LlxuXG4qKkV4YW1pbmluZyB0aGUgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMqKlxuXG5SaWdodCwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBhcyB0aGUga2V5IGNvbmZpZ3MgdG8gZXhhbWluZSBoZXJlLiBJJ20gcHJldHR5IGNlcnRhaW4gYWJvdXQgdGhhdC4gTm93LCBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaW4gdGhlIG1peCwgYnV0IEkga25vdyBpdCdzIG5vdCBhIHN0YW5kYWxvbmUsIGl0J3MgYWN0dWFsbHkgZGVwZW5kZW50IG9uIGBJT01NVV9TVkFgLiBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlIC0gbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBmb2N1cyBvbiBgSU9NTVVfU1ZBYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgaW4gcmVsYXRpb24gdG8gdGhlc2Ugb3RoZXIgc2V0dGluZ3MuIEl0J3MgdGhlIGx5bmNocGluLCBpdCB3b3VsZCBhcHBlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDE1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MzguMjM3NTQ3NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMTQwMDU1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU9NTVVfU1ZBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvS2NvbmZpZz0xNTM9Y29uZmlnIElPTU1VX0RNQVxcbi0tXFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTE2MS0jIFNoYXJlZCBWaXJ0dWFsIEFkZHJlc3NpbmdcXG5kcml2ZXJzL2lvbW11L0tjb25maWc6MTYyOmNvbmZpZyBJT01NVV9TVkFcXG5kcml2ZXJzL2lvbW11L0tjb25maWctMTYzLVxcdHNlbGVjdCBJT01NVV9NTV9EQVRBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQxOjQwLjAzODk1NzQxMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY4NDc1MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHdlIGNhbiBkZWZpbml0ZWx5IGVuYWJsZSBmdXp6aW5nLiBUaGUgY2hhbmdlIHRvdWNoZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGhvdyB0aGUga2VybmVsIGZyZWVzIHBhZ2UgdGFibGVzLiBEZWZlcnJpbmcgdGhlIGZyZWVpbmcgcHJvY2VzcyB1c2luZyBSQ1UgdG8gcHJldmVudCB0aG9zZSBuYXN0eSB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgZHVyaW5nIGxvY2tsZXNzIHBhZ2UgdGFibGUgd2Fsa3MgLSBsaWtlIHdoZW4gYHB0ZHVtcGAgaXMgcnVubmluZyAtIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgY291bGQgdmVyeSB3ZWxsIGV4cG9zZSBzb21lIGludGVyZXN0aW5nIGlzc3Vlcy5cblxuTXkgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCBpdCdzIGFsdGVyaW5nIHRoZSBmdW5kYW1lbnRhbCBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLiBBbmQgdGhhdCdzIHVzdWFsbHkgZmVydGlsZSBncm91bmQgZm9yIGZpbmRpbmcgc3VidGxlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgY29ycnVwdGlvbi5cblxuSSdtIGtleWluZyBpbiBvbiBhIGZldyBzeW1ib2xzIGhlcmUuIFNwZWNpZmljYWxseSwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAsIGFuZCBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgdGhvc2UgYXJlIHRoZSBvYnZpb3VzIG9uZXMuIFRoZW4sIGBwdGR1bXBfd2Fsa19wZ2RgIGFuZCBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCDigJMgdGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBpc3N1ZSB0aGUgcGF0Y2ggaW50ZW5kcyB0byBzb2x2ZS5cblxuVGhlIHN1Z2dlc3RlZCBgRW5hYmxlQ29uZmlnc2AgbG9vayBzb2xpZCDigJMgYFBURFVNUF9ERUJVR0ZTYCwgYERFQlVHX1dYYCwgYW5kIGBJT01NVV9TVkFgIHdpbGwgYWxsIGhlbHAgd2l0aCB0ZXN0aW5nLiBJIGxpa2UgYElPTU1VX1NWQWAgYmVjYXVzZSBpdCBndWFyYW50ZWVzIHRoYXQgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGVuYWJsZWQuXG5cbldhaXQgYSBzZWMuLi5JIG5lZWQgdG8gY2hlY2sgYElPTU1VX1NWQWAgYmVjYXVzZSBpdCBpcyBub3QgYXZhaWxhYmxlIG9uIGFsbCBhcmNoaXRlY3R1cmVzLCBidXQgeDg2IGF1dG9tYXRpY2FsbHkgc2VsZWN0cyBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaWYgYElPTU1VX1NWQWAgaXMgZW5hYmxlZC4gTGV0IG1lIHJlLWNoZWNrIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCB0byBjb25maXJtIGl0IGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzNTEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6NDUuODA3NDM0NjQxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzc2OTM3MDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTAyMD1jb25maWcgSEFWRV9HSUdBTlRJQ19GT0xJT1NcXG4tLVxcbm1tL0tjb25maWctMTAyMy1cXG5tbS9LY29uZmlnOjEwMjQ6Y29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcXG5tbS9LY29uZmlnLTEwMjUtXFx0ZGVmX2Jvb2wgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MTo0Ny41ODQzNzYxODZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAzMTY3NDQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IGFuZCBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkZWZfYm9vbCBuYCBvcHRpb24sIHNwZWNpZmljYWxseSB0aGUgb25lIHRhcmdldGVkIGZvciB4ODYuIEkgc2VlIHRoYXQgSSBjYW4ndCBkaXJlY3RseSBlbmFibGUgaXQgd2l0aCBgRW5hYmxlQ29uZmlnc2AsIHNpbmNlIGl0IGxhY2tzIGFuIGFzc29jaWF0ZWQgcHJvbXB0LiBUaGUga2V5IHRvIGFjdGl2YXRpbmcgdGhpcyB0aGluZyBvbiB4ODYgYXBwZWFycyB0byBiZSBlbmFibGluZyBgSU9NTVVfU1ZBYCDigJMgZ29vZC4gVGhhdCdzIHRoZSByb3V0ZSBJIG5lZWQgdG8gdGFrZS5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBzeW1ib2xzIGFjY291bnRlZCBmb3IuIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuIFJpZ2h0LCBJIHJlbWVtYmVyIHRoYXQncyBkZWZpbmVkIGluIGBtbS9wYWdld2Fsay5jYC4gQW5kIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIGluIGBtbS9wdGR1bXAuY2AuIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCBhcmUgYm90aCBpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLiBXaGlsZSBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCBpcyBhbHNvIHRoZXJlLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCBoZXJlPyBIbW0sIEkgc2VlIHRoYXQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIGFuZCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2AgaGF2ZSBiZWVuIG1vZGlmaWVkIGluIGNvbW1lbnRzLCBidXQgbm90IGluIGFueSBjb2RlLlxuXG5BbHJpZ2h0LCB0aGUgY29kZSBjaGFuZ2VzIHRoZW1zZWx2ZXM6IEkgc2VlIHRoZSBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBkZWNsYXJhdGlvbiBpbiBgaW5jbHVkZS9saW51eC9tbS5oYC4gSW4gYG1tL3BhZ2V3YWxrLmNgLCBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBub3cgaW5jbHVkZXMgYW4gYFJDVV9MT0NLREVQX1dBUk5gLiBJbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLCB0aGUgY2hhbmdlcyBhcmUgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCwgYGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY2AsIGFuZCB0aGUgYWZvcmVtZW50aW9uZWQgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAuIExhc3RseSwgYG1tL3B0ZHVtcC5jYCBub3cgaGFzIGBwdGR1bXBfd2Fsa19wZ2RgIGFkZGluZyBgcmN1X3JlYWRfbG9jaygpYC5cblxuU28sIGl0J3MgcHJldHR5IGNsZWFyOiB0aGUgY29yZSBmb2N1cyBpcyBwcmVjaXNlbHkgdGhlIHN5bWJvbHMgSSBpZGVudGlmaWVkIGluaXRpYWxseS4gTG9va3MgZ29vZCB0byBtZS5cblxuSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYxMDEsIk91dHB1dFRva2VucyI6MTYwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQxOjU0LjYxNjA1MzFaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDQyNTY1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFREVU1QX0RFQlVHRlNcIixcbiAgICBcIkRFQlVHX1dYXCIsXG4gICAgXCJJT01NVV9TVkFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdldGFibGVfZnJlZV9rZXJuZWxcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1XCIsXG4gICAgXCJrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmNcIixcbiAgICBcInB0ZHVtcF93YWxrX3BnZFwiLFxuICAgIFwid2Fsa19wYWdlX3JhbmdlX2RlYnVnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gZGVmZXIgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMgdXNpbmcgUkNVLiBUaGlzIHByZXZlbnRzIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGxvY2tsZXNzIHBhZ2UgdGFibGUgd2Fsa3MsIHN1Y2ggYXMgdGhvc2UgcGVyZm9ybWVkIGJ5IHB0ZHVtcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbGlmZWN5Y2xlIG9mIGtlcm5lbCBwYWdlIHRhYmxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVERVTVBfREVCVUdGU1wiLFxuICAgIFwiREVCVUdfV1hcIixcbiAgICBcIklPTU1VX1NWQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiLFxuICAgIFwia2VybmVsX3BndGFibGVfZnJlZV9yY3VcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY1wiLFxuICAgIFwicHRkdW1wX3dhbGtfcGdkXCIsXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9w2wn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 05:30:26 +0000 UTC FinishedAt: 2026-06-30 05:41:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTDUMP_DEBUGFS", "DEBUG_WX", "IOMMU_SVA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTDUMP_DEBUGFS", "DEBUG_WX", "IOMMU_SVA" ], "series_id": "cea53d7a-30df-41c3-8648-19424e3dfd01" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "pagetable_free_kernel", "kernel_pgtable_free_rcu", "kernel_pgtable_work_func", "ptdump_walk_pgd", "walk_page_range_debug" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BURFVNUF9ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0RFQlVHX1dYJiMzNDssCiAgICAmIzM0O0lPTU1VX1NWQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2V0YWJsZV9mcmVlX2tlcm5lbCYjMzQ7LAogICAgJiMzNDtrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSYjMzQ7LAogICAgJiMzNDtrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMmIzM0OywKICAgICYjMzQ7cHRkdW1wX3dhbGtfcGdkJiMzNDssCiAgICAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjU1MzI5ZmUxZWI0ZmVlMTEzMTc5NjMxODA5YTNmZjMyMTg2MjMwZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDA1OjM5OjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc5NDA4YTE3YTFiMGRhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tLmhcbkBAIC0zNjk1LDE0ICYjNDM7MzY5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxuIFx0X19mcmVlX3BhZ2VzKHBhZ2UsIGNvbXBvdW5kX29yZGVyKHBhZ2UpKTtcbiB9XG4gXG4tI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXG4gdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xuLSNlbHNlXG4tc3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbi17XG4tXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbi19XG4tI2VuZGlmXG4gLyoqXG4gICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcbiAgKiBAcHQ6XHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZXdhbGsuYyBiL21tL3BhZ2V3YWxrLmNcbmluZGV4IDNhZTI1ODZmZjQ1YjQ0Li5jMGJlODc1ODA5ODlkYSAxMDA2NDRcbi0tLSBhL21tL3BhZ2V3YWxrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2V3YWxrLmNcbkBAIC02MjAsNyAmIzQzOzYyMCw3IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4gICogTm90ZTogQmUgY2FyZWZ1bCB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZXMgdGFibGVzLCB0aGUgY2FsbGVyIG1heSBiZSBuZWVkIHRvXG4gICogdGFrZSBvdGhlciBlZmZlY3RpdmUgYXBwcm9hY2hlcyAobW1hcCBsb2NrIG1heSBiZSBpbnN1ZmZpY2llbnQpIHRvIHByZXZlbnRcbiAgKiB0aGUgaW50ZXJtZWRpYXRlIGtlcm5lbCBwYWdlIHRhYmxlcyBiZWxvbmdpbmcgdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzIHJhbmdlXG4tICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSkuXG4mIzQzOyAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUsIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbikuXG4gICovXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuQEAgLTY0Myw3ICYjNDM7NjQzLDcgQEAgaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gd2FsayB0aGUga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkuIEl0IHNob3VsZCBiZVxuICAqIGd1YXJhbnRlZWQgdGhhdCB0aGUgY2FsbGVyIGhhcyBleGNsdXNpdmUgYWNjZXNzIG92ZXIgdGhlIHJhbmdlIHRoZXkgYXJlXG4gICogb3BlcmF0aW5nIG9uIC0gdGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gY29uY3VycmVudCBhY2Nlc3MsIGZvciBleGFtcGxlLFxuLSAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMuXG4mIzQzOyAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMsIG9yIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbi5cbiAgKi9cbiBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbiBcdFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsIHBnZF90ICpwZ2QsIHZvaWQgKnByaXZhdGUpXG5AQCAtNjkyLDkgJiM0Mzs2OTIsMTMgQEAgaW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbiBcdH07XG4gXG4gXHQvKiBGb3IgY29udmVuaWVuY2UsIHdlIGFsbG93IHRyYXZlcnNhbCBvZiBrZXJuZWwgbWFwcGluZ3MuICovXG4tXHRpZiAobW0gPT0gXHUwMDI2aW5pdF9tbSlcbi1cdFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLFxuLVx0XHRcdFx0XHRcdCAgICBwZ2QsIHByaXZhdGUpO1xuJiM0MztcdGlmIChtbSA9PSBcdTAwMjZpbml0X21tKSB7XG4mIzQzO1x0XHRSQ1VfTE9DS0RFUF9XQVJOKCFyY3VfcmVhZF9sb2NrX2hlbGQoKSxcbiYjNDM7XHRcdFx0XHQgXCYjMzQ7UkNVIHJlYWQgbG9jayBtdXN0IGJlIGhlbGQgYWNyb3NzIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLCBwZ2QsXG4mIzQzO1x0XHRcdFx0XHRcdFx0cHJpdmF0ZSk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChzdGFydCBcdTAwM2U9IGVuZCB8fCAhd2Fsay5tbSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpXG5kaWZmIC0tZ2l0IGEvbW0vcGd0YWJsZS1nZW5lcmljLmMgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xuaW5kZXggYjkxYjFhOTgwMjljN2YuLjdhMzJlNDgyMTk1N2NjIDEwMDY0NFxuLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BndGFibGUtZ2VuZXJpYy5jXG5AQCAtNDEwLDYgJiM0Mzs0MTAsMTMgQEAgcHRlX3QgKnB0ZV9vZmZzZXRfbWFwX2xvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXG4gXHRnb3RvIGFnYWluO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0ZGVzYyAqcHQgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHB0ZGVzYywgcHRfcmN1X2hlYWQpO1xuJiM0MztcbiYjNDM7XHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbiYjNDM7fVxuJiM0MztcbiAjaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbiBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbkBAIC00MzQsOCAmIzQzOzQ0MSwxNSBAQCBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3Bpbl91bmxvY2soXHUwMDI2a2VybmVsX3BndGFibGVfd29yay5sb2NrKTtcbiBcbiBcdGlvbW11X3N2YV9pbnZhbGlkYXRlX2t2YV9yYW5nZShQQUdFX09GRlNFVCwgVExCX0ZMVVNIX0FMTCk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXNcbiYjNDM7XHQgKiBmcmVlLCBzbyB0aGV5IHdhbGsgdW5kZXIgcmN1X3JlYWRfbG9jaygpLiBGcmVlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kOlxuJiM0MztcdCAqIGEgd2Fsa2VyIGVpdGhlciBhbHJlYWR5IHNhdyB0aGUgY2xlYXJlZCBQTUQsIG9yIGtlZXBzIHRoZSBwYWdlIGFsaXZlXG4mIzQzO1x0ICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLlxuJiM0MztcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHB0LCBuZXh0LCBcdTAwMjZwYWdlX2xpc3QsIHB0X2xpc3QpXG4tXHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuJiM0MztcdFx0Y2FsbF9yY3UoXHUwMDI2cHQtXHUwMDNlcHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTtcbiB9XG4gXG4gdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5AQCAtNDQ2LDQgJiM0Mzs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4gXG4gXHRzY2hlZHVsZV93b3JrKFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsud29yayk7XG4gfVxuJiM0MzsjZWxzZVxuJiM0Mzt2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbiYjNDM7e1xuJiM0MztcdC8qIERlZmVyIHRoZSBmcmVlIGJ5IGEgZ3JhY2UgcGVyaW9kOyBzZWUga2VybmVsX3BndGFibGVfd29ya19mdW5jKCkuICovXG4mIzQzO1x0Y2FsbF9yY3UoXHUwMDI2cHQtXHUwMDNlcHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTtcbiYjNDM7fVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmNcbmluZGV4IDk3MzAyMDAwMDA5NmNmLi41MGNkOTZhMzNkZmQyNyAxMDA2NDRcbi0tLSBhL21tL3B0ZHVtcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wdGR1bXAuY1xuQEAgLTE3OCwxMSAmIzQzOzE3OCwxMyBAQCB2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG4gXG4gXHRnZXRfb25saW5lX21lbXMoKTtcbiBcdG1tYXBfd3JpdGVfbG9jayhtbSk7XG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0d2hpbGUgKHJhbmdlLVx1MDAzZXN0YXJ0ICE9IHJhbmdlLVx1MDAzZWVuZCkge1xuIFx0XHR3YWxrX3BhZ2VfcmFuZ2VfZGVidWcobW0sIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsXG4gXHRcdFx0XHQgICAgICBcdTAwMjZwdGR1bXBfb3BzLCBwZ2QsIHN0KTtcbiBcdFx0cmFuZ2UmIzQzOyYjNDM7O1xuIFx0fVxuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xuIFx0cHV0X29ubGluZV9tZW1zKCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFREVU1QX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7REVCVUdfV1gmIzM0OywKICAgICYjMzQ7SU9NTVVfU1ZBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFnZXRhYmxlX2ZyZWVfa2VybmVsJiMzNDssCiAgICAmIzM0O2tlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1JiMzNDssCiAgICAmIzM0O2tlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyYjMzQ7LAogICAgJiMzNDtwdGR1bXBfd2Fsa19wZ2QmIzM0OywKICAgICYjMzQ7d2Fsa19wYWdlX3JhbmdlX2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIGRlZmVyIGZyZWVpbmcgb2Yga2VybmVsIHBhZ2UgdGFibGVzIHVzaW5nIFJDVS4gVGhpcyBwcmV2ZW50cyB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBsb2NrbGVzcyBwYWdlIHRhYmxlIHdhbGtzLCBzdWNoIGFzIHRob3NlIHBlcmZvcm1lZCBieSBwdGR1bXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxpZmVjeWNsZSBvZiBrZXJuZWwgcGFnZSB0YWJsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI1NTMyOWZlMWViNGZlZTExMzE3OTYzMTgwOWEzZmYzMjE4NjIzMGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAzMCAwNTozOToxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCA0ODVkZjljMmRiZGRiMy4uNzk0MDhhMTdhMWIwZGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tLmgKQEAgLTM2OTUsMTQgJiM0MzszNjk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpCiAJX19mcmVlX3BhZ2VzKHBhZ2UsIGNvbXBvdW5kX29yZGVyKHBhZ2UpKTsKIH0KIAotI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFCiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7Ci0jZWxzZQotc3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCkKLXsKLQlfX3BhZ2V0YWJsZV9mcmVlKHB0KTsKLX0KLSNlbmRpZgogLyoqCiAgKiBwYWdldGFibGVfZnJlZSAtIEZyZWUgcGFnZXRhYmxlcwogICogQHB0OglUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yCmRpZmYgLS1naXQgYS9tbS9wYWdld2Fsay5jIGIvbW0vcGFnZXdhbGsuYwppbmRleCAzYWUyNTg2ZmY0NWI0NC4uYzBiZTg3NTgwOTg5ZGEgMTAwNjQ0Ci0tLSBhL21tL3BhZ2V3YWxrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGFnZXdhbGsuYwpAQCAtNjIwLDcgJiM0Mzs2MjAsNyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LAogICogTm90ZTogQmUgY2FyZWZ1bCB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZXMgdGFibGVzLCB0aGUgY2FsbGVyIG1heSBiZSBuZWVkIHRvCiAgKiB0YWtlIG90aGVyIGVmZmVjdGl2ZSBhcHByb2FjaGVzIChtbWFwIGxvY2sgbWF5IGJlIGluc3VmZmljaWVudCkgdG8gcHJldmVudAogICogdGhlIGludGVybWVkaWF0ZSBrZXJuZWwgcGFnZSB0YWJsZXMgYmVsb25naW5nIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyByYW5nZQotICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSkuCiYjNDM7ICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSwgdm1hcCBodWdlIHBhZ2UgcHJvbW90aW9uKS4KICAqLwogaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCiAJCWNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKQpAQCAtNjQzLDcgJiM0Mzs2NDMsNyBAQCBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHdhbGsgdGhlIGtlcm5lbCBwYWdlIHRhYmxlcyBsb2NrbGVzc2x5LiBJdCBzaG91bGQgYmUKICAqIGd1YXJhbnRlZWQgdGhhdCB0aGUgY2FsbGVyIGhhcyBleGNsdXNpdmUgYWNjZXNzIG92ZXIgdGhlIHJhbmdlIHRoZXkgYXJlCiAgKiBvcGVyYXRpbmcgb24gLSB0aGF0IHRoZXJlIHNob3VsZCBiZSBubyBjb25jdXJyZW50IGFjY2VzcywgZm9yIGV4YW1wbGUsCi0gKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLgomIzQzOyAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMsIG9yIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbi4KICAqLwogaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCiAJCWNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKQpAQCAtNjkyLDkgJiM0Mzs2OTIsMTMgQEAgaW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCwKIAl9OwogCiAJLyogRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0cmF2ZXJzYWwgb2Yga2VybmVsIG1hcHBpbmdzLiAqLwotCWlmIChtbSA9PSAmYW1wO2luaXRfbW0pCi0JCXJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIG9wcywKLQkJCQkJCSAgICBwZ2QsIHByaXZhdGUpOwomIzQzOwlpZiAobW0gPT0gJmFtcDtpbml0X21tKSB7CiYjNDM7CQlSQ1VfTE9DS0RFUF9XQVJOKCFyY3VfcmVhZF9sb2NrX2hlbGQoKSwKJiM0MzsJCQkJICYjMzQ7UkNVIHJlYWQgbG9jayBtdXN0IGJlIGhlbGQgYWNyb3NzIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGsmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBvcHMsIHBnZCwKJiM0MzsJCQkJCQkJcHJpdmF0ZSk7CiYjNDM7CX0KJiM0MzsKIAlpZiAoc3RhcnQgJmd0Oz0gZW5kIHx8ICF3YWxrLm1tKQogCQlyZXR1cm4gLUVJTlZBTDsKIAlpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpCmRpZmYgLS1naXQgYS9tbS9wZ3RhYmxlLWdlbmVyaWMuYyBiL21tL3BndGFibGUtZ2VuZXJpYy5jCmluZGV4IGI5MWIxYTk4MDI5YzdmLi43YTMyZTQ4MjE5NTdjYyAxMDA2NDQKLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGd0YWJsZS1nZW5lcmljLmMKQEAgLTQxMCw2ICYjNDM7NDEwLDEzIEBAIHB0ZV90ICpwdGVfb2Zmc2V0X21hcF9sb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLAogCWdvdG8gYWdhaW47CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRkZXNjICpwdCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgcHRkZXNjLCBwdF9yY3VfaGVhZCk7CiYjNDM7CiYjNDM7CV9fcGFnZXRhYmxlX2ZyZWUocHQpOwomIzQzO30KJiM0MzsKICNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRQogc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKQEAgLTQzNCw4ICYjNDM7NDQxLDE1IEBAIHN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3Bpbl91bmxvY2soJmFtcDtrZXJuZWxfcGd0YWJsZV93b3JrLmxvY2spOwogCiAJaW9tbXVfc3ZhX2ludmFsaWRhdGVfa3ZhX3JhbmdlKFBBR0VfT0ZGU0VULCBUTEJfRkxVU0hfQUxMKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXMKJiM0MzsJICogZnJlZSwgc28gdGhleSB3YWxrIHVuZGVyIHJjdV9yZWFkX2xvY2soKS4gRnJlZSBhZnRlciBhIGdyYWNlIHBlcmlvZDoKJiM0MzsJICogYSB3YWxrZXIgZWl0aGVyIGFscmVhZHkgc2F3IHRoZSBjbGVhcmVkIFBNRCwgb3Iga2VlcHMgdGhlIHBhZ2UgYWxpdmUKJiM0MzsJICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLgomIzQzOwkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHQsIG5leHQsICZhbXA7cGFnZV9saXN0LCBwdF9saXN0KQotCQlfX3BhZ2V0YWJsZV9mcmVlKHB0KTsKJiM0MzsJCWNhbGxfcmN1KCZhbXA7cHQtJmd0O3B0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7CiB9CiAKIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KQpAQCAtNDQ2LDQgJiM0Mzs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpCiAKIAlzY2hlZHVsZV93b3JrKCZhbXA7a2VybmVsX3BndGFibGVfd29yay53b3JrKTsKIH0KJiM0MzsjZWxzZQomIzQzO3ZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KQomIzQzO3sKJiM0MzsJLyogRGVmZXIgdGhlIGZyZWUgYnkgYSBncmFjZSBwZXJpb2Q7IHNlZSBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoKS4gKi8KJiM0MzsJY2FsbF9yY3UoJmFtcDtwdC0mZ3Q7cHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTsKJiM0Mzt9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmMKaW5kZXggOTczMDIwMDAwMDk2Y2YuLjUwY2Q5NmEzM2RmZDI3IDEwMDY0NAotLS0gYS9tbS9wdGR1bXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wdGR1bXAuYwpAQCAtMTc4LDExICYjNDM7MTc4LDEzIEBAIHZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCkKIAogCWdldF9vbmxpbmVfbWVtcygpOwogCW1tYXBfd3JpdGVfbG9jayhtbSk7CiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKIAl3aGlsZSAocmFuZ2UtJmd0O3N0YXJ0ICE9IHJhbmdlLSZndDtlbmQpIHsKIAkJd2Fsa19wYWdlX3JhbmdlX2RlYnVnKG1tLCByYW5nZS0mZ3Q7c3RhcnQsIHJhbmdlLSZndDtlbmQsCiAJCQkJICAgICAgJmFtcDtwdGR1bXBfb3BzLCBwZ2QsIHN0KTsKIAkJcmFuZ2UmIzQzOyYjNDM7OwogCX0KJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAJbW1hcF93cml0ZV91bmxvY2sobW0pOwogCXB1dF9vbmxpbmVfbWVtcygpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNDgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBJbXBsaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgd2FycmFudCB0YXJnZXRlZCBmdXp6aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IGJlZm9yZSBJIGNhbiBwcm9wZXJseSBwcmlvcml0aXplIHRoaXMuCgpUaGUgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIGNvcmUgZmlsZXMsIGFuZCBhIHF1aWNrIGdsYW5jZSB0ZWxscyBtZSB0aGlzIGlzbiYjMzk7dCBqdXN0IGEgdHJpdmlhbCBmaXguIGBpbmNsdWRlL2xpbnV4L21tLmhgIGhhcyBhIGNvbmRpdGlvbmFsIHJlbW92YWwsIHdoaWNoIHVzdWFsbHkgZ2V0cyBteSBhdHRlbnRpb24gc2luY2UgdGhlIGNvbmZpZyBvcHRpb24gaXMgYmVpbmcgY2hhbmdlZC4gVGhlIHJlbW92YWwgb2YgdGhlIGAjaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGFyb3VuZCB0aGUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgZGVjbGFyYXRpb24gaW4gYGluY2x1ZGUvbGludXgvbW0uaGAgaXMsIG9uIGl0cyBvd24sIG5vdCB0b28gd29ycnlpbmcsIGJ1dCBpdCYjMzk7cyBwYXJ0IG9mIGEgYmlnZ2VyIGNoYW5nZSwgc28gSSYjMzk7bGwga2VlcCB0aGF0IGluIG1pbmQgYXMgYSBkZXBlbmRlbmN5LiBUaGUgbW9kaWZpY2F0aW9ucyB0byBgbW0vcGFnZXdhbGsuY2Agd2l0aCB0aGUgYFJDVV9MT0NLREVQX1dBUk5gIGluZGljYXRlIHBvdGVudGlhbCBjb25jdXJyZW5jeSBjb25jZXJucyB3aXRoaW4gcGFnZSB0YWJsZSB3YWxrcywgcGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gYGluaXRfbW1gLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGF0IEkgbmVlZCB0byBsb29rIGNsb3NlbHkgZm9yIHBvc3NpYmxlIHJhY2VzLiBJIHNlZSB0aGF0IGBtbS9wZ3RhYmxlLWdlbmVyaWMuY2AgaXMgYmVpbmcgc3Vic3RhbnRpYWxseSBhbHRlcmVkOiBpdCBhZGRzIGEgbmV3IGZ1bmN0aW9uLCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLCBhbmQgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIGFuIGV4aXN0aW5nIG9uZS4gUmVwbGFjaW5nIGBfX3BhZ2V0YWJsZV9mcmVlYCB3aXRoIGBjYWxsX3JjdWAgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UsIGltcGx5aW5nIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgUkNVLWRlbGF5ZWQgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIGdvYWwgaXMgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIG9wZXJhdGlvbnMgbGlrZSBwYWdlIHRhYmxlIGR1bXBzLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyB2ZXJ5IHJlbGV2YW50LiBGaW5hbGx5LCB0aGUgaW50cm9kdWN0aW9uIG9mIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGluIGBtbS9wdGR1bXAuY2AgYXJvdW5kIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIGNvbmZpcm1zIHRoZSBpbnRlbnQgdG8gcHJvdGVjdCB0aGVzZSBvcGVyYXRpb25zLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgaG93IHdlIGZyZWUga2VybmVsIHBhZ2UgdGFibGVzLiBTbywgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZC4gSSBzZWUgdGhhdCB0aGUgb3ZlcmFsbCBnb2FsIG9mIHRoZSBwYXRjaCBpcyBSQ1UtZGVsYXllZCBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcywgd2hpY2ggaGFzIHRvIGJlIHRyaWdnZXJlZCBieSBzb21ldGhpbmcuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB3aGVyZSBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpcyBhY3R1YWxseSBjYWxsZWQuIElmIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIHVucmVhY2hhYmxlLCB0aGVuIHRoaXMgcGF0Y2ggd2lsbCBiZSBsb3ctcHJpb3JpdHksIGJ1dCBpZiBpdCBpcyByZWFjaGFibGUsIHRoZW4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYW5kIGhvdyB0byBmdXp6IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2V0YWJsZV9mcmVlX2tlcm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21tLmg9MzY5MT1zdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5Ny1cbmluY2x1ZGUvbGludXgvbW0uaDozNjk4OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk5LS8qKlxuLS1cbmluY2x1ZGUvbGludXgvbW0uaD0zNzA2PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcwOS1cdFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XG5pbmNsdWRlL2xpbnV4L21tLmg6MzcxMDpcdFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcbmluY2x1ZGUvbGludXgvbW0uaC0zNzExLVx0fSBlbHNlIHtcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MzQ9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTQtXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NTU6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTYte1xuLS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2My0jZWxzZVxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDY0OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDY1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjAxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBgcGFnZXRhYmxlX2ZyZWVgIGFuZCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBwYWdldGFibGVfZnJlZWAuIEkga25vdyBmcm9tIG1lbW9yeSB0aGF0IHRoaXMgaGFwcGVucyB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEtBU0FOLiBCdXQgbGV0JiMzOTtzIHZlcmlmeSB0aGF0LiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IHRoZSBleGFjdCB0cmlnZ2VyLiBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIG9wZW4gdXAgYGluY2x1ZGUvbGludXgvbW0uaGAgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBwYWdldGFibGVfZnJlZWAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZXhhY3QgY29uZGl0aW9uYWwgdGhhdCBnb3Zlcm5zIHRoZSBjYWxsIHRvIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIHNvIEkgY2FuIGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsLiBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBob3cgS0FTQU4gaW50ZXJhY3RzIHdpdGggcGFnZSB0YWJsZSBmcmVlaW5nLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1ha2UgYW55IGFzc3VtcHRpb25zIGJhc2VkIG9uIGZ1enp5IHJlY2FsbC4gVGltZSB0byBkaWcgaW4gYW5kIGNvbmZpcm0gdGhlIGV4YWN0IGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2V0YWJsZV9mcmVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW0uaD0zNjgzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHB0ZGVzYyAqcGFnZXRhYmxlX2FsbG9jX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5MC1cbmluY2x1ZGUvbGludXgvbW0uaDozNjkxOnN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTIte1xuLS1cbmluY2x1ZGUvbGludXgvbW0uaC0zNjk3LVxuaW5jbHVkZS9saW51eC9tbS5oOjM2OTg6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xuaW5jbHVkZS9saW51eC9tbS5oLTM2OTktLyoqXG5pbmNsdWRlL2xpbnV4L21tLmg6MzcwMDogKiBwYWdldGFibGVfZnJlZSAtIEZyZWUgcGFnZXRhYmxlc1xuaW5jbHVkZS9saW51eC9tbS5oLTM3MDEtICogQHB0Olx0VGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvclxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDItICpcbmluY2x1ZGUvbGludXgvbW0uaDozNzAzOiAqIHBhZ2V0YWJsZV9mcmVlIGZyZWVzIHRoZSBtZW1vcnkgb2YgYWxsIHBhZ2UgdGFibGVzIGRlc2NyaWJlZCBieSBhIHBhZ2VcbmluY2x1ZGUvbGludXgvbW0uaC0zNzA0LSAqIHRhYmxlIGRlc2NyaXB0b3IgYW5kIHRoZSBtZW1vcnkgZm9yIHRoZSBkZXNjcmlwdG9yIGl0c2VsZi5cbmluY2x1ZGUvbGludXgvbW0uaC0zNzA1LSAqL1xuaW5jbHVkZS9saW51eC9tbS5oOjM3MDY6c3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDcte1xuLS1cbmluY2x1ZGUvbGludXgvbW0uaC0zNzA5LVx0XHRwdGRlc2NfY2xlYXJfa2VybmVsKHB0KTtcbmluY2x1ZGUvbGludXgvbW0uaDozNzEwOlx0XHRwYWdldGFibGVfZnJlZV9rZXJuZWwocHQpO1xuaW5jbHVkZS9saW51eC9tbS5oLTM3MTEtXHR9IGVsc2Uge1xuaW5jbHVkZS9saW51eC9tbS5oOjM3MTI6XHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuaW5jbHVkZS9saW51eC9tbS5oLTM3MTMtXHR9XG4tLVxuaW5jbHVkZS9saW51eC9tbS5oPTM4MDg9c3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9kdG9yX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHRkZXNjKVxuLS1cbmluY2x1ZGUvbGludXgvbW0uaC0zODEwLVx0cGFnZXRhYmxlX2R0b3IocHRkZXNjKTtcbmluY2x1ZGUvbGludXgvbW0uaDozODExOlx0cGFnZXRhYmxlX2ZyZWUocHRkZXNjKTtcbmluY2x1ZGUvbGludXgvbW0uaC0zODEyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDUxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIFBhZ2UgVGFibGUgRGVhbGxvY2F0aW9uIEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGFyb3VuZCBwYWdlIHRhYmxlIGZyZWVpbmcuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGNhbGwgdG8gYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAuIE15IGh1bmNoIGlzIHRoYXQgdGhlcmUmIzM5O3MgYSBwcmVjZWRpbmcgY2hlY2sg4oCTIHBlcmhhcHMgYSBmdW5jdGlvbiBjYWxsLCBvciBhIG1hY3JvIOKAkyB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgcGFnZSB0YWJsZSBiZWluZyB0YXJnZXRlZCBieSB0aGUgcHJvY2VzcyBpcywgaW4gZmFjdCwgYSBrZXJuZWwtc3BlY2lmaWMgcGFnZSB0YWJsZS4gVGhlIG5hbWUgc2VlbXMgdG8gc3VnZ2VzdCBzb21ldGhpbmcgbGlrZSBgcHRkZXNjX2lzX2tlcm5lbGAsIG9yIG1heWJlIGl0JiMzOTtzIGBwdF9pc19rZXJuZWxgLCBvciBzb21lIHZhcmlhdGlvbiBvbiB0aGF0IHRoZW1lLiBJIG5lZWQgdG8gaWRlbnRpZnkgKnRoYXQqIGNoZWNrLiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiB0aGF0IGRldGVybWluZXMgd2hlbiBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpcyBhY3R1YWxseSBpbnZva2VkLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGFuZCBzZWUgd2hhdCB2YXJpYWJsZSBvciBmdW5jdGlvbiBjYWxsIGlzIGJlaW5nIHRlc3RlZCBpbW1lZGlhdGVseSBiZWZvcmVoYW5kLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgbWVtb3J5IHJlY2xhaW0gc3RyYXRlZ3kgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzcwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzAwOlx0ICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcbjM3MDE6XHQgKiBAcHQ6XHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXG4zNzAyOlx0ICpcbjM3MDM6XHQgKiBwYWdldGFibGVfZnJlZSBmcmVlcyB0aGUgbWVtb3J5IG9mIGFsbCBwYWdlIHRhYmxlcyBkZXNjcmliZWQgYnkgYSBwYWdlXG4zNzA0Olx0ICogdGFibGUgZGVzY3JpcHRvciBhbmQgdGhlIG1lbW9yeSBmb3IgdGhlIGRlc2NyaXB0b3IgaXRzZWxmLlxuMzcwNTpcdCAqL1xuMzcwNjpcdHN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbjM3MDc6XHR7XG4zNzA4Olx0XHRpZiAocHRkZXNjX3Rlc3Rfa2VybmVsKHB0KSkge1xuMzcwOTpcdFx0XHRwdGRlc2NfY2xlYXJfa2VybmVsKHB0KTtcbjM3MTA6XHRcdFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcbjM3MTE6XHRcdH0gZWxzZSB7XG4zNzEyOlx0XHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuMzcxMzpcdFx0fVxuMzcxNDpcdH1cbjM3MTU6XHRcbjM3MTY6XHQjaWYgZGVmaW5lZChDT05GSUdfU1BMSVRfUFRFX1BUTE9DS1MpXG4zNzE3Olx0I2lmIEFMTE9DX1NQTElUX1BUTE9DS1NcbjM3MTg6XHR2b2lkIF9faW5pdCBwdGxvY2tfY2FjaGVfaW5pdCh2b2lkKTtcbjM3MTk6XHRib29sIHB0bG9ja19hbGxvYyhzdHJ1Y3QgcHRkZXNjICpwdGRlc2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgUGFnZSBUYWJsZSBGcmVlaW5nIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcGFnZXRhYmxlX2ZyZWVgIGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSYjMzk7cyBiZWVuIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIElmIHRoZSBwYWdlIHRhYmxlIGRlc2NyaXB0b3IsIGBwdGAsIHBhc3NlcyB0aGUgYHB0ZGVzY190ZXN0X2tlcm5lbChwdClgIHRlc3QsIGl0IG5vdyBjYWxscyBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgdGhpcyBkZWZlcnMgdGhlIGFjdHVhbCBmcmVlaW5nIG9mIHRoZSBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIHVzZXMgUkNVLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgY29uY3VycmVuY3kuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byByZWFsbHkgZGlnIGludG8gaGVyZSBhcmUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIHRoZW4gYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCwgd2hpY2ggaXMgb2J2aW91c2x5IHRoZSBSQ1UgaW50ZXJmYWNlLCBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgYW5kIGZpbmFsbHksIHRoZSByYXRoZXIgdW5leHBlY3RlZCBgcHRkdW1wX3dhbGtfcGdkYC4gV2FpdCwgYHB0ZHVtcF93YWxrX3BnZGA/IFRoYXQmIzM5O3MgcGFydCBvZiB0aGUgcGFnZSB0YWJsZSBkdW1wIG1lY2hhbmlzbSwgd2hpY2ggaXMgYSAqZGVidWdnaW5nKiBmZWF0dXJlISBUaGF0JiMzOTtzIG9kZCB0aGF0IGl0JiMzOTtzIGluIGEgcGF0aCB0aWVkIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuICBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQgY29ubmVjdGlvbiBtb3JlIGNsb3NlbHkgbGF0ZXIuCgpCdXQsIGJhY2sgdG8gdGhlIG1haW4gcG9pbnQsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIGRlZmluaXRlbHkgY29yZSBNTS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBkZWZlcnJlZCBmcmVlaW5nLiBJdCYjMzk7cyBjcnVjaWFsIGZvciB0aGUga2VybmVsJiMzOTtzIHN0YWJpbGl0eSB1bmRlciBoZWF2eSBsb2FkIG9yIGV2ZW4gaW4gZ2VuZXJhbC4KCk5vdywgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaXMgYSBjb21waWxlLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGFuZCB3aGF0IGl0cyBpbXBsaWNhdGlvbnMgYXJlLiBUaGF0IHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIHRoaXMgYmVoYXZpb3IgaXMgZW5nYWdlZCBhbmQgaWYgaXQgY2FuIGNhdXNlIHByb2JsZW1zIGlmIGRpc2FibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWc9NTg9Y29uZmlnIFg4NlxuLS1cbmFyY2gveDg2L0tjb25maWctMjgzLVx0c2VsZWN0IEhBVkVfUEVSRl9VU0VSX1NUQUNLX0RVTVBcbmFyY2gveDg2L0tjb25maWc6Mjg0Olx0c2VsZWN0IEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcdGlmIElPTU1VX1NWQVxuYXJjaC94ODYvS2NvbmZpZy0yODUtXHRzZWxlY3QgTU1VX0dBVEhFUl9SQ1VfVEFCTEVfRlJFRVxuLS1cbm1tL0tjb25maWc9MTAyMD1jb25maWcgSEFWRV9HSUdBTlRJQ19GT0xJT1Ncbi0tXG5tbS9LY29uZmlnLTEwMjMtXG5tbS9LY29uZmlnOjEwMjQ6Y29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbm1tL0tjb25maWctMTAyNS1cdGRlZl9ib29sIG5cbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MTM9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxuLS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQxOS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jOjQyMDojaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQyMS1zdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg3NgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgQXN5bmNocm9ub3VzIFBhZ2UgVGFibGUgRnJlZWluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBhbmQgYElPTU1VX1NWQWAgb24geDg2IGp1bXBzIG91dC4gVGhlIGluaXRpYWwgbG9naWMgc3VnZ2VzdHMgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGNvbnRpbmdlbnQgb24gYElPTU1VX1NWQWAgZm9yIHg4Ni4gSG93ZXZlciwgdGhpcyBwYXRjaCBzZWVtcyB0byBmdW5kYW1lbnRhbGx5IGNoYW5nZSB0aGUgZ2FtZS4gVGhlIGFkZGl0aW9uIG9mIHRoYXQgY3J1Y2lhbCBgI2Vsc2VgIGJsb2NrIHdpdGhpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgIGlzIHRoZSBrZXkuIE5vdywgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaXMgKmFsd2F5cyogZGVmaW5lZC4gQW5kLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGVuYWJsZWQgb3Igbm90LCBpdCAqYWx3YXlzKiBkZWZlcnMgdGhlIGZyZWVpbmcgcHJvY2VzcyB1c2luZyBSQ1UsIGVpdGhlciBkaXJlY3RseSBvciB2aWEgYSB3b3JrcXVldWUuIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBiZWhhdmlvci4gV2UmIzM5O3ZlIG1vdmVkIGZyb20gcG90ZW50aWFsIHN5bmNocm9ub3VzIGZyZWVpbmcgdG8gKmd1YXJhbnRlZWQqIGFzeW5jaHJvbm91cyBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMuCgpCdXQgd2FpdCwgdGhlcmUmIzM5O3MgbW9yZS4gVGhlIG1vZGlmaWNhdGlvbiB0byBgbW0vcGFnZXdhbGsuY2AgYW5kIGBtbS9wdGR1bXAuY2AgaXMgaW1tZWRpYXRlbHkgY29uY2VybmluZy4gSSBrbm93IHRoYXQgYHB0ZHVtcF93YWxrX3BnZGAgaXMgdXNlZCBieSB0aGUgYFBURFVNUF9ERUJVR0ZTYCBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyBjcml0aWNhbCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXppbmcgcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyBmdXJ0aGVyLiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zIHdpdGhpbiB0aGUgZGVidWcgYW5kIHRyYWNpbmcgdXRpbGl0aWVzLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgYnJlYWsgYW55IGFzc3VtcHRpb25zIHRob3NlIHRvb2xzIHJlbHkgb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBhc3luY2hyb25vdXMgZnJlZWluZyBpbnRlcmFjdHMgd2l0aCB0aGUgcGFnZSB0YWJsZSBkdW1wIGNvZGUsIGFuZCB3aGV0aGVyIGl0IGludHJvZHVjZXMgYW55IHJhY2UgY29uZGl0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwdGR1bXBfd2Fsa19wZ2QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MTY9c3RydWN0IHB0ZHVtcF9pbmZvIHtcbi0tXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yMS1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oOjIyOnZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvKTtcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTIzLSNpZmRlZiBDT05GSUdfQVJNX1BURFVNUF9ERUJVR0ZTXG4tLVxuYXJjaC9hcm0vbW0vZHVtcC5jPTM5OD1zdGF0aWMgdm9pZCB3YWxrX3BnZChzdHJ1Y3QgcGdfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL2FybS9tbS9kdW1wLmMtNDE0LVxuYXJjaC9hcm0vbW0vZHVtcC5jOjQxNTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbylcbmFyY2gvYXJtL21tL2R1bXAuYy00MTYte1xuLS1cbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jLTEwLVxuYXJjaC9hcm0vbW0vcHRkdW1wX2RlYnVnZnMuYzoxMTpcdHB0ZHVtcF93YWxrX3BnZChtLCBpbmZvKTtcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmMtMTItXHRyZXR1cm4gMDtcbi0tXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTI3OT12b2lkIG5vdGVfcGFnZV9mbHVzaChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpwdF9zdClcbi0tXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTI4NS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6Mjg2OnN0YXRpYyB2b2lkIGFybTY0X3B0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTI4Ny17XG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTI4OC1cdHN0YXRpY19icmFuY2hfaW5jKFx1MDAyNmFybTY0X3B0ZHVtcF9sb2NrX2tleSk7XG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jOjI4OTpcdHB0ZHVtcF93YWxrX3BnZChzdCwgbW0sIE5VTEwpO1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yOTAtXHRzdGF0aWNfYnJhbmNoX2RlYyhcdTAwMjZhcm02NF9wdGR1bXBfbG9ja19rZXkpO1xuLS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM9MjkzPXZvaWQgcHRkdW1wX3dhbGsoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgcHRkdW1wX2luZm8gKmluZm8pXG4tLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zMjAtXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jOjMyMTpcdGFybTY0X3B0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIGluZm8tXHUwMDNlbW0pO1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zMjItfVxuLS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM9MzM4PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXG4tLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zNjItXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jOjM2MzpcdGFybTY0X3B0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0pO1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zNjQtXG4tLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYz0zMzQ9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zNTEtXHQvKiBUcmF2ZXJzZSBrZXJuZWwgcGFnZSB0YWJsZXMgKi9cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM6MzUyOlx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgXHUwMDI2aW5pdF9tbSwgTlVMTCk7XG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTM1My1cdHJldHVybiAwO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9MzY4PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zOTEtXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jOjM5MjpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zOTMtXG4tLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz0zNTM9c3RhdGljIHZvaWQgcHRkdW1wX3dhbGsoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgcHRkX21tX2luZm8gKnBpbmZvKVxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtMzcyLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYzozNzM6XHRwdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBwaW5mby1cdTAwM2VtbSwgTlVMTCk7XG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTM3NC19XG4tLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz0zNzY9Ym9vbCBwdGR1bXBfY2hlY2tfd3godm9pZClcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTM5OS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6NDAwOlx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgXHUwMDI2aW5pdF9tbSwgTlVMTCk7XG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTQwMS1cbi0tXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM9MTgyPWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIxMC1cdFx0cmV0dXJuIHRydWU7XG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MjExOlx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgXHUwMDI2aW5pdF9tbSwgTlVMTCk7XG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjEyLVx0aWYgKHN0Lnd4X3BhZ2VzKSB7XG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTIyNj1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjUwLVx0bXV0ZXhfbG9jayhcdTAwMjZjcGFfbXV0ZXgpO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjI1MTpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1Mi1cdG11dGV4X3VubG9jayhcdTAwMjZjcGFfbXV0ZXgpO1xuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaD0zMD1zdHJ1Y3Qgc2VxX2ZpbGU7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzE6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzI6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTMzLVx0XHRcdFx0ICAgYm9vbCB1c2VyKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozNDpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjM1OiNkZWZpbmUgcHRkdW1wX2NoZWNrX3d4IHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jaGVja3d4XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMzYtdm9pZCBwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz04PXN0YXRpYyBpbnQgcHRkdW1wX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTkte1xuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjEwOlx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgXHUwMDI2aW5pdF9tbSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTExLVx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTE2PXN0YXRpYyBpbnQgcHRkdW1wX2N1cmtubF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbi0tXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMTgtXHRpZiAoY3VycmVudC1cdTAwM2VtbS1cdTAwM2VwZ2QpXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6MTk6XHRcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIGN1cnJlbnQtXHUwMDNlbW0sIGZhbHNlKTtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0yMC1cdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0yNj1zdGF0aWMgaW50IHB0ZHVtcF9jdXJ1c3Jfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTI4LVx0aWYgKGN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlcGdkKVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjI5Olx0XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBjdXJyZW50LVx1MDAzZW1tLCB0cnVlKTtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0zMC1cdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0zNz1zdGF0aWMgaW50IHB0ZHVtcF9lZmlfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTM5LVx0aWYgKGVmaV9tbS5wZ2QpXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6NDA6XHRcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIFx1MDAyNmVmaV9tbSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTQxLVx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM9NDE2PXN0YXRpYyB2b2lkIG5vdGVfcGFnZV9mbHVzaChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpwdF9zdClcbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00MjItXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0MjM6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00MjQtXHRcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCxcbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NTctXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NTg6XHRwdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBtbSwgcGdkKTtcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ1OS1cbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzMtXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NzQ6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3NS17XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NzY6XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShtLCBtbSwgbW0tXHUwMDNlcGdkLCBmYWxzZSwgdHJ1ZSk7XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzctfVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDc4LVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDc5OnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ4MC1cdFx0XHRcdCAgIGJvb2wgdXNlcilcbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00ODYtI2VuZGlmXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0ODc6XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShtLCBtbSwgcGdkLCBmYWxzZSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDg4LX1cbi0tXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYz00OTA9dm9pZCBwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTAwLVx0cGdkID0ga2VybmVsX3RvX3VzZXJfcGdkcChwZ2QpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTAxOlx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoTlVMTCwgXHUwMDI2aW5pdF9tbSwgcGdkLCB0cnVlLCBmYWxzZSk7XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDItI2VuZGlmXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTA0LVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTA1OmJvb2wgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NoZWNrd3godm9pZClcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwNi17XG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTA5LVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTEwOlx0cmV0dXJuIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKE5VTEwsIFx1MDAyNmluaXRfbW0sIElOSVRfUEdELCB0cnVlLCBmYWxzZSk7XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MTEtfVxuLS1cbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYz03NT12b2lkIF9faW5pdCBlZmlfZHVtcF9wYWdldGFibGUodm9pZClcbi0tXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzMyLmMtNzctI2lmZGVmIENPTkZJR19FRklfUEdUX0RVTVBcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYzo3ODpcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbChOVUxMLCBcdTAwMjZpbml0X21tKTtcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYy03OS0jZW5kaWZcbi0tXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmM9NDIzPXZvaWQgX19pbml0IGVmaV9kdW1wX3BhZ2V0YWJsZSh2b2lkKVxuLS1cbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYy00MjUtI2lmZGVmIENPTkZJR19FRklfUEdUX0RVTVBcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYzo0MjY6XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoTlVMTCwgXHUwMDI2ZWZpX21tKTtcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYy00MjctI2VuZGlmXG4tLVxuaW5jbHVkZS9saW51eC9wdGR1bXAuaD0xMz1zdHJ1Y3QgcHRkdW1wX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTI3LVxuaW5jbHVkZS9saW51eC9wdGR1bXAuaDoyODpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKHN0cnVjdCBzZXFfZmlsZSAqbSxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMjktXHRcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMzAtXHRcdFx0XHRib29sIGNoZWNrd3gsIGJvb2wgZG1lc2cpO1xuaW5jbHVkZS9saW51eC9wdGR1bXAuaDozMTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpO1xuaW5jbHVkZS9saW51eC9wdGR1bXAuaC0zMi1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKTtcbi0tXG5tbS9wdGR1bXAuYz0xNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwdGR1bXBfb3BzID0ge1xuLS1cbm1tL3B0ZHVtcC5jLTE3NC1cbm1tL3B0ZHVtcC5jOjE3NTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG5tbS9wdGR1bXAuYy0xNzYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTMwMwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWFjaGFiaWxpdHkgaW4gTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gYHB0ZHVtcF93YWxrX3BnZGAgaXMgY2FsbGVkIGJ5IGBwdGR1bXBfY2hlY2tfd3hgLCBhbmQgKnRoYXQqIGZ1bmN0aW9uIGdldHMgaW52b2tlZCBkdXJpbmcgYm9vdC4gU28sIG5vIHF1ZXN0aW9uLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjb2RlLiBXZSBrbm93IHdlJiMzOTtyZSBnb2luZyB0byBnZXQgdG8gaXQuIE1ha2VzIHNlbnNlLgoKQW5kIHRoZW4sIGlmIEkmIzM5O20gdW5kZXJzdGFuZGluZyB0aGlzIHJpZ2h0LCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBnZXRzIGNhbGxlZCAqYW55dGltZSoga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBmcmVlZC4gUmlnaHQsIHJpZ2h0LCB0aGluZ3MgbGlrZSB3aGVuIHdlJiMzOTtyZSByZWxlYXNpbmcgYHZtYWxsb2NgIG1lbW9yeSBvciBmcmVlaW5nIGh1Z2UgcGFnZXMgbWFwcGVkIHdpdGggYHZtYXBgLiBHb3QgaXQuIFRoYXQmIzM5O3MgYSBwcmV0dHkgd2lkZSBuZXQuCgpIbW0uLi4ganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O20gZ29pbmcgdG8gcmUtZXhhbWluZSB0aGUgY2FsbGVycyBvZiBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYC4gSnVzdCB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgcmVhY2ggaXMgc3RpbGwgY29ycmVjdC4gSXQgcGF5cyB0byBiZSB0aG9yb3VnaCB3aXRoIHRoaXMgc3R1ZmYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2V0YWJsZV9mcmVlX2tlcm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21tLmg9MzY5MT1zdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5Ny1cbmluY2x1ZGUvbGludXgvbW0uaDozNjk4OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk5LS8qKlxuLS1cbmluY2x1ZGUvbGludXgvbW0uaD0zNzA2PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcwOS1cdFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XG5pbmNsdWRlL2xpbnV4L21tLmg6MzcxMDpcdFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcbmluY2x1ZGUvbGludXgvbW0uaC0zNzExLVx0fSBlbHNlIHtcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MzQ9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTQtXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NTU6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTYte1xuLS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2My0jZWxzZVxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDY0OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDY1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgYHBhZ2V0YWJsZV9mcmVlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgcGFnZXRhYmxlX2ZyZWVgIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciwgd2VsbCwgZnJlZWluZyBwYWdlIHRhYmxlcy4gSSBrbm93IGl0JiMzOTtzIGNhbGxlZCBmcm9tIHZhcmlvdXMgb3RoZXIgZnJlZWluZyBmdW5jdGlvbnM6IGBwYWdldGFibGVfZHRvcl9mcmVlYCwgYW5kIHRoZW4sIGRlcGVuZGluZyBvbiB0aGUgbGV2ZWwgb2YgdGhlIHBhZ2UgdGFibGUsIGBwdWRfZnJlZWAsIGBwbWRfZnJlZWAsIGFuZCBgcHRlX2ZyZWVfa2VybmVsYCwgYW5kIHByb2JhYmx5IG90aGVycyBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSByZWNhbGxpbmcuIFNlZW1zIGxpa2UgdGhlIGNvbW1vbiBkZW5vbWluYXRvci4KClJpZ2h0LCBzbyBsZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBwYWdldGFibGVfZnJlZWAgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhhY3QgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIGxvd2VyIGxldmVsIGZyZWVpbmcgcm91dGluZXMsIGNvbnNpZGVyaW5nIGl0cyBjYWxsZWQgZnJvbSBhbGwgdGhlIHZhcmlvdXMgbGV2ZWxzIG9mIHBhZ2UgdGFibGUgbWFuYWdlbWVudC4gTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdldGFibGVfZnJlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L21tL2luaXRfNjQuYz0xMDA5PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCBmcmVlX3BhZ2V0YWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9yZGVyKVxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMDI2LVx0fSBlbHNlIHtcbmFyY2gveDg2L21tL2luaXRfNjQuYzoxMDI3Olx0XHRwYWdldGFibGVfZnJlZShwYWdlX3B0ZGVzYyhwYWdlKSk7XG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTAyOC1cdH1cbi0tXG5hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jPTQxMz1zdGF0aWMgdm9pZCBjcGFfY29sbGFwc2VfbGFyZ2VfcGFnZXMoc3RydWN0IGNwYV9kYXRhICpjcGEpXG4tLVxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy00NDAtXHRcdGxpc3RfZGVsKFx1MDAyNnB0ZGVzYy1cdTAwM2VwdF9saXN0KTtcbmFyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmM6NDQxOlx0XHRwYWdldGFibGVfZnJlZShwdGRlc2MpO1xuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy00NDItXHR9XG4tLVxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYz0xMjMzPXN0YXRpYyBpbnQgc3BsaXRfbGFyZ2VfcGFnZShzdHJ1Y3QgY3BhX2RhdGEgKmNwYSwgcHRlX3QgKmtwdGUsXG4tLVxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy0xMjQ2LVx0aWYgKF9fc3BsaXRfbGFyZ2VfcGFnZShjcGEsIGtwdGUsIGFkZHJlc3MsIHB0ZGVzYykpXG5hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jOjEyNDc6XHRcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XG5hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jLTEyNDgtXG4tLVxuYXJjaC94ODYvbW0vcGd0YWJsZS5jPTE1MD1zdGF0aWMgdm9pZCBmcmVlX3BtZHMoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWRzW10sIGludCBjb3VudClcbi0tXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMtMTU5LVx0XHRcdHBhZ2V0YWJsZV9kdG9yKHB0ZGVzYyk7XG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM6MTYwOlx0XHRcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMtMTYxLVx0XHRcdG1tX2RlY19ucl9wbWRzKG1tKTtcbi0tXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM9MTY1PXN0YXRpYyBpbnQgcHJlYWxsb2NhdGVfcG1kcyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZHNbXSwgaW50IGNvdW50KVxuLS1cbmFyY2gveDg2L21tL3BndGFibGUuYy0xODEtXHRcdGlmIChwdGRlc2MgXHUwMDI2XHUwMDI2ICFwYWdldGFibGVfcG1kX2N0b3IobW0sIHB0ZGVzYykpIHtcbmFyY2gveDg2L21tL3BndGFibGUuYzoxODI6XHRcdFx0cGFnZXRhYmxlX2ZyZWUocHRkZXNjKTtcbmFyY2gveDg2L21tL3BndGFibGUuYy0xODMtXHRcdFx0cHRkZXNjID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MDEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcqKgoKT2theSwgc28gaXQmIzM5O3MgY29uZmlybWVkOiBgcGFnZXRhYmxlX2ZyZWVgICppcyogZGVmaW5pdGVseSBpbiB1c2UuIFRoaXMgcGF0Y2ggaXMgbWFraW5nIHNvbWUgZnVuZGFtZW50YWwgY2hhbmdlcyB0byBob3cga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBmcmVlZCwgb3B0aW5nIGZvciBkZWZlcnJlZCBmcmVlaW5nIHVzaW5nIFJDVS4gVGhlIHByaW1hcnkgbW90aXZhdGlvbiBoZXJlLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHRvIG1pdGlnYXRlIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIHNwZWNpZmljYWxseSB3aGVuIGxvY2tsZXNzbHkgdHJhdmVyc2luZyBrZXJuZWwgcGFnZSB0YWJsZXMsIHNvbWV0aGluZyB0aGF0JiMzOTtzIGNydWNpYWwgZHVyaW5nIHByb2Nlc3NlcyBsaWtlIGBwdGR1bXBgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlcmVmb3JlIHdvcnRoeSBvZiB0aG9yb3VnaCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBhcmVhcyBvZiBmb2N1cyBhcmUgZ29pbmcgdG8gYmUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAsIHdoaWNoIGFyZSB0aGUgb2J2aW91cyBjYW5kaWRhdGVzLCBhbG9uZ3NpZGUgYHB0ZHVtcF93YWxrX3BnZGAsIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCwgYW5kIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzYCDigJMgdGhvc2UgZnVuY3Rpb25zIHJlcHJlc2VudCB0aGUgYXJlYXMgdGhpcyBwYXRjaCBpcyBpbnRlbmRlZCB0byBwcm90ZWN0LgoKV2FpdCBhIHNlY29uZCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIGFsc28gc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIHRvIG5vdyBjYWxsIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAgYmV0dGVyLiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCB0byBmdWxseSBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGNhbGwgY2hhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0PTM4Mj1XZSBhbHNvIHBlcm1pdCBhIHRydWx5IHVudXN1YWwgY2FzZSBpcyB0aGUgdHJhdmVyc2FsIG9mIG5vbi1WTUEgcmFuZ2VzIGluXG5Eb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0OjM4MzoqKnVzZXJsYW5kKiogcmFuZ2VzLCBhcyBwcm92aWRlZCBmb3IgYnkgOmM6ZnVuYzpgIXdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuXG5Eb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0LTM4NC1cbi0tXG5tbS9pbnRlcm5hbC5oPTE4NDA9aW50IHdhbGtfcGFnZV9yYW5nZV92bWFfdW5zYWZlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbm1tL2ludGVybmFsLmgtMTg0Mi1cdFx0dm9pZCAqcHJpdmF0ZSk7XG5tbS9pbnRlcm5hbC5oOjE4NDM6aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbm1tL2ludGVybmFsLmgtMTg0NC1cdFx0XHQgIHVuc2lnbmVkIGxvbmcgZW5kLCBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyxcbi0tXG5tbS9wYWdld2Fsay5jPTY0OD1pbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9wYWdld2Fsay5jLTY2Ny0vKipcbm1tL3BhZ2V3YWxrLmM6NjY4OiAqIHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyAtIHdhbGsgYSByYW5nZSBvZiBwYWdldGFibGVzIG5vdCBiYWNrZWQgYnkgYSB2bWFcbm1tL3BhZ2V3YWxrLmMtNjY5LSAqIEBtbTpcdFx0bW1fc3RydWN0IHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IHByb2Nlc3Mgb2YgcGFnZSB0YWJsZSB3YWxrXG4tLVxubW0vcGFnZXdhbGsuYy02ODEtICovXG5tbS9wYWdld2Fsay5jOjY4MjppbnQgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxubW0vcGFnZXdhbGsuYy02ODMtXHRcdFx0ICB1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXG4tLVxubW0vcHRkdW1wLmM9MTc1PXZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZClcbi0tXG5tbS9wdGR1bXAuYy0xODItXHR3aGlsZSAocmFuZ2UtXHUwMDNlc3RhcnQgIT0gcmFuZ2UtXHUwMDNlZW5kKSB7XG5tbS9wdGR1bXAuYzoxODM6XHRcdHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhtbSwgcmFuZ2UtXHUwMDNlc3RhcnQsIHJhbmdlLVx1MDAzZWVuZCxcbm1tL3B0ZHVtcC5jLTE4NC1cdFx0XHRcdCAgICAgIFx1MDAyNnB0ZHVtcF9vcHMsIHBnZCwgc3QpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzkxMQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKlRyYWNpbmcgdGhlIERlcGVuZGVuY3kgQ2hhaW4gaW4gdGhlIFBhZ2UgVGFibGUgRHVtcCBDb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AgaGFzIGEgdmVyeSBzcGVjaWZpYyBwdXJwb3Nl4oCUaXQmIzM5O3MgYmVpbmcgdXRpbGl6ZWQgZGlyZWN0bHkgYnkgYHB0ZHVtcF93YWxrX3BnZGAuIFRoZW4sIGBwdGR1bXBfd2Fsa19wZ2RgIGl0c2VsZiBoYXMgdHdvIHByaW1hcnkgY29uc3VtZXJzOiBgUFREVU1QX0RFQlVHRlNgIGFuZCBgUFREVU1QX0NPUkVgLiBHaXZlbiB0aGUgb3B0aW9ucywgSSB3YW50IHRvIGludmVzdGlnYXRlIHRoZSBgUFREVU1QX0RFQlVHRlNgIHVzYWdlLiBJdCBzZWVtcyB0byBoYXZlIHRoZSBoaWdoZXIgbGV2ZWwgb2YgZGVwZW5kZW5jeSBzbyB0aGlzIGlzIHdoZXJlIEkgd2lsbCBzdGFydCBteSB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQVERVTVBfREVCVUdGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FyY2gvYXJtNjQvcHRkdW1wLnJzdD0yMz1jb25maWd1cmF0aW9ucyBhbmQgbW91bnQgZGVidWdmczo6XG5Eb2N1bWVudGF0aW9uL2FyY2gvYXJtNjQvcHRkdW1wLnJzdC0yNC1cbkRvY3VtZW50YXRpb24vYXJjaC9hcm02NC9wdGR1bXAucnN0OjI1OiBDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxuRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L3B0ZHVtcC5yc3QtMjYtXG4tLVxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zz0zPWNvbmZpZyBBUk1fUFREVU1QX0NPUkVcbi0tXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnLTUtXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnOjY6Y29uZmlnIEFSTV9QVERVTVBfREVCVUdGU1xuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zy03LVx0Ym9vbCBcJiMzNDtFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXCYjMzQ7XG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MjI9dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgcHRkdW1wX2luZm8gKmluZm8pO1xuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg6MjM6I2lmZGVmIENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlNcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTI0LSNkZWZpbmUgRUZJX1JVTlRJTUVfTUFQX0VORFx0U1pfMUdcbi0tXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaD0yNz1zdGF0aWMgaW5saW5lIHZvaWQgcHRkdW1wX2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvLFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMjgtXHRcdFx0XHRcdCAgIGNvbnN0IGNoYXIgKm5hbWUpIHsgfVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg6Mjk6I2VuZGlmIC8qIENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlMgKi9cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTMwLVxuLS1cbmFyY2gvYXJtL21tL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19BUk1fUFREVU1QX0NPUkUpXHQmIzQzOz0gZHVtcC5vXG5hcmNoL2FybS9tbS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfQVJNX1BURFVNUF9ERUJVR0ZTKVx0JiM0Mzs9IHB0ZHVtcF9kZWJ1Z2ZzLm9cbmFyY2gvYXJtL21tL01ha2VmaWxlLTE5LW9iai0kKENPTkZJR19NT0RVTEVTKVx0XHQmIzQzOz0gcHJvYy1zeW1zLm9cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3B0ZHVtcC5oPTcwPXZvaWQgbm90ZV9wYWdlX2ZsdXNoKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0KTtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmg6NzE6I2lmZGVmIENPTkZJR19QVERVTVBfREVCVUdGU1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaC03Mi0jZGVmaW5lIEVGSV9SVU5USU1FX01BUF9FTkRcdERFRkFVTFRfTUFQX1dJTkRPV182NFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmg9NzU9c3RhdGljIGlubGluZSB2b2lkIHB0ZHVtcF9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmgtNzYtXHRcdFx0XHRcdCAgIGNvbnN0IGNoYXIgKm5hbWUpIHsgfVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaDo3NzojZW5kaWYgLyogQ09ORklHX1BURFVNUF9ERUJVR0ZTICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTc4LSNlbHNlXG4tLVxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZT04PW9iai0kKENPTkZJR19QVERVTVApXHRcdCYjNDM7PSBwdGR1bXAub1xuYXJjaC9hcm02NC9tbS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcdCYjNDM7PSBwdGR1bXBfZGVidWdmcy5vXG5hcmNoL2FybTY0L21tL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19UUkFOU19UQUJMRSlcdCYjNDM7PSB0cmFuc19wZ2Qub1xuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnPTc5PUNPTkZJR19QUENfRUFSTFlfREVCVUc9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWc6ODA6Q09ORklHX1BURFVNUF9ERUJVR0ZTPXlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BQQ19CT09LM1NfNjQpXHQmIzQzOz0gYm9vazNzNjQub1xuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9NYWtlZmlsZS0xMC1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvTWFrZWZpbGU6MTE6aWZkZWYgQ09ORklHX1BURFVNUF9ERUJVR0ZTXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19QUENfQk9PSzNTXzMyKVx0JiM0Mzs9IGJhdHMubyBzZWdtZW50X3JlZ3Mub1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9NDA2PXN0YXRpYyBpbnQgX19pbml0IHB0ZHVtcF9pbml0KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy00MTktXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jOjQyMDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19QVERVTVBfREVCVUdGUykpXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTQyMS1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtrZXJuZWxfcGFnZV90YWJsZXNcJiMzNDssIDA0MDAsIE5VTEwsIE5VTEwsIFx1MDAyNnB0ZHVtcF9mb3BzKTtcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9ODQyPUNPTkZJR19ERUJVR19XWD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODQzOkNPTkZJR19QVERVTVBfREVCVUdGUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctODQ0LUNPTkZJR19ERUJVR19PQkpFQ1RTPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9ODIxPUNPTkZJR19ERUJVR19XWD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6ODIyOkNPTkZJR19QVERVTVBfREVCVUdGUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctODIzLUNPTkZJR19ERUJVR19NRU1PUllfSU5JVD15XG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTE4Mj1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yMjQtXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MjI1OiNpZmRlZiBDT05GSUdfUFREVU1QX0RFQlVHRlNcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yMjYtc3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTI1NT1ERUZJTkVfU0hPV19BVFRSSUJVVEUocHRkdW1wKTtcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYzoyNTY6I2VuZGlmIC8qIENPTkZJR19QVERVTVBfREVCVUdGUyAqL1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1Ny1cbi0tXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM9MzE1PXN0YXRpYyBpbnQgcHRfZHVtcF9pbml0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTM1NS1cdHNvcnQoXHUwMDI2bWFya2Vyc1sxXSwgbWFya2Vyc19jbnQgLSAxLCBzaXplb2YoKm1hcmtlcnMpLCBwdGR1bXBfY21wLCBOVUxMKTtcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYzozNTY6I2lmZGVmIENPTkZJR19QVERVTVBfREVCVUdGU1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTM1Ny1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7a2VybmVsX3BhZ2VfdGFibGVzXCYjMzQ7LCAwNDAwLCBOVUxMLCBOVUxMLCBcdTAwMjZwdGR1bXBfZm9wcyk7XG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MzU4OiNlbmRpZiAvKiBDT05GSUdfUFREVU1QX0RFQlVHRlMgKi9cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0zNTktXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9tbS9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfUFREVU1QKVx0XHQmIzQzOz0gZHVtcF9wYWdldGFibGVzLm9cbmFyY2gveDg2L21tL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcdCYjNDM7PSBkZWJ1Z19wYWdldGFibGVzLm9cbmFyY2gveDg2L21tL01ha2VmaWxlLTM5LVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2FybS1ydW50aW1lLmMtMjctXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9hcm0tcnVudGltZS5jOjI4OiNpZiBkZWZpbmVkKENPTkZJR19QVERVTVBfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVJNX1BURFVNUF9ERUJVR0ZTKVxuZHJpdmVycy9maXJtd2FyZS9lZmkvYXJtLXJ1bnRpbWUuYy0yOS0jaW5jbHVkZSBcdTAwM2Nhc20vcHRkdW1wLmhcdTAwM2Vcbi0tXG5rZXJuZWwvY29uZmlncy9kZWJ1Zy5jb25maWc9Nzg9Q09ORklHX0tBU0FOX1ZNQUxMT0M9eVxua2VybmVsL2NvbmZpZ3MvZGVidWcuY29uZmlnOjc5OkNPTkZJR19QVERVTVBfREVCVUdGUz15XG5rZXJuZWwvY29uZmlncy9kZWJ1Zy5jb25maWctODAtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XG4tLVxubW0vS2NvbmZpZy5kZWJ1Zz0yMTk9Y29uZmlnIFBURFVNUFxuLS1cbm1tL0tjb25maWcuZGVidWctMjIxLVxubW0vS2NvbmZpZy5kZWJ1ZzoyMjI6Y29uZmlnIFBURFVNUF9ERUJVR0ZTXG5tbS9LY29uZmlnLmRlYnVnLTIyMy1cdGJvb2wgXCYjMzQ7RXhwb3J0IGtlcm5lbCBwYWdldGFibGUgbGF5b3V0IHRvIHVzZXJzcGFjZSB2aWEgZGVidWdmc1wmIzM0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND0xMTQ9Q09ORklHX1BST1ZFX0xPQ0tJTkc9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjExNTpDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTExNi1DT05GSUdfUkNfREVWSUNFUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD05NT1DT05GSUdfUFJPVkVfTE9DS0lORz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4Ojk2OkNPTkZJR19QVERVTVBfREVCVUdGUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4LTk3LUNPTkZJR19SQ19ERVZJQ0VTPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYzNzMKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgRGVidWdnaW5nIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYFBURFVNUF9ERUJVR0ZTYC4gVGhhdCYjMzk7cyBhIHByZXR0eSBnZW5lcmljIGNvbmZpZyBvcHRpb24sIEkgc2VlIGl0IHBvcHBpbmcgdXAgaW4gdmFyaW91cyBwbGFjZXMuIFRoZW4gdGhlcmUmIzM5O3MgYERFQlVHX1dYYCwgYW5kIHRoYXQgb25lIHNwZWNpZmljYWxseSBzZWVtcyB0byBsZXZlcmFnZSBgcHRkdW1wX2NoZWNrX3d4YC4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCB0cmFjayB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmZWF0dXJlcyBpbnRlcmNvbm5lY3QuIE9rYXksIGxldCYjMzk7cyB6b29tIGluIG9uIGBERUJVR19XWGAgYW5kIHNlZSB3aGF0IHRoYXQmIzM5O3MgYWxsIGFib3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERUJVR19XWCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjY1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnPTY9Y29uZmlnIEFSTV9QVERVTVBfREVCVUdGU1xuLS1cbmFyY2gvYXJtL0tjb25maWcuZGVidWctMTktXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnOjIwOmNvbmZpZyBBUk1fREVCVUdfV1hcbmFyY2gvYXJtL0tjb25maWcuZGVidWctMjEtXHRib29sIFwmIzM0O1dhcm4gb24gVyYjNDM7WCBtYXBwaW5ncyBhdCBib290XCYjMzQ7XG4tLVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnPTI1Mz1DT05GSUdfREVCVUdfRlM9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjI1NDpDT05GSUdfQVJNX0RFQlVHX1dYPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy0yNTUtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTMwMz1DT05GSUdfREVCVUdfRlM9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnOjMwNDpDT05GSUdfQVJNX0RFQlVHX1dYPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy0zMDUtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc9MjI3PUNPTkZJR19ERUJVR19GUz15XG5hcmNoL2FybS9jb25maWdzL3NobW9iaWxlX2RlZmNvbmZpZzoyMjg6Q09ORklHX0FSTV9ERUJVR19XWD15XG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MzE9dm9pZCBwdGR1bXBfY2hlY2tfd3godm9pZCk7XG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMzQtXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDozNTojaWZkZWYgQ09ORklHX0FSTV9ERUJVR19XWFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMzYtI2RlZmluZSBhcm1fZGVidWdfY2hlY2t3eCgpIHB0ZHVtcF9jaGVja193eCgpXG4tLVxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XG4tLVxuYXJjaC9hcm02NC9LY29uZmlnLTEzLVx0c2VsZWN0IEFDUElfUFBUVCBpZiBBQ1BJXG5hcmNoL2FybTY0L0tjb25maWc6MTQ6XHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNS1cdHNlbGVjdCBBUkNIX0JJTkZNVF9FTEZfRVhUUkFfUEhEUlNcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZz0xMTg9Y29uZmlnIFBQQ1xuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzMi1cdHNlbGVjdCBBUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzoxMzM6XHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcdFx0aWYgU1RSSUNUX0tFUk5FTF9SV1hcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzNC1cdHNlbGVjdCBBUkNIX0hBU19ERVZNRU1fSVNfQUxMT1dFRFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0zOTY9Q09ORklHX0RFQlVHX1JPREFUQV9URVNUPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzozOTc6Q09ORklHX0RFQlVHX1dYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy0zOTgtQ09ORklHX0RFQlVHX1NUQUNLX1VTQUdFPXlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTE4ND1zdGF0aWMgdm9pZCBub3RlX3Byb3Rfd3goc3RydWN0IHBnX3N0YXRlICpzdCwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMTkzLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzoxOTQ6XHRXQVJOX09OQ0UoSVNfRU5BQkxFRChDT05GSUdfREVCVUdfV1gpLFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0xOTUtXHRcdCAgXCYjMzQ7cG93ZXJwYy9tbTogRm91bmQgaW5zZWN1cmUgVyYjNDM7WCBtYXBwaW5nIGF0IGFkZHJlc3MgJXAvJXBTXFxuXCYjMzQ7LFxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZz0xMz1jb25maWcgUklTQ1Zcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWctMzAtXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfVk1fUEdUQUJMRVxuYXJjaC9yaXNjdi9LY29uZmlnOjMxOlx0c2VsZWN0IEFSQ0hfSEFTX0RFQlVHX1dYXG5hcmNoL3Jpc2N2L0tjb25maWctMzItXHRzZWxlY3QgQVJDSF9IQVNfRUxGX0NPUkVfRUZMQUdTIGlmIEJJTkZNVF9FTEYgXHUwMDI2XHUwMDI2IEVMRl9DT1JFXG4tLVxuYXJjaC9zMzkwL0tjb25maWc9NzU9Y29uZmlnIFMzOTBcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy05MC1cdHNlbGVjdCBBUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFXG5hcmNoL3MzOTAvS2NvbmZpZzo5MTpcdHNlbGVjdCBBUkNIX0hBU19ERUJVR19XWFxuYXJjaC9zMzkwL0tjb25maWctOTItXHRzZWxlY3QgQVJDSF9IQVNfREVWTUVNX0lTX0FMTE9XRURcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9ODQxPUNPTkZJR19ERUJVR19ST0RBVEFfVEVTVD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODQyOkNPTkZJR19ERUJVR19XWD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctODQzLUNPTkZJR19QVERVTVBfREVCVUdGUz15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTgyMD1DT05GSUdfTUFHSUNfU1lTUlE9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjgyMTpDT05GSUdfREVCVUdfV1g9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTgyMi1DT05GSUdfUFREVU1QX0RFQlVHRlM9eVxuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz03MT1zdGF0aWMgdm9pZCBub3RlX3Byb3Rfd3goc3RydWN0IHBnX3N0YXRlICpzdCwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy04OC1cdFx0cmV0dXJuO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjg5Olx0V0FSTl9PTkNFKElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX1dYKSxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy05MC1cdFx0ICBcJiMzNDtzMzkwL21tOiBGb3VuZCBpbnNlY3VyZSBXJiM0MztYIG1hcHBpbmcgYXQgYWRkcmVzcyAlcFNcXG5cJiMzNDssXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0xMTEtXHRzZWxlY3QgQVJDSF9IQVNfVUJTQU5cbmFyY2gveDg2L0tjb25maWc6MTEyOlx0c2VsZWN0IEFSQ0hfSEFTX0RFQlVHX1dYXG5hcmNoL3g4Ni9LY29uZmlnLTExMy1cdHNlbGVjdCBBUkNIX0hBU19aT05FX0RNQV9TRVQgaWYgRVhQRVJUXG4tLVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTI2NT1DT05GSUdfTUFHSUNfU1lTUlE9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjI2NjpDT05GSUdfREVCVUdfV1g9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTI2Ny1DT05GSUdfREVCVUdfU1RBQ0tfVVNBR0U9eVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaD0zNj12b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7XG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTQzLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjQ0OiNpZmRlZiBDT05GSUdfREVCVUdfV1hcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaC00NS0jZGVmaW5lIGRlYnVnX2NoZWNrd3hfdXNlcigpXHRwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NTU1PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY1NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NTY5Olx0SVBXX0RFQlVHX1dYKFwmIzM0O05hbWU6ICVzXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjU3MC1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY1NzM9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9mcmVxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjYwOS1cdH0gZWxzZSB7XHRcdC8qIFNldCB0aGUgY2hhbm5lbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjYxMDpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBGcmVxL0NoYW5uZWwgLVx1MDAzZSAlZFxcblwmIzM0OywgZndycS1cdTAwM2VtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2MTEtXHRcdGVyciA9IGlwdzIxMDBfc2V0X2NoYW5uZWwocHJpdiwgZndycS1cdTAwM2VtLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NjE5PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfZnJlcShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NjM5Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBGcmVxL0NoYW5uZWwgLVx1MDAzZSAlZFxcblwmIzM0OywgcHJpdi1cdTAwM2VjaGFubmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2NDAtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NjQ0PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2NjUxOlx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBNb2RlIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY2ODM9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjY5My1cdHdycXUtXHUwMDNlbW9kZSA9IHByaXYtXHUwMDNlaWVlZS1cdTAwM2Vpd19tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjY5NDpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgTW9kZSAtXHUwMDNlICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZW1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjY5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02NzE4PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfcmFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjgzODpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgUmFuZ2VcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjgzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02ODQzPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjg2Mi1cdFx0Lyogd2UgZGlzYWJsZSBtYW5kYXRvcnkgQlNTSUQgYXNzb2NpYXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY4NjM6XHRcdElQV19ERUJVR19XWChcJiMzNDtleGl0IC0gZGlzYWJsZSBtYW5kYXRvcnkgQlNTSURcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjg2NC1cdFx0cHJpdi1cdTAwM2Vjb25maWcgXHUwMDI2PSB+Q0ZHX1NUQVRJQ19CU1NJRDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njg3NDpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgQlNTSUQgLVx1MDAzZSAlcE1cXG5cJiMzNDssIHdycXUtXHUwMDNlYXBfYWRkci5zYV9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY4NzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9Njg4MT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3dhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY4OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2ODk5Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dldHRpbmcgV0FQIEJTU0lEOiAlcE1cXG5cJiMzNDssIHdycXUtXHUwMDNlYXBfYWRkci5zYV9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MDAtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02OTAzPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfZXNzaWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTIzLVx0aWYgKGxlbmd0aCA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2OTI0Olx0XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyBFU1NJRCB0byBBTllcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjkyNS1cdFx0cHJpdi1cdTAwM2Vjb25maWcgXHUwMDI2PSB+Q0ZHX1NUQVRJQ19FU1NJRDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTM0LVx0aWYgKHByaXYtXHUwMDNlZXNzaWRfbGVuID09IGxlbmd0aCBcdTAwMjZcdTAwMjYgIW1lbWNtcChwcml2LVx1MDAzZWVzc2lkLCBleHRyYSwgbGVuZ3RoKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjkzNTpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O0VTU0lEIHNldCB0byBjdXJyZW50IEVTU0lELlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTM2LVx0XHRlcnIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2OTQwOlx0SVBXX0RFQlVHX1dYKFwmIzM0O1NldHRpbmcgRVNTSUQ6ICYjMzk7JSpwRSYjMzk7ICglZClcXG5cJiMzNDssIGxlbmd0aCwgZXNzaWQsIGxlbmd0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY5NTI9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5NjQtXHRpZiAocHJpdi1cdTAwM2Vjb25maWcgXHUwMDI2IENGR19TVEFUSUNfRVNTSUQgfHwgcHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IFNUQVRVU19BU1NPQ0lBVEVEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2OTY1Olx0XHRJUFdfREVCVUdfV1goXCYjMzQ7R2V0dGluZyBlc3NpZDogJiMzOTslKnBFJiMzOTtcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTY2LVx0XHRcdCAgICAgcHJpdi1cdTAwM2Vlc3NpZF9sZW4sIHByaXYtXHUwMDNlZXNzaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5NzAtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk3MTpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O0dldHRpbmcgZXNzaWQ6IEFOWVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTcyLVx0XHR3cnF1LVx1MDAzZWVzc2lkLmxlbmd0aCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9Njk3OT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk5NjpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgTmlja25hbWUgLVx1MDAzZSAlc1xcblwmIzM0OywgcHJpdi1cdTAwM2VuaWNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5OTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzAwMT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzAxNTpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgTmlja25hbWUgLVx1MDAzZSAlc1xcblwmIzM0OywgZXh0cmEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzAxNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MDIwPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfcmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcwNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MDU0Olx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBSYXRlIC1cdTAwM2UgJTA0WFxcblwmIzM0OywgcmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDU1LSAgICAgIGRvbmU6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzA2MD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3JhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDgzLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzA4NDpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O2ZhaWxlZCBxdWVyeWluZyBvcmRpbmFscy5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzA4NS1cdFx0Z290byBkb25lO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcxMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MTA1Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBSYXRlIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlYml0cmF0ZS52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcxMTI9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzE0MTpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgUlRTIFRocmVzaG9sZCAtXHUwMDNlIDB4JTA4WFxcblwmIzM0OywgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzE0Mi0gICAgICBkb25lOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcxNDc9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzE2MzpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgUlRTIFRocmVzaG9sZCAtXHUwMDNlIDB4JTA4WFxcblwmIzM0Oywgd3JxdS1cdTAwM2VydHMudmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzE2NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MTY4PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfdHhwb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzIwMjpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgVFggUG93ZXIgLVx1MDAzZSAlZFxcblwmIzM0OywgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzIwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MjA5PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfdHhwb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzIzMTpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgVFggUG93ZXIgLVx1MDAzZSAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2V0eHBvd2VyLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcyMzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzIzNj1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X2ZyYWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzI2MTpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgRnJhZyBUaHJlc2hvbGQgLVx1MDAzZSAlZFxcblwmIzM0OywgcHJpdi1cdTAwM2VpZWVlLVx1MDAzZWZ0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcyNjY9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9mcmFnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzI3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcyNzk6XHRJUFdfREVCVUdfV1goXCYjMzQ7R0VUIEZyYWcgVGhyZXNob2xkIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlZnJhZy52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjgwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcyODQ9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczMDQtXHRcdGVyciA9IGlwdzIxMDBfc2V0X3Nob3J0X3JldHJ5KHByaXYsIHdycXUtXHUwMDNlcmV0cnkudmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzMwNTpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBTaG9ydCBSZXRyeSBMaW1pdCAtXHUwMDNlICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzMwNi1cdFx0XHQgICAgIHdycXUtXHUwMDNlcmV0cnkudmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczMTEtXHRcdGVyciA9IGlwdzIxMDBfc2V0X2xvbmdfcmV0cnkocHJpdiwgd3JxdS1cdTAwM2VyZXRyeS52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzEyOlx0XHRJUFdfREVCVUdfV1goXCYjMzQ7U0VUIExvbmcgUmV0cnkgTGltaXQgLVx1MDAzZSAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczMTMtXHRcdFx0ICAgICB3cnF1LVx1MDAzZXJldHJ5LnZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzMyMTpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgQm90aCBSZXRyeSBMaW1pdHMgLVx1MDAzZSAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2VyZXRyeS52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzIyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTczMjg9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzU1Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBSZXRyeSAtXHUwMDNlICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZXJldHJ5LnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczNTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzM2MD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzM3MzpcdElQV19ERUJVR19XWChcJiMzNDtJbml0aWF0aW5nIHNjYW4uLi5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03Mzc2LVx0aWYgKGlwdzIxMDBfc2V0X3NjYW5fb3B0aW9ucyhwcml2KSB8fCBpcHcyMTAwX3N0YXJ0X3NjYW4ocHJpdikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjczNzc6XHRcdElQV19ERUJVR19XWChcJiMzNDtTdGFydCBzY2FuIGZhaWxlZC5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03NDI3PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfcG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDQyLVx0XHRlcnIgPSBpcHcyMTAwX3NldF9wb3dlcl9tb2RlKHByaXYsIElQV19QT1dFUl9NT0RFX0NBTSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3NDQzOlx0XHRJUFdfREVCVUdfV1goXCYjMzQ7U0VUIFBvd2VyIE1hbmFnZW1lbnQgTW9kZSAtXHUwMDNlIG9mZlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDQ0LVx0XHRnb3RvIGRvbmU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzQ1Mi1cdGRlZmF1bHQ6XHRcdC8qIE90aGVyd2lzZSB3ZSBkb24mIzM5O3Qgc3VwcG9ydCBpdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ1MzpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1NFVCBQTSBNb2RlOiAlWCBub3Qgc3VwcG9ydGVkLlxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0NTQtXHRcdFx0ICAgICB3cnF1LVx1MDAzZXBvd2VyLmZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ2NDpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgUG93ZXIgTWFuYWdlbWVudCBNb2RlIC1cdTAwM2UgMHglMDJYXFxuXCYjMzQ7LCBwcml2LVx1MDAzZXBvd2VyX21vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzQ2NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03NDcyPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfcG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ4OTpcdElQV19ERUJVR19XWChcJiMzNDtHRVQgUG93ZXIgTWFuYWdlbWVudCBNb2RlIC1cdTAwM2UgJTAyWFxcblwmIzM0OywgcHJpdi1cdTAwM2Vwb3dlcl9tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0OTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9ODA2NT1zdGF0aWMgc3RydWN0IGl3X3N0YXRpc3RpY3MgKmlwdzIxMDBfd3hfd2lyZWxlc3Nfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTY5LVx0XHRpZiAoYmVhY29uX3F1YWwgPT0gcXVhbGl0eSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjgxNzA6XHRcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1F1YWxpdHkgY2xhbXBlZCBieSBNaXNzZWQgQmVhY29uc1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTcxLVx0XHRlbHNlIGlmICh0eF9xdWFsID09IHF1YWxpdHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTcyOlx0XHRcdElQV19ERUJVR19XWChcJiMzNDtRdWFsaXR5IGNsYW1wZWQgYnkgVHggUmV0cmllc1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTczLVx0XHRlbHNlIGlmIChxdWFsaXR5ICE9IDEwMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjgxNzQ6XHRcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O1F1YWxpdHkgY2xhbXBlZCBieSBTaWduYWwgU3RyZW5ndGhcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE3NS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6ODE3NjpcdFx0XHRJUFdfREVCVUdfV1goXCYjMzQ7UXVhbGl0eSBub3QgY2xhbXBlZC5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE3Ny0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTk3LSAgICAgIGZhaWxfZ2V0X29yZGluYWw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTk4Olx0SVBXX0RFQlVHX1dYKFwmIzM0O2ZhaWxlZCBxdWVyeWluZyBvcmRpbmFscy5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz04MjEzPXN0YXRpYyB2b2lkIGlwdzIxMDBfd3hfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODIyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjgyMjU6XHRJUFdfREVCVUdfV1goXCYjMzQ7ZW50ZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODIyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MjQ4LVx0aWYgKCEocHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IFNUQVRVU19BU1NPQ0lBVEVEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6ODI0OTpcdFx0SVBXX0RFQlVHX1dYKFwmIzM0O0NvbmZpZ3VyaW5nIEVTU0lEXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgyNTAtXHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VhY3Rpb25fbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oPTM5PXN0cnVjdCBpcHcyMTAwX3J4X3BhY2tldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuaC05OS0jZGVmaW5lIElQV19ERUJVR19JTkZPKGYuLi4pICAgIElQV19ERUJVRyhJUFdfRExfSU5GTywgIyMgZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oOjEwMDojZGVmaW5lIElQV19ERUJVR19XWChmLi4uKSAgICAgSVBXX0RFQlVHKElQV19ETF9XWCwgIyMgZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oLTEwMS0jZGVmaW5lIElQV19ERUJVR19TQ0FOKGYuLi4pICAgSVBXX0RFQlVHKElQV19ETF9TQ0FOLCAjIyBmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTYwMjE9c3RhdGljIHZvaWQgaXB3X3NldF9maXhlZF9yYXRlKHN0cnVjdCBpcHdfcHJpdiAqcHJpdiwgaW50IG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjAzNi1cdFx0XHQvKiBJbnZhbGlkIGZpeGVkIHJhdGUgbWFzayAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjAzNzpcdFx0XHRJUFdfREVCVUdfV1hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTYwMzgtXHRcdFx0ICAgIChcJiMzNDtpbnZhbGlkIGZpeGVkIHJhdGUgbWFzayBpbiBpcHdfc2V0X2ZpeGVkX3JhdGVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTYwNTAtXHRcdFx0XHQvKiBJbnZhbGlkIGZpeGVkIHJhdGUgbWFzayAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjA1MTpcdFx0XHRcdElQV19ERUJVR19XWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjA1Mi1cdFx0XHRcdCAgICAoXCYjMzQ7aW52YWxpZCBmaXhlZCByYXRlIG1hc2sgaW4gaXB3X3NldF9maXhlZF9yYXRlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDYxLVx0XHRcdC8qIEludmFsaWQgZml4ZWQgcmF0ZSBtYXNrICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo2MDYyOlx0XHRcdElQV19ERUJVR19XWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjA2My1cdFx0XHQgICAgKFwmIzM0O2ludmFsaWQgZml4ZWQgcmF0ZSBtYXNrIGluIGlwd19zZXRfZml4ZWRfcmF0ZVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9NjIyMj1zdGF0aWMgaW50IGlwd19yZXF1ZXN0X3NjYW5faGVscGVyKHN0cnVjdCBpcHdfcHJpdiAqcHJpdiwgaW50IHR5cGUsIGludCBkaXJlY3QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjI2NC1cdGlmICh0eXBlID09IElXX1NDQU5fVFlQRV9QQVNTSVZFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo2MjY1Olx0XHRJUFdfREVCVUdfV1goXCYjMzQ7dXNlIHBhc3NpdmUgc2Nhbm5pbmdcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtNjI2Ni1cdFx0c2Nhbl90eXBlID0gSVBXX1NDQU5fUEFTU0lWRV9GVUxMX0RXRUxMX1NDQU47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9ODYwMD1zdGF0aWMgaW50IGlwd193eF9zZXRfZnJlcShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MTEtXHRpZiAoZndycS1cdTAwM2VtID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2MTI6XHRcdElQV19ERUJVR19XWChcJiMzNDtTRVQgRnJlcS9DaGFubmVsIC1cdTAwM2UgYW55XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MTMtXHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VtdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODYzNi1cdFx0aWYgKGZsYWdzIFx1MDAyNiBMSUJJUFdfQ0hfUEFTU0lWRV9PTkxZKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4NjM3Olx0XHRcdElQV19ERUJVR19XWChcJiMzNDtJbnZhbGlkIEFkLUhvYyBjaGFubmVsIGZvciA4MDIuMTFhXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MzgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODY0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2NDI6XHRJUFdfREVCVUdfV1goXCYjMzQ7U0VUIEZyZXEvQ2hhbm5lbCAtXHUwMDNlICVkXFxuXCYjMzQ7LCBmd3JxLVx1MDAzZW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODY0My1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VtdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9ODY0OT1zdGF0aWMgaW50IGlwd193eF9nZXRfZnJlcShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2ODMtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4Njg0Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBGcmVxL0NoYW5uZWwgLVx1MDAzZSAlZFxcblwmIzM0OywgcHJpdi1cdTAwM2VjaGFubmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2ODUtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04Njg4PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODY5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2OTU6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0IE1PREU6ICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZW1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODY5Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04NzQwPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODc0Ni1cdHdycXUtXHUwMDNlbW9kZSA9IHByaXYtXHUwMDNlaWVlZS1cdTAwM2Vpd19tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODc0NzpcdElQV19ERUJVR19XWChcJiMzNDtHZXQgTU9ERSAtXHUwMDNlICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZW1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODc0OC1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04NzY5PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4ODU5Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBSYW5nZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04ODYwLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9ODg2Mz1zdGF0aWMgaW50IGlwd193eF9zZXRfd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODg3NC1cdFx0Lyogd2UgZGlzYWJsZSBtYW5kYXRvcnkgQlNTSUQgYXNzb2NpYXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4NzU6XHRcdElQV19ERUJVR19XWChcJiMzNDtTZXR0aW5nIEFQIEJTU0lEIHRvIEFOWVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04ODc2LVx0XHRwcml2LVx1MDAzZWNvbmZpZyBcdTAwMjY9IH5DRkdfU1RBVElDX0JTU0lEO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4ODUtXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChwcml2LVx1MDAzZWJzc2lkLCB3cnF1LVx1MDAzZWFwX2FkZHIuc2FfZGF0YSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4ODY6XHRcdElQV19ERUJVR19XWChcJiMzNDtCU1NJRCBzZXQgdG8gY3VycmVudCBCU1NJRC5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODg4Ny1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4ODkxOlx0SVBXX0RFQlVHX1dYKFwmIzM0O1NldHRpbmcgbWFuZGF0b3J5IEJTU0lEIHRvICVwTVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4OTItXHRcdCAgICAgd3JxdS1cdTAwM2VhcF9hZGRyLnNhX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTg5MDU9c3RhdGljIGludCBpcHdfd3hfZ2V0X3dhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTIxOlx0SVBXX0RFQlVHX1dYKFwmIzM0O0dldHRpbmcgV0FQIEJTU0lEOiAlcE1cXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04OTIyLVx0XHQgICAgIHdycXUtXHUwMDNlYXBfYWRkci5zYV9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTI3PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5MzctICAgICAgICB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTM4OiAgICAgICAgICAgICAgICBJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyBFU1NJRCB0byBBTllcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODkzOS0gICAgICAgICAgICAgICAgaXB3X2Rpc2Fzc29jaWF0ZShwcml2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04OTUxLVx0ICAgIFx1MDAyNlx1MDAyNiAocHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IChTVEFUVVNfQVNTT0NJQVRFRCB8IFNUQVRVU19BU1NPQ0lBVElORykpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTUyOlx0XHRJUFdfREVCVUdfV1goXCYjMzQ7RVNTSUQgc2V0IHRvIGN1cnJlbnQgRVNTSUQuXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5NTMtXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04OTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODk1NzpcdElQV19ERUJVR19XWChcJiMzNDtTZXR0aW5nIEVTU0lEOiAmIzM5OyUqcEUmIzM5OyAoJWQpXFxuXCYjMzQ7LCBsZW5ndGgsIGV4dHJhLCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTcxPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5ODEtXHQgICAgcHJpdi1cdTAwM2VzdGF0dXMgXHUwMDI2IChTVEFUVVNfQVNTT0NJQVRFRCB8IFNUQVRVU19BU1NPQ0lBVElORykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg5ODI6XHRcdElQV19ERUJVR19XWChcJiMzNDtHZXR0aW5nIGVzc2lkOiAmIzM5OyUqcEUmIzM5O1xcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5ODMtXHRcdFx0ICAgICBwcml2LVx1MDAzZWVzc2lkX2xlbiwgcHJpdi1cdTAwM2Vlc3NpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk4Ny1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTg4Olx0XHRJUFdfREVCVUdfV1goXCYjMzQ7R2V0dGluZyBlc3NpZDogQU5ZXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5ODktXHRcdHdycXUtXHUwMDNlZXNzaWQubGVuZ3RoID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTk2PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9uaWNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwMDI6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyBuaWNrIHRvICYjMzk7JXMmIzM5O1xcblwmIzM0OywgZXh0cmEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAwMy1cdGlmICh3cnF1LVx1MDAzZWRhdGEubGVuZ3RoIFx1MDAzZSBJV19FU1NJRF9NQVhfU0laRSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDE1PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9uaWNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAxOS1cdHN0cnVjdCBpcHdfcHJpdiAqcHJpdiA9IGxpYmlwd19wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MDIwOlx0SVBXX0RFQlVHX1dYKFwmIzM0O0dldHRpbmcgbmlja1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDIxLVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDI5PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9zZW5zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwMzY6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyByb2FtaW5nIHRocmVzaG9sZCB0byAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2VzZW5zLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwMzc6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyBkaXNhc3NvY2lhdGUgdGhyZXNob2xkIHRvICVkXFxuXCYjMzQ7LCAzKndycXUtXHUwMDNlc2Vucy52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDM4LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDU5PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9zZW5zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTA2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwNjk6XHRJUFdfREVCVUdfV1goXCYjMzQ7R0VUIHJvYW1pbmcgdGhyZXNob2xkIC1cdTAwM2UgJXMgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDcwLVx0XHQgICAgIHdycXUtXHUwMDNlcG93ZXIuZGlzYWJsZWQgPyBcJiMzNDtPRkZcJiMzNDsgOiBcJiMzNDtPTlwmIzM0Oywgd3JxdS1cdTAwM2Vwb3dlci52YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTA3NT1zdGF0aWMgaW50IGlwd193eF9zZXRfcmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MTU4Olx0SVBXX0RFQlVHX1dYKFwmIzM0O2ludmFsaWQgcmF0ZSBzcGVjaWZpZWQsIHJldHVybmluZyBlcnJvclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTU5LVx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTE2MS0gICAgICBhcHBseTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxNjI6XHRJUFdfREVCVUdfV1goXCYjMzQ7U2V0dGluZyByYXRlIG1hc2sgdG8gMHglMDhYIFslc11cXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTYzLVx0XHQgICAgIG1hc2ssIGZpeGVkID8gXCYjMzQ7Zml4ZWRcJiMzNDsgOiBcJiMzNDtzdWItcmF0ZXNcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNzEtXHRpZiAocHJpdi1cdTAwM2VyYXRlc19tYXNrID09IG1hc2spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxNzI6XHRcdElQV19ERUJVR19XWChcJiMzNDtNYXNrIHNldCB0byBjdXJyZW50IG1hc2suXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNzMtXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MTg4PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTE5Ni1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxOTc6XHRJUFdfREVCVUdfV1goXCYjMzQ7R0VUIFJhdGUgLVx1MDAzZSAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2ViaXRyYXRlLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxOTgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MjAxPXN0YXRpYyBpbnQgaXB3X3d4X3NldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MjE5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTIyMDpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgUlRTIFRocmVzaG9sZCAtXHUwMDNlICVkXFxuXCYjMzQ7LCBwcml2LVx1MDAzZXJ0c190aHJlc2hvbGQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTIyMS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkyMjQ9c3RhdGljIGludCBpcHdfd3hfZ2V0X3J0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMzMtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MjM0Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBSVFMgVGhyZXNob2xkIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlcnRzLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMzUtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MjcyPXN0YXRpYyBpbnQgaXB3X3d4X2dldF90eHBvdyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5Mjg0Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCBUWCBQb3dlciAtXHUwMDNlICVzICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTI4NS1cdFx0ICAgICB3cnF1LVx1MDAzZXBvd2VyLmRpc2FibGVkID8gXCYjMzQ7T0ZGXCYjMzQ7IDogXCYjMzQ7T05cJiMzNDssIHdycXUtXHUwMDNlcG93ZXIudmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkyOTA9c3RhdGljIGludCBpcHdfd3hfc2V0X2ZyYWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MzA5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTMxMDpcdElQV19ERUJVR19XWChcJiMzNDtTRVQgRnJhZyBUaHJlc2hvbGQgLVx1MDAzZSAlZFxcblwmIzM0Oywgd3JxdS1cdTAwM2VmcmFnLnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzMTEtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MzE0PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9mcmFnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTMyMy1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkzMjQ6XHRJUFdfREVCVUdfV1goXCYjMzQ7R0VUIEZyYWcgVGhyZXNob2xkIC1cdTAwM2UgJWRcXG5cJiMzNDssIHdycXUtXHUwMDNlZnJhZy52YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MzI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkzMjk9c3RhdGljIGludCBpcHdfd3hfc2V0X3JldHJ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTM1Ni1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkzNTc6XHRJUFdfREVCVUdfV1goXCYjMzQ7U0VUIHJldHJ5IGxpbWl0IC1cdTAwM2Ugc2hvcnQ6JWQgbG9uZzolZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzNTgtXHRcdCAgICAgcHJpdi1cdTAwM2VzaG9ydF9yZXRyeV9saW1pdCwgcHJpdi1cdTAwM2Vsb25nX3JldHJ5X2xpbWl0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MzYyPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5Mzg4Olx0SVBXX0RFQlVHX1dYKFwmIzM0O0dFVCByZXRyeSAtXHUwMDNlICVkXFxuXCYjMzQ7LCB3cnF1LVx1MDAzZXJldHJ5LnZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTM5Mz1zdGF0aWMgaW50IGlwd193eF9zZXRfc2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDg0MAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhZ2UgVGFibGUgRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBjb2RlLCBhbmQgYERFQlVHX1dYYCBzZWVtcyB0byBiZSBhIGdlbmVyYWwgb3B0aW9uLiBSaWdodCwgc28gYENPTkZJR19QVERVTVBfREVCVUdGU2AgYW5kIGBDT05GSUdfREVCVUdfV1hgIGFyZSB0aGUgcmVhbCBwbGF5ZXJzIGhlcmUsIHNpbmNlIHRoZXkgbGV2ZXJhZ2UgYHB0ZHVtcF93YWxrX3BnZGAuIEhtbSwgbm93IHRoZSBxdWVzdGlvbiBpczogaXMgYENPTkZJR19ERUJVR19XWGAgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBkbyBJIG5lZWQgdG8gZXhwbGljaXRseSBpbmNsdWRlIGl0PyBJdCYjMzk7cyBwcm9iYWJseSBiZXR0ZXIgdG8gZ28gYWhlYWQgYW5kIGluY29ycG9yYXRlIGJvdGggYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBpbnRvIGBFbmFibGVDb25maWdzYCB0byBrZWVwIHRoaW5ncyBjbGVhbi4KCldhaXQgYSBtaW51dGUsIHRoaXMgcGF0Y2ggYWxzbyBjaGFuZ2VzIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIHNvIGl0JiMzOTtzIGNhbGxpbmcgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIHdoZW4gaXQmIzM5O3Mgb3BlcmF0aW5nIG9uIGAmYW1wO2luaXRfbW1gLiBPa2F5LCBhbmQgdGhhdCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZWAgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiBgbW0vcGFnZXdhbGsuY2AuIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCBub3cgdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbW0vcHJvY2Vzc19hZGRycy5yc3Q9MzY4PWVzdGFibGlzaGluZyBhbmQgdGVhcmluZyBkb3duIHBhZ2UgaXRzIHBhZ2UgdGFibGVzLlxuRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdC0zNjktXG5Eb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0OjM3MDpIb3dldmVyLCBmb3IgY29udmVuaWVuY2Ugd2UgcHJvdmlkZSB0aGUgOmM6ZnVuYzpgIXdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgXG5Eb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0LTM3MS1mdW5jdGlvbiB3aGljaCBpcyBzeW5jaHJvbmlzZWQgdmlhIHRoZSBtbWFwIGxvY2sgb24gdGhlIDpjOm1hY3JvOmAhaW5pdF9tbWBcbi0tXG5hcmNoL2FybTY0L21tL21tdS5jPTkyNT1zdGF0aWMgaW50IHJhbmdlX3NwbGl0X3RvX3B0ZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGdmcF90IGdmcClcbi0tXG5hcmNoL2FybTY0L21tL21tdS5jLTkyOS1cdGxhenlfbW11X21vZGVfZW5hYmxlKCk7XG5hcmNoL2FybTY0L21tL21tdS5jOjkzMDpcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3Moc3RhcnQsIGVuZCxcbmFyY2gvYXJtNjQvbW0vbW11LmMtOTMxLVx0XHRcdFx0XHRcdTAwMjZzcGxpdF90b19wdGVzX29wcywgTlVMTCwgXHUwMDI2Z2ZwKTtcbi0tXG5hcmNoL2FybTY0L21tL3BhZ2VhdHRyLmM9MTA1PXN0YXRpYyBpbnQgdXBkYXRlX3JhbmdlX3Byb3QodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplLFxuLS1cbmFyY2gvYXJtNjQvbW0vcGFnZWF0dHIuYy0xMjQtXHQgKi9cbmFyY2gvYXJtNjQvbW0vcGFnZWF0dHIuYzoxMjU6XHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHN0YXJ0LCBzdGFydCAmIzQzOyBzaXplLFxuYXJjaC9hcm02NC9tbS9wYWdlYXR0ci5jLTEyNi1cdFx0XHRcdFx0XHQgICAgXHUwMDI2cGFnZWF0dHJfb3BzLCBOVUxMLCBcdTAwMjZkYXRhKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9wYWdlYXR0ci5jPTEwNz1zdGF0aWMgaW50IF9fc2V0X21lbW9yeSh1bnNpZ25lZCBsb25nIGFkZHIsIGludCBudW1wYWdlcywgcGdwcm90X3Qgc2V0X21hc2ssIHBncHJvdF90IGNsZWFyX21hc2spXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vcGFnZWF0dHIuYy0xMjAtXHRtbWFwX3dyaXRlX2xvY2soXHUwMDI2aW5pdF9tbSk7XG5hcmNoL2xvb25nYXJjaC9tbS9wYWdlYXR0ci5jOjEyMTpcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXHUwMDI2cGFnZWF0dHJfb3BzLCBOVUxMLCBcdTAwMjZtYXNrcyk7XG5hcmNoL2xvb25nYXJjaC9tbS9wYWdlYXR0ci5jLTEyMi1cdG1tYXBfd3JpdGVfdW5sb2NrKFx1MDAyNmluaXRfbW0pO1xuLS1cbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jPTY1PXZvaWQgKmFyY2hfZG1hX3NldF91bmNhY2hlZCh2b2lkICpjcHVfYWRkciwgc2l6ZV90IHNpemUpXG4tLVxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmMtNzQtXHRtbWFwX3dyaXRlX2xvY2soXHUwMDI2aW5pdF9tbSk7XG5hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYzo3NTpcdGVycm9yID0gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh2YSwgdmEgJiM0Mzsgc2l6ZSxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jLTc2LVx0XHRcdFx1MDAyNnNldF9ub2NhY2hlX3dhbGtfb3BzLCBOVUxMLCBOVUxMKTtcbi0tXG5hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYz04ND12b2lkIGFyY2hfZG1hX2NsZWFyX3VuY2FjaGVkKHZvaWQgKmNwdV9hZGRyLCBzaXplX3Qgc2l6ZSlcbi0tXG5hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYy04OS1cdC8qIHdhbGtfcGFnZV9yYW5nZSBzaG91bGRuJiMzOTt0IGJlIGFibGUgdG8gZmFpbCBoZXJlICovXG5hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYzo5MDpcdFdBUk5fT04od2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh2YSwgdmEgJiM0Mzsgc2l6ZSxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jLTkxLVx0XHRcdFx1MDAyNmNsZWFyX25vY2FjaGVfd2Fsa19vcHMsIE5VTEwsIE5VTEwpKTtcbi0tXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmM9MjYyPXN0YXRpYyBpbnQgX19zZXRfbWVtb3J5KHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IG51bXBhZ2VzLCBwZ3Byb3RfdCBzZXRfbWFzayxcbi0tXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzAxLVxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMwMjpcdFx0XHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKGxtX3N0YXJ0LCBsbV9lbmQsXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzAzLVx0XHRcdFx0XHRcdCAgICBcdTAwMjZwYWdlYXR0cl9vcHMsIE5VTEwsIFx1MDAyNm1hc2tzKTtcbi0tXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzE5LVxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMyMDpcdFx0cmV0ID0gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShsbV9zdGFydCwgbG1fZW5kLFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMyMS1cdFx0XHRcdFx0ICAgIFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCwgXHUwMDI2bWFza3MpO1xuLS1cbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMjUtXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmM6MzI2Olx0cmV0ID0gIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXHUwMDI2cGFnZWF0dHJfb3BzLCBOVUxMLFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMyNy1cdFx0XHRcdCAgICAgXHUwMDI2bWFza3MpO1xuLS1cbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMzctI2Vsc2VcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYzozMzg6XHRyZXQgPSAgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBcdTAwMjZwYWdlYXR0cl9vcHMsIE5VTEwsXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzM5LVx0XHRcdFx0ICAgICBcdTAwMjZtYXNrcyk7XG4tLVxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oPTEzMT1pbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzMtXHRcdHZvaWQgKnByaXZhdGUpO1xuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oOjEzNDppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oLTEzNS1cdFx0dW5zaWduZWQgbG9uZyBlbmQsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oLTEzNi1cdFx0cGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSk7XG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmg6MTM3OmludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG5pbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmgtMTM4LVx0XHR1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXG4tLVxubW0vaHVnZXRsYl92bWVtbWFwLmM9MTU2PXN0YXRpYyBpbnQgdm1lbW1hcF9yZW1hcF9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuYy0xNjMtXHRtbWFwX3JlYWRfbG9jayhcdTAwMjZpbml0X21tKTtcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jOjE2NDpcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXHUwMDI2dm1lbW1hcF9yZW1hcF9vcHMsXG5tbS9odWdldGxiX3ZtZW1tYXAuYy0xNjUtXHRcdFx0XHQgICAgTlVMTCwgd2Fsayk7XG4tLVxubW0vcGFnZXdhbGsuYz01OTc9aW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5tbS9wYWdld2Fsay5jLTYwNy0vKipcbm1tL3BhZ2V3YWxrLmM6NjA4OiAqIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UgLSB3YWxrIGEgcmFuZ2Ugb2Yga2VybmVsIHBhZ2V0YWJsZXMuXG5tbS9wYWdld2Fsay5jLTYwOS0gKiBAc3RhcnQ6XHRzdGFydCBhZGRyZXNzIG9mIHRoZSB2aXJ0dWFsIGFkZHJlc3MgcmFuZ2Vcbi0tXG5tbS9wYWdld2Fsay5jLTYyNC0gKi9cbm1tL3BhZ2V3YWxrLmM6NjI1OmludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxubW0vcGFnZXdhbGsuYy02MjYtXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuLS1cbm1tL3BhZ2V3YWxrLmMtNjM3LVxubW0vcGFnZXdhbGsuYzo2Mzg6XHRyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyhzdGFydCwgZW5kLCBvcHMsIHBnZCxcbm1tL3BhZ2V3YWxrLmMtNjM5LVx0XHRcdFx0XHRcdCAgICAgcHJpdmF0ZSk7XG4tLVxubW0vcGFnZXdhbGsuYy02NDctICovXG5tbS9wYWdld2Fsay5jOjY0ODppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbm1tL3BhZ2V3YWxrLmMtNjQ5LVx0XHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcbi0tXG5tbS9wYWdld2Fsay5jPTY4Mj1pbnQgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbm1tL3BhZ2V3YWxrLmMtNjk3LVx0XHRcdFx0IFwmIzM0O1JDVSByZWFkIGxvY2sgbXVzdCBiZSBoZWxkIGFjcm9zcyBrZXJuZWwgcGFnZSB0YWJsZSB3YWxrXCYjMzQ7KTtcbm1tL3BhZ2V3YWxrLmM6Njk4Olx0XHRyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBvcHMsIHBnZCxcbm1tL3BhZ2V3YWxrLmMtNjk5LVx0XHRcdFx0XHRcdFx0cHJpdmF0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjkxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uY3VycmVuY3kgSW1wbGljYXRpb25zIG9mIFBhZ2UgVGFibGUgRGVidWdnaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHRoZSBjb3JlIGlzc3VlIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIHBhZ2UgdGFibGUgd2Fsa2luZyBjb2RlIGludGVyYWN0cyB3aXRoIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgbG9ja3MsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgZGVidWdnaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZWAgaXMgdXNlZCB3aXRoaW4gYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW5pdGlhbCBtZW1vcnkgbWFwIChgbW0gPT0gJmFtcDtpbml0X21tYCkuIFRoaXMgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AgZnVuY3Rpb24sIGluIHR1cm4sIGlzIGNhbGxlZCBieSBgcHRkdW1wX3dhbGtfcGdkYCwgd2hpY2ggc291bmRzIGxpa2Ugb3VyIGNyaXRpY2FsIGRlYnVnZ2luZyBlbnRyeSBwb2ludC4gSG93ZXZlciwgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGF0IGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCBoYXMgb3RoZXIgY2FsbGVycyB0b28sIGxpa2UgYHZtZW1tYXBfcmVtYXBfcmFuZ2VgIGFuZCBgX19zZXRfbWVtb3J5YC4KClRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYWRkaW5nIGFuIGBSQ1VfTE9DS0RFUF9XQVJOYCBjaGVjay4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGUgZGV2ZWxvcGVycyBhcmUgY29uY2VybmVkIGFib3V0IHBvdGVudGlhbCBSQ1UgbG9jayBpc3N1ZXMgaW4gdGhpcyBmdW5jdGlvbiwgc28gaXQgaGFzIHRvIGJlIGEgY3JpdGljYWwgcG9pbnQuCgpUaGVyZWZvcmUsIHRoZSBrZXkgc3ltYm9scyB0aGF0IHdhcnJhbnQgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFyZTogYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAsIGBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmNgLCBgcHRkdW1wX3dhbGtfcGdkYCwgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciwgZXNwZWNpYWxseSBjb25jZXJuaW5nIFJDVSB1c2FnZS4KCk5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGUgYXN5bmNocm9ub3VzIHBhdGggaXMgYWx3YXlzIHByZXNlbnQuIENoZWNraW5nIGBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmNgLCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGlzIGNvbnRyb2xsZWQgYnkgYCNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAuIE9rYXksIGJ1dCBpZiB0aGF0JiMzOTtzIG5vdCBlbmFibGVkLCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBjYWxscyBgY2FsbF9yY3UoJmFtcDtwdC0mZ3Q7cHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KWAuIFNvLCBhdCBsZWFzdCwgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCBpcyBhbHdheXMgY29tcGlsZWQgYW5kIHBhcnQgb2YgdGhpcyBzdWJzeXN0ZW0sIGFuZCBzbyBpcyBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGhvdyBgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGVuYWJsZWQuIEFoLCBpdCYjMzk7cyBzZWxlY3RlZCBieSB4ODYgc3lzdGVtcyBpZiBgSU9NTVVfU1ZBYCBpcyBkZWZpbmVkLiBUaGlzIGdpdmVzIG1lIGFuIGlkZWEgLSBJIGNhbiBwcm9iYWJseSByZXByb2R1Y2UgdGhpcyBzY2VuYXJpbyBieSBpbmNsdWRpbmcgYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgc2ltcGxlc3Qgd2F5IHRvIGdldCB0aGUgZGVidWcgZmFjaWxpdGllcyBlbmFibGVkLCBhcyB0aGVzZSBvcHRpb25zIGFyZSBsaWtlbHkgdG8gYnJpbmcgaW4gdGhlIG5lY2Vzc2FyeSBjb2RlIHBhdGhzLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBhcmUgYXZhaWxhYmxlLCB3aGljaCBsaWtlbHkgbWVhbnMgY2hlY2tpbmcgdGhlIHJlbGV2YW50IGRlYnVnIEtjb25maWcgZmlsZXMgbGlrZSBgbW0vS2NvbmZpZy5kZWJ1Z2AgYW5kIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQVERVTVBfREVCVUdGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnPTIxOT1jb25maWcgUFREVU1QXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy0yMjEtXG5tbS9LY29uZmlnLmRlYnVnOjIyMjpjb25maWcgUFREVU1QX0RFQlVHRlNcbm1tL0tjb25maWcuZGVidWctMjIzLVx0Ym9vbCBcJiMzNDtFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDU5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlciBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IEJyYWluJiMzOTtzIFNjcmFtYmxlIG9uIGEgRGVidWcgRmxhZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGF0IGxpdHRsZSBmbGFnLCBgREVCVUdfV1hgLCBqdXN0IHBvcHBlZCBpbnRvIG15IGhlYWQuIEl0JiMzOTtzIGEgY2xhc3NpYy4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIGxvY2FsIHNldHRpbmcgb3IgYSBnbG9iYWwgb25lPyBXaGF0IHNwZWNpZmljIG1vZHVsZSBvciBzZWN0aW9uIG9mIHRoZSBjb2RlIGlzIGl0IHRpZWQgdG8/IElzIGl0IGEgY29tcGlsZS10aW1lIGZsYWcsIG9yIGEgcnVudGltZSBjb25maWd1cmF0aW9uPyBUaGUgc3BlY2lmaWMgbmFtaW5nIGNvbnZlbnRpb24gaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB0aGlzIGlzIGxpa2VseSBhIGZsYWcgdG8gc2hvdyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaW4gYSBXaW5kb3dpbmcgZW52aXJvbm1lbnQuIEkgaW5zdGFudGx5IHRoaW5rIG9mIG15IHByaW9yIHdvcmsgaW4gc2ltaWxhciBwcm9qZWN0cy4gV2hhdCYjMzk7cyB0aGUgV1ggbGlicmFyeSBpdCBpcyBwb2ludGluZyB0bz8gSXMgdGhpcyByZWZlcnJpbmcgdG8gYSBzcGVjaWZpYyBHVUkgdG9vbGtpdCBsaWtlIHd4V2lkZ2V0cz8gV2hhdCBraW5kIG9mIGRlYnVnIG91dHB1dCBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBUcmFjaW5nLCB2ZXJib3NlIGxvZ2dpbmcsIHBlcmhhcHMgZXZlbiBhc3NlcnRpb24gaGFuZGxpbmc/CgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIHNjb3BlLiBXaGVyZSBpcyBpdCBkZWZpbmVkPyBIb3cgaXMgaXQgdXNlZD8gSSBzdGFydCBtZW50YWxseSB0cmFjaW5nIGhvdyBpdCBtaWdodCBpbmZsdWVuY2UgdGhlIGV4ZWN1dGlvbiBmbG93LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIGRlYnVnZ2luZyB0aGlzIGZsYWcgZW5hYmxlcywgYW5kIHdoYXQgaXQmIzM5O3MgKnN1cHBvc2VkKiB0byBkby4gSXQgY2FuIGRyYXN0aWNhbGx5IGltcGFjdCBwZXJmb3JtYW5jZS4gQSBxdWljayBtZW50YWwgc2VhcmNoIHRocm91Z2ggdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGBpZmRlZmAgc3RhdGVtZW50cyBvciBjb25kaXRpb25hbCBjaGVja3MgaXMgaW4gb3JkZXIuCgpJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zIGluIG15IG1pbmQ6IEFyZSB0aGVyZSBhbnkgcmVsYXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9yIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdGhhdCBtaWdodCBhbHNvIGNvbnRyb2wgdGhlIGRlYnVnIGJlaGF2aW9yPyBIb3cgY2FuIEkgdmVyaWZ5IHRoYXQgdGhpcyBmbGFnIGlzICphY3R1YWxseSogd29ya2luZyBhcyBpbnRlbmRlZD8gV2lsbCB0dXJuaW5nIGl0IG9uLCBvciBvZmYsIGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnM/IEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIG5lZWQgZm9yIGNhcmVmdWwgdGVzdGluZywgd2hldGhlciBpdCYjMzk7cyB1bml0IHRlc3RzLCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgZXZlbiBtYW51YWwgVUkgaW50ZXJhY3Rpb24gZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJZiBJJiMzOTttIHVzaW5nIGFuIElERSBJJiMzOTttIHByb2JhYmx5IG1lbnRhbGx5IGNoZWNraW5nIG15IGRlYnVnZ2VyIHNldHRpbmdzIHRvIGVuc3VyZSB0aGF0IHRoZSBJREUga25vd3MgdGhhdCB0aGUgZW52aXJvbm1lbnQgZm9yIHRoaXMgc2V0dGluZyBleGlzdHMuCgpUaGlzIGlzIHRoZSBraW5kIG9mIGRldGFpbCB0aGF0IHNlcGFyYXRlcyBmaW5kaW5nIHRoZSByb290IGNhdXNlIG9mIGFuIGlzc3VlLCBhbmQgc2ltcGx5IG1ha2luZyByYW5kb20gY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmbGFnICpiZWZvcmUqIEkgZ28gYW55IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBERUJVR19XWCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnPTE4Mz1jb25maWcgQVJDSF9IQVNfREVCVUdfV1hcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTE4NS1cbm1tL0tjb25maWcuZGVidWc6MTg2OmNvbmZpZyBERUJVR19XWFxubW0vS2NvbmZpZy5kZWJ1Zy0xODctXHRib29sIFwmIzM0O1dhcm4gb24gVyYjNDM7WCBtYXBwaW5ncyBhdCBib290XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MDE1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIEkgbmVlZCB0byBnZXQgdGhpcyByaWdodC4KCioqRXhhbWluaW5nIHRoZSBSZWxldmFudCBDb25maWd1cmF0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIGBQVERVTVBfREVCVUdGU2AgYW5kIGBERUJVR19XWGAgYXMgdGhlIGtleSBjb25maWdzIHRvIGV4YW1pbmUgaGVyZS4gSSYjMzk7bSBwcmV0dHkgY2VydGFpbiBhYm91dCB0aGF0LiBOb3csIEkgdmFndWVseSByZWNhbGwgc2VlaW5nIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBpbiB0aGUgbWl4LCBidXQgSSBrbm93IGl0JiMzOTtzIG5vdCBhIHN0YW5kYWxvbmUsIGl0JiMzOTtzIGFjdHVhbGx5IGRlcGVuZGVudCBvbiBgSU9NTVVfU1ZBYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZSAtIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIGBJT01NVV9TVkFgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBpbiByZWxhdGlvbiB0byB0aGVzZSBvdGhlciBzZXR0aW5ncy4gSXQmIzM5O3MgdGhlIGx5bmNocGluLCBpdCB3b3VsZCBhcHBlYXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJT01NVV9TVkEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9LY29uZmlnPTE1Mz1jb25maWcgSU9NTVVfRE1BXG4tLVxuZHJpdmVycy9pb21tdS9LY29uZmlnLTE2MS0jIFNoYXJlZCBWaXJ0dWFsIEFkZHJlc3NpbmdcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZzoxNjI6Y29uZmlnIElPTU1VX1NWQVxuZHJpdmVycy9pb21tdS9LY29uZmlnLTE2My1cdHNlbGVjdCBJT01NVV9NTV9EQVRBXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA1OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzUxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgd2UgY2FuIGRlZmluaXRlbHkgZW5hYmxlIGZ1enppbmcuIFRoZSBjaGFuZ2UgdG91Y2hlcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgaG93IHRoZSBrZXJuZWwgZnJlZXMgcGFnZSB0YWJsZXMuIERlZmVycmluZyB0aGUgZnJlZWluZyBwcm9jZXNzIHVzaW5nIFJDVSB0byBwcmV2ZW50IHRob3NlIG5hc3R5IHVzZS1hZnRlci1mcmVlIGVycm9ycyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcyAtIGxpa2Ugd2hlbiBgcHRkdW1wYCBpcyBydW5uaW5nIC0gaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBpcyBzb21ldGhpbmcgdGhhdCBjb3VsZCB2ZXJ5IHdlbGwgZXhwb3NlIHNvbWUgaW50ZXJlc3RpbmcgaXNzdWVzLgoKTXkgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBhbHRlcmluZyB0aGUgZnVuZGFtZW50YWwgbGlmZWN5Y2xlIG9mIGtlcm5lbCBwYWdlIHRhYmxlcy4gQW5kIHRoYXQmIzM5O3MgdXN1YWxseSBmZXJ0aWxlIGdyb3VuZCBmb3IgZmluZGluZyBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uLgoKSSYjMzk7bSBrZXlpbmcgaW4gb24gYSBmZXcgc3ltYm9scyBoZXJlLiBTcGVjaWZpY2FsbHksIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY2AsIHRob3NlIGFyZSB0aGUgb2J2aW91cyBvbmVzLiBUaGVuLCBgcHRkdW1wX3dhbGtfcGdkYCBhbmQgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2Ag4oCTIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgaXNzdWUgdGhlIHBhdGNoIGludGVuZHMgdG8gc29sdmUuCgpUaGUgc3VnZ2VzdGVkIGBFbmFibGVDb25maWdzYCBsb29rIHNvbGlkIOKAkyBgUFREVU1QX0RFQlVHRlNgLCBgREVCVUdfV1hgLCBhbmQgYElPTU1VX1NWQWAgd2lsbCBhbGwgaGVscCB3aXRoIHRlc3RpbmcuIEkgbGlrZSBgSU9NTVVfU1ZBYCBiZWNhdXNlIGl0IGd1YXJhbnRlZXMgdGhhdCBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaXMgZW5hYmxlZC4KCldhaXQgYSBzZWMuLi5JIG5lZWQgdG8gY2hlY2sgYElPTU1VX1NWQWAgYmVjYXVzZSBpdCBpcyBub3QgYXZhaWxhYmxlIG9uIGFsbCBhcmNoaXRlY3R1cmVzLCBidXQgeDg2IGF1dG9tYXRpY2FsbHkgc2VsZWN0cyBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaWYgYElPTU1VX1NWQWAgaXMgZW5hYmxlZC4gTGV0IG1lIHJlLWNoZWNrIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCB0byBjb25maXJtIGl0IGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMDIwPWNvbmZpZyBIQVZFX0dJR0FOVElDX0ZPTElPU1xuLS1cbm1tL0tjb25maWctMTAyMy1cbm1tL0tjb25maWc6MTAyNDpjb25maWcgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxubW0vS2NvbmZpZy0xMDI1LVx0ZGVmX2Jvb2wgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjEwMQoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiAzNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBhbmQgQ29kZSBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkZWZfYm9vbCBuYCBvcHRpb24sIHNwZWNpZmljYWxseSB0aGUgb25lIHRhcmdldGVkIGZvciB4ODYuIEkgc2VlIHRoYXQgSSBjYW4mIzM5O3QgZGlyZWN0bHkgZW5hYmxlIGl0IHdpdGggYEVuYWJsZUNvbmZpZ3NgLCBzaW5jZSBpdCBsYWNrcyBhbiBhc3NvY2lhdGVkIHByb21wdC4gVGhlIGtleSB0byBhY3RpdmF0aW5nIHRoaXMgdGhpbmcgb24geDg2IGFwcGVhcnMgdG8gYmUgZW5hYmxpbmcgYElPTU1VX1NWQWAg4oCTIGdvb2QuIFRoYXQmIzM5O3MgdGhlIHJvdXRlIEkgbmVlZCB0byB0YWtlLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgc3ltYm9scyBhY2NvdW50ZWQgZm9yLiBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZSBjaGVjayBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYC4gUmlnaHQsIEkgcmVtZW1iZXIgdGhhdCYjMzk7cyBkZWZpbmVkIGluIGBtbS9wYWdld2Fsay5jYC4gQW5kIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIGluIGBtbS9wdGR1bXAuY2AuIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCBhcmUgYm90aCBpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLiBXaGlsZSBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCBpcyBhbHNvIHRoZXJlLgoKQXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgaGVyZT8gSG1tLCBJIHNlZSB0aGF0IGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCBhbmQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3NgIGhhdmUgYmVlbiBtb2RpZmllZCBpbiBjb21tZW50cywgYnV0IG5vdCBpbiBhbnkgY29kZS4KCkFscmlnaHQsIHRoZSBjb2RlIGNoYW5nZXMgdGhlbXNlbHZlczogSSBzZWUgdGhlIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGRlY2xhcmF0aW9uIGluIGBpbmNsdWRlL2xpbnV4L21tLmhgLiBJbiBgbW0vcGFnZXdhbGsuY2AsIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIG5vdyBpbmNsdWRlcyBhbiBgUkNVX0xPQ0tERVBfV0FSTmAuIEluIGBtbS9wZ3RhYmxlLWdlbmVyaWMuY2AsIHRoZSBjaGFuZ2VzIGFyZSBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLCBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgYW5kIHRoZSBhZm9yZW1lbnRpb25lZCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYC4gTGFzdGx5LCBgbW0vcHRkdW1wLmNgIG5vdyBoYXMgYHB0ZHVtcF93YWxrX3BnZGAgYWRkaW5nIGByY3VfcmVhZF9sb2NrKClgLgoKU28sIGl0JiMzOTtzIHByZXR0eSBjbGVhcjogdGhlIGNvcmUgZm9jdXMgaXMgcHJlY2lzZWx5IHRoZSBzeW1ib2xzIEkgaWRlbnRpZmllZCBpbml0aWFsbHkuIExvb2tzIGdvb2QgdG8gbWUuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDU6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BURFVNUF9ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0RFQlVHX1dYJiMzNDssCiAgICAmIzM0O0lPTU1VX1NWQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2V0YWJsZV9mcmVlX2tlcm5lbCYjMzQ7LAogICAgJiMzNDtrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSYjMzQ7LAogICAgJiMzNDtrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMmIzM0OywKICAgICYjMzQ7cHRkdW1wX3dhbGtfcGdkJiMzNDssCiAgICAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVERVTVBfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtERUJVR19XWCYjMzQ7LAogICAgJiMzNDtJT01NVV9TVkEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWdldGFibGVfZnJlZV9rZXJuZWwmIzM0OywKICAgICYjMzQ7a2VybmVsX3BndGFibGVfZnJlZV9yY3UmIzM0OywKICAgICYjMzQ7a2VybmVsX3BndGFibGVfd29ya19mdW5jJiMzNDssCiAgICAmIzM0O3B0ZHVtcF93YWxrX3BnZCYjMzQ7LAogICAgJiMzNDt3YWxrX3BhZ2VfcmFuZ2VfZGVidWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gZGVmZXIgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMgdXNpbmcgUkNVLiBUaGlzIHByZXZlbnRzIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGxvY2tsZXNzIHBhZ2UgdGFibGUgd2Fsa3MsIHN1Y2ggYXMgdGhvc2UgcGVyZm9ybWVkIGJ5IHB0ZHVtcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbGlmZWN5Y2xlIG9mIGtlcm5lbCBwYWdlIHRhYmxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjM5OjEyLjMyOTg2NDU5M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjM1NjYyNTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVERVTVBfREVCVUdGU1wiLFxuICAgIFwiREVCVUdfV1hcIixcbiAgICBcIklPTU1VX1NWQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiLFxuICAgIFwia2VybmVsX3BndGFibGVfZnJlZV9yY3VcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY1wiLFxuICAgIFwicHRkdW1wX3dhbGtfcGdkXCIsXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTozOToxMi4zMjk4Njk4NDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDU3MzM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI1NTMyOWZlMWViNGZlZTExMzE3OTYzMTgwOWEzZmYzMjE4NjIzMGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDU6Mzk6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc5NDA4YTE3YTFiMGRhIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbW0uaFxcbkBAIC0zNjk1LDE0ICszNjk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXFxuIFxcdF9fZnJlZV9wYWdlcyhwYWdlLCBjb21wb3VuZF9vcmRlcihwYWdlKSk7XFxuIH1cXG4gXFxuLSNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcbiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7XFxuLSNlbHNlXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXFxuLXtcXG4tXFx0X19wYWdldGFibGVfZnJlZShwdCk7XFxuLX1cXG4tI2VuZGlmXFxuIC8qKlxcbiAgKiBwYWdldGFibGVfZnJlZSAtIEZyZWUgcGFnZXRhYmxlc1xcbiAgKiBAcHQ6XFx0VGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvclxcbmRpZmYgLS1naXQgYS9tbS9wYWdld2Fsay5jIGIvbW0vcGFnZXdhbGsuY1xcbmluZGV4IDNhZTI1ODZmZjQ1YjQ0Li5jMGJlODc1ODA5ODlkYSAxMDA2NDRcXG4tLS0gYS9tbS9wYWdld2Fsay5jXFxuKysrIGIvbW0vcGFnZXdhbGsuY1xcbkBAIC02MjAsNyArNjIwLDcgQEAgaW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4gICogTm90ZTogQmUgY2FyZWZ1bCB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZXMgdGFibGVzLCB0aGUgY2FsbGVyIG1heSBiZSBuZWVkIHRvXFxuICAqIHRha2Ugb3RoZXIgZWZmZWN0aXZlIGFwcHJvYWNoZXMgKG1tYXAgbG9jayBtYXkgYmUgaW5zdWZmaWNpZW50KSB0byBwcmV2ZW50XFxuICAqIHRoZSBpbnRlcm1lZGlhdGUga2VybmVsIHBhZ2UgdGFibGVzIGJlbG9uZ2luZyB0byB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgcmFuZ2VcXG4tICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSkuXFxuKyAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUsIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbikuXFxuICAqL1xcbiBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsIHBnZF90ICpwZ2QsIHZvaWQgKnByaXZhdGUpXFxuQEAgLTY0Myw3ICs2NDMsNyBAQCBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4gICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gd2FsayB0aGUga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkuIEl0IHNob3VsZCBiZVxcbiAgKiBndWFyYW50ZWVkIHRoYXQgdGhlIGNhbGxlciBoYXMgZXhjbHVzaXZlIGFjY2VzcyBvdmVyIHRoZSByYW5nZSB0aGV5IGFyZVxcbiAgKiBvcGVyYXRpbmcgb24gLSB0aGF0IHRoZXJlIHNob3VsZCBiZSBubyBjb25jdXJyZW50IGFjY2VzcywgZm9yIGV4YW1wbGUsXFxuLSAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMuXFxuKyAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMsIG9yIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbi5cXG4gICovXFxuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcXG5AQCAtNjkyLDkgKzY5MiwxMyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbiBcXHR9O1xcbiBcXG4gXFx0LyogRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0cmF2ZXJzYWwgb2Yga2VybmVsIG1hcHBpbmdzLiAqL1xcbi1cXHRpZiAobW0gPT0gXFx1MDAyNmluaXRfbW0pXFxuLVxcdFxcdHJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIG9wcyxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHBnZCwgcHJpdmF0ZSk7XFxuK1xcdGlmIChtbSA9PSBcXHUwMDI2aW5pdF9tbSkge1xcbitcXHRcXHRSQ1VfTE9DS0RFUF9XQVJOKCFyY3VfcmVhZF9sb2NrX2hlbGQoKSxcXG4rXFx0XFx0XFx0XFx0IFxcXCJSQ1UgcmVhZCBsb2NrIG11c3QgYmUgaGVsZCBhY3Jvc3Mga2VybmVsIHBhZ2UgdGFibGUgd2Fsa1xcXCIpO1xcbitcXHRcXHRyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBvcHMsIHBnZCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0cHJpdmF0ZSk7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChzdGFydCBcXHUwMDNlPSBlbmQgfHwgIXdhbGsubW0pXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpXFxuZGlmZiAtLWdpdCBhL21tL3BndGFibGUtZ2VuZXJpYy5jIGIvbW0vcGd0YWJsZS1nZW5lcmljLmNcXG5pbmRleCBiOTFiMWE5ODAyOWM3Zi4uN2EzMmU0ODIxOTU3Y2MgMTAwNjQ0XFxuLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmNcXG4rKysgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xcbkBAIC00MTAsNiArNDEwLDEzIEBAIHB0ZV90ICpwdGVfb2Zmc2V0X21hcF9sb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLFxcbiBcXHRnb3RvIGFnYWluO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuK3tcXG4rXFx0c3RydWN0IHB0ZGVzYyAqcHQgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHB0ZGVzYywgcHRfcmN1X2hlYWQpO1xcbitcXG4rXFx0X19wYWdldGFibGVfZnJlZShwdCk7XFxuK31cXG4rXFxuICNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcbiBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gXFxuQEAgLTQzNCw4ICs0NDEsMTUgQEAgc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsubG9jayk7XFxuIFxcbiBcXHRpb21tdV9zdmFfaW52YWxpZGF0ZV9rdmFfcmFuZ2UoUEFHRV9PRkZTRVQsIFRMQl9GTFVTSF9BTEwpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXNcXG4rXFx0ICogZnJlZSwgc28gdGhleSB3YWxrIHVuZGVyIHJjdV9yZWFkX2xvY2soKS4gRnJlZSBhZnRlciBhIGdyYWNlIHBlcmlvZDpcXG4rXFx0ICogYSB3YWxrZXIgZWl0aGVyIGFscmVhZHkgc2F3IHRoZSBjbGVhcmVkIFBNRCwgb3Iga2VlcHMgdGhlIHBhZ2UgYWxpdmVcXG4rXFx0ICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLlxcbitcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHB0LCBuZXh0LCBcXHUwMDI2cGFnZV9saXN0LCBwdF9saXN0KVxcbi1cXHRcXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcXG4rXFx0XFx0Y2FsbF9yY3UoXFx1MDAyNnB0LVxcdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpO1xcbiB9XFxuIFxcbiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG5AQCAtNDQ2LDQgKzQ2MCwxMCBAQCB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG4gXFxuIFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsud29yayk7XFxuIH1cXG4rI2Vsc2VcXG4rdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXFxuK3tcXG4rXFx0LyogRGVmZXIgdGhlIGZyZWUgYnkgYSBncmFjZSBwZXJpb2Q7IHNlZSBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoKS4gKi9cXG4rXFx0Y2FsbF9yY3UoXFx1MDAyNnB0LVxcdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpO1xcbit9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9tbS9wdGR1bXAuYyBiL21tL3B0ZHVtcC5jXFxuaW5kZXggOTczMDIwMDAwMDk2Y2YuLjUwY2Q5NmEzM2RmZDI3IDEwMDY0NFxcbi0tLSBhL21tL3B0ZHVtcC5jXFxuKysrIGIvbW0vcHRkdW1wLmNcXG5AQCAtMTc4LDExICsxNzgsMTMgQEAgdm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHB0ZHVtcF9zdGF0ZSAqc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkKVxcbiBcXG4gXFx0Z2V0X29ubGluZV9tZW1zKCk7XFxuIFxcdG1tYXBfd3JpdGVfbG9jayhtbSk7XFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0d2hpbGUgKHJhbmdlLVxcdTAwM2VzdGFydCAhPSByYW5nZS1cXHUwMDNlZW5kKSB7XFxuIFxcdFxcdHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhtbSwgcmFuZ2UtXFx1MDAzZXN0YXJ0LCByYW5nZS1cXHUwMDNlZW5kLFxcbiBcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2cHRkdW1wX29wcywgcGdkLCBzdCk7XFxuIFxcdFxcdHJhbmdlKys7XFxuIFxcdH1cXG4rXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdG1tYXBfd3JpdGVfdW5sb2NrKG1tKTtcXG4gXFx0cHV0X29ubGluZV9tZW1zKCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTozOToxMi43MjExNjE4MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MTk2NTMyMDQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVERVTVBfREVCVUdGU1wiLFxuICAgIFwiREVCVUdfV1hcIixcbiAgICBcIklPTU1VX1NWQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiLFxuICAgIFwia2VybmVsX3BndGFibGVfZnJlZV9yY3VcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY1wiLFxuICAgIFwicHRkdW1wX3dhbGtfcGdkXCIsXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI1NTMyOWZlMWViNGZlZTExMzE3OTYzMTgwOWEzZmYzMjE4NjIzMGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwNTozOToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc5NDA4YTE3YTFiMGRhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tLmhcbkBAIC0zNjk1LDE0ICszNjk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXG4gXHRfX2ZyZWVfcGFnZXMocGFnZSwgY29tcG91bmRfb3JkZXIocGFnZSkpO1xuIH1cbiBcbi0jaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7XG4tI2Vsc2Vcbi1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxuLXtcbi1cdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuLX1cbi0jZW5kaWZcbiAvKipcbiAgKiBwYWdldGFibGVfZnJlZSAtIEZyZWUgcGFnZXRhYmxlc1xuICAqIEBwdDpcdFRoZSBwYWdlIHRhYmxlIGRlc2NyaXB0b3JcbmRpZmYgLS1naXQgYS9tbS9wYWdld2Fsay5jIGIvbW0vcGFnZXdhbGsuY1xuaW5kZXggM2FlMjU4NmZmNDViNDQuLmMwYmU4NzU4MDk4OWRhIDEwMDY0NFxuLS0tIGEvbW0vcGFnZXdhbGsuY1xuKysrIGIvbW0vcGFnZXdhbGsuY1xuQEAgLTYyMCw3ICs2MjAsNyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuICAqIE5vdGU6IEJlIGNhcmVmdWwgdG8gd2FsayB0aGUga2VybmVsIHBhZ2VzIHRhYmxlcywgdGhlIGNhbGxlciBtYXkgYmUgbmVlZCB0b1xuICAqIHRha2Ugb3RoZXIgZWZmZWN0aXZlIGFwcHJvYWNoZXMgKG1tYXAgbG9jayBtYXkgYmUgaW5zdWZmaWNpZW50KSB0byBwcmV2ZW50XG4gICogdGhlIGludGVybWVkaWF0ZSBrZXJuZWwgcGFnZSB0YWJsZXMgYmVsb25naW5nIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyByYW5nZVxuLSAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUpLlxuKyAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUsIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbikuXG4gICovXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuQEAgLTY0Myw3ICs2NDMsNyBAQCBpbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbiAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseS4gSXQgc2hvdWxkIGJlXG4gICogZ3VhcmFudGVlZCB0aGF0IHRoZSBjYWxsZXIgaGFzIGV4Y2x1c2l2ZSBhY2Nlc3Mgb3ZlciB0aGUgcmFuZ2UgdGhleSBhcmVcbiAgKiBvcGVyYXRpbmcgb24gLSB0aGF0IHRoZXJlIHNob3VsZCBiZSBubyBjb25jdXJyZW50IGFjY2VzcywgZm9yIGV4YW1wbGUsXG4tICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cy5cbisgKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLCBvciB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24uXG4gICovXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuQEAgLTY5Miw5ICs2OTIsMTMgQEAgaW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbiBcdH07XG4gXG4gXHQvKiBGb3IgY29udmVuaWVuY2UsIHdlIGFsbG93IHRyYXZlcnNhbCBvZiBrZXJuZWwgbWFwcGluZ3MuICovXG4tXHRpZiAobW0gPT0gXHUwMDI2aW5pdF9tbSlcbi1cdFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLFxuLVx0XHRcdFx0XHRcdCAgICBwZ2QsIHByaXZhdGUpO1xuK1x0aWYgKG1tID09IFx1MDAyNmluaXRfbW0pIHtcbitcdFx0UkNVX0xPQ0tERVBfV0FSTighcmN1X3JlYWRfbG9ja19oZWxkKCksXG4rXHRcdFx0XHQgXCJSQ1UgcmVhZCBsb2NrIG11c3QgYmUgaGVsZCBhY3Jvc3Mga2VybmVsIHBhZ2UgdGFibGUgd2Fsa1wiKTtcbitcdFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLCBwZ2QsXG4rXHRcdFx0XHRcdFx0XHRwcml2YXRlKTtcbitcdH1cbitcbiBcdGlmIChzdGFydCBcdTAwM2U9IGVuZCB8fCAhd2Fsay5tbSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpXG5kaWZmIC0tZ2l0IGEvbW0vcGd0YWJsZS1nZW5lcmljLmMgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xuaW5kZXggYjkxYjFhOTgwMjljN2YuLjdhMzJlNDgyMTk1N2NjIDEwMDY0NFxuLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmNcbisrKyBiL21tL3BndGFibGUtZ2VuZXJpYy5jXG5AQCAtNDEwLDYgKzQxMCwxMyBAQCBwdGVfdCAqcHRlX29mZnNldF9tYXBfbG9jayhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCxcbiBcdGdvdG8gYWdhaW47XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbit7XG4rXHRzdHJ1Y3QgcHRkZXNjICpwdCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgcHRkZXNjLCBwdF9yY3VfaGVhZCk7XG4rXG4rXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbit9XG4rXG4gI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXG4gc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG5AQCAtNDM0LDggKzQ0MSwxNSBAQCBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3Bpbl91bmxvY2soXHUwMDI2a2VybmVsX3BndGFibGVfd29yay5sb2NrKTtcbiBcbiBcdGlvbW11X3N2YV9pbnZhbGlkYXRlX2t2YV9yYW5nZShQQUdFX09GRlNFVCwgVExCX0ZMVVNIX0FMTCk7XG4rXG4rXHQvKlxuK1x0ICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXNcbitcdCAqIGZyZWUsIHNvIHRoZXkgd2FsayB1bmRlciByY3VfcmVhZF9sb2NrKCkuIEZyZWUgYWZ0ZXIgYSBncmFjZSBwZXJpb2Q6XG4rXHQgKiBhIHdhbGtlciBlaXRoZXIgYWxyZWFkeSBzYXcgdGhlIGNsZWFyZWQgUE1ELCBvciBrZWVwcyB0aGUgcGFnZSBhbGl2ZVxuK1x0ICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLlxuK1x0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHQsIG5leHQsIFx1MDAyNnBhZ2VfbGlzdCwgcHRfbGlzdClcbi1cdFx0X19wYWdldGFibGVfZnJlZShwdCk7XG4rXHRcdGNhbGxfcmN1KFx1MDAyNnB0LVx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7XG4gfVxuIFxuIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxuQEAgLTQ0Niw0ICs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4gXG4gXHRzY2hlZHVsZV93b3JrKFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsud29yayk7XG4gfVxuKyNlbHNlXG4rdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4re1xuK1x0LyogRGVmZXIgdGhlIGZyZWUgYnkgYSBncmFjZSBwZXJpb2Q7IHNlZSBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoKS4gKi9cbitcdGNhbGxfcmN1KFx1MDAyNnB0LVx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7XG4rfVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmNcbmluZGV4IDk3MzAyMDAwMDA5NmNmLi41MGNkOTZhMzNkZmQyNyAxMDA2NDRcbi0tLSBhL21tL3B0ZHVtcC5jXG4rKysgYi9tbS9wdGR1bXAuY1xuQEAgLTE3OCwxMSArMTc4LDEzIEBAIHZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZClcbiBcbiBcdGdldF9vbmxpbmVfbWVtcygpO1xuIFx0bW1hcF93cml0ZV9sb2NrKG1tKTtcbitcdHJjdV9yZWFkX2xvY2soKTtcbiBcdHdoaWxlIChyYW5nZS1cdTAwM2VzdGFydCAhPSByYW5nZS1cdTAwM2VlbmQpIHtcbiBcdFx0d2Fsa19wYWdlX3JhbmdlX2RlYnVnKG1tLCByYW5nZS1cdTAwM2VzdGFydCwgcmFuZ2UtXHUwMDNlZW5kLFxuIFx0XHRcdFx0ICAgICAgXHUwMDI2cHRkdW1wX29wcywgcGdkLCBzdCk7XG4gXHRcdHJhbmdlKys7XG4gXHR9XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdG1tYXBfd3JpdGVfdW5sb2NrKG1tKTtcbiBcdHB1dF9vbmxpbmVfbWVtcygpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6Mzk6MTIuNzIxMTYzMTE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ2MTg0NzQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS2VybmVsIFBhdGNoIGZvciBGdXp6aW5nIEltcGxpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCB3YXJyYW50IHRhcmdldGVkIGZ1enppbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3QgYmVmb3JlIEkgY2FuIHByb3Blcmx5IHByaW9yaXRpemUgdGhpcy5cblxuVGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBjb3JlIGZpbGVzLCBhbmQgYSBxdWljayBnbGFuY2UgdGVsbHMgbWUgdGhpcyBpc24ndCBqdXN0IGEgdHJpdmlhbCBmaXguIGBpbmNsdWRlL2xpbnV4L21tLmhgIGhhcyBhIGNvbmRpdGlvbmFsIHJlbW92YWwsIHdoaWNoIHVzdWFsbHkgZ2V0cyBteSBhdHRlbnRpb24gc2luY2UgdGhlIGNvbmZpZyBvcHRpb24gaXMgYmVpbmcgY2hhbmdlZC4gVGhlIHJlbW92YWwgb2YgdGhlIGAjaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGFyb3VuZCB0aGUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgZGVjbGFyYXRpb24gaW4gYGluY2x1ZGUvbGludXgvbW0uaGAgaXMsIG9uIGl0cyBvd24sIG5vdCB0b28gd29ycnlpbmcsIGJ1dCBpdCdzIHBhcnQgb2YgYSBiaWdnZXIgY2hhbmdlLCBzbyBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kIGFzIGEgZGVwZW5kZW5jeS4gVGhlIG1vZGlmaWNhdGlvbnMgdG8gYG1tL3BhZ2V3YWxrLmNgIHdpdGggdGhlIGBSQ1VfTE9DS0RFUF9XQVJOYCBpbmRpY2F0ZSBwb3RlbnRpYWwgY29uY3VycmVuY3kgY29uY2VybnMgd2l0aGluIHBhZ2UgdGFibGUgd2Fsa3MsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIGBpbml0X21tYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhhdCBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGZvciBwb3NzaWJsZSByYWNlcy4gSSBzZWUgdGhhdCBgbW0vcGd0YWJsZS1nZW5lcmljLmNgIGlzIGJlaW5nIHN1YnN0YW50aWFsbHkgYWx0ZXJlZDogaXQgYWRkcyBhIG5ldyBmdW5jdGlvbiwgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCwgYW5kIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBhbiBleGlzdGluZyBvbmUuIFJlcGxhY2luZyBgX19wYWdldGFibGVfZnJlZWAgd2l0aCBgY2FsbF9yY3VgIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCBpbXBseWluZyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIFJDVS1kZWxheWVkIGZyZWVpbmcgb2Yga2VybmVsIHBhZ2UgdGFibGVzLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBnb2FsIGlzIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBvcGVyYXRpb25zIGxpa2UgcGFnZSB0YWJsZSBkdW1wcywgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoZSBhZGRpdGlvbiBvZiBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgdmVyeSByZWxldmFudC4gRmluYWxseSwgdGhlIGludHJvZHVjdGlvbiBvZiBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYHJjdV9yZWFkX3VubG9jaygpYCBpbiBgbW0vcHRkdW1wLmNgIGFyb3VuZCBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBjb25maXJtcyB0aGUgaW50ZW50IHRvIHByb3RlY3QgdGhlc2Ugb3BlcmF0aW9ucy5cblxuVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgZnVuZGFtZW50YWxseSBhbHRlcmluZyBob3cgd2UgZnJlZSBrZXJuZWwgcGFnZSB0YWJsZXMuIFNvLCBJIG5lZWQgdG8gc2VlIHdoYXQncyBhY3R1YWxseSBiZWluZyBjYWxsZWQuIEkgc2VlIHRoYXQgdGhlIG92ZXJhbGwgZ29hbCBvZiB0aGUgcGF0Y2ggaXMgUkNVLWRlbGF5ZWQgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMsIHdoaWNoIGhhcyB0byBiZSB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaXMgYWN0dWFsbHkgY2FsbGVkLiBJZiBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpcyB1bnJlYWNoYWJsZSwgdGhlbiB0aGlzIHBhdGNoIHdpbGwgYmUgbG93LXByaW9yaXR5LCBidXQgaWYgaXQgaXMgcmVhY2hhYmxlLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgdG8gZnV6eiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0OCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjM5OjIwLjE4MzAxMjQ0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAzMzc3MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tLmg9MzY5MT1zdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk3LVxcbmluY2x1ZGUvbGludXgvbW0uaDozNjk4OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5OS0vKipcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaD0zNzA2PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0zNzA5LVxcdFxcdHB0ZGVzY19jbGVhcl9rZXJuZWwocHQpO1xcbmluY2x1ZGUvbGludXgvbW0uaDozNzEwOlxcdFxcdHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MTEtXFx0fSBlbHNlIHtcXG4tLVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jPTQzND1zdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDU0LVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jOjQ1NTp2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTYte1xcbi0tXFxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDYzLSNlbHNlXFxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDY0OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjM5OjIxLjk4NjM5NDU2NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTEyNjc5NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYHBhZ2V0YWJsZV9mcmVlYCBhbmQgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBwYWdldGFibGVfZnJlZWAuIEkga25vdyBmcm9tIG1lbW9yeSB0aGF0IHRoaXMgaGFwcGVucyB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEtBU0FOLiBCdXQgbGV0J3MgdmVyaWZ5IHRoYXQuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhlIGV4YWN0IHRyaWdnZXIuIEl0J3MgdGltZSB0byBjaGVjayB0aGUgc291cmNlIGNvZGUuIExldCBtZSBvcGVuIHVwIGBpbmNsdWRlL2xpbnV4L21tLmhgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgcGFnZXRhYmxlX2ZyZWVgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGV4YWN0IGNvbmRpdGlvbmFsIHRoYXQgZ292ZXJucyB0aGUgY2FsbCB0byBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBzbyBJIGNhbiBjb25maXJtIG15IG1lbnRhbCBtb2RlbC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgaG93IEtBU0FOIGludGVyYWN0cyB3aXRoIHBhZ2UgdGFibGUgZnJlZWluZy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1ha2UgYW55IGFzc3VtcHRpb25zIGJhc2VkIG9uIGZ1enp5IHJlY2FsbC4gVGltZSB0byBkaWcgaW4gYW5kIGNvbmZpcm0gdGhlIGV4YWN0IGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjAxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6Mzk6MjUuMjM3NjY0MDUxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODYzMzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2V0YWJsZV9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvbW0uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tLmg9MzY4Mz1zdGF0aWMgaW5saW5lIHN0cnVjdCBwdGRlc2MgKnBhZ2V0YWJsZV9hbGxvY19ub3Byb2YoZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5MC1cXG5pbmNsdWRlL2xpbnV4L21tLmg6MzY5MTpzdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5Mi17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5Ny1cXG5pbmNsdWRlL2xpbnV4L21tLmg6MzY5ODp2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTktLyoqXFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MDA6ICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcwMS0gKiBAcHQ6XFx0VGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvclxcbmluY2x1ZGUvbGludXgvbW0uaC0zNzAyLSAqXFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MDM6ICogcGFnZXRhYmxlX2ZyZWUgZnJlZXMgdGhlIG1lbW9yeSBvZiBhbGwgcGFnZSB0YWJsZXMgZGVzY3JpYmVkIGJ5IGEgcGFnZVxcbmluY2x1ZGUvbGludXgvbW0uaC0zNzA0LSAqIHRhYmxlIGRlc2NyaXB0b3IgYW5kIHRoZSBtZW1vcnkgZm9yIHRoZSBkZXNjcmlwdG9yIGl0c2VsZi5cXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcwNS0gKi9cXG5pbmNsdWRlL2xpbnV4L21tLmg6MzcwNjpzdGF0aWMgaW5saW5lIHZvaWQgcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDcte1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDktXFx0XFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MTA6XFx0XFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcxMS1cXHR9IGVsc2Uge1xcbmluY2x1ZGUvbGludXgvbW0uaDozNzEyOlxcdFxcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xcbmluY2x1ZGUvbGludXgvbW0uaC0zNzEzLVxcdH1cXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaD0zODA4PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZHRvcl9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0ZGVzYylcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0zODEwLVxcdHBhZ2V0YWJsZV9kdG9yKHB0ZGVzYyk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjM4MTE6XFx0cGFnZXRhYmxlX2ZyZWUocHRkZXNjKTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzgxMi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjM5OjI1LjI5NDUzMjAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDQ0NDExMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBQYWdlIFRhYmxlIERlYWxsb2NhdGlvbiBBbmFseXNpcyoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cgYXJvdW5kIHBhZ2UgdGFibGUgZnJlZWluZy4gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBjYWxsIHRvIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBNeSBodW5jaCBpcyB0aGF0IHRoZXJlJ3MgYSBwcmVjZWRpbmcgY2hlY2sg4oCTIHBlcmhhcHMgYSBmdW5jdGlvbiBjYWxsLCBvciBhIG1hY3JvIOKAkyB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgcGFnZSB0YWJsZSBiZWluZyB0YXJnZXRlZCBieSB0aGUgcHJvY2VzcyBpcywgaW4gZmFjdCwgYSBrZXJuZWwtc3BlY2lmaWMgcGFnZSB0YWJsZS4gVGhlIG5hbWUgc2VlbXMgdG8gc3VnZ2VzdCBzb21ldGhpbmcgbGlrZSBgcHRkZXNjX2lzX2tlcm5lbGAsIG9yIG1heWJlIGl0J3MgYHB0X2lzX2tlcm5lbGAsIG9yIHNvbWUgdmFyaWF0aW9uIG9uIHRoYXQgdGhlbWUuIEkgbmVlZCB0byBpZGVudGlmeSAqdGhhdCogY2hlY2suIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBjb25kaXRpb25hbCBleHByZXNzaW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGVuIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzIGFjdHVhbGx5IGludm9rZWQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgYW5kIHNlZSB3aGF0IHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGNhbGwgaXMgYmVpbmcgdGVzdGVkIGltbWVkaWF0ZWx5IGJlZm9yZWhhbmQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBtZW1vcnkgcmVjbGFpbSBzdHJhdGVneSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTozOToyOC45OTg5NzQ5MzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTMyMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9tbS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3MDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM3MDA6XFx0ICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcXG4zNzAxOlxcdCAqIEBwdDpcXHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXFxuMzcwMjpcXHQgKlxcbjM3MDM6XFx0ICogcGFnZXRhYmxlX2ZyZWUgZnJlZXMgdGhlIG1lbW9yeSBvZiBhbGwgcGFnZSB0YWJsZXMgZGVzY3JpYmVkIGJ5IGEgcGFnZVxcbjM3MDQ6XFx0ICogdGFibGUgZGVzY3JpcHRvciBhbmQgdGhlIG1lbW9yeSBmb3IgdGhlIGRlc2NyaXB0b3IgaXRzZWxmLlxcbjM3MDU6XFx0ICovXFxuMzcwNjpcXHRzdGF0aWMgaW5saW5lIHZvaWQgcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXFxuMzcwNzpcXHR7XFxuMzcwODpcXHRcXHRpZiAocHRkZXNjX3Rlc3Rfa2VybmVsKHB0KSkge1xcbjM3MDk6XFx0XFx0XFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XFxuMzcxMDpcXHRcXHRcXHRwYWdldGFibGVfZnJlZV9rZXJuZWwocHQpO1xcbjM3MTE6XFx0XFx0fSBlbHNlIHtcXG4zNzEyOlxcdFxcdFxcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xcbjM3MTM6XFx0XFx0fVxcbjM3MTQ6XFx0fVxcbjM3MTU6XFx0XFxuMzcxNjpcXHQjaWYgZGVmaW5lZChDT05GSUdfU1BMSVRfUFRFX1BUTE9DS1MpXFxuMzcxNzpcXHQjaWYgQUxMT0NfU1BMSVRfUFRMT0NLU1xcbjM3MTg6XFx0dm9pZCBfX2luaXQgcHRsb2NrX2NhY2hlX2luaXQodm9pZCk7XFxuMzcxOTpcXHRib29sIHB0bG9ja19hbGxvYyhzdHJ1Y3QgcHRkZXNjICpwdGRlc2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTozOToyOC45OTk1NzA1NTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTU4NTY1OTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcgTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcGFnZXRhYmxlX2ZyZWVgIGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIGJlZW4gYSBmdW5jdGlvbmFsIGNoYW5nZS4gSWYgdGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvciwgYHB0YCwgcGFzc2VzIHRoZSBgcHRkZXNjX3Rlc3Rfa2VybmVsKHB0KWAgdGVzdCwgaXQgbm93IGNhbGxzIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIHRoaXMgZGVmZXJzIHRoZSBhY3R1YWwgZnJlZWluZyBvZiB0aGUga2VybmVsIHBhZ2UgdGFibGVzIGFuZCB1c2VzIFJDVSwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGNvbmN1cnJlbmN5LlxuXG5UaGUga2V5IGZ1bmN0aW9ucyB0byByZWFsbHkgZGlnIGludG8gaGVyZSBhcmUgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIHRoZW4gYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCwgd2hpY2ggaXMgb2J2aW91c2x5IHRoZSBSQ1UgaW50ZXJmYWNlLCBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgYW5kIGZpbmFsbHksIHRoZSByYXRoZXIgdW5leHBlY3RlZCBgcHRkdW1wX3dhbGtfcGdkYC4gV2FpdCwgYHB0ZHVtcF93YWxrX3BnZGA/IFRoYXQncyBwYXJ0IG9mIHRoZSBwYWdlIHRhYmxlIGR1bXAgbWVjaGFuaXNtLCB3aGljaCBpcyBhICpkZWJ1Z2dpbmcqIGZlYXR1cmUhIFRoYXQncyBvZGQgdGhhdCBpdCdzIGluIGEgcGF0aCB0aWVkIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuICBJJ2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgdGhhdCBjb25uZWN0aW9uIG1vcmUgY2xvc2VseSBsYXRlci5cblxuQnV0LCBiYWNrIHRvIHRoZSBtYWluIHBvaW50LCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpcyBkZWZpbml0ZWx5IGNvcmUgTU0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZGVmZXJyZWQgZnJlZWluZy4gSXQncyBjcnVjaWFsIGZvciB0aGUga2VybmVsJ3Mgc3RhYmlsaXR5IHVuZGVyIGhlYXZ5IGxvYWQgb3IgZXZlbiBpbiBnZW5lcmFsLlxuXG5Ob3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGEgY29tcGlsZS10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBhbmQgd2hhdCBpdHMgaW1wbGljYXRpb25zIGFyZS4gVGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCB0aGlzIGJlaGF2aW9yIGlzIGVuZ2FnZWQgYW5kIGlmIGl0IGNhbiBjYXVzZSBwcm9ibGVtcyBpZiBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1NiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQwOjM0LjU4NTIzMTI4NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg4ODcxODgzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L0tjb25maWc9NTg9Y29uZmlnIFg4Nlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yODMtXFx0c2VsZWN0IEhBVkVfUEVSRl9VU0VSX1NUQUNLX0RVTVBcXG5hcmNoL3g4Ni9LY29uZmlnOjI4NDpcXHRzZWxlY3QgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcdGlmIElPTU1VX1NWQVxcbmFyY2gveDg2L0tjb25maWctMjg1LVxcdHNlbGVjdCBNTVVfR0FUSEVSX1JDVV9UQUJMRV9GUkVFXFxuLS1cXG5tbS9LY29uZmlnPTEwMjA9Y29uZmlnIEhBVkVfR0lHQU5USUNfRk9MSU9TXFxuLS1cXG5tbS9LY29uZmlnLTEwMjMtXFxubW0vS2NvbmZpZzoxMDI0OmNvbmZpZyBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXFxubW0vS2NvbmZpZy0xMDI1LVxcdGRlZl9ib29sIG5cXG4tLVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jPTQxMz1zdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00MTktXFxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDIwOiNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQyMS1zdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6MzcuNDczOTYwMjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5NDMwMDkyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgQXN5bmNocm9ub3VzIFBhZ2UgVGFibGUgRnJlZWluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgYW5kIGBJT01NVV9TVkFgIG9uIHg4NiBqdW1wcyBvdXQuIFRoZSBpbml0aWFsIGxvZ2ljIHN1Z2dlc3RzIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBpcyBjb250aW5nZW50IG9uIGBJT01NVV9TVkFgIGZvciB4ODYuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggc2VlbXMgdG8gZnVuZGFtZW50YWxseSBjaGFuZ2UgdGhlIGdhbWUuIFRoZSBhZGRpdGlvbiBvZiB0aGF0IGNydWNpYWwgYCNlbHNlYCBibG9jayB3aXRoaW4gYG1tL3BndGFibGUtZ2VuZXJpYy5jYCBpcyB0aGUga2V5LiBOb3csIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGlzICphbHdheXMqIGRlZmluZWQuIEFuZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBpcyBlbmFibGVkIG9yIG5vdCwgaXQgKmFsd2F5cyogZGVmZXJzIHRoZSBmcmVlaW5nIHByb2Nlc3MgdXNpbmcgUkNVLCBlaXRoZXIgZGlyZWN0bHkgb3IgdmlhIGEgd29ya3F1ZXVlLiBUaGF0J3MgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBiZWhhdmlvci4gV2UndmUgbW92ZWQgZnJvbSBwb3RlbnRpYWwgc3luY2hyb25vdXMgZnJlZWluZyB0byAqZ3VhcmFudGVlZCogYXN5bmNocm9ub3VzIGZyZWVpbmcgZm9yIGtlcm5lbCBwYWdlIHRhYmxlcy5cblxuQnV0IHdhaXQsIHRoZXJlJ3MgbW9yZS4gVGhlIG1vZGlmaWNhdGlvbiB0byBgbW0vcGFnZXdhbGsuY2AgYW5kIGBtbS9wdGR1bXAuY2AgaXMgaW1tZWRpYXRlbHkgY29uY2VybmluZy4gSSBrbm93IHRoYXQgYHB0ZHVtcF93YWxrX3BnZGAgaXMgdXNlZCBieSB0aGUgYFBURFVNUF9ERUJVR0ZTYCBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyBjcml0aWNhbCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXppbmcgcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyBmdXJ0aGVyLiBJJ3ZlIGdvdCB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHN1YnRsZSByZWdyZXNzaW9ucyB3aXRoaW4gdGhlIGRlYnVnIGFuZCB0cmFjaW5nIHV0aWxpdGllcy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2hhbmdlIGRvZXNuJ3QgYnJlYWsgYW55IGFzc3VtcHRpb25zIHRob3NlIHRvb2xzIHJlbHkgb24uIEknbGwgbmVlZCB0byBjaGVjayBob3cgdGhlIGFzeW5jaHJvbm91cyBmcmVlaW5nIGludGVyYWN0cyB3aXRoIHRoZSBwYWdlIHRhYmxlIGR1bXAgY29kZSwgYW5kIHdoZXRoZXIgaXQgaW50cm9kdWNlcyBhbnkgcmFjZSBjb25kaXRpb25zLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3NiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MDo0Mi4zNjgyNjI5OTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzQ3NjU0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHRkdW1wX3dhbGtfcGdkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oPTE2PXN0cnVjdCBwdGR1bXBfaW5mbyB7XFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yMS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDoyMjp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyk7XFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMjMtI2lmZGVmIENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlNcXG4tLVxcbmFyY2gvYXJtL21tL2R1bXAuYz0zOTg9c3RhdGljIHZvaWQgd2Fsa19wZ2Qoc3RydWN0IHBnX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5hcmNoL2FybS9tbS9kdW1wLmMtNDE0LVxcbmFyY2gvYXJtL21tL2R1bXAuYzo0MTU6dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcHRkdW1wX2luZm8gKmluZm8pXFxuYXJjaC9hcm0vbW0vZHVtcC5jLTQxNi17XFxuLS1cXG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jPTc9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuLS1cXG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jLTEwLVxcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmM6MTE6XFx0cHRkdW1wX3dhbGtfcGdkKG0sIGluZm8pO1xcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmMtMTItXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTI3OT12b2lkIG5vdGVfcGFnZV9mbHVzaChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpwdF9zdClcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMjg1LVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6Mjg2OnN0YXRpYyB2b2lkIGFybTY0X3B0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODcte1xcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMjg4LVxcdHN0YXRpY19icmFuY2hfaW5jKFxcdTAwMjZhcm02NF9wdGR1bXBfbG9ja19rZXkpO1xcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6Mjg5OlxcdHB0ZHVtcF93YWxrX3BnZChzdCwgbW0sIE5VTEwpO1xcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMjkwLVxcdHN0YXRpY19icmFuY2hfZGVjKFxcdTAwMjZhcm02NF9wdGR1bXBfbG9ja19rZXkpO1xcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYz0yOTM9dm9pZCBwdGR1bXBfd2FsayhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbylcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzIwLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6MzIxOlxcdGFybTY0X3B0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBpbmZvLVxcdTAwM2VtbSk7XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zMjItfVxcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYz0zMzg9Ym9vbCBwdGR1bXBfY2hlY2tfd3godm9pZClcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzYyLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM6MzYzOlxcdGFybTY0X3B0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSk7XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zNjQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTMzND1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzUxLVxcdC8qIFRyYXZlcnNlIGtlcm5lbCBwYWdlIHRhYmxlcyAqL1xcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM6MzUyOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSwgTlVMTCk7XFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zNTMtXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTM2OD1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zOTEtXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzozOTI6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIFxcdTAwMjZpbml0X21tLCBOVUxMKTtcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTM5My1cXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9MzUzPXN0YXRpYyB2b2lkIHB0ZHVtcF93YWxrKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZF9tbV9pbmZvICpwaW5mbylcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtMzcyLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6MzczOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBwaW5mby1cXHUwMDNlbW0sIE5VTEwpO1xcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtMzc0LX1cXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9Mzc2PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXFxuLS1cXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTM5OS1cXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jOjQwMDpcXHRwdGR1bXBfd2Fsa19wZ2QoXFx1MDAyNnN0LnB0ZHVtcCwgXFx1MDAyNmluaXRfbW0sIE5VTEwpO1xcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtNDAxLVxcbi0tXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTE4Mj1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIxMC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MjExOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSwgTlVMTCk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIxMi1cXHRpZiAoc3Qud3hfcGFnZXMpIHtcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0yMjY9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuLS1cXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjUwLVxcdG11dGV4X2xvY2soXFx1MDAyNmNwYV9tdXRleCk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjI1MTpcXHRwdGR1bXBfd2Fsa19wZ2QoXFx1MDAyNnN0LnB0ZHVtcCwgXFx1MDAyNmluaXRfbW0sIE5VTEwpO1xcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yNTItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjcGFfbXV0ZXgpO1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTMwPXN0cnVjdCBzZXFfZmlsZTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzE6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjMyOnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMzMtXFx0XFx0XFx0XFx0ICAgYm9vbCB1c2VyKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzQ6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzU6I2RlZmluZSBwdGR1bXBfY2hlY2tfd3ggcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NoZWNrd3hcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMzYtdm9pZCBwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTg9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTkte1xcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYzoxMDpcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBcXHUwMDI2aW5pdF9tbSwgZmFsc2UpO1xcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0xMS1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0xNj1zdGF0aWMgaW50IHB0ZHVtcF9jdXJrbmxfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuLS1cXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMTgtXFx0aWYgKGN1cnJlbnQtXFx1MDAzZW1tLVxcdTAwM2VwZ2QpXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjE5OlxcdFxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIGN1cnJlbnQtXFx1MDAzZW1tLCBmYWxzZSk7XFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTIwLVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTI2PXN0YXRpYyBpbnQgcHRkdW1wX2N1cnVzcl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0yOC1cXHRpZiAoY3VycmVudC1cXHUwMDNlbW0tXFx1MDAzZXBnZClcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6Mjk6XFx0XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgY3VycmVudC1cXHUwMDNlbW0sIHRydWUpO1xcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0zMC1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0zNz1zdGF0aWMgaW50IHB0ZHVtcF9lZmlfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXFxuLS1cXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMzktXFx0aWYgKGVmaV9tbS5wZ2QpXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjQwOlxcdFxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIFxcdTAwMjZlZmlfbW0sIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtNDEtXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYz00MTY9c3RhdGljIHZvaWQgbm90ZV9wYWdlX2ZsdXNoKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnB0X3N0KVxcbi0tXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDIyLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjQyMzpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKHN0cnVjdCBzZXFfZmlsZSAqbSxcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00MjQtXFx0XFx0XFx0XFx0c3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NTctXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDU4OlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBtbSwgcGdkKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NTktXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzMtXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDc0OnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDc1LXtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NzY6XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUobSwgbW0sIG1tLVxcdTAwM2VwZ2QsIGZhbHNlLCB0cnVlKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzctfVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3OC1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0Nzk6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ4MC1cXHRcXHRcXHRcXHQgICBib29sIHVzZXIpXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00ODYtI2VuZGlmXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDg3OlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKG0sIG1tLCBwZ2QsIGZhbHNlLCBmYWxzZSk7XFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDg4LX1cXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jPTQ5MD12b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZClcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwMC1cXHRwZ2QgPSBrZXJuZWxfdG9fdXNlcl9wZ2RwKHBnZCk7XFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTAxOlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKE5VTEwsIFxcdTAwMjZpbml0X21tLCBwZ2QsIHRydWUsIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDItI2VuZGlmXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDQtXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTA1OmJvb2wgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NoZWNrd3godm9pZClcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDYte1xcbi0tXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTA5LVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjUxMDpcXHRyZXR1cm4gcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoTlVMTCwgXFx1MDAyNmluaXRfbW0sIElOSVRfUEdELCB0cnVlLCBmYWxzZSk7XFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTExLX1cXG4tLVxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYz03NT12b2lkIF9faW5pdCBlZmlfZHVtcF9wYWdldGFibGUodm9pZClcXG4tLVxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYy03Ny0jaWZkZWYgQ09ORklHX0VGSV9QR1RfRFVNUFxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYzo3ODpcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoTlVMTCwgXFx1MDAyNmluaXRfbW0pO1xcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfMzIuYy03OS0jZW5kaWZcXG4tLVxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYz00MjM9dm9pZCBfX2luaXQgZWZpX2R1bXBfcGFnZXRhYmxlKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmMtNDI1LSNpZmRlZiBDT05GSUdfRUZJX1BHVF9EVU1QXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV82NC5jOjQyNjpcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoTlVMTCwgXFx1MDAyNmVmaV9tbSk7XFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV82NC5jLTQyNy0jZW5kaWZcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmg9MTM9c3RydWN0IHB0ZHVtcF9zdGF0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTI3LVxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmg6Mjg6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sXFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaC0yOS1cXHRcXHRcXHRcXHRzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCxcXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTMwLVxcdFxcdFxcdFxcdGJvb2wgY2hlY2t3eCwgYm9vbCBkbWVzZyk7XFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaDozMTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpO1xcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMzItYm9vbCBwdGR1bXBfY2hlY2tfd3godm9pZCk7XFxuLS1cXG5tbS9wdGR1bXAuYz0xNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwdGR1bXBfb3BzID0ge1xcbi0tXFxubW0vcHRkdW1wLmMtMTc0LVxcbm1tL3B0ZHVtcC5jOjE3NTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXFxubW0vcHRkdW1wLmMtMTc2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6NDQuNDQzMDMyNDcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODcxNTA3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFJlYWNoYWJpbGl0eSBpbiBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIGNhbGxlZCBieSBgcHRkdW1wX2NoZWNrX3d4YCwgYW5kICp0aGF0KiBmdW5jdGlvbiBnZXRzIGludm9rZWQgZHVyaW5nIGJvb3QuIFNvLCBubyBxdWVzdGlvbiwgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjb2RlLiBXZSBrbm93IHdlJ3JlIGdvaW5nIHRvIGdldCB0byBpdC4gTWFrZXMgc2Vuc2UuXG5cbkFuZCB0aGVuLCBpZiBJJ20gdW5kZXJzdGFuZGluZyB0aGlzIHJpZ2h0LCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBnZXRzIGNhbGxlZCAqYW55dGltZSoga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBmcmVlZC4gUmlnaHQsIHJpZ2h0LCB0aGluZ3MgbGlrZSB3aGVuIHdlJ3JlIHJlbGVhc2luZyBgdm1hbGxvY2AgbWVtb3J5IG9yIGZyZWVpbmcgaHVnZSBwYWdlcyBtYXBwZWQgd2l0aCBgdm1hcGAuIEdvdCBpdC4gVGhhdCdzIGEgcHJldHR5IHdpZGUgbmV0LlxuXG5IbW0uLi4ganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbSBnb2luZyB0byByZS1leGFtaW5lIHRoZSBjYWxsZXJzIG9mIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBKdXN0IHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByZWFjaCBpcyBzdGlsbCBjb3JyZWN0LiBJdCBwYXlzIHRvIGJlIHRob3JvdWdoIHdpdGggdGhpcyBzdHVmZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMDMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MDo0OC4yMzAxODYwMTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTQwNTM1MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZXRhYmxlX2ZyZWVfa2VybmVsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbW0uaD0zNjkxPXN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTctXFxuaW5jbHVkZS9saW51eC9tbS5oOjM2OTg6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk5LS8qKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oPTM3MDY9c3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDktXFx0XFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MTA6XFx0XFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcxMS1cXHR9IGVsc2Uge1xcbi0tXFxubW0vcGd0YWJsZS1nZW5lcmljLmM9NDM0PXN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTQtXFxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDU1OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ1Ni17XFxuLS1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NjMtI2Vsc2VcXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NjQ6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXFxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDY1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6NTAuMDI0MjQzNjI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDc3OTU2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBgcGFnZXRhYmxlX2ZyZWVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHBhZ2V0YWJsZV9mcmVlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIHJlc3BvbnNpYmxlIGZvciwgd2VsbCwgZnJlZWluZyBwYWdlIHRhYmxlcy4gSSBrbm93IGl0J3MgY2FsbGVkIGZyb20gdmFyaW91cyBvdGhlciBmcmVlaW5nIGZ1bmN0aW9uczogYHBhZ2V0YWJsZV9kdG9yX2ZyZWVgLCBhbmQgdGhlbiwgZGVwZW5kaW5nIG9uIHRoZSBsZXZlbCBvZiB0aGUgcGFnZSB0YWJsZSwgYHB1ZF9mcmVlYCwgYHBtZF9mcmVlYCwgYW5kIGBwdGVfZnJlZV9rZXJuZWxgLCBhbmQgcHJvYmFibHkgb3RoZXJzIEknbSBub3QgaW1tZWRpYXRlbHkgcmVjYWxsaW5nLiBTZWVtcyBsaWtlIHRoZSBjb21tb24gZGVub21pbmF0b3IuXG5cblJpZ2h0LCBzbyBsZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gYHBhZ2V0YWJsZV9mcmVlYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBleGFjdCBmdW5jdGlvbiBhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgbG93ZXIgbGV2ZWwgZnJlZWluZyByb3V0aW5lcywgY29uc2lkZXJpbmcgaXRzIGNhbGxlZCBmcm9tIGFsbCB0aGUgdmFyaW91cyBsZXZlbHMgb2YgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTU2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6NTMuNjcyMDQxNDk4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTA5NjgxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdldGFibGVfZnJlZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTAwOT1zdGF0aWMgdm9pZCBfX21lbWluaXQgZnJlZV9wYWdldGFibGUoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvcmRlcilcXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMDI2LVxcdH0gZWxzZSB7XFxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjEwMjc6XFx0XFx0cGFnZXRhYmxlX2ZyZWUocGFnZV9wdGRlc2MocGFnZSkpO1xcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMDI4LVxcdH1cXG4tLVxcbmFyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmM9NDEzPXN0YXRpYyB2b2lkIGNwYV9jb2xsYXBzZV9sYXJnZV9wYWdlcyhzdHJ1Y3QgY3BhX2RhdGEgKmNwYSlcXG4tLVxcbmFyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmMtNDQwLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZwdGRlc2MtXFx1MDAzZXB0X2xpc3QpO1xcbmFyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmM6NDQxOlxcdFxcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XFxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy00NDItXFx0fVxcbi0tXFxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYz0xMjMzPXN0YXRpYyBpbnQgc3BsaXRfbGFyZ2VfcGFnZShzdHJ1Y3QgY3BhX2RhdGEgKmNwYSwgcHRlX3QgKmtwdGUsXFxuLS1cXG5hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jLTEyNDYtXFx0aWYgKF9fc3BsaXRfbGFyZ2VfcGFnZShjcGEsIGtwdGUsIGFkZHJlc3MsIHB0ZGVzYykpXFxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYzoxMjQ3OlxcdFxcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XFxuYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYy0xMjQ4LVxcbi0tXFxuYXJjaC94ODYvbW0vcGd0YWJsZS5jPTE1MD1zdGF0aWMgdm9pZCBmcmVlX3BtZHMoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWRzW10sIGludCBjb3VudClcXG4tLVxcbmFyY2gveDg2L21tL3BndGFibGUuYy0xNTktXFx0XFx0XFx0cGFnZXRhYmxlX2R0b3IocHRkZXNjKTtcXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM6MTYwOlxcdFxcdFxcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XFxuYXJjaC94ODYvbW0vcGd0YWJsZS5jLTE2MS1cXHRcXHRcXHRtbV9kZWNfbnJfcG1kcyhtbSk7XFxuLS1cXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM9MTY1PXN0YXRpYyBpbnQgcHJlYWxsb2NhdGVfcG1kcyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZHNbXSwgaW50IGNvdW50KVxcbi0tXFxuYXJjaC94ODYvbW0vcGd0YWJsZS5jLTE4MS1cXHRcXHRpZiAocHRkZXNjIFxcdTAwMjZcXHUwMDI2ICFwYWdldGFibGVfcG1kX2N0b3IobW0sIHB0ZGVzYykpIHtcXG5hcmNoL3g4Ni9tbS9wZ3RhYmxlLmM6MTgyOlxcdFxcdFxcdHBhZ2V0YWJsZV9mcmVlKHB0ZGVzYyk7XFxuYXJjaC94ODYvbW0vcGd0YWJsZS5jLTE4My1cXHRcXHRcXHRwdGRlc2MgPSBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MDo1My43NDcxNDQwNTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcyODA5NTMxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS2VybmVsIFBhZ2UgVGFibGUgRnJlZWluZyoqXG5cbk9rYXksIHNvIGl0J3MgY29uZmlybWVkOiBgcGFnZXRhYmxlX2ZyZWVgICppcyogZGVmaW5pdGVseSBpbiB1c2UuIFRoaXMgcGF0Y2ggaXMgbWFraW5nIHNvbWUgZnVuZGFtZW50YWwgY2hhbmdlcyB0byBob3cga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBmcmVlZCwgb3B0aW5nIGZvciBkZWZlcnJlZCBmcmVlaW5nIHVzaW5nIFJDVS4gVGhlIHByaW1hcnkgbW90aXZhdGlvbiBoZXJlLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHRvIG1pdGlnYXRlIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIHNwZWNpZmljYWxseSB3aGVuIGxvY2tsZXNzbHkgdHJhdmVyc2luZyBrZXJuZWwgcGFnZSB0YWJsZXMsIHNvbWV0aGluZyB0aGF0J3MgY3J1Y2lhbCBkdXJpbmcgcHJvY2Vzc2VzIGxpa2UgYHB0ZHVtcGAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCB0aGVyZWZvcmUgd29ydGh5IG9mIHRob3JvdWdoIGZ1enppbmcuXG5cbk15IHByaW1hcnkgYXJlYXMgb2YgZm9jdXMgYXJlIGdvaW5nIHRvIGJlIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLCB3aGljaCBhcmUgdGhlIG9idmlvdXMgY2FuZGlkYXRlcywgYWxvbmdzaWRlIGBwdGR1bXBfd2Fsa19wZ2RgLCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZWAsIGFuZCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2Ag4oCTIHRob3NlIGZ1bmN0aW9ucyByZXByZXNlbnQgdGhlIGFyZWFzIHRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gcHJvdGVjdC5cblxuV2FpdCBhIHNlY29uZCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIGFsc28gc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIHRvIG5vdyBjYWxsIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAgYmV0dGVyLiBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIHRvIGZ1bGx5IGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY2FsbCBjaGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MDEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDA6NTguNDc1MjQxMDMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk3OTA4MTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbGtfcGFnZV9yYW5nZV9kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21tL3Byb2Nlc3NfYWRkcnMucnN0PTM4Mj1XZSBhbHNvIHBlcm1pdCBhIHRydWx5IHVudXN1YWwgY2FzZSBpcyB0aGUgdHJhdmVyc2FsIG9mIG5vbi1WTUEgcmFuZ2VzIGluXFxuRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdDozODM6Kip1c2VybGFuZCoqIHJhbmdlcywgYXMgcHJvdmlkZWQgZm9yIGJ5IDpjOmZ1bmM6YCF3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLlxcbkRvY3VtZW50YXRpb24vbW0vcHJvY2Vzc19hZGRycy5yc3QtMzg0LVxcbi0tXFxubW0vaW50ZXJuYWwuaD0xODQwPWludCB3YWxrX3BhZ2VfcmFuZ2Vfdm1hX3Vuc2FmZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL2ludGVybmFsLmgtMTg0Mi1cXHRcXHR2b2lkICpwcml2YXRlKTtcXG5tbS9pbnRlcm5hbC5oOjE4NDM6aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG5tbS9pbnRlcm5hbC5oLTE4NDQtXFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGVuZCwgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzICpvcHMsXFxuLS1cXG5tbS9wYWdld2Fsay5jPTY0OD1pbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNjY3LS8qKlxcbm1tL3BhZ2V3YWxrLmM6NjY4OiAqIHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyAtIHdhbGsgYSByYW5nZSBvZiBwYWdldGFibGVzIG5vdCBiYWNrZWQgYnkgYSB2bWFcXG5tbS9wYWdld2Fsay5jLTY2OS0gKiBAbW06XFx0XFx0bW1fc3RydWN0IHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IHByb2Nlc3Mgb2YgcGFnZSB0YWJsZSB3YWxrXFxuLS1cXG5tbS9wYWdld2Fsay5jLTY4MS0gKi9cXG5tbS9wYWdld2Fsay5jOjY4MjppbnQgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbm1tL3BhZ2V3YWxrLmMtNjgzLVxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBlbmQsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxcbi0tXFxubW0vcHRkdW1wLmM9MTc1PXZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZClcXG4tLVxcbm1tL3B0ZHVtcC5jLTE4Mi1cXHR3aGlsZSAocmFuZ2UtXFx1MDAzZXN0YXJ0ICE9IHJhbmdlLVxcdTAwM2VlbmQpIHtcXG5tbS9wdGR1bXAuYzoxODM6XFx0XFx0d2Fsa19wYWdlX3JhbmdlX2RlYnVnKG1tLCByYW5nZS1cXHUwMDNlc3RhcnQsIHJhbmdlLVxcdTAwM2VlbmQsXFxubW0vcHRkdW1wLmMtMTg0LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZwdGR1bXBfb3BzLCBwZ2QsIHN0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MDAuNDczMTU1MTY2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDYxMjYzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKlRyYWNpbmcgdGhlIERlcGVuZGVuY3kgQ2hhaW4gaW4gdGhlIFBhZ2UgVGFibGUgRHVtcCBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIGhhcyBhIHZlcnkgc3BlY2lmaWMgcHVycG9zZeKAlGl0J3MgYmVpbmcgdXRpbGl6ZWQgZGlyZWN0bHkgYnkgYHB0ZHVtcF93YWxrX3BnZGAuIFRoZW4sIGBwdGR1bXBfd2Fsa19wZ2RgIGl0c2VsZiBoYXMgdHdvIHByaW1hcnkgY29uc3VtZXJzOiBgUFREVU1QX0RFQlVHRlNgIGFuZCBgUFREVU1QX0NPUkVgLiBHaXZlbiB0aGUgb3B0aW9ucywgSSB3YW50IHRvIGludmVzdGlnYXRlIHRoZSBgUFREVU1QX0RFQlVHRlNgIHVzYWdlLiBJdCBzZWVtcyB0byBoYXZlIHRoZSBoaWdoZXIgbGV2ZWwgb2YgZGVwZW5kZW5jeSBzbyB0aGlzIGlzIHdoZXJlIEkgd2lsbCBzdGFydCBteSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzkxMSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQxOjA0LjYxOTI4NTAzNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0NzI3MDI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQVERVTVBfREVCVUdGU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2FyY2gvYXJtNjQvcHRkdW1wLnJzdD0yMz1jb25maWd1cmF0aW9ucyBhbmQgbW91bnQgZGVidWdmczo6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L3B0ZHVtcC5yc3QtMjQtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L3B0ZHVtcC5yc3Q6MjU6IENPTkZJR19QVERVTVBfREVCVUdGUz15XFxuRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L3B0ZHVtcC5yc3QtMjYtXFxuLS1cXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnPTM9Y29uZmlnIEFSTV9QVERVTVBfQ09SRVxcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zy01LVxcbmFyY2gvYXJtL0tjb25maWcuZGVidWc6Njpjb25maWcgQVJNX1BURFVNUF9ERUJVR0ZTXFxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zy03LVxcdGJvb2wgXFxcIkV4cG9ydCBrZXJuZWwgcGFnZXRhYmxlIGxheW91dCB0byB1c2Vyc3BhY2UgdmlhIGRlYnVnZnNcXFwiXFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaD0yMj12b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyk7XFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg6MjM6I2lmZGVmIENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlNcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yNC0jZGVmaW5lIEVGSV9SVU5USU1FX01BUF9FTkRcXHRTWl8xR1xcbi0tXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9Mjc9c3RhdGljIGlubGluZSB2b2lkIHB0ZHVtcF9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyxcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yOC1cXHRcXHRcXHRcXHRcXHQgICBjb25zdCBjaGFyICpuYW1lKSB7IH1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDoyOTojZW5kaWYgLyogQ09ORklHX0FSTV9QVERVTVBfREVCVUdGUyAqL1xcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTMwLVxcbi0tXFxuYXJjaC9hcm0vbW0vTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX0FSTV9QVERVTVBfQ09SRSlcXHQrPSBkdW1wLm9cXG5hcmNoL2FybS9tbS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfQVJNX1BURFVNUF9ERUJVR0ZTKVxcdCs9IHB0ZHVtcF9kZWJ1Z2ZzLm9cXG5hcmNoL2FybS9tbS9NYWtlZmlsZS0xOS1vYmotJChDT05GSUdfTU9EVUxFUylcXHRcXHQrPSBwcm9jLXN5bXMub1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaD03MD12b2lkIG5vdGVfcGFnZV9mbHVzaChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaDo3MTojaWZkZWYgQ09ORklHX1BURFVNUF9ERUJVR0ZTXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wdGR1bXAuaC03Mi0jZGVmaW5lIEVGSV9SVU5USU1FX01BUF9FTkRcXHRERUZBVUxUX01BUF9XSU5ET1dfNjRcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmg9NzU9c3RhdGljIGlubGluZSB2b2lkIHB0ZHVtcF9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyxcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTc2LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKm5hbWUpIHsgfVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmg6Nzc6I2VuZGlmIC8qIENPTkZJR19QVERVTVBfREVCVUdGUyAqL1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRkdW1wLmgtNzgtI2Vsc2VcXG4tLVxcbmFyY2gvYXJtNjQvbW0vTWFrZWZpbGU9OD1vYmotJChDT05GSUdfUFREVU1QKVxcdFxcdCs9IHB0ZHVtcC5vXFxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcXHQrPSBwdGR1bXBfZGVidWdmcy5vXFxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfVFJBTlNfVEFCTEUpXFx0Kz0gdHJhbnNfcGdkLm9cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnPTc5PUNPTkZJR19QUENfRUFSTFlfREVCVUc9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnOjgwOkNPTkZJR19QVERVTVBfREVCVUdGUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BQQ19CT09LM1NfNjQpXFx0Kz0gYm9vazNzNjQub1xcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvTWFrZWZpbGUtMTAtXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9NYWtlZmlsZToxMTppZmRlZiBDT05GSUdfUFREVU1QX0RFQlVHRlNcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19QUENfQk9PSzNTXzMyKVxcdCs9IGJhdHMubyBzZWdtZW50X3JlZ3Mub1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYz00MDY9c3RhdGljIGludCBfX2luaXQgcHRkdW1wX2luaXQodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtNDE5LVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM6NDIwOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QVERVTVBfREVCVUdGUykpXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy00MjEtXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwia2VybmVsX3BhZ2VfdGFibGVzXFxcIiwgMDQwMCwgTlVMTCwgTlVMTCwgXFx1MDAyNnB0ZHVtcF9mb3BzKTtcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz04NDI9Q09ORklHX0RFQlVHX1dYPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODQzOkNPTkZJR19QVERVTVBfREVCVUdGUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTg0NC1DT05GSUdfREVCVUdfT0JKRUNUUz15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9ODIxPUNPTkZJR19ERUJVR19XWD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjgyMjpDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy04MjMtQ09ORklHX0RFQlVHX01FTU9SWV9JTklUPXlcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0xODI9Ym9vbCBwdGR1bXBfY2hlY2tfd3godm9pZClcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yMjQtXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjIyNTojaWZkZWYgQ09ORklHX1BURFVNUF9ERUJVR0ZTXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIyNi1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0yNTU9REVGSU5FX1NIT1dfQVRUUklCVVRFKHB0ZHVtcCk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjI1NjojZW5kaWYgLyogQ09ORklHX1BURFVNUF9ERUJVR0ZTICovXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1Ny1cXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0zMTU9c3RhdGljIGludCBwdF9kdW1wX2luaXQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0zNTUtXFx0c29ydChcXHUwMDI2bWFya2Vyc1sxXSwgbWFya2Vyc19jbnQgLSAxLCBzaXplb2YoKm1hcmtlcnMpLCBwdGR1bXBfY21wLCBOVUxMKTtcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MzU2OiNpZmRlZiBDT05GSUdfUFREVU1QX0RFQlVHRlNcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMzU3LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImtlcm5lbF9wYWdlX3RhYmxlc1xcXCIsIDA0MDAsIE5VTEwsIE5VTEwsIFxcdTAwMjZwdGR1bXBfZm9wcyk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjM1ODojZW5kaWYgLyogQ09ORklHX1BURFVNUF9ERUJVR0ZTICovXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTM1OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L21tL01ha2VmaWxlPTM3PW9iai0kKENPTkZJR19QVERVTVApXFx0XFx0Kz0gZHVtcF9wYWdldGFibGVzLm9cXG5hcmNoL3g4Ni9tbS9NYWtlZmlsZTozODpvYmotJChDT05GSUdfUFREVU1QX0RFQlVHRlMpXFx0Kz0gZGVidWdfcGFnZXRhYmxlcy5vXFxuYXJjaC94ODYvbW0vTWFrZWZpbGUtMzktXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9hcm0tcnVudGltZS5jLTI3LVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2FybS1ydW50aW1lLmM6Mjg6I2lmIGRlZmluZWQoQ09ORklHX1BURFVNUF9ERUJVR0ZTKSB8fCBkZWZpbmVkKENPTkZJR19BUk1fUFREVU1QX0RFQlVHRlMpXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvYXJtLXJ1bnRpbWUuYy0yOS0jaW5jbHVkZSBcXHUwMDNjYXNtL3B0ZHVtcC5oXFx1MDAzZVxcbi0tXFxua2VybmVsL2NvbmZpZ3MvZGVidWcuY29uZmlnPTc4PUNPTkZJR19LQVNBTl9WTUFMTE9DPXlcXG5rZXJuZWwvY29uZmlncy9kZWJ1Zy5jb25maWc6Nzk6Q09ORklHX1BURFVNUF9ERUJVR0ZTPXlcXG5rZXJuZWwvY29uZmlncy9kZWJ1Zy5jb25maWctODAtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnPTIxOT1jb25maWcgUFREVU1QXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTIyMS1cXG5tbS9LY29uZmlnLmRlYnVnOjIyMjpjb25maWcgUFREVU1QX0RFQlVHRlNcXG5tbS9LY29uZmlnLmRlYnVnLTIyMy1cXHRib29sIFxcXCJFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXFxcIlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0PTExND1DT05GSUdfUFJPVkVfTE9DS0lORz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjExNTpDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC0xMTYtQ09ORklHX1JDX0RFVklDRVM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD05NT1DT05GSUdfUFJPVkVfTE9DS0lORz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo5NjpDT05GSUdfUFREVU1QX0RFQlVHRlM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHgtOTctQ09ORklHX1JDX0RFVklDRVM9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MTowNi40NjY1NjIzMzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgxOTYyNjY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIERlYnVnZ2luZyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgUFREVU1QX0RFQlVHRlNgLiBUaGF0J3MgYSBwcmV0dHkgZ2VuZXJpYyBjb25maWcgb3B0aW9uLCBJIHNlZSBpdCBwb3BwaW5nIHVwIGluIHZhcmlvdXMgcGxhY2VzLiBUaGVuIHRoZXJlJ3MgYERFQlVHX1dYYCwgYW5kIHRoYXQgb25lIHNwZWNpZmljYWxseSBzZWVtcyB0byBsZXZlcmFnZSBgcHRkdW1wX2NoZWNrX3d4YC4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCB0cmFjayB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmZWF0dXJlcyBpbnRlcmNvbm5lY3QuIE9rYXksIGxldCdzIHpvb20gaW4gb24gYERFQlVHX1dYYCBhbmQgc2VlIHdoYXQgdGhhdCdzIGFsbCBhYm91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzNzMsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MTowOS4yODYxOTI1MjRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzcyOTg3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREVCVUdfV1hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NjUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtL0tjb25maWcuZGVidWc9Nj1jb25maWcgQVJNX1BURFVNUF9ERUJVR0ZTXFxuLS1cXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnLTE5LVxcbmFyY2gvYXJtL0tjb25maWcuZGVidWc6MjA6Y29uZmlnIEFSTV9ERUJVR19XWFxcbmFyY2gvYXJtL0tjb25maWcuZGVidWctMjEtXFx0Ym9vbCBcXFwiV2FybiBvbiBXK1ggbWFwcGluZ3MgYXQgYm9vdFxcXCJcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz0yNTM9Q09ORklHX0RFQlVHX0ZTPXlcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc6MjU0OkNPTkZJR19BUk1fREVCVUdfV1g9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy0yNTUtQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9MzAzPUNPTkZJR19ERUJVR19GUz15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnOjMwNDpDT05GSUdfQVJNX0RFQlVHX1dYPXlcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctMzA1LUNPTkZJR19TQ0hFRF9TVEFDS19FTkRfQ0hFQ0s9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc9MjI3PUNPTkZJR19ERUJVR19GUz15XFxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc6MjI4OkNPTkZJR19BUk1fREVCVUdfV1g9eVxcbi0tXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MzE9dm9pZCBwdGR1bXBfY2hlY2tfd3godm9pZCk7XFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0zNC1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDozNTojaWZkZWYgQ09ORklHX0FSTV9ERUJVR19XWFxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTM2LSNkZWZpbmUgYXJtX2RlYnVnX2NoZWNrd3goKSBwdGR1bXBfY2hlY2tfd3goKVxcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWctMTMtXFx0c2VsZWN0IEFDUElfUFBUVCBpZiBBQ1BJXFxuYXJjaC9hcm02NC9LY29uZmlnOjE0OlxcdHNlbGVjdCBBUkNIX0hBU19ERUJVR19XWFxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNS1cXHRzZWxlY3QgQVJDSF9CSU5GTVRfRUxGX0VYVFJBX1BIRFJTXFxuLS1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZz0xMTg9Y29uZmlnIFBQQ1xcbi0tXFxuYXJjaC9wb3dlcnBjL0tjb25maWctMTMyLVxcdHNlbGVjdCBBUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFXFxuYXJjaC9wb3dlcnBjL0tjb25maWc6MTMzOlxcdHNlbGVjdCBBUkNIX0hBU19ERUJVR19XWFxcdFxcdGlmIFNUUklDVF9LRVJORUxfUldYXFxuYXJjaC9wb3dlcnBjL0tjb25maWctMTM0LVxcdHNlbGVjdCBBUkNIX0hBU19ERVZNRU1fSVNfQUxMT1dFRFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTM5Nj1DT05GSUdfREVCVUdfUk9EQVRBX1RFU1Q9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzozOTc6Q09ORklHX0RFQlVHX1dYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctMzk4LUNPTkZJR19ERUJVR19TVEFDS19VU0FHRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTE4ND1zdGF0aWMgdm9pZCBub3RlX3Byb3Rfd3goc3RydWN0IHBnX3N0YXRlICpzdCwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0xOTMtXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzoxOTQ6XFx0V0FSTl9PTkNFKElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX1dYKSxcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTE5NS1cXHRcXHQgIFxcXCJwb3dlcnBjL21tOiBGb3VuZCBpbnNlY3VyZSBXK1ggbWFwcGluZyBhdCBhZGRyZXNzICVwLyVwU1xcXFxuXFxcIixcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZz0xMz1jb25maWcgUklTQ1ZcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0zMC1cXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfVk1fUEdUQUJMRVxcbmFyY2gvcmlzY3YvS2NvbmZpZzozMTpcXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcXG5hcmNoL3Jpc2N2L0tjb25maWctMzItXFx0c2VsZWN0IEFSQ0hfSEFTX0VMRl9DT1JFX0VGTEFHUyBpZiBCSU5GTVRfRUxGIFxcdTAwMjZcXHUwMDI2IEVMRl9DT1JFXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZz03NT1jb25maWcgUzM5MFxcbi0tXFxuYXJjaC9zMzkwL0tjb25maWctOTAtXFx0c2VsZWN0IEFSQ0hfSEFTX0RFQlVHX1ZNX1BHVEFCTEVcXG5hcmNoL3MzOTAvS2NvbmZpZzo5MTpcXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcXG5hcmNoL3MzOTAvS2NvbmZpZy05Mi1cXHRzZWxlY3QgQVJDSF9IQVNfREVWTUVNX0lTX0FMTE9XRURcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz04NDE9Q09ORklHX0RFQlVHX1JPREFUQV9URVNUPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6ODQyOkNPTkZJR19ERUJVR19XWD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTg0My1DT05GSUdfUFREVU1QX0RFQlVHRlM9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTgyMD1DT05GSUdfTUFHSUNfU1lTUlE9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo4MjE6Q09ORklHX0RFQlVHX1dYPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctODIyLUNPTkZJR19QVERVTVBfREVCVUdGUz15XFxuLS1cXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM9NzE9c3RhdGljIHZvaWQgbm90ZV9wcm90X3d4KHN0cnVjdCBwZ19zdGF0ZSAqc3QsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy04OC1cXHRcXHRyZXR1cm47XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjg5OlxcdFdBUk5fT05DRShJU19FTkFCTEVEKENPTkZJR19ERUJVR19XWCksXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTkwLVxcdFxcdCAgXFxcInMzOTAvbW06IEZvdW5kIGluc2VjdXJlIFcrWCBtYXBwaW5nIGF0IGFkZHJlc3MgJXBTXFxcXG5cXFwiLFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTExMS1cXHRzZWxlY3QgQVJDSF9IQVNfVUJTQU5cXG5hcmNoL3g4Ni9LY29uZmlnOjExMjpcXHRzZWxlY3QgQVJDSF9IQVNfREVCVUdfV1hcXG5hcmNoL3g4Ni9LY29uZmlnLTExMy1cXHRzZWxlY3QgQVJDSF9IQVNfWk9ORV9ETUFfU0VUIGlmIEVYUEVSVFxcbi0tXFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTI2NT1DT05GSUdfTUFHSUNfU1lTUlE9eVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoyNjY6Q09ORklHX0RFQlVHX1dYPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMjY3LUNPTkZJR19ERUJVR19TVEFDS19VU0FHRT15XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MzY9dm9pZCBwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTQzLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDo0NDojaWZkZWYgQ09ORklHX0RFQlVHX1dYXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTQ1LSNkZWZpbmUgZGVidWdfY2hlY2t3eF91c2VyKClcXHRwdGR1bXBfd2Fsa191c2VyX3BnZF9sZXZlbF9jaGVja3d4KClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY1NTU9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9uYW1lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY1Njk6XFx0SVBXX0RFQlVHX1dYKFxcXCJOYW1lOiAlc1xcXFxuXFxcIiwgd3JxdS1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjU3MC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY1NzM9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9mcmVxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjA5LVxcdH0gZWxzZSB7XFx0XFx0LyogU2V0IHRoZSBjaGFubmVsICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjYxMDpcXHRcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBGcmVxL0NoYW5uZWwgLVxcdTAwM2UgJWRcXFxcblxcXCIsIGZ3cnEtXFx1MDAzZW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2MTEtXFx0XFx0ZXJyID0gaXB3MjEwMF9zZXRfY2hhbm5lbChwcml2LCBmd3JxLVxcdTAwM2VtLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTY2MTk9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9mcmVxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY2Mzk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgRnJlcS9DaGFubmVsIC1cXHUwMDNlICVkXFxcXG5cXFwiLCBwcml2LVxcdTAwM2VjaGFubmVsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjQwLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NjY0ND1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjY1MTpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBNb2RlIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2Vtb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02NjUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NjY4Mz1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY2OTMtXFx0d3JxdS1cXHUwMDNlbW9kZSA9IHByaXYtXFx1MDAzZWllZWUtXFx1MDAzZWl3X21vZGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjY5NDpcXHRJUFdfREVCVUdfV1goXFxcIkdFVCBNb2RlIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2Vtb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02Njk1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NjcxOD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3JhbmdlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY4Mzg6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUmFuZ2VcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY4MzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02ODQzPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODYyLVxcdFxcdC8qIHdlIGRpc2FibGUgbWFuZGF0b3J5IEJTU0lEIGFzc29jaWF0aW9uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njg2MzpcXHRcXHRJUFdfREVCVUdfV1goXFxcImV4aXQgLSBkaXNhYmxlIG1hbmRhdG9yeSBCU1NJRFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjg2NC1cXHRcXHRwcml2LVxcdTAwM2Vjb25maWcgXFx1MDAyNj0gfkNGR19TVEFUSUNfQlNTSUQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY4NzQ6XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgQlNTSUQgLVxcdTAwM2UgJXBNXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VhcF9hZGRyLnNhX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY4NzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02ODgxPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02ODk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY4OTk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHZXR0aW5nIFdBUCBCU1NJRDogJXBNXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VhcF9hZGRyLnNhX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MDAtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz02OTAzPXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfZXNzaWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MjMtXFx0aWYgKGxlbmd0aCA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NjkyNDpcXHRcXHRJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgRVNTSUQgdG8gQU5ZXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTI1LVxcdFxcdHByaXYtXFx1MDAzZWNvbmZpZyBcXHUwMDI2PSB+Q0ZHX1NUQVRJQ19FU1NJRDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5MzQtXFx0aWYgKHByaXYtXFx1MDAzZWVzc2lkX2xlbiA9PSBsZW5ndGggXFx1MDAyNlxcdTAwMjYgIW1lbWNtcChwcml2LVxcdTAwM2Vlc3NpZCwgZXh0cmEsIGxlbmd0aCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo2OTM1OlxcdFxcdElQV19ERUJVR19XWChcXFwiRVNTSUQgc2V0IHRvIGN1cnJlbnQgRVNTSUQuXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTM2LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjY5NDA6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXR0aW5nIEVTU0lEOiAnJSpwRScgKCVkKVxcXFxuXFxcIiwgbGVuZ3RoLCBlc3NpZCwgbGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTQxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9Njk1Mj1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X2Vzc2lkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTY0LVxcdGlmIChwcml2LVxcdTAwM2Vjb25maWcgXFx1MDAyNiBDRkdfU1RBVElDX0VTU0lEIHx8IHByaXYtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IFNUQVRVU19BU1NPQ0lBVEVEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk2NTpcXHRcXHRJUFdfREVCVUdfV1goXFxcIkdldHRpbmcgZXNzaWQ6ICclKnBFJ1xcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTY2LVxcdFxcdFxcdCAgICAgcHJpdi1cXHUwMDNlZXNzaWRfbGVuLCBwcml2LVxcdTAwM2Vlc3NpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy02OTcwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk3MTpcXHRcXHRJUFdfREVCVUdfV1goXFxcIkdldHRpbmcgZXNzaWQ6IEFOWVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjk3Mi1cXHRcXHR3cnF1LVxcdTAwM2Vlc3NpZC5sZW5ndGggPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9Njk3OT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTY5OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6Njk5NjpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBOaWNrbmFtZSAtXFx1MDAzZSAlc1xcXFxuXFxcIiwgcHJpdi1cXHUwMDNlbmljayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNjk5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcwMDE9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9uaWNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcwMTU6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgTmlja25hbWUgLVxcdTAwM2UgJXNcXFxcblxcXCIsIGV4dHJhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDE2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzAyMD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X3JhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcwNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzA1NDpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBSYXRlIC1cXHUwMDNlICUwNFhcXFxcblxcXCIsIHJhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcwNTUtICAgICAgZG9uZTpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcwNjA9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MDgzLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MDg0OlxcdFxcdElQV19ERUJVR19XWChcXFwiZmFpbGVkIHF1ZXJ5aW5nIG9yZGluYWxzLlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzA4NS1cXHRcXHRnb3RvIGRvbmU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcxMDU6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUmF0ZSAtXFx1MDAzZSAlZFxcXFxuXFxcIiwgd3JxdS1cXHUwMDNlYml0cmF0ZS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcxMTI9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcxNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzE0MTpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBSVFMgVGhyZXNob2xkIC1cXHUwMDNlIDB4JTA4WFxcXFxuXFxcIiwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcxNDItICAgICAgZG9uZTpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTcxNDc9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcxNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzE2MzpcXHRJUFdfREVCVUdfV1goXFxcIkdFVCBSVFMgVGhyZXNob2xkIC1cXHUwMDNlIDB4JTA4WFxcXFxuXFxcIiwgd3JxdS1cXHUwMDNlcnRzLnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzE2OD1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X3R4cG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcyMDI6XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgVFggUG93ZXIgLVxcdTAwM2UgJWRcXFxcblxcXCIsIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzIwOT1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3R4cG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjcyMzE6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgVFggUG93ZXIgLVxcdTAwM2UgJWRcXFxcblxcXCIsIHdycXUtXFx1MDAzZXR4cG93ZXIudmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcyMzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MjM2PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9zZXRfZnJhZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzI2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MjYxOlxcdElQV19ERUJVR19XWChcXFwiU0VUIEZyYWcgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCBwcml2LVxcdTAwM2VpZWVlLVxcdTAwM2VmdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTcyNjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz03MjY2PXN0YXRpYyBpbnQgaXB3MjEwMF93eF9nZXRfZnJhZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzI3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3Mjc5OlxcdElQV19ERUJVR19XWChcXFwiR0VUIEZyYWcgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VmcmFnLnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MjgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzI4ND1zdGF0aWMgaW50IGlwdzIxMDBfd3hfc2V0X3JldHJ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzA0LVxcdFxcdGVyciA9IGlwdzIxMDBfc2V0X3Nob3J0X3JldHJ5KHByaXYsIHdycXUtXFx1MDAzZXJldHJ5LnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzA1OlxcdFxcdElQV19ERUJVR19XWChcXFwiU0VUIFNob3J0IFJldHJ5IExpbWl0IC1cXHUwMDNlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczMDYtXFx0XFx0XFx0ICAgICB3cnF1LVxcdTAwM2VyZXRyeS52YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzExLVxcdFxcdGVyciA9IGlwdzIxMDBfc2V0X2xvbmdfcmV0cnkocHJpdiwgd3JxdS1cXHUwMDNlcmV0cnkudmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjczMTI6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgTG9uZyBSZXRyeSBMaW1pdCAtXFx1MDAzZSAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzEzLVxcdFxcdFxcdCAgICAgd3JxdS1cXHUwMDNlcmV0cnkudmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzMyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzIxOlxcdElQV19ERUJVR19XWChcXFwiU0VUIEJvdGggUmV0cnkgTGltaXRzIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VyZXRyeS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzMyMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTczMjg9c3RhdGljIGludCBpcHcyMTAwX3d4X2dldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo3MzU1OlxcdElQV19ERUJVR19XWChcXFwiR0VUIFJldHJ5IC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VyZXRyeS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTczNjA9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9zY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03MzcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjczNzM6XFx0SVBXX0RFQlVHX1dYKFxcXCJJbml0aWF0aW5nIHNjYW4uLi5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTczNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03Mzc2LVxcdGlmIChpcHcyMTAwX3NldF9zY2FuX29wdGlvbnMocHJpdikgfHwgaXB3MjEwMF9zdGFydF9zY2FuKHByaXYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzM3NzpcXHRcXHRJUFdfREVCVUdfV1goXFxcIlN0YXJ0IHNjYW4gZmFpbGVkLlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzM3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTc0Mjc9c3RhdGljIGludCBpcHcyMTAwX3d4X3NldF9wb3dlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzQ0Mi1cXHRcXHRlcnIgPSBpcHcyMTAwX3NldF9wb3dlcl9tb2RlKHByaXYsIElQV19QT1dFUl9NT0RFX0NBTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ0MzpcXHRcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBQb3dlciBNYW5hZ2VtZW50IE1vZGUgLVxcdTAwM2Ugb2ZmXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDQ0LVxcdFxcdGdvdG8gZG9uZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0NTItXFx0ZGVmYXVsdDpcXHRcXHQvKiBPdGhlcndpc2Ugd2UgZG9uJ3Qgc3VwcG9ydCBpdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjc0NTM6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgUE0gTW9kZTogJVggbm90IHN1cHBvcnRlZC5cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtNzQ1NC1cXHRcXHRcXHQgICAgIHdycXUtXFx1MDAzZXBvd2VyLmZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0NjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6NzQ2NDpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCBQb3dlciBNYW5hZ2VtZW50IE1vZGUgLVxcdTAwM2UgMHglMDJYXFxcXG5cXFwiLCBwcml2LVxcdTAwM2Vwb3dlcl9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDY1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM9NzQ3Mj1zdGF0aWMgaW50IGlwdzIxMDBfd3hfZ2V0X3Bvd2VyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy03NDg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjc0ODk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUG93ZXIgTWFuYWdlbWVudCBNb2RlIC1cXHUwMDNlICUwMlhcXFxcblxcXCIsIHByaXYtXFx1MDAzZXBvd2VyX21vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTc0OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYz04MDY1PXN0YXRpYyBzdHJ1Y3QgaXdfc3RhdGlzdGljcyAqaXB3MjEwMF93eF93aXJlbGVzc19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE2OS1cXHRcXHRpZiAoYmVhY29uX3F1YWwgPT0gcXVhbGl0eSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTcwOlxcdFxcdFxcdElQV19ERUJVR19XWChcXFwiUXVhbGl0eSBjbGFtcGVkIGJ5IE1pc3NlZCBCZWFjb25zXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MTcxLVxcdFxcdGVsc2UgaWYgKHR4X3F1YWwgPT0gcXVhbGl0eSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTcyOlxcdFxcdFxcdElQV19ERUJVR19XWChcXFwiUXVhbGl0eSBjbGFtcGVkIGJ5IFR4IFJldHJpZXNcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgxNzMtXFx0XFx0ZWxzZSBpZiAocXVhbGl0eSAhPSAxMDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6ODE3NDpcXHRcXHRcXHRJUFdfREVCVUdfV1goXFxcIlF1YWxpdHkgY2xhbXBlZCBieSBTaWduYWwgU3RyZW5ndGhcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgxNzUtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jOjgxNzY6XFx0XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJRdWFsaXR5IG5vdCBjbGFtcGVkLlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE3Ny0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgxOTctICAgICAgZmFpbF9nZXRfb3JkaW5hbDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MTk4OlxcdElQV19ERUJVR19XWChcXFwiZmFpbGVkIHF1ZXJ5aW5nIG9yZGluYWxzLlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODE5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jPTgyMTM9c3RhdGljIHZvaWQgaXB3MjEwMF93eF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgyMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmM6ODIyNTpcXHRJUFdfREVCVUdfV1goXFxcImVudGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYy04MjI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMTAwLmMtODI0OC1cXHRpZiAoIShwcml2LVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBTVEFUVVNfQVNTT0NJQVRFRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuYzo4MjQ5OlxcdFxcdElQV19ERUJVR19XWChcXFwiQ29uZmlndXJpbmcgRVNTSURcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5jLTgyNTAtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlYWN0aW9uX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oPTM5PXN0cnVjdCBpcHcyMTAwX3J4X3BhY2tldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oLTk5LSNkZWZpbmUgSVBXX0RFQlVHX0lORk8oZi4uLikgICAgSVBXX0RFQlVHKElQV19ETF9JTkZPLCAjIyBmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjEwMC5oOjEwMDojZGVmaW5lIElQV19ERUJVR19XWChmLi4uKSAgICAgSVBXX0RFQlVHKElQV19ETF9XWCwgIyMgZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIxMDAuaC0xMDEtI2RlZmluZSBJUFdfREVCVUdfU0NBTihmLi4uKSAgIElQV19ERUJVRyhJUFdfRExfU0NBTiwgIyMgZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTYwMjE9c3RhdGljIHZvaWQgaXB3X3NldF9maXhlZF9yYXRlKHN0cnVjdCBpcHdfcHJpdiAqcHJpdiwgaW50IG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDM2LVxcdFxcdFxcdC8qIEludmFsaWQgZml4ZWQgcmF0ZSBtYXNrICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjAzNzpcXHRcXHRcXHRJUFdfREVCVUdfV1hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDM4LVxcdFxcdFxcdCAgICAoXFxcImludmFsaWQgZml4ZWQgcmF0ZSBtYXNrIGluIGlwd19zZXRfZml4ZWRfcmF0ZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDUwLVxcdFxcdFxcdFxcdC8qIEludmFsaWQgZml4ZWQgcmF0ZSBtYXNrICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjA1MTpcXHRcXHRcXHRcXHRJUFdfREVCVUdfV1hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDUyLVxcdFxcdFxcdFxcdCAgICAoXFxcImludmFsaWQgZml4ZWQgcmF0ZSBtYXNrIGluIGlwd19zZXRfZml4ZWRfcmF0ZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDYxLVxcdFxcdFxcdC8qIEludmFsaWQgZml4ZWQgcmF0ZSBtYXNrICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6NjA2MjpcXHRcXHRcXHRJUFdfREVCVUdfV1hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy02MDYzLVxcdFxcdFxcdCAgICAoXFxcImludmFsaWQgZml4ZWQgcmF0ZSBtYXNrIGluIGlwd19zZXRfZml4ZWRfcmF0ZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz02MjIyPXN0YXRpYyBpbnQgaXB3X3JlcXVlc3Rfc2Nhbl9oZWxwZXIoc3RydWN0IGlwd19wcml2ICpwcml2LCBpbnQgdHlwZSwgaW50IGRpcmVjdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTYyNjQtXFx0aWYgKHR5cGUgPT0gSVdfU0NBTl9UWVBFX1BBU1NJVkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo2MjY1OlxcdFxcdElQV19ERUJVR19XWChcXFwidXNlIHBhc3NpdmUgc2Nhbm5pbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTYyNjYtXFx0XFx0c2Nhbl90eXBlID0gSVBXX1NDQU5fUEFTU0lWRV9GVUxMX0RXRUxMX1NDQU47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04NjAwPXN0YXRpYyBpbnQgaXB3X3d4X3NldF9mcmVxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04NjExLVxcdGlmIChmd3JxLVxcdTAwM2VtID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4NjEyOlxcdFxcdElQV19ERUJVR19XWChcXFwiU0VUIEZyZXEvQ2hhbm5lbCAtXFx1MDAzZSBhbnlcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MTMtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODYzNi1cXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBMSUJJUFdfQ0hfUEFTU0lWRV9PTkxZKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODYzNzpcXHRcXHRcXHRJUFdfREVCVUdfV1goXFxcIkludmFsaWQgQWQtSG9jIGNoYW5uZWwgZm9yIDgwMi4xMWFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2MzgtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04NjQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2NDI6XFx0SVBXX0RFQlVHX1dYKFxcXCJTRVQgRnJlcS9DaGFubmVsIC1cXHUwMDNlICVkXFxcXG5cXFwiLCBmd3JxLVxcdTAwM2VtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04NjQzLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTg2NDk9c3RhdGljIGludCBpcHdfd3hfZ2V0X2ZyZXEoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2ODMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODY4NDpcXHRJUFdfREVCVUdfV1goXFxcIkdFVCBGcmVxL0NoYW5uZWwgLVxcdTAwM2UgJWRcXFxcblxcXCIsIHByaXYtXFx1MDAzZWNoYW5uZWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2ODUtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04Njg4PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04Njk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg2OTU6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXQgTU9ERTogJWRcXFxcblxcXCIsIHdycXUtXFx1MDAzZW1vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg2OTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04NzQwPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04NzQ2LVxcdHdycXUtXFx1MDAzZW1vZGUgPSBwcml2LVxcdTAwM2VpZWVlLVxcdTAwM2Vpd19tb2RlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg3NDc6XFx0SVBXX0RFQlVHX1dYKFxcXCJHZXQgTU9ERSAtXFx1MDAzZSAlZFxcXFxuXFxcIiwgd3JxdS1cXHUwMDNlbW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODc0OC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTg3Njk9c3RhdGljIGludCBpcHdfd3hfZ2V0X3JhbmdlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04ODU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4NTk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUmFuZ2VcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4NjAtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04ODYzPXN0YXRpYyBpbnQgaXB3X3d4X3NldF93YXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4NzQtXFx0XFx0Lyogd2UgZGlzYWJsZSBtYW5kYXRvcnkgQlNTSUQgYXNzb2NpYXRpb24gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4ODc1OlxcdFxcdElQV19ERUJVR19XWChcXFwiU2V0dGluZyBBUCBCU1NJRCB0byBBTllcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4NzYtXFx0XFx0cHJpdi1cXHUwMDNlY29uZmlnIFxcdTAwMjY9IH5DRkdfU1RBVElDX0JTU0lEO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODg4NS1cXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChwcml2LVxcdTAwM2Vic3NpZCwgd3JxdS1cXHUwMDNlYXBfYWRkci5zYV9kYXRhKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4ODY6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJCU1NJRCBzZXQgdG8gY3VycmVudCBCU1NJRC5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg4ODctXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04ODkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg4OTE6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXR0aW5nIG1hbmRhdG9yeSBCU1NJRCB0byAlcE1cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODg5Mi1cXHRcXHQgICAgIHdycXUtXFx1MDAzZWFwX2FkZHIuc2FfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTA1PXN0YXRpYyBpbnQgaXB3X3d4X2dldF93YXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODkyMTpcXHRJUFdfREVCVUdfV1goXFxcIkdldHRpbmcgV0FQIEJTU0lEOiAlcE1cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODkyMi1cXHRcXHQgICAgIHdycXUtXFx1MDAzZWFwX2FkZHIuc2FfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTI3PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODkzNy0gICAgICAgIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo4OTM4OiAgICAgICAgICAgICAgICBJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgRVNTSUQgdG8gQU5ZXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy04OTM5LSAgICAgICAgICAgICAgICBpcHdfZGlzYXNzb2NpYXRlKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk1MS1cXHQgICAgXFx1MDAyNlxcdTAwMjYgKHByaXYtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IChTVEFUVVNfQVNTT0NJQVRFRCB8IFNUQVRVU19BU1NPQ0lBVElORykpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODk1MjpcXHRcXHRJUFdfREVCVUdfV1goXFxcIkVTU0lEIHNldCB0byBjdXJyZW50IEVTU0lELlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk1My1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6ODk1NzpcXHRJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgRVNTSUQ6ICclKnBFJyAoJWQpXFxcXG5cXFwiLCBsZW5ndGgsIGV4dHJhLCBsZW5ndGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5NTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz04OTcxPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk4MS1cXHQgICAgcHJpdi1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgKFNUQVRVU19BU1NPQ0lBVEVEIHwgU1RBVFVTX0FTU09DSUFUSU5HKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg5ODI6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJHZXR0aW5nIGVzc2lkOiAnJSpwRSdcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk4My1cXHRcXHRcXHQgICAgIHByaXYtXFx1MDAzZWVzc2lkX2xlbiwgcHJpdi1cXHUwMDNlZXNzaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtODk4Ny1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjg5ODg6XFx0XFx0SVBXX0RFQlVHX1dYKFxcXCJHZXR0aW5nIGVzc2lkOiBBTllcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTg5ODktXFx0XFx0d3JxdS1cXHUwMDNlZXNzaWQubGVuZ3RoID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTg5OTY9c3RhdGljIGludCBpcHdfd3hfc2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkwMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTAwMjpcXHRJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgbmljayB0byAnJXMnXFxcXG5cXFwiLCBleHRyYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAwMy1cXHRpZiAod3JxdS1cXHUwMDNlZGF0YS5sZW5ndGggXFx1MDAzZSBJV19FU1NJRF9NQVhfU0laRSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkwMTU9c3RhdGljIGludCBpcHdfd3hfZ2V0X25pY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkwMTktXFx0c3RydWN0IGlwd19wcml2ICpwcml2ID0gbGliaXB3X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MDIwOlxcdElQV19ERUJVR19XWChcXFwiR2V0dGluZyBuaWNrXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDIxLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkwMjk9c3RhdGljIGludCBpcHdfd3hfc2V0X3NlbnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkwMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTAzNjpcXHRJUFdfREVCVUdfV1goXFxcIlNldHRpbmcgcm9hbWluZyB0aHJlc2hvbGQgdG8gJWRcXFxcblxcXCIsIHdycXUtXFx1MDAzZXNlbnMudmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwMzc6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXR0aW5nIGRpc2Fzc29jaWF0ZSB0aHJlc2hvbGQgdG8gJWRcXFxcblxcXCIsIDMqd3JxdS1cXHUwMDNlc2Vucy52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTAzOC1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDU5PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9zZW5zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkwNjk6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgcm9hbWluZyB0aHJlc2hvbGQgLVxcdTAwM2UgJXMgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTA3MC1cXHRcXHQgICAgIHdycXUtXFx1MDAzZXBvd2VyLmRpc2FibGVkID8gXFxcIk9GRlxcXCIgOiBcXFwiT05cXFwiLCB3cnF1LVxcdTAwM2Vwb3dlci52YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MDc1PXN0YXRpYyBpbnQgaXB3X3d4X3NldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxNTg6XFx0SVBXX0RFQlVHX1dYKFxcXCJpbnZhbGlkIHJhdGUgc3BlY2lmaWVkLCByZXR1cm5pbmcgZXJyb3JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNTktXFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTYxLSAgICAgIGFwcGx5OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxNjI6XFx0SVBXX0RFQlVHX1dYKFxcXCJTZXR0aW5nIHJhdGUgbWFzayB0byAweCUwOFggWyVzXVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTYzLVxcdFxcdCAgICAgbWFzaywgZml4ZWQgPyBcXFwiZml4ZWRcXFwiIDogXFxcInN1Yi1yYXRlc1xcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTE3MS1cXHRpZiAocHJpdi1cXHUwMDNlcmF0ZXNfbWFzayA9PSBtYXNrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTE3MjpcXHRcXHRJUFdfREVCVUdfV1goXFxcIk1hc2sgc2V0IHRvIGN1cnJlbnQgbWFzay5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkxNzMtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MTg4PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MTk2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jOjkxOTc6XFx0SVBXX0RFQlVHX1dYKFxcXCJHRVQgUmF0ZSAtXFx1MDAzZSAlZFxcXFxuXFxcIiwgd3JxdS1cXHUwMDNlYml0cmF0ZS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTE5OC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkyMDE9c3RhdGljIGludCBpcHdfd3hfc2V0X3J0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTIxOS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MjIwOlxcdElQV19ERUJVR19XWChcXFwiU0VUIFJUUyBUaHJlc2hvbGQgLVxcdTAwM2UgJWRcXFxcblxcXCIsIHByaXYtXFx1MDAzZXJ0c190aHJlc2hvbGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMjEtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MjI0PXN0YXRpYyBpbnQgaXB3X3d4X2dldF9ydHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMzMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTIzNDpcXHRJUFdfREVCVUdfV1goXFxcIkdFVCBSVFMgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VydHMudmFsdWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyMzUtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MjcyPXN0YXRpYyBpbnQgaXB3X3d4X2dldF90eHBvdyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTI4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5Mjg0OlxcdElQV19ERUJVR19XWChcXFwiR0VUIFRYIFBvd2VyIC1cXHUwMDNlICVzICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkyODUtXFx0XFx0ICAgICB3cnF1LVxcdTAwM2Vwb3dlci5kaXNhYmxlZCA/IFxcXCJPRkZcXFwiIDogXFxcIk9OXFxcIiwgd3JxdS1cXHUwMDNlcG93ZXIudmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTI5MD1zdGF0aWMgaW50IGlwd193eF9zZXRfZnJhZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTMwOS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MzEwOlxcdElQV19ERUJVR19XWChcXFwiU0VUIEZyYWcgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VmcmFnLnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MzExLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTMxND1zdGF0aWMgaW50IGlwd193eF9nZXRfZnJhZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTMyMy1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5MzI0OlxcdElQV19ERUJVR19XWChcXFwiR0VUIEZyYWcgVGhyZXNob2xkIC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VmcmFnLnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYy05MzI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM9OTMyOT1zdGF0aWMgaW50IGlwd193eF9zZXRfcmV0cnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzNTYtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmM6OTM1NzpcXHRJUFdfREVCVUdfV1goXFxcIlNFVCByZXRyeSBsaW1pdCAtXFx1MDAzZSBzaG9ydDolZCBsb25nOiVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jLTkzNTgtXFx0XFx0ICAgICBwcml2LVxcdTAwM2VzaG9ydF9yZXRyeV9saW1pdCwgcHJpdi1cXHUwMDNlbG9uZ19yZXRyeV9saW1pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYz05MzYyPXN0YXRpYyBpbnQgaXB3X3d4X2dldF9yZXRyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pcHcyeDAwL2lwdzIyMDAuYzo5Mzg4OlxcdElQV19ERUJVR19XWChcXFwiR0VUIHJldHJ5IC1cXHUwMDNlICVkXFxcXG5cXFwiLCB3cnF1LVxcdTAwM2VyZXRyeS52YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC9pcHcyMjAwLmMtOTM4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2lwdzJ4MDAvaXB3MjIwMC5jPTkzOTM9c3RhdGljIGludCBpcHdfd3hfc2V0X3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MToxMS4xMjM0OTY5NTJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxODczNTM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhZ2UgVGFibGUgRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gY29kZSwgYW5kIGBERUJVR19XWGAgc2VlbXMgdG8gYmUgYSBnZW5lcmFsIG9wdGlvbi4gUmlnaHQsIHNvIGBDT05GSUdfUFREVU1QX0RFQlVHRlNgIGFuZCBgQ09ORklHX0RFQlVHX1dYYCBhcmUgdGhlIHJlYWwgcGxheWVycyBoZXJlLCBzaW5jZSB0aGV5IGxldmVyYWdlIGBwdGR1bXBfd2Fsa19wZ2RgLiBIbW0sIG5vdyB0aGUgcXVlc3Rpb24gaXM6IGlzIGBDT05GSUdfREVCVUdfV1hgIGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgZG8gSSBuZWVkIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBpdD8gSXQncyBwcm9iYWJseSBiZXR0ZXIgdG8gZ28gYWhlYWQgYW5kIGluY29ycG9yYXRlIGJvdGggYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBpbnRvIGBFbmFibGVDb25maWdzYCB0byBrZWVwIHRoaW5ncyBjbGVhbi5cblxuV2FpdCBhIG1pbnV0ZSwgdGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2Agc28gaXQncyBjYWxsaW5nIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYCB3aGVuIGl0J3Mgb3BlcmF0aW5nIG9uIGBcdTAwMjZpbml0X21tYC4gT2theSwgYW5kIHRoYXQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gYG1tL3BhZ2V3YWxrLmNgLiBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZWAgbm93IHRvIGdldCBhIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4NDAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MTUuNDQyMjM0Mzc1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAxMTQ0MzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdD0zNjg9ZXN0YWJsaXNoaW5nIGFuZCB0ZWFyaW5nIGRvd24gcGFnZSBpdHMgcGFnZSB0YWJsZXMuXFxuRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdC0zNjktXFxuRG9jdW1lbnRhdGlvbi9tbS9wcm9jZXNzX2FkZHJzLnJzdDozNzA6SG93ZXZlciwgZm9yIGNvbnZlbmllbmNlIHdlIHByb3ZpZGUgdGhlIDpjOmZ1bmM6YCF3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlYFxcbkRvY3VtZW50YXRpb24vbW0vcHJvY2Vzc19hZGRycy5yc3QtMzcxLWZ1bmN0aW9uIHdoaWNoIGlzIHN5bmNocm9uaXNlZCB2aWEgdGhlIG1tYXAgbG9jayBvbiB0aGUgOmM6bWFjcm86YCFpbml0X21tYFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYz05MjU9c3RhdGljIGludCByYW5nZV9zcGxpdF90b19wdGVzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBnZnBfdCBnZnApXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTkyOS1cXHRsYXp5X21tdV9tb2RlX2VuYWJsZSgpO1xcbmFyY2gvYXJtNjQvbW0vbW11LmM6OTMwOlxcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3Moc3RhcnQsIGVuZCxcXG5hcmNoL2FybTY0L21tL21tdS5jLTkzMS1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2c3BsaXRfdG9fcHRlc19vcHMsIE5VTEwsIFxcdTAwMjZnZnApO1xcbi0tXFxuYXJjaC9hcm02NC9tbS9wYWdlYXR0ci5jPTEwNT1zdGF0aWMgaW50IHVwZGF0ZV9yYW5nZV9wcm90KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSxcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcGFnZWF0dHIuYy0xMjQtXFx0ICovXFxuYXJjaC9hcm02NC9tbS9wYWdlYXR0ci5jOjEyNTpcXHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHN0YXJ0LCBzdGFydCArIHNpemUsXFxuYXJjaC9hcm02NC9tbS9wYWdlYXR0ci5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCwgXFx1MDAyNmRhdGEpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vcGFnZWF0dHIuYz0xMDc9c3RhdGljIGludCBfX3NldF9tZW1vcnkodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgbnVtcGFnZXMsIHBncHJvdF90IHNldF9tYXNrLCBwZ3Byb3RfdCBjbGVhcl9tYXNrKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vcGFnZWF0dHIuYy0xMjAtXFx0bW1hcF93cml0ZV9sb2NrKFxcdTAwMjZpbml0X21tKTtcXG5hcmNoL2xvb25nYXJjaC9tbS9wYWdlYXR0ci5jOjEyMTpcXHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIFxcdTAwMjZwYWdlYXR0cl9vcHMsIE5VTEwsIFxcdTAwMjZtYXNrcyk7XFxuYXJjaC9sb29uZ2FyY2gvbW0vcGFnZWF0dHIuYy0xMjItXFx0bW1hcF93cml0ZV91bmxvY2soXFx1MDAyNmluaXRfbW0pO1xcbi0tXFxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmM9NjU9dm9pZCAqYXJjaF9kbWFfc2V0X3VuY2FjaGVkKHZvaWQgKmNwdV9hZGRyLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jLTc0LVxcdG1tYXBfd3JpdGVfbG9jayhcXHUwMDI2aW5pdF9tbSk7XFxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmM6NzU6XFx0ZXJyb3IgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHZhLCB2YSArIHNpemUsXFxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmMtNzYtXFx0XFx0XFx0XFx1MDAyNnNldF9ub2NhY2hlX3dhbGtfb3BzLCBOVUxMLCBOVUxMKTtcXG4tLVxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jPTg0PXZvaWQgYXJjaF9kbWFfY2xlYXJfdW5jYWNoZWQodm9pZCAqY3B1X2FkZHIsIHNpemVfdCBzaXplKVxcbi0tXFxuYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmMtODktXFx0Lyogd2Fsa19wYWdlX3JhbmdlIHNob3VsZG4ndCBiZSBhYmxlIHRvIGZhaWwgaGVyZSAqL1xcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jOjkwOlxcdFdBUk5fT04od2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh2YSwgdmEgKyBzaXplLFxcbmFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jLTkxLVxcdFxcdFxcdFxcdTAwMjZjbGVhcl9ub2NhY2hlX3dhbGtfb3BzLCBOVUxMLCBOVUxMKSk7XFxuLS1cXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmM9MjYyPXN0YXRpYyBpbnQgX19zZXRfbWVtb3J5KHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IG51bXBhZ2VzLCBwZ3Byb3RfdCBzZXRfbWFzayxcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMDEtXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMwMjpcXHRcXHRcXHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKGxtX3N0YXJ0LCBsbV9lbmQsXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMwMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCwgXFx1MDAyNm1hc2tzKTtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMTktXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMyMDpcXHRcXHRyZXQgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKGxtX3N0YXJ0LCBsbV9lbmQsXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMyMS1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCwgXFx1MDAyNm1hc2tzKTtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMjUtXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jOjMyNjpcXHRyZXQgPSAgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBcXHUwMDI2cGFnZWF0dHJfb3BzLCBOVUxMLFxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYy0zMjctXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2bWFza3MpO1xcbi0tXFxuYXJjaC9yaXNjdi9tbS9wYWdlYXR0ci5jLTMzNy0jZWxzZVxcbmFyY2gvcmlzY3YvbW0vcGFnZWF0dHIuYzozMzg6XFx0cmV0ID0gIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXFx1MDAyNnBhZ2VhdHRyX29wcywgTlVMTCxcXG5hcmNoL3Jpc2N2L21tL3BhZ2VhdHRyLmMtMzM5LVxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNm1hc2tzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaD0xMzE9aW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzMtXFx0XFx0dm9pZCAqcHJpdmF0ZSk7XFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oOjEzNDppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzUtXFx0XFx0dW5zaWduZWQgbG9uZyBlbmQsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzYtXFx0XFx0cGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSk7XFxuaW5jbHVkZS9saW51eC9wYWdld2Fsay5oOjEzNzppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbmluY2x1ZGUvbGludXgvcGFnZXdhbGsuaC0xMzgtXFx0XFx0dW5zaWduZWQgbG9uZyBlbmQsIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLFxcbi0tXFxubW0vaHVnZXRsYl92bWVtbWFwLmM9MTU2PXN0YXRpYyBpbnQgdm1lbW1hcF9yZW1hcF9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jLTE2My1cXHRtbWFwX3JlYWRfbG9jayhcXHUwMDI2aW5pdF9tbSk7XFxubW0vaHVnZXRsYl92bWVtbWFwLmM6MTY0OlxcdHJldCA9IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgXFx1MDAyNnZtZW1tYXBfcmVtYXBfb3BzLFxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jLTE2NS1cXHRcXHRcXHRcXHQgICAgTlVMTCwgd2Fsayk7XFxuLS1cXG5tbS9wYWdld2Fsay5jPTU5Nz1pbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxubW0vcGFnZXdhbGsuYy02MDctLyoqXFxubW0vcGFnZXdhbGsuYzo2MDg6ICogd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSAtIHdhbGsgYSByYW5nZSBvZiBrZXJuZWwgcGFnZXRhYmxlcy5cXG5tbS9wYWdld2Fsay5jLTYwOS0gKiBAc3RhcnQ6XFx0c3RhcnQgYWRkcmVzcyBvZiB0aGUgdmlydHVhbCBhZGRyZXNzIHJhbmdlXFxuLS1cXG5tbS9wYWdld2Fsay5jLTYyNC0gKi9cXG5tbS9wYWdld2Fsay5jOjYyNTppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG5tbS9wYWdld2Fsay5jLTYyNi1cXHRcXHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNjM3LVxcbm1tL3BhZ2V3YWxrLmM6NjM4OlxcdHJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHN0YXJ0LCBlbmQsIG9wcywgcGdkLFxcbm1tL3BhZ2V3YWxrLmMtNjM5LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgcHJpdmF0ZSk7XFxuLS1cXG5tbS9wYWdld2Fsay5jLTY0Ny0gKi9cXG5tbS9wYWdld2Fsay5jOjY0ODppbnQgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG5tbS9wYWdld2Fsay5jLTY0OS1cXHRcXHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcXG4tLVxcbm1tL3BhZ2V3YWxrLmM9NjgyPWludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5tbS9wYWdld2Fsay5jLTY5Ny1cXHRcXHRcXHRcXHQgXFxcIlJDVSByZWFkIGxvY2sgbXVzdCBiZSBoZWxkIGFjcm9zcyBrZXJuZWwgcGFnZSB0YWJsZSB3YWxrXFxcIik7XFxubW0vcGFnZXdhbGsuYzo2OTg6XFx0XFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLCBwZ2QsXFxubW0vcGFnZXdhbGsuYy02OTktXFx0XFx0XFx0XFx0XFx0XFx0XFx0cHJpdmF0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQxOjE3LjI0MzM4MzI3N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTQwMDExNzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uY3VycmVuY3kgSW1wbGljYXRpb25zIG9mIFBhZ2UgVGFibGUgRGVidWdnaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB0aGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZSBwYWdlIHRhYmxlIHdhbGtpbmcgY29kZSBpbnRlcmFjdHMgd2l0aCBSQ1UgKFJlYWQtQ29weS1VcGRhdGUpIGxvY2tzLCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGRlYnVnZ2luZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIGlzIHVzZWQgd2l0aGluIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGluaXRpYWwgbWVtb3J5IG1hcCAoYG1tID09IFx1MDAyNmluaXRfbW1gKS4gVGhpcyBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBmdW5jdGlvbiwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IGBwdGR1bXBfd2Fsa19wZ2RgLCB3aGljaCBzb3VuZHMgbGlrZSBvdXIgY3JpdGljYWwgZGVidWdnaW5nIGVudHJ5IHBvaW50LiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIGhhcyBvdGhlciBjYWxsZXJzIHRvbywgbGlrZSBgdm1lbW1hcF9yZW1hcF9yYW5nZWAgYW5kIGBfX3NldF9tZW1vcnlgLlxuXG5UaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldHMgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AsIGFkZGluZyBhbiBgUkNVX0xPQ0tERVBfV0FSTmAgY2hlY2suIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIGRldmVsb3BlcnMgYXJlIGNvbmNlcm5lZCBhYm91dCBwb3RlbnRpYWwgUkNVIGxvY2sgaXNzdWVzIGluIHRoaXMgZnVuY3Rpb24sIHNvIGl0IGhhcyB0byBiZSBhIGNyaXRpY2FsIHBvaW50LlxuXG5UaGVyZWZvcmUsIHRoZSBrZXkgc3ltYm9scyB0aGF0IHdhcnJhbnQgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFyZTogYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAsIGBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmNgLCBgcHRkdW1wX3dhbGtfcGdkYCwgYW5kIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciwgZXNwZWNpYWxseSBjb25jZXJuaW5nIFJDVSB1c2FnZS5cblxuTm93LCBsZXQncyBzZWUgaWYgdGhlIGFzeW5jaHJvbm91cyBwYXRoIGlzIGFsd2F5cyBwcmVzZW50LiBDaGVja2luZyBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgaXQncyBjbGVhciB0aGF0IGl0IGlzIGNvbnRyb2xsZWQgYnkgYCNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAuIE9rYXksIGJ1dCBpZiB0aGF0J3Mgbm90IGVuYWJsZWQsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGNhbGxzIGBjYWxsX3JjdShcdTAwMjZwdC1cdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpYC4gU28sIGF0IGxlYXN0LCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgIGlzIGFsd2F5cyBjb21waWxlZCBhbmQgcGFydCBvZiB0aGlzIHN1YnN5c3RlbSwgYW5kIHNvIGlzIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGhvdyBgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGVuYWJsZWQuIEFoLCBpdCdzIHNlbGVjdGVkIGJ5IHg4NiBzeXN0ZW1zIGlmIGBJT01NVV9TVkFgIGlzIGRlZmluZWQuIFRoaXMgZ2l2ZXMgbWUgYW4gaWRlYSAtIEkgY2FuIHByb2JhYmx5IHJlcHJvZHVjZSB0aGlzIHNjZW5hcmlvIGJ5IGluY2x1ZGluZyBgUFREVU1QX0RFQlVHRlNgIGFuZCBgREVCVUdfV1hgIGluIHRoZSBjb25maWd1cmF0aW9uLiBJdCBzZWVtcyBsaWtlIHRoZSBzaW1wbGVzdCB3YXkgdG8gZ2V0IHRoZSBkZWJ1ZyBmYWNpbGl0aWVzIGVuYWJsZWQsIGFzIHRoZXNlIG9wdGlvbnMgYXJlIGxpa2VseSB0byBicmluZyBpbiB0aGUgbmVjZXNzYXJ5IGNvZGUgcGF0aHMuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgUFREVU1QX0RFQlVHRlNgIGFuZCBgREVCVUdfV1hgIGFyZSBhdmFpbGFibGUsIHdoaWNoIGxpa2VseSBtZWFucyBjaGVja2luZyB0aGUgcmVsZXZhbnQgZGVidWcgS2NvbmZpZyBmaWxlcyBsaWtlIGBtbS9LY29uZmlnLmRlYnVnYCBhbmQgYGxpYi9LY29uZmlnLmRlYnVnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMyOTEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MjYuMzgzMzk4MzEyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTczNTg3MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVERVTVBfREVCVUdGU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnLmRlYnVnPTIxOT1jb25maWcgUFREVU1QXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTIyMS1cXG5tbS9LY29uZmlnLmRlYnVnOjIyMjpjb25maWcgUFREVU1QX0RFQlVHRlNcXG5tbS9LY29uZmlnLmRlYnVnLTIyMy1cXHRib29sIFxcXCJFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MToyOC4zNTY5OTIzNDdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNzQwMzcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipNeSBCcmFpbidzIFNjcmFtYmxlIG9uIGEgRGVidWcgRmxhZyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGF0IGxpdHRsZSBmbGFnLCBgREVCVUdfV1hgLCBqdXN0IHBvcHBlZCBpbnRvIG15IGhlYWQuIEl0J3MgYSBjbGFzc2ljLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMuIElzIHRoaXMgYSBsb2NhbCBzZXR0aW5nIG9yIGEgZ2xvYmFsIG9uZT8gV2hhdCBzcGVjaWZpYyBtb2R1bGUgb3Igc2VjdGlvbiBvZiB0aGUgY29kZSBpcyBpdCB0aWVkIHRvPyBJcyBpdCBhIGNvbXBpbGUtdGltZSBmbGFnLCBvciBhIHJ1bnRpbWUgY29uZmlndXJhdGlvbj8gVGhlIHNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmbGFnIHRvIHNob3cgZGVidWdnaW5nIGluZm9ybWF0aW9uIGluIGEgV2luZG93aW5nIGVudmlyb25tZW50LiBJIGluc3RhbnRseSB0aGluayBvZiBteSBwcmlvciB3b3JrIGluIHNpbWlsYXIgcHJvamVjdHMuIFdoYXQncyB0aGUgV1ggbGlicmFyeSBpdCBpcyBwb2ludGluZyB0bz8gSXMgdGhpcyByZWZlcnJpbmcgdG8gYSBzcGVjaWZpYyBHVUkgdG9vbGtpdCBsaWtlIHd4V2lkZ2V0cz8gV2hhdCBraW5kIG9mIGRlYnVnIG91dHB1dCBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBUcmFjaW5nLCB2ZXJib3NlIGxvZ2dpbmcsIHBlcmhhcHMgZXZlbiBhc3NlcnRpb24gaGFuZGxpbmc/XG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpdHMgc2NvcGUuIFdoZXJlIGlzIGl0IGRlZmluZWQ/IEhvdyBpcyBpdCB1c2VkPyBJIHN0YXJ0IG1lbnRhbGx5IHRyYWNpbmcgaG93IGl0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgZXhlY3V0aW9uIGZsb3cuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBncmFudWxhcml0eSBvZiB0aGUgZGVidWdnaW5nIHRoaXMgZmxhZyBlbmFibGVzLCBhbmQgd2hhdCBpdCdzICpzdXBwb3NlZCogdG8gZG8uIEl0IGNhbiBkcmFzdGljYWxseSBpbXBhY3QgcGVyZm9ybWFuY2UuIEEgcXVpY2sgbWVudGFsIHNlYXJjaCB0aHJvdWdoIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBgaWZkZWZgIHN0YXRlbWVudHMgb3IgY29uZGl0aW9uYWwgY2hlY2tzIGlzIGluIG9yZGVyLlxuXG5JJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgbWluZDogQXJlIHRoZXJlIGFueSByZWxhdGVkIGVudmlyb25tZW50IHZhcmlhYmxlcywgY29uZmlndXJhdGlvbiBmaWxlcywgb3IgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0aGF0IG1pZ2h0IGFsc28gY29udHJvbCB0aGUgZGVidWcgYmVoYXZpb3I/IEhvdyBjYW4gSSB2ZXJpZnkgdGhhdCB0aGlzIGZsYWcgaXMgKmFjdHVhbGx5KiB3b3JraW5nIGFzIGludGVuZGVkPyBXaWxsIHR1cm5pbmcgaXQgb24sIG9yIG9mZiwgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucz8gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBuZWVkIGZvciBjYXJlZnVsIHRlc3RpbmcsIHdoZXRoZXIgaXQncyB1bml0IHRlc3RzLCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgZXZlbiBtYW51YWwgVUkgaW50ZXJhY3Rpb24gZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJZiBJJ20gdXNpbmcgYW4gSURFIEknbSBwcm9iYWJseSBtZW50YWxseSBjaGVja2luZyBteSBkZWJ1Z2dlciBzZXR0aW5ncyB0byBlbnN1cmUgdGhhdCB0aGUgSURFIGtub3dzIHRoYXQgdGhlIGVudmlyb25tZW50IGZvciB0aGlzIHNldHRpbmcgZXhpc3RzLlxuXG5UaGlzIGlzIHRoZSBraW5kIG9mIGRldGFpbCB0aGF0IHNlcGFyYXRlcyBmaW5kaW5nIHRoZSByb290IGNhdXNlIG9mIGFuIGlzc3VlLCBhbmQgc2ltcGx5IG1ha2luZyByYW5kb20gY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmbGFnICpiZWZvcmUqIEkgZ28gYW55IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDU5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MTozMy4xOTQzOTk2NjlaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTcwNTU1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFQlVHX1dYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWcuZGVidWc9MTgzPWNvbmZpZyBBUkNIX0hBU19ERUJVR19XWFxcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0xODUtXFxubW0vS2NvbmZpZy5kZWJ1ZzoxODY6Y29uZmlnIERFQlVHX1dYXFxubW0vS2NvbmZpZy5kZWJ1Zy0xODctXFx0Ym9vbCBcXFwiV2FybiBvbiBXK1ggbWFwcGluZ3MgYXQgYm9vdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MzUuMDUxNDYzMzY1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODYwODIxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgSSBuZWVkIHRvIGdldCB0aGlzIHJpZ2h0LlxuXG4qKkV4YW1pbmluZyB0aGUgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMqKlxuXG5SaWdodCwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gYFBURFVNUF9ERUJVR0ZTYCBhbmQgYERFQlVHX1dYYCBhcyB0aGUga2V5IGNvbmZpZ3MgdG8gZXhhbWluZSBoZXJlLiBJJ20gcHJldHR5IGNlcnRhaW4gYWJvdXQgdGhhdC4gTm93LCBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaW4gdGhlIG1peCwgYnV0IEkga25vdyBpdCdzIG5vdCBhIHN0YW5kYWxvbmUsIGl0J3MgYWN0dWFsbHkgZGVwZW5kZW50IG9uIGBJT01NVV9TVkFgLiBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlIC0gbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBmb2N1cyBvbiBgSU9NTVVfU1ZBYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgaW4gcmVsYXRpb24gdG8gdGhlc2Ugb3RoZXIgc2V0dGluZ3MuIEl0J3MgdGhlIGx5bmNocGluLCBpdCB3b3VsZCBhcHBlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDE1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6MzguMjM3NTQ3NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMTQwMDU1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU9NTVVfU1ZBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvS2NvbmZpZz0xNTM9Y29uZmlnIElPTU1VX0RNQVxcbi0tXFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTE2MS0jIFNoYXJlZCBWaXJ0dWFsIEFkZHJlc3NpbmdcXG5kcml2ZXJzL2lvbW11L0tjb25maWc6MTYyOmNvbmZpZyBJT01NVV9TVkFcXG5kcml2ZXJzL2lvbW11L0tjb25maWctMTYzLVxcdHNlbGVjdCBJT01NVV9NTV9EQVRBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQxOjQwLjAzODk1NzQxMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY4NDc1MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHdlIGNhbiBkZWZpbml0ZWx5IGVuYWJsZSBmdXp6aW5nLiBUaGUgY2hhbmdlIHRvdWNoZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGhvdyB0aGUga2VybmVsIGZyZWVzIHBhZ2UgdGFibGVzLiBEZWZlcnJpbmcgdGhlIGZyZWVpbmcgcHJvY2VzcyB1c2luZyBSQ1UgdG8gcHJldmVudCB0aG9zZSBuYXN0eSB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgZHVyaW5nIGxvY2tsZXNzIHBhZ2UgdGFibGUgd2Fsa3MgLSBsaWtlIHdoZW4gYHB0ZHVtcGAgaXMgcnVubmluZyAtIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgY291bGQgdmVyeSB3ZWxsIGV4cG9zZSBzb21lIGludGVyZXN0aW5nIGlzc3Vlcy5cblxuTXkgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCBpdCdzIGFsdGVyaW5nIHRoZSBmdW5kYW1lbnRhbCBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLiBBbmQgdGhhdCdzIHVzdWFsbHkgZmVydGlsZSBncm91bmQgZm9yIGZpbmRpbmcgc3VidGxlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgY29ycnVwdGlvbi5cblxuSSdtIGtleWluZyBpbiBvbiBhIGZldyBzeW1ib2xzIGhlcmUuIFNwZWNpZmljYWxseSwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAsIGFuZCBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCwgdGhvc2UgYXJlIHRoZSBvYnZpb3VzIG9uZXMuIFRoZW4sIGBwdGR1bXBfd2Fsa19wZ2RgIGFuZCBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCDigJMgdGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBpc3N1ZSB0aGUgcGF0Y2ggaW50ZW5kcyB0byBzb2x2ZS5cblxuVGhlIHN1Z2dlc3RlZCBgRW5hYmxlQ29uZmlnc2AgbG9vayBzb2xpZCDigJMgYFBURFVNUF9ERUJVR0ZTYCwgYERFQlVHX1dYYCwgYW5kIGBJT01NVV9TVkFgIHdpbGwgYWxsIGhlbHAgd2l0aCB0ZXN0aW5nLiBJIGxpa2UgYElPTU1VX1NWQWAgYmVjYXVzZSBpdCBndWFyYW50ZWVzIHRoYXQgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIGlzIGVuYWJsZWQuXG5cbldhaXQgYSBzZWMuLi5JIG5lZWQgdG8gY2hlY2sgYElPTU1VX1NWQWAgYmVjYXVzZSBpdCBpcyBub3QgYXZhaWxhYmxlIG9uIGFsbCBhcmNoaXRlY3R1cmVzLCBidXQgeDg2IGF1dG9tYXRpY2FsbHkgc2VsZWN0cyBgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRWAgaWYgYElPTU1VX1NWQWAgaXMgZW5hYmxlZC4gTGV0IG1lIHJlLWNoZWNrIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCB0byBjb25maXJtIGl0IGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzNTEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDU6NDE6NDUuODA3NDM0NjQxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzc2OTM3MDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTAyMD1jb25maWcgSEFWRV9HSUdBTlRJQ19GT0xJT1NcXG4tLVxcbm1tL0tjb25maWctMTAyMy1cXG5tbS9LY29uZmlnOjEwMjQ6Y29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcXG5tbS9LY29uZmlnLTEwMjUtXFx0ZGVmX2Jvb2wgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNTo0MTo0Ny41ODQzNzYxODZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAzMTY3NDQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IGFuZCBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkZWZfYm9vbCBuYCBvcHRpb24sIHNwZWNpZmljYWxseSB0aGUgb25lIHRhcmdldGVkIGZvciB4ODYuIEkgc2VlIHRoYXQgSSBjYW4ndCBkaXJlY3RseSBlbmFibGUgaXQgd2l0aCBgRW5hYmxlQ29uZmlnc2AsIHNpbmNlIGl0IGxhY2tzIGFuIGFzc29jaWF0ZWQgcHJvbXB0LiBUaGUga2V5IHRvIGFjdGl2YXRpbmcgdGhpcyB0aGluZyBvbiB4ODYgYXBwZWFycyB0byBiZSBlbmFibGluZyBgSU9NTVVfU1ZBYCDigJMgZ29vZC4gVGhhdCdzIHRoZSByb3V0ZSBJIG5lZWQgdG8gdGFrZS5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBzeW1ib2xzIGFjY291bnRlZCBmb3IuIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuIFJpZ2h0LCBJIHJlbWVtYmVyIHRoYXQncyBkZWZpbmVkIGluIGBtbS9wYWdld2Fsay5jYC4gQW5kIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIGluIGBtbS9wdGR1bXAuY2AuIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCBhcmUgYm90aCBpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLiBXaGlsZSBga2VybmVsX3BndGFibGVfd29ya19mdW5jYCBpcyBhbHNvIHRoZXJlLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCBoZXJlPyBIbW0sIEkgc2VlIHRoYXQgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VgIGFuZCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2AgaGF2ZSBiZWVuIG1vZGlmaWVkIGluIGNvbW1lbnRzLCBidXQgbm90IGluIGFueSBjb2RlLlxuXG5BbHJpZ2h0LCB0aGUgY29kZSBjaGFuZ2VzIHRoZW1zZWx2ZXM6IEkgc2VlIHRoZSBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBkZWNsYXJhdGlvbiBpbiBgaW5jbHVkZS9saW51eC9tbS5oYC4gSW4gYG1tL3BhZ2V3YWxrLmNgLCBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBub3cgaW5jbHVkZXMgYW4gYFJDVV9MT0NLREVQX1dBUk5gLiBJbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLCB0aGUgY2hhbmdlcyBhcmUgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCwgYGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY2AsIGFuZCB0aGUgYWZvcmVtZW50aW9uZWQgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAuIExhc3RseSwgYG1tL3B0ZHVtcC5jYCBub3cgaGFzIGBwdGR1bXBfd2Fsa19wZ2RgIGFkZGluZyBgcmN1X3JlYWRfbG9jaygpYC5cblxuU28sIGl0J3MgcHJldHR5IGNsZWFyOiB0aGUgY29yZSBmb2N1cyBpcyBwcmVjaXNlbHkgdGhlIHN5bWJvbHMgSSBpZGVudGlmaWVkIGluaXRpYWxseS4gTG9va3MgZ29vZCB0byBtZS5cblxuSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYxMDEsIk91dHB1dFRva2VucyI6MTYwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA1OjQxOjU0LjYxNjA1MzFaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDQyNTY1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFREVU1QX0RFQlVHRlNcIixcbiAgICBcIkRFQlVHX1dYXCIsXG4gICAgXCJJT01NVV9TVkFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdldGFibGVfZnJlZV9rZXJuZWxcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1XCIsXG4gICAgXCJrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmNcIixcbiAgICBcInB0ZHVtcF93YWxrX3BnZFwiLFxuICAgIFwid2Fsa19wYWdlX3JhbmdlX2RlYnVnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gZGVmZXIgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMgdXNpbmcgUkNVLiBUaGlzIHByZXZlbnRzIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGxvY2tsZXNzIHBhZ2UgdGFibGUgd2Fsa3MsIHN1Y2ggYXMgdGhvc2UgcGVyZm9ybWVkIGJ5IHB0ZHVtcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbGlmZWN5Y2xlIG9mIGtlcm5lbCBwYWdlIHRhYmxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVERVTVBfREVCVUdGU1wiLFxuICAgIFwiREVCVUdfV1hcIixcbiAgICBcIklPTU1VX1NWQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiLFxuICAgIFwia2VybmVsX3BndGFibGVfZnJlZV9yY3VcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY1wiLFxuICAgIFwicHRkdW1wX3dhbGtfcGdkXCIsXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBkZWZlciBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBSQ1UuIFRoaXMgcHJldmVudHMgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcywgc3VjaCBhcyB0aG9zZSBwZXJmb3JtZWQgYnkgcHRkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsaWZlY3ljbGUgb2Yga2VybmVsIHBhZ2UgdGFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9w2wn[1] Phase: Succeeded StartedAt: 2026-06-30 05:43:26 +0000 UTC FinishedAt: 2026-06-30 05:43:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 05:43:26 +0000 UTC FinishedAt: 2026-06-30 05:43:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2] Phase: Succeeded StartedAt: 2026-06-30 05:43:26 +0000 UTC FinishedAt: 2026-06-30 09:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 05:43:26 +0000 UTC FinishedAt: 2026-06-30 09:42:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 05:43:26 +0000 UTC FinishedAt: 2026-06-30 05:43:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 05:43:26 +0000 UTC FinishedAt: 2026-06-30 05:43:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9w2wn/series-workflow9w2wn-convert-artifact-2100235134/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 05:43:46 +0000 UTC FinishedAt: 2026-06-30 06:07:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 05:43:46 +0000 UTC FinishedAt: 2026-06-30 06:07:45 +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:*15f05b2d-4075-4fa3-b014-c01c9943db80,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-workflow9w2wn/series-workflow9w2wn-convert-artifact-2100235134/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": "c48240fa-4191-4b64-ad18-cf4dba3cb97a", "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-workflow9w2wn/series-workflow9w2wn-build-action-1369305956/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 05:43:46 +0000 UTC FinishedAt: 2026-06-30 06:07:34 +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:*15f05b2d-4075-4fa3-b014-c01c9943db80,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-workflow9w2wn/series-workflow9w2wn-convert-artifact-2100235134/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": "c48240fa-4191-4b64-ad18-cf4dba3cb97a", "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-workflow9w2wn/series-workflow9w2wn-build-action-1369305956/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 06:07:45 +0000 UTC FinishedAt: 2026-06-30 06:07:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 06:07:45 +0000 UTC FinishedAt: 2026-06-30 06:07:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 06:07:45 +0000 UTC FinishedAt: 2026-06-30 06:07:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 06:07:45 +0000 UTC FinishedAt: 2026-06-30 06:07:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9w2wn/series-workflow9w2wn-convert-artifact-687942065/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 06:07:55 +0000 UTC FinishedAt: 2026-06-30 06:09:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 06:07:55 +0000 UTC FinishedAt: 2026-06-30 06:09:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c48240fa-4191-4b64-ad18-cf4dba3cb97a,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-workflow9w2wn/series-workflow9w2wn-build-action-1369305956/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-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 06:09:56 +0000 UTC FinishedAt: 2026-06-30 06:09:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 06:09:56 +0000 UTC FinishedAt: 2026-06-30 06:09:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 06:09:56 +0000 UTC FinishedAt: 2026-06-30 06:36:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 06:09:57 +0000 UTC FinishedAt: 2026-06-30 06:36:41 +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:*15f05b2d-4075-4fa3-b014-c01c9943db80,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-workflow9w2wn/series-workflow9w2wn-convert-artifact-687942065/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": "fb09a2d2-dfa2-490f-b43a-f0695f57f25a", "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-workflow9w2wn/series-workflow9w2wn-build-action-2823055229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 06:09:57 +0000 UTC FinishedAt: 2026-06-30 06:36:31 +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:*15f05b2d-4075-4fa3-b014-c01c9943db80,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-workflow9w2wn/series-workflow9w2wn-convert-artifact-687942065/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": "fb09a2d2-dfa2-490f-b43a-f0695f57f25a", "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-workflow9w2wn/series-workflow9w2wn-build-action-2823055229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 06:36:41 +0000 UTC FinishedAt: 2026-06-30 06:36:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 06:36:41 +0000 UTC FinishedAt: 2026-06-30 06:36:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 06:36:41 +0000 UTC FinishedAt: 2026-06-30 06:38:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 06:36:41 +0000 UTC FinishedAt: 2026-06-30 06:38:34 +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:*fb09a2d2-dfa2-490f-b43a-f0695f57f25a,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-workflow9w2wn/series-workflow9w2wn-build-action-2823055229/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-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 06:38:43 +0000 UTC FinishedAt: 2026-06-30 09:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 06:38:43 +0000 UTC FinishedAt: 2026-06-30 09:42:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*c48240fa-4191-4b64-ad18-cf4dba3cb97a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb09a2d2-dfa2-490f-b43a-f0695f57f25a,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-workflow9w2wn/series-workflow9w2wn-build-action-1369305956/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-workflow9w2wn/series-workflow9w2wn-build-action-2823055229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 06:38:43 +0000 UTC FinishedAt: 2026-06-30 06:39:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 06:38:43 +0000 UTC FinishedAt: 2026-06-30 06:39:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9w2wn/series-workflow9w2wn-convert-artifact-1849947494/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 06:38:43 +0000 UTC FinishedAt: 2026-06-30 06:38:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 06:38:43 +0000 UTC FinishedAt: 2026-06-30 06:38:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 06:38:43 +0000 UTC FinishedAt: 2026-06-30 06:38:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 06:39:19 +0000 UTC FinishedAt: 2026-06-30 09:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9w2wn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pagetable_free_kernel","kernel_pgtable_free_rcu","kernel_pgtable_work_func","ptdump_walk_pgd","walk_page_range_debug"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"d9f2b885f98bc3c4617361ea7a3b7bb6fe512ad0","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS","DEBUG_WX","IOMMU_SVA"],"series_id":"cea53d7a-30df-41c3-8648-19424e3dfd01","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 06:39:19 +0000 UTC FinishedAt: 2026-06-30 09:42:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c48240fa-4191-4b64-ad18-cf4dba3cb97a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb09a2d2-dfa2-490f-b43a-f0695f57f25a,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-workflow9w2wn/series-workflow9w2wn-build-action-1369305956/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-workflow9w2wn/series-workflow9w2wn-build-action-2823055229/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-workflow9w2wn/series-workflow9w2wn-convert-artifact-1849947494/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,}