Name: series-workflowdmzbr Phase: Running StartedAt: 2026-07-30 00:21:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmzbr[0] Phase: Running StartedAt: 2026-07-30 00:21:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmzbr[0].run-triage Phase: Running StartedAt: 2026-07-30 00:21:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmzbr[0].run-triage(0) Phase: Running StartedAt: 2026-07-30 00:21:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "214e055e-47f2-4f90-8eae-628d7dede8e0" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vm_ioctl", "kvm_arch_vcpu_ioctl", "kvm_arch_vcpu_ioctl_run", "kvm_arch_vcpu_create", "kvm_arch_commit_memory_region", "kvm_s390_handle_b2", "kvm_s390_handle_b9" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF92bV9pb2N0bCYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfY3JlYXRlJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX2hhbmRsZV9iMiYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfYjkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgb24gczM5MCwgaW5jbHVkaW5nIG1lbW9yeSByZWdpb24gY29tbWl0LCBWQ1BVIGNyZWF0aW9uL3J1bi9pb2N0bCwgUFYgQ1BVIGNyZWF0aW9uL2Rlc3RydWN0aW9uLCBhbmQgaW5zdHJ1Y3Rpb24gaW50ZXJjZXB0aW9uIGhhbmRsaW5nIChSUkJFLCBFU1NBLCBNVlBHKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBpbnN0cnVjdGlvbiBleGVjdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNWQ2ODQ0MTNjYWU4ZTEwOTQ2ZjYwZTE3ZjNjOGU4YzVjZDdhMjE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDA6NDE6MjkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggZWFhMzRjNWJkM2MxMS4uZWRmNzViNmFkMjBjZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTQ0MCw2ICYjNDM7NDQwLDcgQEAgc3RydWN0IGt2bV92Y3B1X2FyY2gge1xuIFx0Ym9vbCBza2V5X2VuYWJsZWQ7XG4gXHQvKiBJbmRpY2F0b3IgaWYgdGhlIGFjY2VzcyByZWdpc3RlcnMgaGF2ZSBiZWVuIGxvYWRlZCBmcm9tIGd1ZXN0ICovXG4gXHRib29sIGFjcnNfbG9hZGVkO1xuJiM0MztcdGJvb2wgaW5pdGlhbGl6ZWQ7XG4gXHRzdHJ1Y3Qga3ZtX3MzOTBfcHZfdmNwdSBwdjtcbiBcdHVuaW9uIGRpYWczMThfaW5mbyBkaWFnMzE4X2luZm87XG4gXHRzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYztcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2RhdC5jIGIvYXJjaC9zMzkwL2t2bS9kYXQuY1xuaW5kZXggZWQ0MjU5ZDE3NjI5NS4uM2YyZDZlODkwMmQ3NiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vZGF0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vZGF0LmNcbkBAIC03NTUsMTMgJiM0Mzs3NTUsMTUgQEAgaW50IGRhdF9jb25kX3NldF9zdG9yYWdlX2tleShzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptbWMsIHVuaW9uIGFzY2UgYXNjZSwgZ2ZcbiBcdHJldHVybiByYztcbiB9XG4gXG4taW50IGRhdF9yZXNldF9yZWZlcmVuY2VfYml0KHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2ZuKVxuJiM0MztpbnQgZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZm4sIHVuaW9uIHNrZXkgKnNrZXkpXG4ge1xuIFx0dW5pb24gcGdzdGUgcGdzdGUsIG9sZDtcbiBcdHVuaW9uIGNyc3RlICpjcnN0ZXA7XG4gXHR1bmlvbiBwdGUgKnB0ZXA7XG4gXHRpbnQgcmM7XG4gXG4mIzQzO1x0c2tleS1cdTAwM2Vza2V5ID0gMDtcbiYjNDM7XG4gXHRyYyA9IGRhdF9lbnRyeV93YWxrKE5VTEwsIGdmbiwgYXNjZSwgREFUX1dBTEtfQU5ZLCBUQUJMRV9UWVBFX1BBR0VfVEFCTEUsIFx1MDAyNmNyc3RlcCwgXHUwMDI2cHRlcCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbkBAIC03NzEsMjEgJiM0Mzs3NzMsMjMgQEAgaW50IGRhdF9yZXNldF9yZWZlcmVuY2VfYml0KHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2ZuKVxuIFxuIFx0XHRpZiAoIWNyc3RlLmguZmMgfHwgIWNyc3RlLnMuZmMxLnByKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHRyZXR1cm4gcGFnZV9yZXNldF9yZWZlcmVuY2VkKGxhcmdlX2Nyc3RlX3RvX3BoeXMoKmNyc3RlcCwgZ2ZuKSk7XG4mIzQzO1x0XHRza2V5LVx1MDAzZXNrZXkgPSBwYWdlX3Jlc2V0X3JlZmVyZW5jZWQobGFyZ2VfY3JzdGVfdG9fcGh5cygqY3JzdGVwLCBnZm4pKSBcdTAwM2NcdTAwM2MgMTtcbiYjNDM7XHRcdHJldHVybiAwO1xuIFx0fVxuIFx0b2xkID0gcGdzdGVfZ2V0X2xvY2socHRlcCk7XG4gXHRwZ3N0ZSA9IG9sZDtcbiBcbiBcdGlmICghcHRlcC1cdTAwM2VoLmkpIHtcbi1cdFx0cmMgPSBwYWdlX3Jlc2V0X3JlZmVyZW5jZWQocHRlX29yaWdpbigqcHRlcCkpO1xuLVx0XHRwZ3N0ZS5ociA9IHJjIFx1MDAzZVx1MDAzZSAxO1xuJiM0MztcdFx0c2tleS1cdTAwM2Vza2V5ID0gcGFnZV9yZXNldF9yZWZlcmVuY2VkKHB0ZV9vcmlnaW4oKnB0ZXApKSBcdTAwM2NcdTAwM2MgMTtcbiYjNDM7XHRcdHBnc3RlLmhyID0gc2tleS1cdTAwM2VyO1xuIFx0fVxuLVx0cmMgfD0gKHBnc3RlLmdyIFx1MDAzY1x1MDAzYyAxKSB8IHBnc3RlLmdjO1xuJiM0MztcdHNrZXktXHUwMDNlciB8PSBwZ3N0ZS5ncjtcbiYjNDM7XHRza2V5LVx1MDAzZWMgfD0gcGdzdGUuZ2M7XG4gXHRwZ3N0ZS5nciA9IDA7XG4gXG4gXHRkYXRfdXBkYXRlX3B0ZXBfc2Qob2xkLCBwZ3N0ZSwgcHRlcCk7XG4gXHRwZ3N0ZV9zZXRfdW5sb2NrKHB0ZXAsIHBnc3RlKTtcbi1cdHJldHVybiByYztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGxvbmcgZGF0X3Jlc2V0X3NrZXlzX3B0ZSh1bmlvbiBwdGUgKnB0ZXAsIGdmbl90IGdmbiwgZ2ZuX3QgbmV4dCwgc3RydWN0IGRhdF93YWxrICp3YWxrKVxuQEAgLTg0Niw2ICYjNDM7ODUwLDcgQEAgc3RhdGljIGxvbmcgX2RhdF9zbG90X3B0ZSh1bmlvbiBwdGUgKnB0ZXAsIGdmbl90IGdmbiwgZ2ZuX3QgbmV4dCwgc3RydWN0IGRhdF93YWxcbiBcdHN0cnVjdCBzbG90X3ByaXYgKnAgPSB3YWxrLVx1MDAzZXByaXY7XG4gXHR1bmlvbiBjcnN0ZSBkdW1teSA9IHsgLnZhbCA9IHAtXHUwMDNldG9rZW4gfTtcbiBcdHVuaW9uIHB0ZSBuZXdfcHRlLCBwdGUgPSBSRUFEX09OQ0UoKnB0ZXApO1xuJiM0MztcdHVuaW9uIHBnc3RlIHBnc3RlO1xuIFxuIFx0bmV3X3B0ZSA9IF9QVEVfVE9LKGR1bW15LnRvay50eXBlLCBkdW1teS50b2sucGFyKTtcbiBcbkBAIC04NTMsNyAmIzQzOzg1OCwxMSBAQCBzdGF0aWMgbG9uZyBfZGF0X3Nsb3RfcHRlKHVuaW9uIHB0ZSAqcHRlcCwgZ2ZuX3QgZ2ZuLCBnZm5fdCBuZXh0LCBzdHJ1Y3QgZGF0X3dhbFxuIFx0aWYgKHB0ZS52YWwgPT0gbmV3X3B0ZS52YWwpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0ZGF0X3B0ZXBfeGNoZyhwdGVwLCBuZXdfcHRlLCBnZm4sIHdhbGstXHUwMDNlYXNjZSwgZmFsc2UpO1xuJiM0MztcdHBnc3RlID0gcGdzdGVfZ2V0X2xvY2socHRlcCk7XG4mIzQzO1x0cGdzdGUgPSBfX2RhdF9wdGVwX3hjaGcocHRlcCwgcGdzdGUsIG5ld19wdGUsIGdmbiwgd2Fsay1cdTAwM2Vhc2NlLCBmYWxzZSk7XG4mIzQzO1x0cGdzdGUuY21tYV9kID0gMDtcbiYjNDM7XHRwZ3N0ZV9zZXRfdW5sb2NrKHB0ZXAsIHBnc3RlKTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9kYXQuaCBiL2FyY2gvczM5MC9rdm0vZGF0LmhcbmluZGV4IGZhZDYwNTMwNWUwNWMuLjE0MWVlN2I5ZjAxOTEgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL2RhdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL2RhdC5oXG5AQCAtNTM3LDcgJiM0Mzs1MzcsNyBAQCBpbnQgZGF0X3NldF9zdG9yYWdlX2tleShzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgdW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZlxuIFx0XHRcdHVuaW9uIHNrZXkgc2tleSwgYm9vbCBucSk7XG4gaW50IGRhdF9jb25kX3NldF9zdG9yYWdlX2tleShzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptbWMsIHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2ZuLFxuIFx0XHRcdCAgICAgdW5pb24gc2tleSBza2V5LCB1bmlvbiBza2V5ICpvbGRrZXksIGJvb2wgbnEsIGJvb2wgbXIsIGJvb2wgbWMpO1xuLWludCBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh1bmlvbiBhc2NlIGFzY2UsIGdmbl90IGdmbik7XG4mIzQzO2ludCBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh1bmlvbiBhc2NlIGFzY2UsIGdmbl90IGdmbiwgdW5pb24gc2tleSAqc2tleSk7XG4gbG9uZyBkYXRfcmVzZXRfc2tleXModW5pb24gYXNjZSBhc2NlLCBnZm5fdCBzdGFydCk7XG4gXG4gdW5zaWduZWQgbG9uZyBkYXRfZ2V0X3B0dmFsKHN0cnVjdCBwYWdlX3RhYmxlICp0YWJsZSwgc3RydWN0IHB0dmFsX3BhcmFtIHBhcmFtKTtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYyBiL2FyY2gvczM5MC9rdm0vZmF1bHRpbi5jXG5pbmRleCBmZWU4MDA0N2JkOTRmLi40ZmY0YzU5NzA5NTY2IDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9mYXVsdGluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vZmF1bHRpbi5jXG5AQCAtOTIsOCAmIzQzOzkyLDggQEAgaW50IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgZ3Vlc3RfZmFcbiBcdFx0aWYgKGlzX25vc2xvdF9wZm4oZi1cdTAwM2VwZm4pKVxuIFx0XHRcdHJldHVybiBQR01fQUREUkVTU0lORztcbiBcdFx0LyogU2lnbmFsIHBlbmRpbmc6IHRyeSBhZ2Fpbi4gKi9cbi1cdFx0aWYgKGYtXHUwMDNlcGZuID09IEtWTV9QRk5fRVJSX1NJR1BFTkRJTkcpXG4tXHRcdFx0cmV0dXJuIC1FQUdBSU47XG4mIzQzO1x0XHRpZiAoaXNfc2lncGVuZGluZ19wZm4oZi1cdTAwM2VwZm4pKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlRSO1xuIFx0XHQvKiBDaGVjayBpZiBpdCYjMzk7cyByZWFkLW9ubHkgbWVtb3J5OyBkb24mIzM5O3QgdHJ5IHRvIGFjdHVhbGx5IGhhbmRsZSB0aGF0IGNhc2UuICovXG4gXHRcdGlmIChmLVx1MDAzZXBmbiA9PSBLVk1fUEZOX0VSUl9ST19GQVVMVClcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYyBiL2FyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmNcbmluZGV4IDE5ODBkZjYxZWYzMDQuLmE0MGZlMmExMGNiZmUgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jXG5AQCAtMzY5LDI3ICYjNDM7MzY5LDMwIEBAIHN0YXRpYyBpbnQgaGFuZGxlX212cGdfcGVpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGlmIChyYylcbiBcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcmMpO1xuIFxuLVx0ZG8ge1xuLVx0XHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKHNyY2FkZHIpLCBmYWxzZSk7XG4tXHR9IHdoaWxlIChyYyA9PSAtRUFHQUlOKTtcbi1cdGlmIChyYylcbi1cdFx0cmV0dXJuIHJjO1xuLVxuLVx0LyogRW5zdXJlIHRoYXQgdGhlIHNvdXJjZSBpcyBwYWdlZC1pbiwgbm8gYWN0dWFsIGFjY2VzcyAtXHUwMDNlIG5vIGtleSBjaGVja2luZyAqL1xuJiM0MztcdC8qIEVuc3VyZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBpcyBwYWdlZC1pbiwgbm8gYWN0dWFsIGFjY2VzcyAtXHUwMDNlIG5vIGtleSBjaGVja2luZyAqL1xuIFx0cmMgPSBndWVzdF90cmFuc2xhdGVfYWRkcmVzc193aXRoX2tleSh2Y3B1LCB2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1tyZWcxXSxcbiBcdFx0XHRcdFx0ICAgICAgcmVnMSwgXHUwMDI2ZHN0YWRkciwgR0FDQ19TVE9SRSwgMCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ19jb25kKHZjcHUsIHJjKTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIElmIGFuIGVycm9yIGhhcHBlbnMgYmVsb3csIHRoZSBpbnN0cnVjdGlvbiBuZWVkcyB0byBiZSByZXRyaWVkLlxuJiM0MztcdCAqIFBvc2l0aXZlIGVycm9yIGNvZGVzIGFyZSBpbXBvc3NpYmxlOyBhZGRyZXNzaW5nIGV4Y2VwdGlvbnMgd291bGRcbiYjNDM7XHQgKiBoYXZlIGJlZW4gZGlzY292ZXJlZCBhbmQgcmVwb3J0ZWQgYWJvdmUuXG4mIzQzO1x0ICovXG4mIzQzO1x0a3ZtX3MzOTBfcmV0cnlfaW5zdHIodmNwdSk7XG4mIzQzO1xuIFx0ZG8ge1xuLVx0XHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKGRzdGFkZHIpLCB0cnVlKTtcbiYjNDM7XHRcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHZjcHUsIE5VTEwsIGdwYV90b19nZm4oc3JjYWRkciksIGZhbHNlKTtcbiBcdH0gd2hpbGUgKHJjID09IC1FQUdBSU4pO1xuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRrdm1fczM5MF9yZXRyeV9pbnN0cih2Y3B1KTtcbiYjNDM7XHRkbyB7XG4mIzQzO1x0XHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKGRzdGFkZHIpLCB0cnVlKTtcbiYjNDM7XHR9IHdoaWxlIChyYyA9PSAtRUFHQUlOKTtcbiBcbi1cdHJldHVybiAwO1xuJiM0MztcdHJldHVybiByYztcbiB9XG4gXG4gc3RhdGljIGludCBoYW5kbGVfcGFydGlhbF9leGVjdXRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXG5pbmRleCA5ZTNlNmIwZDcyYWQ2Li44ZDE0NmEwNjgxZGNlIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xuQEAgLTg0LDEwICYjNDM7ODQsMTMgQEAgc3RhdGljIGludCBzY2FfaW5qZWN0X2V4dF9jYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHNyY19pZClcbiBzdGF0aWMgdm9pZCBzY2FfY2xlYXJfZXh0X2NhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBlc2NhX2Jsb2NrICpzY2EgPSB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnNjYTtcbi1cdHVuaW9uIGVzY2Ffc2lncF9jdHJsICpzaWdwX2N0cmwgPSBcdTAwMjZzY2EtXHUwMDNlY3B1W3ZjcHUtXHUwMDNldmNwdV9pZF0uc2lncF9jdHJsO1xuJiM0MztcdHVuaW9uIGVzY2Ffc2lncF9jdHJsICpzaWdwX2N0cmw7XG4gXG4tXHRpZiAoIWt2bV9zMzkwX3VzZV9zY2FfZW50cmllcygpKVxuJiM0MztcdGlmICgha3ZtX3MzOTBfdXNlX3NjYV9lbnRyaWVzKCkgfHwgIXZjcHUtXHUwMDNlYXJjaC5pbml0aWFsaXplZCB8fCBrdm1faXNfdWNvbnRyb2wodmNwdS1cdTAwM2Vrdm0pKVxuIFx0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdC8qIEluaXRpYWxpemUgYWZ0ZXIgdGhlIGFib3ZlIGNoZWNrLCB0byBwcmV2ZW50IGdvaW5nIG91dCBvZiBib3VuZHMgKi9cbiYjNDM7XHRzaWdwX2N0cmwgPSBcdTAwMjZzY2EtXHUwMDNlY3B1W3ZjcHUtXHUwMDNldmNwdV9pZF0uc2lncF9jdHJsO1xuIFx0a3ZtX3MzOTBfY2xlYXJfY3B1ZmxhZ3ModmNwdSwgQ1BVU1RBVF9FQ0FMTF9QRU5EKTtcbiBcbiBcdFdSSVRFX09OQ0Uoc2lncF9jdHJsLVx1MDAzZXZhbHVlLCAwKTtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMgYi9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmNcbmluZGV4IDE1MGI1ZGQyMTcwZTIuLjg0YzZmNzdlOWZjOTMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuY1xuQEAgLTU3MSw3ICYjNDM7NTcxLDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9rZXlvcChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGt2bSAqa3ZtLCBpbnQgb3BcbiBcdHN3aXRjaCAob3ApIHtcbiBcdGNhc2UgS1ZNX1MzOTBfS0VZT1BfU1NLRTpcbiBcdFx0ciA9IGRhdF9jb25kX3NldF9zdG9yYWdlX2tleShtYywgYXNjZSwgZ2ZuLCBza2V5LCBcdTAwMjZza2V5LCAwLCAwLCAwKTtcbi1cdFx0aWYgKHIgXHUwMDNlPSAwKVxuJiM0MztcdFx0aWYgKHIgPT0gMCB8fCByID09IDEpXG4gXHRcdFx0cmV0dXJuIHNrZXkuc2tleTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEtWTV9TMzkwX0tFWU9QX0lTS0U6XG5AQCAtNTgwLDE0ICYjNDM7NTgwLDE0IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfa2V5b3Aoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBrdm0gKmt2bSwgaW50IG9wXG4gXHRcdFx0cmV0dXJuIHNrZXkuc2tleTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEtWTV9TMzkwX0tFWU9QX1JSQkU6XG4tXHRcdHIgPSBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdChhc2NlLCBnZm4pO1xuLVx0XHRpZiAociBcdTAwM2UgMClcbi1cdFx0XHRyZXR1cm4gciBcdTAwM2NcdTAwM2MgMTtcbiYjNDM7XHRcdHIgPSBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdChhc2NlLCBnZm4sIFx1MDAyNnNrZXkpO1xuJiM0MztcdFx0aWYgKCFyKVxuJiM0MztcdFx0XHRyZXR1cm4gc2tleS5za2V5O1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuLVx0cmV0dXJuIHI7XG4mIzQzO1x0cmV0dXJuIHIgXHUwMDNlIDAgPyAtRUZBVUxUIDogcjtcbiB9XG4gXG4gLyogU2VjdGlvbjogZGV2aWNlIHJlbGF0ZWQgKi9cbkBAIC0xMzAwLDcgJiM0MzsxMzAwLDkgQEAgc3RhdGljIGludCBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uKHN0cnVjdCBrdm0gKmt2bSxcbiB7XG4gXHRpbnQgcmVzID0gLUVOWElPO1xuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4mIzQzO1x0Z3VhcmQoc3JjdSkoXHUwMDI2a3ZtLVx1MDAzZXNyY3UpO1xuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZrdm0tXHUwMDNlc2xvdHNfYXJjaF9sb2NrKTtcbiYjNDM7XG4gXHRzd2l0Y2ggKGF0dHItXHUwMDNlYXR0cikge1xuIFx0Y2FzZSBLVk1fUzM5MF9WTV9NSUdSQVRJT05fU1RBUlQ6XG4gXHRcdHJlcyA9IGt2bV9zMzkwX3ZtX3N0YXJ0X21pZ3JhdGlvbihrdm0pO1xuQEAgLTEzMTEsNyAmIzQzOzEzMTMsNiBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb24oc3RydWN0IGt2bSAqa3ZtLFxuIFx0ZGVmYXVsdDpcbiBcdFx0YnJlYWs7XG4gXHR9XG4tXHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuIFxuIFx0cmV0dXJuIHJlcztcbiB9XG5AQCAtMjIxNCw3ICYjNDM7MjIxNSw3IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X3NrZXlzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3NrZXlzICphcmdzKVxuIFx0fVxuIFxuIFx0a3ZmcmVlKGtleXMpO1xuLVx0cmV0dXJuIHI7XG4mIzQzO1x0cmV0dXJuIHIgXHUwMDNjPSAwID8gciA6IC1FRkFVTFQ7XG4gfVxuIFxuIHN0YXRpYyBpbnQga3ZtX3MzOTBfc2V0X3NrZXlzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3NrZXlzICphcmdzKVxuQEAgLTIyNzYsNyAmIzQzOzIyNzcsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3NldF9za2V5cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9za2V5cyAqYXJncylcbiBcdGt2bV9zMzkwX2ZyZWVfbW11X2NhY2hlKG1jKTtcbiBvdXQ6XG4gXHRrdmZyZWUoa2V5cyk7XG4tXHRyZXR1cm4gcjtcbiYjNDM7XHRyZXR1cm4gciBcdTAwM2M9IDAgPyByIDogLUVGQVVMVDtcbiB9XG4gXG4gLypcbkBAIC0yMzg2LDcgJiM0MzsyMzg3LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9zZXRfY21tYV9iaXRzKHN0cnVjdCBrdm0gKmt2bSxcbiBcbiBcdHNldF9iaXQoR01BUF9GTEFHX1VTRVNfQ01NLCBcdTAwMjZrdm0tXHUwMDNlYXJjaC5nbWFwLVx1MDAzZWZsYWdzKTtcbiBcbi1cdHJldHVybiByO1xuJiM0MztcdHJldHVybiByIFx1MDAzYz0gMCA/IHIgOiAtRUZBVUxUO1xuIH1cbiBcbiAvKipcbkBAIC0yOTk4LDkgJiM0MzsyOTk5LDggQEAgaW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuIFx0XHRyID0gLUVGQVVMVDtcbiBcdFx0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNmFyZ3MsIGFyZ3AsIHNpemVvZihhcmdzKSkpXG4gXHRcdFx0YnJlYWs7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuLVx0XHRyID0ga3ZtX3MzOTBfZ2V0X2NtbWFfYml0cyhrdm0sIFx1MDAyNmFyZ3MpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuJiM0MztcdFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZrdm0tXHUwMDNlc2xvdHNfYXJjaF9sb2NrKVxuJiM0MztcdFx0XHRyID0ga3ZtX3MzOTBfZ2V0X2NtbWFfYml0cyhrdm0sIFx1MDAyNmFyZ3MpO1xuIFx0XHRpZiAoIXIpIHtcbiBcdFx0XHRyID0gY29weV90b191c2VyKGFyZ3AsIFx1MDAyNmFyZ3MsIHNpemVvZihhcmdzKSk7XG4gXHRcdFx0aWYgKHIpXG5AQCAtMzAxNCw5ICYjNDM7MzAxNCw5IEBAIGludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbiBcdFx0ciA9IC1FRkFVTFQ7XG4gXHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZhcmdzLCBhcmdwLCBzaXplb2YoYXJncykpKVxuIFx0XHRcdGJyZWFrO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmt2bS1cdTAwM2VzbG90c19sb2NrKTtcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2FyY2hfbG9jayk7XG4gXHRcdHIgPSBrdm1fczM5MF9zZXRfY21tYV9iaXRzKGt2bSwgXHUwMDI2YXJncyk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2FyY2hfbG9jayk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0Y2FzZSBLVk1fUzM5MF9QVl9DT01NQU5EOiB7XG5AQCAtMzQ2MSw3ICYjNDM7MzQ2MSw3IEBAIHN0YXRpYyB2b2lkIHNjYV9kZWxfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0c3RydWN0IGVzY2FfYmxvY2sgKnNjYSA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guc2NhO1xuIFxuLVx0aWYgKCFrdm1fczM5MF91c2Vfc2NhX2VudHJpZXMoKSlcbiYjNDM7XHRpZiAoIWt2bV9zMzkwX3VzZV9zY2FfZW50cmllcygpIHx8ICF2Y3B1LVx1MDAzZWFyY2guaW5pdGlhbGl6ZWQpXG4gXHRcdHJldHVybjtcbiBcbiBcdGNsZWFyX2JpdF9pbnYodmNwdS1cdTAwM2V2Y3B1X2lkLCAodW5zaWduZWQgbG9uZyAqKXNjYS1cdTAwM2VtY24pO1xuQEAgLTM0ODEsOCAmIzQzOzM0ODEsOCBAQCBzdGF0aWMgdm9pZCBzY2FfYWRkX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0aWYgKCFrdm1fczM5MF91c2Vfc2NhX2VudHJpZXMoKSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdFdSSVRFX09OQ0Uoc2NhLVx1MDAzZWNwdVt2Y3B1LVx1MDAzZXZjcHVfaWRdLnNkYSwgdmlydF90b19waHlzKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spKTtcbiBcdHNldF9iaXRfaW52KHZjcHUtXHUwMDNldmNwdV9pZCwgKHVuc2lnbmVkIGxvbmcgKilzY2EtXHUwMDNlbWNuKTtcbi1cdHNjYS1cdTAwM2VjcHVbdmNwdS1cdTAwM2V2Y3B1X2lkXS5zZGEgPSB2aXJ0X3RvX3BoeXModmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc2NhX2Nhbl9hZGRfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZClcbkBAIC0zNjEzLDYgJiM0MzszNjEzLDkgQEAgdm9pZCBrdm1fYXJjaF92Y3B1X3Bvc3RjcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0aWYgKHRlc3Rfa3ZtX2ZhY2lsaXR5KHZjcHUtXHUwMDNla3ZtLCA3NCkgfHwgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC51c2VyX2luc3RyMCB8fFxuIFx0ICAgIHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudXNlcl9vcGVyZXhlYylcbiBcdFx0dmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VpY3RsIHw9IElDVExfT1BFUkVYQztcbiYjNDM7XG4mIzQzO1x0LyogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKCkgaW4ga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKSBhbmQga3ZtX2FyY2hfdmNwdV9pb2N0bCgpICovXG4mIzQzO1x0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLmluaXRpYWxpemVkLCB0cnVlKTtcbiB9XG4gXG4gc3RhdGljIGJvb2wga3ZtX2hhc19wY2ttb19zdWJmdW5jKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBucilcbkBAIC0zNjc0LDcgJiM0MzszNjc3LDggQEAgc3RhdGljIHZvaWQga3ZtX3MzOTBfdmNwdV9jcnlwdG9fc2V0dXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFxuIHZvaWQga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuJiM0MztcdGlmICh2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWNicmxvKVxuJiM0MztcdFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXBoeXNfdG9fdmlydCh2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWNicmxvKSk7XG4gXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWNicmxvID0gMDtcbiB9XG4gXG5AQCAtMzc5MiwyMSAmIzQzOzM3OTYsMjEgQEAgaW50IGt2bV9hcmNoX3ZjcHVfcHJlY3JlYXRlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztERUZJTkVfRlJFRShzaWVfcGFnZSwgc3RydWN0IHNpZV9wYWdlICosIGlmIChfVCkgZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKShfVCkpKVxuJiM0MztcbiBpbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHN0cnVjdCBzaWVfcGFnZSAqc2llX3BhZ2U7XG4mIzQzO1x0c3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMgX19mcmVlKGt2bV9zMzkwX21tdV9jYWNoZSkgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBzaWVfcGFnZSAqc2llX3BhZ2UgX19mcmVlKHNpZV9wYWdlKSA9IE5VTEw7XG4gXHRpbnQgcmM7XG4gXG4gXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBzaWVfcGFnZSkgIT0gNDA5Nik7XG4tXHR2Y3B1LVx1MDAzZWFyY2gubWMgPSBrdm1fczM5MF9uZXdfbW11X2NhY2hlKCk7XG4tXHRpZiAoIXZjcHUtXHUwMDNlYXJjaC5tYylcbiYjNDM7XHRtYyA9IGt2bV9zMzkwX25ld19tbXVfY2FjaGUoKTtcbiYjNDM7XHRpZiAoIW1jKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdHNpZV9wYWdlID0gKHN0cnVjdCBzaWVfcGFnZSAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbi1cdGlmICghc2llX3BhZ2UpIHtcbi1cdFx0a3ZtX3MzOTBfZnJlZV9tbXVfY2FjaGUodmNwdS1cdTAwM2VhcmNoLm1jKTtcbi1cdFx0dmNwdS1cdTAwM2VhcmNoLm1jID0gTlVMTDtcbiYjNDM7XHRpZiAoIXNpZV9wYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdH1cbiBcbiBcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2sgPSBcdTAwMjZzaWVfcGFnZS1cdTAwM2VzaWVfYmxvY2s7XG4gXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWl0ZGJhID0gdmlydF90b19waHlzKFx1MDAyNnNpZV9wYWdlLVx1MDAzZWl0ZGIpO1xuQEAgLTM4NDgsMTAgJiM0MzszODUyLDkgQEAgaW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdFx0dmNwdS1cdTAwM2VydW4tXHUwMDNla3ZtX3ZhbGlkX3JlZ3MgfD0gS1ZNX1NZTkNfRlBSUztcbiBcbiBcdGlmIChrdm1faXNfdWNvbnRyb2wodmNwdS1cdTAwM2Vrdm0pKSB7XG4tXHRcdHJjID0gLUVOT01FTTtcbiBcdFx0dmNwdS1cdTAwM2VhcmNoLmdtYXAgPSBnbWFwX25ld19jaGlsZCh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmdtYXAsIC0xVUwpO1xuIFx0XHRpZiAoIXZjcHUtXHUwMDNlYXJjaC5nbWFwKVxuLVx0XHRcdGdvdG8gb3V0X2ZyZWVfc2llX2Jsb2NrO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbiBcbiBcdFZNX0VWRU5UKHZjcHUtXHUwMDNla3ZtLCAzLCBcJiMzNDtjcmVhdGUgY3B1ICVkIGF0IDB4JXAsIHNpZSBibG9jayBhdCAweCVwXCYjMzQ7LFxuQEAgLTM4NTksMjAgJiM0MzszODYyLDE5IEBAIGludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHR0cmFjZV9rdm1fczM5MF9jcmVhdGVfdmNwdSh2Y3B1LVx1MDAzZXZjcHVfaWQsIHZjcHUsIHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spO1xuIFxuIFx0cmMgPSBrdm1fczM5MF92Y3B1X3NldHVwKHZjcHUpO1xuLVx0aWYgKHJjKVxuLVx0XHRnb3RvIG91dF91Y29udHJvbF91bmluaXQ7XG4mIzQzO1x0aWYgKHJjKSB7XG4mIzQzO1x0XHRpZiAoa3ZtX2lzX3Vjb250cm9sKHZjcHUtXHUwMDNla3ZtKSkge1xuJiM0MztcdFx0XHRzY29wZWRfZ3VhcmQoc3BpbmxvY2ssIFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZ21hcC1cdTAwM2VjaGlsZHJlbl9sb2NrKVxuJiM0MztcdFx0XHRcdGdtYXBfcmVtb3ZlX2NoaWxkKHZjcHUtXHUwMDNlYXJjaC5nbWFwKTtcbiYjNDM7XHRcdFx0dmNwdS1cdTAwM2VhcmNoLmdtYXAgPSBnbWFwX3B1dCh2Y3B1LVx1MDAzZWFyY2guZ21hcCk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRyZXR1cm4gcmM7XG4mIzQzO1x0fVxuIFxuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5tYyA9IG5vX2ZyZWVfcHRyKG1jKTtcbiYjNDM7XHRzaWVfcGFnZSA9IE5VTEw7XG4gXHRrdm1fczM5MF91cGRhdGVfdG9wb2xvZ3lfY2hhbmdlX3JlcG9ydCh2Y3B1LVx1MDAzZWt2bSwgMSk7XG4gXHRyZXR1cm4gMDtcbi1cbi1vdXRfdWNvbnRyb2xfdW5pbml0OlxuLVx0aWYgKGt2bV9pc191Y29udHJvbCh2Y3B1LVx1MDAzZWt2bSkpIHtcbi1cdFx0Z21hcF9yZW1vdmVfY2hpbGQodmNwdS1cdTAwM2VhcmNoLmdtYXApO1xuLVx0XHR2Y3B1LVx1MDAzZWFyY2guZ21hcCA9IGdtYXBfcHV0KHZjcHUtXHUwMDNlYXJjaC5nbWFwKTtcbi1cdH1cbi1vdXRfZnJlZV9zaWVfYmxvY2s6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spKTtcbi1cdHJldHVybiByYztcbiB9XG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfcnVubmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuQEAgLTUwMzksNiAmIzQzOzUwNDEsMTAgQEAgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdCAgICBrdm1fcnVuLVx1MDAzZWt2bV9kaXJ0eV9yZWdzIFx1MDAyNiB+S1ZNX1NZTkNfUzM5MF9WQUxJRF9GSUVMRFMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdC8qIFBhaXJzIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBrdm1fYXJjaF92Y3B1X3Bvc3RjcmVhdGUoKSAqL1xuJiM0MztcdGlmICghc21wX2xvYWRfYWNxdWlyZShcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guaW5pdGlhbGl6ZWQpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0dmNwdV9sb2FkKHZjcHUpO1xuIFxuIFx0aWYgKGd1ZXN0ZGJnX2V4aXRfcGVuZGluZyh2Y3B1KSkge1xuQEAgLTU1MjMsNiAmIzQzOzU1MjksMTAgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuIFx0bG9uZyByO1xuIFx0dTE2IHJjLCBycmM7XG4gXG4mIzQzO1x0LyogUGFpcnMgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIGt2bV9hcmNoX3ZjcHVfcG9zdGNyZWF0ZSgpICovXG4mIzQzO1x0aWYgKCFzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5pbml0aWFsaXplZCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHR2Y3B1X2xvYWQodmNwdSk7XG4gXG4gXHRzd2l0Y2ggKGlvY3RsKSB7XG5AQCAtNTc5NCwyNCAmIzQzOzU4MDQsMzggQEAgaW50IGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBsb25nIGNtbWFfZF9jb3VudF9wdGUodW5pb24gcHRlICpwdGVwLCBnZm5fdCBnZm4sIGdmbl90IG5leHQsIHN0cnVjdCBkYXRfd2FsayAqd2FsaylcbiYjNDM7e1xuJiM0MztcdGlmIChwZ3N0ZV9vZihwdGVwKS1cdTAwM2VjbW1hX2QpXG4mIzQzO1x0XHRhdG9taWM2NF9kZWMod2Fsay1cdTAwM2Vwcml2KTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbiBcdFx0XHRcdHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbiBcdFx0XHRcdGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm5ldyxcbiBcdFx0XHRcdGVudW0ga3ZtX21yX2NoYW5nZSBjaGFuZ2UpXG4ge1xuLVx0c3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMgPSBOVUxMO1xuLVx0aW50IHJjID0gMDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZGF0X3dhbGtfb3BzIG9wcyA9IHsgLnB0ZV9lbnRyeSA9IGNtbWFfZF9jb3VudF9wdGUsIH07XG4mIzQzO1x0c3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMgX19mcmVlKGt2bV9zMzkwX21tdV9jYWNoZSkgPSBOVUxMO1xuJiM0MztcdGludCByYyA9IC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZrdm0tXHUwMDNlc2xvdHNfYXJjaF9sb2NrKTtcbiBcbiBcdGlmIChjaGFuZ2UgPT0gS1ZNX01SX0ZMQUdTX09OTFkpXG4gXHRcdHJldHVybjtcbiBcbiBcdG1jID0ga3ZtX3MzOTBfbmV3X21tdV9jYWNoZSgpO1xuLVx0aWYgKCFtYykge1xuLVx0XHRyYyA9IC1FTk9NRU07XG4mIzQzO1x0aWYgKCFtYylcbiBcdFx0Z290byBvdXQ7XG4tXHR9XG4tXG4mIzQzO3JldHJ5OlxuIFx0c2NvcGVkX2d1YXJkKHdyaXRlX2xvY2ssIFx1MDAyNmt2bS1cdTAwM2VtbXVfbG9jaykge1xuJiM0MztcdFx0aWYgKGt2bS1cdTAwM2VhcmNoLm1pZ3JhdGlvbl9tb2RlIFx1MDAyNlx1MDAyNiBrdm0tXHUwMDNlYXJjaC51c2VfY21tYSBcdTAwMjZcdTAwMjYgb2xkKSB7XG4mIzQzO1x0XHRcdF9kYXRfd2Fsa19nZm5fcmFuZ2Uob2xkLVx1MDAzZWJhc2VfZ2ZuLCBvbGQtXHUwMDNlYmFzZV9nZm4gJiM0Mzsgb2xkLVx1MDAzZW5wYWdlcyxcbiYjNDM7XHRcdFx0XHRcdCAgICBrdm0tXHUwMDNlYXJjaC5nbWFwLVx1MDAzZWFzY2UsIFx1MDAyNm9wcywgREFUX1dBTEtfSUdOX0hPTEVTLFxuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNtbWFfZGlydHlfcGFnZXMpO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0c3dpdGNoIChjaGFuZ2UpIHtcbiBcdFx0Y2FzZSBLVk1fTVJfREVMRVRFOlxuIFx0XHRcdHJjID0gZGF0X2RlbGV0ZV9zbG90KG1jLCBrdm0tXHUwMDNlYXJjaC5nbWFwLVx1MDAzZWFzY2UsIG9sZC1cdTAwM2ViYXNlX2dmbiwgb2xkLVx1MDAzZW5wYWdlcyk7XG5AQCAtNTgyNywxMyAmIzQzOzU4NTEsMTggQEAgdm9pZCBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4gXHRcdGNhc2UgS1ZNX01SX0ZMQUdTX09OTFk6XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4mIzQzO1x0XHRcdHJjID0gMDtcbiBcdFx0XHRXQVJOKDEsIFwmIzM0O1Vua25vd24gS1ZNIE1SIENIQU5HRTogJWRcXG5cJiMzNDssIGNoYW5nZSk7XG4gXHRcdH1cbiBcdH1cbiYjNDM7XHRpZiAocmMgPT0gLUVOT01FTSkge1xuJiM0MztcdFx0cmMgPSBrdm1fczM5MF9tbXVfY2FjaGVfdG9wdXAobWMpO1xuJiM0MztcdFx0aWYgKCFyYylcbiYjNDM7XHRcdFx0Z290byByZXRyeTtcbiYjNDM7XHR9XG4gb3V0OlxuLVx0aWYgKHJjKVxuJiM0MztcdGlmIChLVk1fQlVHX09OKHJjLCBrdm0pKVxuIFx0XHRwcl93YXJuKFwmIzM0O2ZhaWxlZCB0byBjb21taXQgbWVtb3J5IHJlZ2lvblxcblwmIzM0Oyk7XG4tXHRrdm1fczM5MF9mcmVlX21tdV9jYWNoZShtYyk7XG4gXHRyZXR1cm47XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9wcml2LmNcbmluZGV4IGFkMGRkYzQzM2E3M2MuLmIxYmEyNGMzNDZlZmEgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3ByaXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wcml2LmNcbkBAIC0yODksNiAmIzQzOzI4OSw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX2lza2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHN0YXRpYyBpbnQgaGFuZGxlX3JyYmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZ2FkZHI7XG4mIzQzO1x0dW5pb24gc2tleSBza2V5O1xuIFx0aW50IHJlZzEsIHJlZzI7XG4gXHRpbnQgcmM7XG4gXG5AQCAtMzA3LDEyICYjNDM7MzA4LDEyIEBAIHN0YXRpYyBpbnQgaGFuZGxlX3JyYmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0Z2FkZHIgPSBrdm1fczM5MF9sb2dpY2FsX3RvX2VmZmVjdGl2ZSh2Y3B1LCBnYWRkcik7XG4gXHRnYWRkciA9IGt2bV9zMzkwX3JlYWxfdG9fYWJzKHZjcHUsIGdhZGRyKTtcbiBcdHNjb3BlZF9ndWFyZChyZWFkX2xvY2ssIFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZW1tdV9sb2NrKVxuLVx0XHRyYyA9IGRhdF9yZXNldF9yZWZlcmVuY2VfYml0KHZjcHUtXHUwMDNlYXJjaC5nbWFwLVx1MDAzZWFzY2UsIGdwYV90b19nZm4oZ2FkZHIpKTtcbiYjNDM7XHRcdHJjID0gZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodmNwdS1cdTAwM2VhcmNoLmdtYXAtXHUwMDNlYXNjZSwgZ3BhX3RvX2dmbihnYWRkciksIFx1MDAyNnNrZXkpO1xuIFx0aWYgKHJjIFx1MDAzZSAwKVxuIFx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIHJjKTtcbiBcdGlmIChyYyBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHJjO1xuLVx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCByYyk7XG4mIzQzO1x0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAoc2tleS5za2V5IFx1MDAzZVx1MDAzZSAxKSBcdTAwMjYgMyk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtMTI2MCw4ICYjNDM7MTI2MSw5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX2Vzc2Eoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHQvKiBSZXRyeSB0aGUgRVNTQSBpbnN0cnVjdGlvbiAqL1xuIFx0XHRrdm1fczM5MF9yZXRyeV9pbnN0cih2Y3B1KTtcbiBcdH0gZWxzZSB7XG4tXHRcdHNjb3BlZF9ndWFyZChyZWFkX2xvY2ssIFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZW1tdV9sb2NrKVxuLVx0XHRcdGkgPSBfX2RvX2Vzc2EodmNwdSwgb3JjKTtcbiYjNDM7XHRcdHNjb3BlZF9ndWFyZChtdXRleCwgXHUwMDI2dmNwdS1cdTAwM2Vrdm0tXHUwMDNlc2xvdHNfYXJjaF9sb2NrKVxuJiM0MztcdFx0XHRzY29wZWRfZ3VhcmQocmVhZF9sb2NrLCBcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2VtbXVfbG9jaylcbiYjNDM7XHRcdFx0XHRpID0gX19kb19lc3NhKHZjcHUsIG9yYyk7XG4gXHRcdGlmIChpIFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiBpO1xuIFx0XHQvKiBBY2NvdW50IGZvciB0aGUgcG9zc2libGUgZXh0cmEgY2JybCBlbnRyeSAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcHYuYyBiL2FyY2gvczM5MC9rdm0vcHYuY1xuaW5kZXggMWJlYWNjODQxY2E4NS4uYjAyZTAxNTlkM2NkMiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vcHYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wdi5jXG5AQCAtMjQ0LDYgJiM0MzsyNDQsMjQgQEAgc3RhdGljIHZvaWQga3ZtX3MzOTBfY2xlYXJfcHZfc3RhdGUoc3RydWN0IGt2bSAqa3ZtKVxuIFx0a3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl92YXIgPSBOVUxMO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQga3ZtX3MzOTBfcHZfZGlzcG9zZV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGZyZWVfc3Rvcl9iYXNlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGZyZWVfc3Rvcl9iYXNlKVxuJiM0MztcdFx0ZnJlZV9wYWdlcyh2Y3B1LVx1MDAzZWFyY2gucHYuc3Rvcl9iYXNlLCBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9jcHVfc3Rvcl9sZW4pKTtcbiYjNDM7XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2lkYV9hZGRyKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spKTtcbiYjNDM7XHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZXB2X2hhbmRsZV9jcHUgPSAwO1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlcHZfaGFuZGxlX2NvbmZpZyA9IDA7XG4mIzQzO1x0bWVtc2V0KFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5wdiwgMCwgc2l6ZW9mKHZjcHUtXHUwMDNlYXJjaC5wdikpO1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlc2RmID0gMDtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSBzaWRhZCBmaWVsZCAoZm9yIHNkZiA9PSAyKSBpcyBub3cgdGhlIGdiZWEgZmllbGQgKGZvciBzZGYgPT0gMCkuXG4mIzQzO1x0ICogVXNlIHRoZSByZXNldCB2YWx1ZSBvZiBnYmVhIHRvIGF2b2lkIGxlYWtpbmcgdGhlIGtlcm5lbCBwb2ludGVyIG9mXG4mIzQzO1x0ICogdGhlIGp1c3QgZnJlZWQgc2lkYS5cbiYjNDM7XHQgKi9cbiYjNDM7XHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWdiZWEgPSAxO1xuJiM0MztcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UTEJfRkxVU0gsIHZjcHUpO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBrdm1fczM5MF9wdl9kZXN0cm95X2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuIHtcbiBcdGludCBjYztcbkBAIC0yNTgsMjQgJiM0MzsyNzYsOSBAQCBpbnQga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYylcbiBcdFdBUk5fT05DRShjYywgXCYjMzQ7cHJvdHZpcnQgZGVzdHJveSBjcHUgZmFpbGVkIHJjICV4IHJyYyAleFwmIzM0OywgKnJjLCAqcnJjKTtcbiBcbiBcdC8qIEludGVuZGVkIG1lbW9yeSBsZWFrIGZvciBzb21ldGhpbmcgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiAqL1xuLVx0aWYgKCFjYylcbi1cdFx0ZnJlZV9wYWdlcyh2Y3B1LVx1MDAzZWFyY2gucHYuc3Rvcl9iYXNlLFxuLVx0XHRcdCAgIGdldF9vcmRlcih1dl9pbmZvLmd1ZXN0X2NwdV9zdG9yX2xlbikpO1xuLVxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNpZGFfYWRkcih2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrKSk7XG4tXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZXB2X2hhbmRsZV9jcHUgPSAwO1xuLVx0dmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2Vwdl9oYW5kbGVfY29uZmlnID0gMDtcbi1cdG1lbXNldChcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gucHYsIDAsIHNpemVvZih2Y3B1LVx1MDAzZWFyY2gucHYpKTtcbi1cdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlc2RmID0gMDtcbi1cdC8qXG4tXHQgKiBUaGUgc2lkYWQgZmllbGQgKGZvciBzZGYgPT0gMikgaXMgbm93IHRoZSBnYmVhIGZpZWxkIChmb3Igc2RmID09IDApLlxuLVx0ICogVXNlIHRoZSByZXNldCB2YWx1ZSBvZiBnYmVhIHRvIGF2b2lkIGxlYWtpbmcgdGhlIGtlcm5lbCBwb2ludGVyIG9mXG4tXHQgKiB0aGUganVzdCBmcmVlZCBzaWRhLlxuLVx0ICovXG4tXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWdiZWEgPSAxO1xuLVx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX1RMQl9GTFVTSCwgdmNwdSk7XG4mIzQzO1x0a3ZtX3MzOTBfcHZfZGlzcG9zZV9jcHUodmNwdSwgIWNjKTtcbiBcbi1cdHJldHVybiBjYyA/IEVJTyA6IDA7XG4mIzQzO1x0cmV0dXJuIGNjID8gLUVJTyA6IDA7XG4gfVxuIFxuIGludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXG5AQCAtMzE5LDkgJiM0MzszMjIsNyBAQCBpbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuIFx0XHQgICAgIHV2Y2IuaGVhZGVyLnJyYyk7XG4gXG4gXHRpZiAoY2MpIHtcbi1cdFx0dTE2IGR1bW15O1xuLVxuLVx0XHRrdm1fczM5MF9wdl9kZXN0cm95X2NwdSh2Y3B1LCBcdTAwMjZkdW1teSwgXHUwMDI2ZHVtbXkpO1xuJiM0MztcdFx0a3ZtX3MzOTBfcHZfZGlzcG9zZV9jcHUodmNwdSwgdHJ1ZSk7XG4gXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFxuQEAgLTgwOSw3ICYjNDM7ODEwLDcgQEAgc3RhdGljIGludCB1bnBhY2tfb25lKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBhZGRyLCB1NjQgdHdlYWssXG4gXHRcdFx0cmV0dXJuIC1FQUdBSU47XG4gXHR9XG4gXG4tXHRpZiAocmV0IFx1MDAyNlx1MDAyNiByZXQgIT0gLUVBR0FJTilcbiYjNDM7XHRpZiAocmV0IFx1MDAyNlx1MDAyNiByZXQgIT0gLUVBR0FJTiBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FSU5UUilcbiBcdFx0S1ZNX1VWX0VWRU5UKGt2bSwgMywgXCYjMzQ7UFJPVFZJUlQgVk0gVU5QQUNLOiBmYWlsZWQgYWRkciAlbGx4IHdpdGggcmMgJXggcnJjICV4XCYjMzQ7LFxuIFx0XHRcdCAgICAgdXZjYi5nYWRkciwgKnJjLCAqcnJjKTtcbiBcdHJldHVybiByZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF92bV9pb2N0bCYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfY3JlYXRlJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX2hhbmRsZV9iMiYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfYjkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgb24gczM5MCwgaW5jbHVkaW5nIG1lbW9yeSByZWdpb24gY29tbWl0LCBWQ1BVIGNyZWF0aW9uL3J1bi9pb2N0bCwgUFYgQ1BVIGNyZWF0aW9uL2Rlc3RydWN0aW9uLCBhbmQgaW5zdHJ1Y3Rpb24gaW50ZXJjZXB0aW9uIGhhbmRsaW5nIChSUkJFLCBFU1NBLCBNVlBHKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBpbnN0cnVjdGlvbiBleGVjdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNWQ2ODQ0MTNjYWU4ZTEwOTQ2ZjYwZTE3ZjNjOGU4YzVjZDdhMjE4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMDA6NDE6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCmluZGV4IGVhYTM0YzViZDNjMTEuLmVkZjc1YjZhZDIwY2UgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC00NDAsNiAmIzQzOzQ0MCw3IEBAIHN0cnVjdCBrdm1fdmNwdV9hcmNoIHsKIAlib29sIHNrZXlfZW5hYmxlZDsKIAkvKiBJbmRpY2F0b3IgaWYgdGhlIGFjY2VzcyByZWdpc3RlcnMgaGF2ZSBiZWVuIGxvYWRlZCBmcm9tIGd1ZXN0ICovCiAJYm9vbCBhY3JzX2xvYWRlZDsKJiM0MzsJYm9vbCBpbml0aWFsaXplZDsKIAlzdHJ1Y3Qga3ZtX3MzOTBfcHZfdmNwdSBwdjsKIAl1bmlvbiBkaWFnMzE4X2luZm8gZGlhZzMxOF9pbmZvOwogCXN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jOwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9kYXQuYyBiL2FyY2gvczM5MC9rdm0vZGF0LmMKaW5kZXggZWQ0MjU5ZDE3NjI5NS4uM2YyZDZlODkwMmQ3NiAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9kYXQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL2RhdC5jCkBAIC03NTUsMTMgJiM0Mzs3NTUsMTUgQEAgaW50IGRhdF9jb25kX3NldF9zdG9yYWdlX2tleShzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptbWMsIHVuaW9uIGFzY2UgYXNjZSwgZ2YKIAlyZXR1cm4gcmM7CiB9CiAKLWludCBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh1bmlvbiBhc2NlIGFzY2UsIGdmbl90IGdmbikKJiM0MztpbnQgZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZm4sIHVuaW9uIHNrZXkgKnNrZXkpCiB7CiAJdW5pb24gcGdzdGUgcGdzdGUsIG9sZDsKIAl1bmlvbiBjcnN0ZSAqY3JzdGVwOwogCXVuaW9uIHB0ZSAqcHRlcDsKIAlpbnQgcmM7CiAKJiM0MzsJc2tleS0mZ3Q7c2tleSA9IDA7CiYjNDM7CiAJcmMgPSBkYXRfZW50cnlfd2FsayhOVUxMLCBnZm4sIGFzY2UsIERBVF9XQUxLX0FOWSwgVEFCTEVfVFlQRV9QQUdFX1RBQkxFLCAmYW1wO2Nyc3RlcCwgJmFtcDtwdGVwKTsKIAlpZiAocmMpCiAJCXJldHVybiByYzsKQEAgLTc3MSwyMSAmIzQzOzc3MywyMyBAQCBpbnQgZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZm4pCiAKIAkJaWYgKCFjcnN0ZS5oLmZjIHx8ICFjcnN0ZS5zLmZjMS5wcikKIAkJCXJldHVybiAwOwotCQlyZXR1cm4gcGFnZV9yZXNldF9yZWZlcmVuY2VkKGxhcmdlX2Nyc3RlX3RvX3BoeXMoKmNyc3RlcCwgZ2ZuKSk7CiYjNDM7CQlza2V5LSZndDtza2V5ID0gcGFnZV9yZXNldF9yZWZlcmVuY2VkKGxhcmdlX2Nyc3RlX3RvX3BoeXMoKmNyc3RlcCwgZ2ZuKSkgJmx0OyZsdDsgMTsKJiM0MzsJCXJldHVybiAwOwogCX0KIAlvbGQgPSBwZ3N0ZV9nZXRfbG9jayhwdGVwKTsKIAlwZ3N0ZSA9IG9sZDsKIAogCWlmICghcHRlcC0mZ3Q7aC5pKSB7Ci0JCXJjID0gcGFnZV9yZXNldF9yZWZlcmVuY2VkKHB0ZV9vcmlnaW4oKnB0ZXApKTsKLQkJcGdzdGUuaHIgPSByYyAmZ3Q7Jmd0OyAxOwomIzQzOwkJc2tleS0mZ3Q7c2tleSA9IHBhZ2VfcmVzZXRfcmVmZXJlbmNlZChwdGVfb3JpZ2luKCpwdGVwKSkgJmx0OyZsdDsgMTsKJiM0MzsJCXBnc3RlLmhyID0gc2tleS0mZ3Q7cjsKIAl9Ci0JcmMgfD0gKHBnc3RlLmdyICZsdDsmbHQ7IDEpIHwgcGdzdGUuZ2M7CiYjNDM7CXNrZXktJmd0O3IgfD0gcGdzdGUuZ3I7CiYjNDM7CXNrZXktJmd0O2MgfD0gcGdzdGUuZ2M7CiAJcGdzdGUuZ3IgPSAwOwogCiAJZGF0X3VwZGF0ZV9wdGVwX3NkKG9sZCwgcGdzdGUsIHB0ZXApOwogCXBnc3RlX3NldF91bmxvY2socHRlcCwgcGdzdGUpOwotCXJldHVybiByYzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBsb25nIGRhdF9yZXNldF9za2V5c19wdGUodW5pb24gcHRlICpwdGVwLCBnZm5fdCBnZm4sIGdmbl90IG5leHQsIHN0cnVjdCBkYXRfd2FsayAqd2FsaykKQEAgLTg0Niw2ICYjNDM7ODUwLDcgQEAgc3RhdGljIGxvbmcgX2RhdF9zbG90X3B0ZSh1bmlvbiBwdGUgKnB0ZXAsIGdmbl90IGdmbiwgZ2ZuX3QgbmV4dCwgc3RydWN0IGRhdF93YWwKIAlzdHJ1Y3Qgc2xvdF9wcml2ICpwID0gd2Fsay0mZ3Q7cHJpdjsKIAl1bmlvbiBjcnN0ZSBkdW1teSA9IHsgLnZhbCA9IHAtJmd0O3Rva2VuIH07CiAJdW5pb24gcHRlIG5ld19wdGUsIHB0ZSA9IFJFQURfT05DRSgqcHRlcCk7CiYjNDM7CXVuaW9uIHBnc3RlIHBnc3RlOwogCiAJbmV3X3B0ZSA9IF9QVEVfVE9LKGR1bW15LnRvay50eXBlLCBkdW1teS50b2sucGFyKTsKIApAQCAtODUzLDcgJiM0Mzs4NTgsMTEgQEAgc3RhdGljIGxvbmcgX2RhdF9zbG90X3B0ZSh1bmlvbiBwdGUgKnB0ZXAsIGdmbl90IGdmbiwgZ2ZuX3QgbmV4dCwgc3RydWN0IGRhdF93YWwKIAlpZiAocHRlLnZhbCA9PSBuZXdfcHRlLnZhbCkKIAkJcmV0dXJuIDA7CiAKLQlkYXRfcHRlcF94Y2hnKHB0ZXAsIG5ld19wdGUsIGdmbiwgd2Fsay0mZ3Q7YXNjZSwgZmFsc2UpOwomIzQzOwlwZ3N0ZSA9IHBnc3RlX2dldF9sb2NrKHB0ZXApOwomIzQzOwlwZ3N0ZSA9IF9fZGF0X3B0ZXBfeGNoZyhwdGVwLCBwZ3N0ZSwgbmV3X3B0ZSwgZ2ZuLCB3YWxrLSZndDthc2NlLCBmYWxzZSk7CiYjNDM7CXBnc3RlLmNtbWFfZCA9IDA7CiYjNDM7CXBnc3RlX3NldF91bmxvY2socHRlcCwgcGdzdGUpOwomIzQzOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2RhdC5oIGIvYXJjaC9zMzkwL2t2bS9kYXQuaAppbmRleCBmYWQ2MDUzMDVlMDVjLi4xNDFlZTdiOWYwMTkxIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL2RhdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vZGF0LmgKQEAgLTUzNyw3ICYjNDM7NTM3LDcgQEAgaW50IGRhdF9zZXRfc3RvcmFnZV9rZXkoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2YKIAkJCXVuaW9uIHNrZXkgc2tleSwgYm9vbCBucSk7CiBpbnQgZGF0X2NvbmRfc2V0X3N0b3JhZ2Vfa2V5KHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1tYywgdW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZm4sCiAJCQkgICAgIHVuaW9uIHNrZXkgc2tleSwgdW5pb24gc2tleSAqb2xka2V5LCBib29sIG5xLCBib29sIG1yLCBib29sIG1jKTsKLWludCBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh1bmlvbiBhc2NlIGFzY2UsIGdmbl90IGdmbik7CiYjNDM7aW50IGRhdF9yZXNldF9yZWZlcmVuY2VfYml0KHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2ZuLCB1bmlvbiBza2V5ICpza2V5KTsKIGxvbmcgZGF0X3Jlc2V0X3NrZXlzKHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3Qgc3RhcnQpOwogCiB1bnNpZ25lZCBsb25nIGRhdF9nZXRfcHR2YWwoc3RydWN0IHBhZ2VfdGFibGUgKnRhYmxlLCBzdHJ1Y3QgcHR2YWxfcGFyYW0gcGFyYW0pOwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMgYi9hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYwppbmRleCBmZWU4MDA0N2JkOTRmLi40ZmY0YzU5NzA5NTY2IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYwpAQCAtOTIsOCAmIzQzOzkyLDggQEAgaW50IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgZ3Vlc3RfZmEKIAkJaWYgKGlzX25vc2xvdF9wZm4oZi0mZ3Q7cGZuKSkKIAkJCXJldHVybiBQR01fQUREUkVTU0lORzsKIAkJLyogU2lnbmFsIHBlbmRpbmc6IHRyeSBhZ2Fpbi4gKi8KLQkJaWYgKGYtJmd0O3BmbiA9PSBLVk1fUEZOX0VSUl9TSUdQRU5ESU5HKQotCQkJcmV0dXJuIC1FQUdBSU47CiYjNDM7CQlpZiAoaXNfc2lncGVuZGluZ19wZm4oZi0mZ3Q7cGZuKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlRSOwogCQkvKiBDaGVjayBpZiBpdCYjMzk7cyByZWFkLW9ubHkgbWVtb3J5OyBkb24mIzM5O3QgdHJ5IHRvIGFjdHVhbGx5IGhhbmRsZSB0aGF0IGNhc2UuICovCiAJCWlmIChmLSZndDtwZm4gPT0gS1ZNX1BGTl9FUlJfUk9fRkFVTFQpCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jIGIvYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYwppbmRleCAxOTgwZGY2MWVmMzA0Li5hNDBmZTJhMTBjYmZlIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMKQEAgLTM2OSwyNyAmIzQzOzM2OSwzMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9tdnBnX3BlaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKHJjKQogCQlyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7CiAKLQlkbyB7Ci0JCXJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHZjcHUsIE5VTEwsIGdwYV90b19nZm4oc3JjYWRkciksIGZhbHNlKTsKLQl9IHdoaWxlIChyYyA9PSAtRUFHQUlOKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKLQotCS8qIEVuc3VyZSB0aGF0IHRoZSBzb3VyY2UgaXMgcGFnZWQtaW4sIG5vIGFjdHVhbCBhY2Nlc3MgLSZndDsgbm8ga2V5IGNoZWNraW5nICovCiYjNDM7CS8qIEVuc3VyZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBpcyBwYWdlZC1pbiwgbm8gYWN0dWFsIGFjY2VzcyAtJmd0OyBubyBrZXkgY2hlY2tpbmcgKi8KIAlyYyA9IGd1ZXN0X3RyYW5zbGF0ZV9hZGRyZXNzX3dpdGhfa2V5KHZjcHUsIHZjcHUtJmd0O3J1bi0mZ3Q7cy5yZWdzLmdwcnNbcmVnMV0sCiAJCQkJCSAgICAgIHJlZzEsICZhbXA7ZHN0YWRkciwgR0FDQ19TVE9SRSwgMCk7CiAJaWYgKHJjKQogCQlyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7CiAKJiM0MzsJLyoKJiM0MzsJICogSWYgYW4gZXJyb3IgaGFwcGVucyBiZWxvdywgdGhlIGluc3RydWN0aW9uIG5lZWRzIHRvIGJlIHJldHJpZWQuCiYjNDM7CSAqIFBvc2l0aXZlIGVycm9yIGNvZGVzIGFyZSBpbXBvc3NpYmxlOyBhZGRyZXNzaW5nIGV4Y2VwdGlvbnMgd291bGQKJiM0MzsJICogaGF2ZSBiZWVuIGRpc2NvdmVyZWQgYW5kIHJlcG9ydGVkIGFib3ZlLgomIzQzOwkgKi8KJiM0MzsJa3ZtX3MzOTBfcmV0cnlfaW5zdHIodmNwdSk7CiYjNDM7CiAJZG8gewotCQlyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKGRzdGFkZHIpLCB0cnVlKTsKJiM0MzsJCXJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHZjcHUsIE5VTEwsIGdwYV90b19nZm4oc3JjYWRkciksIGZhbHNlKTsKIAl9IHdoaWxlIChyYyA9PSAtRUFHQUlOKTsKIAlpZiAocmMpCiAJCXJldHVybiByYzsKIAotCWt2bV9zMzkwX3JldHJ5X2luc3RyKHZjcHUpOwomIzQzOwlkbyB7CiYjNDM7CQlyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKGRzdGFkZHIpLCB0cnVlKTsKJiM0MzsJfSB3aGlsZSAocmMgPT0gLUVBR0FJTik7CiAKLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IGhhbmRsZV9wYXJ0aWFsX2V4ZWN1dGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jIGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYwppbmRleCA5ZTNlNmIwZDcyYWQ2Li44ZDE0NmEwNjgxZGNlIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMKQEAgLTg0LDEwICYjNDM7ODQsMTMgQEAgc3RhdGljIGludCBzY2FfaW5qZWN0X2V4dF9jYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHNyY19pZCkKIHN0YXRpYyB2b2lkIHNjYV9jbGVhcl9leHRfY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJc3RydWN0IGVzY2FfYmxvY2sgKnNjYSA9IHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5zY2E7Ci0JdW5pb24gZXNjYV9zaWdwX2N0cmwgKnNpZ3BfY3RybCA9ICZhbXA7c2NhLSZndDtjcHVbdmNwdS0mZ3Q7dmNwdV9pZF0uc2lncF9jdHJsOwomIzQzOwl1bmlvbiBlc2NhX3NpZ3BfY3RybCAqc2lncF9jdHJsOwogCi0JaWYgKCFrdm1fczM5MF91c2Vfc2NhX2VudHJpZXMoKSkKJiM0MzsJaWYgKCFrdm1fczM5MF91c2Vfc2NhX2VudHJpZXMoKSB8fCAhdmNwdS0mZ3Q7YXJjaC5pbml0aWFsaXplZCB8fCBrdm1faXNfdWNvbnRyb2wodmNwdS0mZ3Q7a3ZtKSkKIAkJcmV0dXJuOwomIzQzOwomIzQzOwkvKiBJbml0aWFsaXplIGFmdGVyIHRoZSBhYm92ZSBjaGVjaywgdG8gcHJldmVudCBnb2luZyBvdXQgb2YgYm91bmRzICovCiYjNDM7CXNpZ3BfY3RybCA9ICZhbXA7c2NhLSZndDtjcHVbdmNwdS0mZ3Q7dmNwdV9pZF0uc2lncF9jdHJsOwogCWt2bV9zMzkwX2NsZWFyX2NwdWZsYWdzKHZjcHUsIENQVVNUQVRfRUNBTExfUEVORCk7CiAKIAlXUklURV9PTkNFKHNpZ3BfY3RybC0mZ3Q7dmFsdWUsIDApOwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jIGIvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jCmluZGV4IDE1MGI1ZGQyMTcwZTIuLjg0YzZmNzdlOWZjOTMgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMKQEAgLTU3MSw3ICYjNDM7NTcxLDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9rZXlvcChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGt2bSAqa3ZtLCBpbnQgb3AKIAlzd2l0Y2ggKG9wKSB7CiAJY2FzZSBLVk1fUzM5MF9LRVlPUF9TU0tFOgogCQlyID0gZGF0X2NvbmRfc2V0X3N0b3JhZ2Vfa2V5KG1jLCBhc2NlLCBnZm4sIHNrZXksICZhbXA7c2tleSwgMCwgMCwgMCk7Ci0JCWlmIChyICZndDs9IDApCiYjNDM7CQlpZiAociA9PSAwIHx8IHIgPT0gMSkKIAkJCXJldHVybiBza2V5LnNrZXk7CiAJCWJyZWFrOwogCWNhc2UgS1ZNX1MzOTBfS0VZT1BfSVNLRToKQEAgLTU4MCwxNCAmIzQzOzU4MCwxNCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2tleW9wKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3Qga3ZtICprdm0sIGludCBvcAogCQkJcmV0dXJuIHNrZXkuc2tleTsKIAkJYnJlYWs7CiAJY2FzZSBLVk1fUzM5MF9LRVlPUF9SUkJFOgotCQlyID0gZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQoYXNjZSwgZ2ZuKTsKLQkJaWYgKHIgJmd0OyAwKQotCQkJcmV0dXJuIHIgJmx0OyZsdDsgMTsKJiM0MzsJCXIgPSBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdChhc2NlLCBnZm4sICZhbXA7c2tleSk7CiYjNDM7CQlpZiAoIXIpCiYjNDM7CQkJcmV0dXJuIHNrZXkuc2tleTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCXJldHVybiByOwomIzQzOwlyZXR1cm4gciAmZ3Q7IDAgPyAtRUZBVUxUIDogcjsKIH0KIAogLyogU2VjdGlvbjogZGV2aWNlIHJlbGF0ZWQgKi8KQEAgLTEzMDAsNyAmIzQzOzEzMDAsOSBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb24oc3RydWN0IGt2bSAqa3ZtLAogewogCWludCByZXMgPSAtRU5YSU87CiAKLQltdXRleF9sb2NrKCZhbXA7a3ZtLSZndDtzbG90c19sb2NrKTsKJiM0MzsJZ3VhcmQoc3JjdSkoJmFtcDtrdm0tJmd0O3NyY3UpOwomIzQzOwlndWFyZChtdXRleCkoJmFtcDtrdm0tJmd0O3Nsb3RzX2FyY2hfbG9jayk7CiYjNDM7CiAJc3dpdGNoIChhdHRyLSZndDthdHRyKSB7CiAJY2FzZSBLVk1fUzM5MF9WTV9NSUdSQVRJT05fU1RBUlQ6CiAJCXJlcyA9IGt2bV9zMzkwX3ZtX3N0YXJ0X21pZ3JhdGlvbihrdm0pOwpAQCAtMTMxMSw3ICYjNDM7MTMxMyw2IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfdm1fc2V0X21pZ3JhdGlvbihzdHJ1Y3Qga3ZtICprdm0sCiAJZGVmYXVsdDoKIAkJYnJlYWs7CiAJfQotCW11dGV4X3VubG9jaygmYW1wO2t2bS0mZ3Q7c2xvdHNfbG9jayk7CiAKIAlyZXR1cm4gcmVzOwogfQpAQCAtMjIxNCw3ICYjNDM7MjIxNSw3IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X3NrZXlzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3NrZXlzICphcmdzKQogCX0KIAogCWt2ZnJlZShrZXlzKTsKLQlyZXR1cm4gcjsKJiM0MzsJcmV0dXJuIHIgJmx0Oz0gMCA/IHIgOiAtRUZBVUxUOwogfQogCiBzdGF0aWMgaW50IGt2bV9zMzkwX3NldF9za2V5cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9za2V5cyAqYXJncykKQEAgLTIyNzYsNyAmIzQzOzIyNzcsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3NldF9za2V5cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9za2V5cyAqYXJncykKIAlrdm1fczM5MF9mcmVlX21tdV9jYWNoZShtYyk7CiBvdXQ6CiAJa3ZmcmVlKGtleXMpOwotCXJldHVybiByOwomIzQzOwlyZXR1cm4gciAmbHQ7PSAwID8gciA6IC1FRkFVTFQ7CiB9CiAKIC8qCkBAIC0yMzg2LDcgJiM0MzsyMzg3LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9zZXRfY21tYV9iaXRzKHN0cnVjdCBrdm0gKmt2bSwKIAogCXNldF9iaXQoR01BUF9GTEFHX1VTRVNfQ01NLCAmYW1wO2t2bS0mZ3Q7YXJjaC5nbWFwLSZndDtmbGFncyk7CiAKLQlyZXR1cm4gcjsKJiM0MzsJcmV0dXJuIHIgJmx0Oz0gMCA/IHIgOiAtRUZBVUxUOwogfQogCiAvKioKQEAgLTI5OTgsOSAmIzQzOzI5OTksOCBAQCBpbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXIgPSAtRUZBVUxUOwogCQlpZiAoY29weV9mcm9tX3VzZXIoJmFtcDthcmdzLCBhcmdwLCBzaXplb2YoYXJncykpKQogCQkJYnJlYWs7Ci0JCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O3Nsb3RzX2xvY2spOwotCQlyID0ga3ZtX3MzOTBfZ2V0X2NtbWFfYml0cyhrdm0sICZhbXA7YXJncyk7Ci0JCW11dGV4X3VubG9jaygmYW1wO2t2bS0mZ3Q7c2xvdHNfbG9jayk7CiYjNDM7CQlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7a3ZtLSZndDtzbG90c19hcmNoX2xvY2spCiYjNDM7CQkJciA9IGt2bV9zMzkwX2dldF9jbW1hX2JpdHMoa3ZtLCAmYW1wO2FyZ3MpOwogCQlpZiAoIXIpIHsKIAkJCXIgPSBjb3B5X3RvX3VzZXIoYXJncCwgJmFtcDthcmdzLCBzaXplb2YoYXJncykpOwogCQkJaWYgKHIpCkBAIC0zMDE0LDkgJiM0MzszMDE0LDkgQEAgaW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQlyID0gLUVGQVVMVDsKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZhbXA7YXJncywgYXJncCwgc2l6ZW9mKGFyZ3MpKSkKIAkJCWJyZWFrOwotCQltdXRleF9sb2NrKCZhbXA7a3ZtLSZndDtzbG90c19sb2NrKTsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O3Nsb3RzX2FyY2hfbG9jayk7CiAJCXIgPSBrdm1fczM5MF9zZXRfY21tYV9iaXRzKGt2bSwgJmFtcDthcmdzKTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7a3ZtLSZndDtzbG90c19sb2NrKTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2t2bS0mZ3Q7c2xvdHNfYXJjaF9sb2NrKTsKIAkJYnJlYWs7CiAJfQogCWNhc2UgS1ZNX1MzOTBfUFZfQ09NTUFORDogewpAQCAtMzQ2MSw3ICYjNDM7MzQ2MSw3IEBAIHN0YXRpYyB2b2lkIHNjYV9kZWxfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJc3RydWN0IGVzY2FfYmxvY2sgKnNjYSA9IHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5zY2E7CiAKLQlpZiAoIWt2bV9zMzkwX3VzZV9zY2FfZW50cmllcygpKQomIzQzOwlpZiAoIWt2bV9zMzkwX3VzZV9zY2FfZW50cmllcygpIHx8ICF2Y3B1LSZndDthcmNoLmluaXRpYWxpemVkKQogCQlyZXR1cm47CiAKIAljbGVhcl9iaXRfaW52KHZjcHUtJmd0O3ZjcHVfaWQsICh1bnNpZ25lZCBsb25nICopc2NhLSZndDttY24pOwpAQCAtMzQ4MSw4ICYjNDM7MzQ4MSw4IEBAIHN0YXRpYyB2b2lkIHNjYV9hZGRfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFrdm1fczM5MF91c2Vfc2NhX2VudHJpZXMoKSkKIAkJcmV0dXJuOwogCiYjNDM7CVdSSVRFX09OQ0Uoc2NhLSZndDtjcHVbdmNwdS0mZ3Q7dmNwdV9pZF0uc2RhLCB2aXJ0X3RvX3BoeXModmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2spKTsKIAlzZXRfYml0X2ludih2Y3B1LSZndDt2Y3B1X2lkLCAodW5zaWduZWQgbG9uZyAqKXNjYS0mZ3Q7bWNuKTsKLQlzY2EtJmd0O2NwdVt2Y3B1LSZndDt2Y3B1X2lkXS5zZGEgPSB2aXJ0X3RvX3BoeXModmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2spOwogfQogCiBzdGF0aWMgaW50IHNjYV9jYW5fYWRkX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQpCkBAIC0zNjEzLDYgJiM0MzszNjEzLDkgQEAgdm9pZCBrdm1fYXJjaF92Y3B1X3Bvc3RjcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWlmICh0ZXN0X2t2bV9mYWNpbGl0eSh2Y3B1LSZndDtrdm0sIDc0KSB8fCB2Y3B1LSZndDtrdm0tJmd0O2FyY2gudXNlcl9pbnN0cjAgfHwKIAkgICAgdmNwdS0mZ3Q7a3ZtLSZndDthcmNoLnVzZXJfb3BlcmV4ZWMpCiAJCXZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtpY3RsIHw9IElDVExfT1BFUkVYQzsKJiM0MzsKJiM0MzsJLyogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKCkgaW4ga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKSBhbmQga3ZtX2FyY2hfdmNwdV9pb2N0bCgpICovCiYjNDM7CXNtcF9zdG9yZV9yZWxlYXNlKCZhbXA7dmNwdS0mZ3Q7YXJjaC5pbml0aWFsaXplZCwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBib29sIGt2bV9oYXNfcGNrbW9fc3ViZnVuYyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgbnIpCkBAIC0zNjc0LDcgJiM0MzszNjc3LDggQEAgc3RhdGljIHZvaWQga3ZtX3MzOTBfdmNwdV9jcnlwdG9fc2V0dXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiB2b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbykpOwomIzQzOwlpZiAodmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2stJmd0O2NicmxvKQomIzQzOwkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXBoeXNfdG9fdmlydCh2Y3B1LSZndDthcmNoLnNpZV9ibG9jay0mZ3Q7Y2JybG8pKTsKIAl2Y3B1LSZndDthcmNoLnNpZV9ibG9jay0mZ3Q7Y2JybG8gPSAwOwogfQogCkBAIC0zNzkyLDIxICYjNDM7Mzc5NiwyMSBAQCBpbnQga3ZtX2FyY2hfdmNwdV9wcmVjcmVhdGUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztERUZJTkVfRlJFRShzaWVfcGFnZSwgc3RydWN0IHNpZV9wYWdlICosIGlmIChfVCkgZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKShfVCkpKQomIzQzOwogaW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKLQlzdHJ1Y3Qgc2llX3BhZ2UgKnNpZV9wYWdlOwomIzQzOwlzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYyBfX2ZyZWUoa3ZtX3MzOTBfbW11X2NhY2hlKSA9IE5VTEw7CiYjNDM7CXN0cnVjdCBzaWVfcGFnZSAqc2llX3BhZ2UgX19mcmVlKHNpZV9wYWdlKSA9IE5VTEw7CiAJaW50IHJjOwogCiAJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qgc2llX3BhZ2UpICE9IDQwOTYpOwotCXZjcHUtJmd0O2FyY2gubWMgPSBrdm1fczM5MF9uZXdfbW11X2NhY2hlKCk7Ci0JaWYgKCF2Y3B1LSZndDthcmNoLm1jKQomIzQzOwltYyA9IGt2bV9zMzkwX25ld19tbXVfY2FjaGUoKTsKJiM0MzsJaWYgKCFtYykKIAkJcmV0dXJuIC1FTk9NRU07CiAJc2llX3BhZ2UgPSAoc3RydWN0IHNpZV9wYWdlICopIGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwotCWlmICghc2llX3BhZ2UpIHsKLQkJa3ZtX3MzOTBfZnJlZV9tbXVfY2FjaGUodmNwdS0mZ3Q7YXJjaC5tYyk7Ci0JCXZjcHUtJmd0O2FyY2gubWMgPSBOVUxMOwomIzQzOwlpZiAoIXNpZV9wYWdlKQogCQlyZXR1cm4gLUVOT01FTTsKLQl9CiAKIAl2Y3B1LSZndDthcmNoLnNpZV9ibG9jayA9ICZhbXA7c2llX3BhZ2UtJmd0O3NpZV9ibG9jazsKIAl2Y3B1LSZndDthcmNoLnNpZV9ibG9jay0mZ3Q7aXRkYmEgPSB2aXJ0X3RvX3BoeXMoJmFtcDtzaWVfcGFnZS0mZ3Q7aXRkYik7CkBAIC0zODQ4LDEwICYjNDM7Mzg1Miw5IEBAIGludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXZjcHUtJmd0O3J1bi0mZ3Q7a3ZtX3ZhbGlkX3JlZ3MgfD0gS1ZNX1NZTkNfRlBSUzsKIAogCWlmIChrdm1faXNfdWNvbnRyb2wodmNwdS0mZ3Q7a3ZtKSkgewotCQlyYyA9IC1FTk9NRU07CiAJCXZjcHUtJmd0O2FyY2guZ21hcCA9IGdtYXBfbmV3X2NoaWxkKHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5nbWFwLCAtMVVMKTsKIAkJaWYgKCF2Y3B1LSZndDthcmNoLmdtYXApCi0JCQlnb3RvIG91dF9mcmVlX3NpZV9ibG9jazsKJiM0MzsJCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKIAlWTV9FVkVOVCh2Y3B1LSZndDtrdm0sIDMsICYjMzQ7Y3JlYXRlIGNwdSAlZCBhdCAweCVwLCBzaWUgYmxvY2sgYXQgMHglcCYjMzQ7LApAQCAtMzg1OSwyMCAmIzQzOzM4NjIsMTkgQEAgaW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAl0cmFjZV9rdm1fczM5MF9jcmVhdGVfdmNwdSh2Y3B1LSZndDt2Y3B1X2lkLCB2Y3B1LCB2Y3B1LSZndDthcmNoLnNpZV9ibG9jayk7CiAKIAlyYyA9IGt2bV9zMzkwX3ZjcHVfc2V0dXAodmNwdSk7Ci0JaWYgKHJjKQotCQlnb3RvIG91dF91Y29udHJvbF91bmluaXQ7CiYjNDM7CWlmIChyYykgewomIzQzOwkJaWYgKGt2bV9pc191Y29udHJvbCh2Y3B1LSZndDtrdm0pKSB7CiYjNDM7CQkJc2NvcGVkX2d1YXJkKHNwaW5sb2NrLCAmYW1wO3ZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5nbWFwLSZndDtjaGlsZHJlbl9sb2NrKQomIzQzOwkJCQlnbWFwX3JlbW92ZV9jaGlsZCh2Y3B1LSZndDthcmNoLmdtYXApOwomIzQzOwkJCXZjcHUtJmd0O2FyY2guZ21hcCA9IGdtYXBfcHV0KHZjcHUtJmd0O2FyY2guZ21hcCk7CiYjNDM7CQl9CiYjNDM7CQlyZXR1cm4gcmM7CiYjNDM7CX0KIAomIzQzOwl2Y3B1LSZndDthcmNoLm1jID0gbm9fZnJlZV9wdHIobWMpOwomIzQzOwlzaWVfcGFnZSA9IE5VTEw7CiAJa3ZtX3MzOTBfdXBkYXRlX3RvcG9sb2d5X2NoYW5nZV9yZXBvcnQodmNwdS0mZ3Q7a3ZtLCAxKTsKIAlyZXR1cm4gMDsKLQotb3V0X3Vjb250cm9sX3VuaW5pdDoKLQlpZiAoa3ZtX2lzX3Vjb250cm9sKHZjcHUtJmd0O2t2bSkpIHsKLQkJZ21hcF9yZW1vdmVfY2hpbGQodmNwdS0mZ3Q7YXJjaC5nbWFwKTsKLQkJdmNwdS0mZ3Q7YXJjaC5nbWFwID0gZ21hcF9wdXQodmNwdS0mZ3Q7YXJjaC5nbWFwKTsKLQl9Ci1vdXRfZnJlZV9zaWVfYmxvY2s6Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSh2Y3B1LSZndDthcmNoLnNpZV9ibG9jaykpOwotCXJldHVybiByYzsKIH0KIAogaW50IGt2bV9hcmNoX3ZjcHVfcnVubmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQpAQCAtNTAzOSw2ICYjNDM7NTA0MSwxMCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCSAgICBrdm1fcnVuLSZndDtrdm1fZGlydHlfcmVncyAmYW1wOyB+S1ZNX1NZTkNfUzM5MF9WQUxJRF9GSUVMRFMpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CS8qIFBhaXJzIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBrdm1fYXJjaF92Y3B1X3Bvc3RjcmVhdGUoKSAqLwomIzQzOwlpZiAoIXNtcF9sb2FkX2FjcXVpcmUoJmFtcDt2Y3B1LSZndDthcmNoLmluaXRpYWxpemVkKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCXZjcHVfbG9hZCh2Y3B1KTsKIAogCWlmIChndWVzdGRiZ19leGl0X3BlbmRpbmcodmNwdSkpIHsKQEAgLTU1MjMsNiAmIzQzOzU1MjksMTAgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAogCWxvbmcgcjsKIAl1MTYgcmMsIHJyYzsKIAomIzQzOwkvKiBQYWlycyB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4ga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKCkgKi8KJiM0MzsJaWYgKCFzbXBfbG9hZF9hY3F1aXJlKCZhbXA7dmNwdS0mZ3Q7YXJjaC5pbml0aWFsaXplZCkpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAl2Y3B1X2xvYWQodmNwdSk7CiAKIAlzd2l0Y2ggKGlvY3RsKSB7CkBAIC01Nzk0LDI0ICYjNDM7NTgwNCwzOCBAQCBpbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSwKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBsb25nIGNtbWFfZF9jb3VudF9wdGUodW5pb24gcHRlICpwdGVwLCBnZm5fdCBnZm4sIGdmbl90IG5leHQsIHN0cnVjdCBkYXRfd2FsayAqd2FsaykKJiM0Mzt7CiYjNDM7CWlmIChwZ3N0ZV9vZihwdGVwKS0mZ3Q7Y21tYV9kKQomIzQzOwkJYXRvbWljNjRfZGVjKHdhbGstJmd0O3ByaXYpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiB2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSwKIAkJCQlzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpvbGQsCiAJCQkJY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbmV3LAogCQkJCWVudW0ga3ZtX21yX2NoYW5nZSBjaGFuZ2UpCiB7Ci0Jc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMgPSBOVUxMOwotCWludCByYyA9IDA7CiYjNDM7CWNvbnN0IHN0cnVjdCBkYXRfd2Fsa19vcHMgb3BzID0geyAucHRlX2VudHJ5ID0gY21tYV9kX2NvdW50X3B0ZSwgfTsKJiM0MzsJc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMgX19mcmVlKGt2bV9zMzkwX21tdV9jYWNoZSkgPSBOVUxMOwomIzQzOwlpbnQgcmMgPSAtRU5PTUVNOwomIzQzOwomIzQzOwlndWFyZChtdXRleCkoJmFtcDtrdm0tJmd0O3Nsb3RzX2FyY2hfbG9jayk7CiAKIAlpZiAoY2hhbmdlID09IEtWTV9NUl9GTEFHU19PTkxZKQogCQlyZXR1cm47CiAKIAltYyA9IGt2bV9zMzkwX25ld19tbXVfY2FjaGUoKTsKLQlpZiAoIW1jKSB7Ci0JCXJjID0gLUVOT01FTTsKJiM0MzsJaWYgKCFtYykKIAkJZ290byBvdXQ7Ci0JfQotCiYjNDM7cmV0cnk6CiAJc2NvcGVkX2d1YXJkKHdyaXRlX2xvY2ssICZhbXA7a3ZtLSZndDttbXVfbG9jaykgewomIzQzOwkJaWYgKGt2bS0mZ3Q7YXJjaC5taWdyYXRpb25fbW9kZSAmYW1wOyZhbXA7IGt2bS0mZ3Q7YXJjaC51c2VfY21tYSAmYW1wOyZhbXA7IG9sZCkgewomIzQzOwkJCV9kYXRfd2Fsa19nZm5fcmFuZ2Uob2xkLSZndDtiYXNlX2dmbiwgb2xkLSZndDtiYXNlX2dmbiAmIzQzOyBvbGQtJmd0O25wYWdlcywKJiM0MzsJCQkJCSAgICBrdm0tJmd0O2FyY2guZ21hcC0mZ3Q7YXNjZSwgJmFtcDtvcHMsIERBVF9XQUxLX0lHTl9IT0xFUywKJiM0MzsJCQkJCSAgICAmYW1wO2t2bS0mZ3Q7YXJjaC5jbW1hX2RpcnR5X3BhZ2VzKTsKJiM0MzsJCX0KJiM0MzsKIAkJc3dpdGNoIChjaGFuZ2UpIHsKIAkJY2FzZSBLVk1fTVJfREVMRVRFOgogCQkJcmMgPSBkYXRfZGVsZXRlX3Nsb3QobWMsIGt2bS0mZ3Q7YXJjaC5nbWFwLSZndDthc2NlLCBvbGQtJmd0O2Jhc2VfZ2ZuLCBvbGQtJmd0O25wYWdlcyk7CkBAIC01ODI3LDEzICYjNDM7NTg1MSwxOCBAQCB2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSwKIAkJY2FzZSBLVk1fTVJfRkxBR1NfT05MWToKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgomIzQzOwkJCXJjID0gMDsKIAkJCVdBUk4oMSwgJiMzNDtVbmtub3duIEtWTSBNUiBDSEFOR0U6ICVkXG4mIzM0OywgY2hhbmdlKTsKIAkJfQogCX0KJiM0MzsJaWYgKHJjID09IC1FTk9NRU0pIHsKJiM0MzsJCXJjID0ga3ZtX3MzOTBfbW11X2NhY2hlX3RvcHVwKG1jKTsKJiM0MzsJCWlmICghcmMpCiYjNDM7CQkJZ290byByZXRyeTsKJiM0MzsJfQogb3V0OgotCWlmIChyYykKJiM0MzsJaWYgKEtWTV9CVUdfT04ocmMsIGt2bSkpCiAJCXByX3dhcm4oJiMzNDtmYWlsZWQgdG8gY29tbWl0IG1lbW9yeSByZWdpb25cbiYjMzQ7KTsKLQlrdm1fczM5MF9mcmVlX21tdV9jYWNoZShtYyk7CiAJcmV0dXJuOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3ByaXYuYyBiL2FyY2gvczM5MC9rdm0vcHJpdi5jCmluZGV4IGFkMGRkYzQzM2E3M2MuLmIxYmEyNGMzNDZlZmEgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rdm0vcHJpdi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vcHJpdi5jCkBAIC0yODksNiAmIzQzOzI4OSw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX2lza2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogc3RhdGljIGludCBoYW5kbGVfcnJiZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJdW5zaWduZWQgbG9uZyBnYWRkcjsKJiM0MzsJdW5pb24gc2tleSBza2V5OwogCWludCByZWcxLCByZWcyOwogCWludCByYzsKIApAQCAtMzA3LDEyICYjNDM7MzA4LDEyIEBAIHN0YXRpYyBpbnQgaGFuZGxlX3JyYmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWdhZGRyID0ga3ZtX3MzOTBfbG9naWNhbF90b19lZmZlY3RpdmUodmNwdSwgZ2FkZHIpOwogCWdhZGRyID0ga3ZtX3MzOTBfcmVhbF90b19hYnModmNwdSwgZ2FkZHIpOwogCXNjb3BlZF9ndWFyZChyZWFkX2xvY2ssICZhbXA7dmNwdS0mZ3Q7a3ZtLSZndDttbXVfbG9jaykKLQkJcmMgPSBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh2Y3B1LSZndDthcmNoLmdtYXAtJmd0O2FzY2UsIGdwYV90b19nZm4oZ2FkZHIpKTsKJiM0MzsJCXJjID0gZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodmNwdS0mZ3Q7YXJjaC5nbWFwLSZndDthc2NlLCBncGFfdG9fZ2ZuKGdhZGRyKSwgJmFtcDtza2V5KTsKIAlpZiAocmMgJmd0OyAwKQogCQlyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIHJjKTsKIAlpZiAocmMgJmx0OyAwKQogCQlyZXR1cm4gcmM7Ci0Ja3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCByYyk7CiYjNDM7CWt2bV9zMzkwX3NldF9wc3dfY2ModmNwdSwgKHNrZXkuc2tleSAmZ3Q7Jmd0OyAxKSAmYW1wOyAzKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTI2MCw4ICYjNDM7MTI2MSw5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX2Vzc2Eoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQkvKiBSZXRyeSB0aGUgRVNTQSBpbnN0cnVjdGlvbiAqLwogCQlrdm1fczM5MF9yZXRyeV9pbnN0cih2Y3B1KTsKIAl9IGVsc2UgewotCQlzY29wZWRfZ3VhcmQocmVhZF9sb2NrLCAmYW1wO3ZjcHUtJmd0O2t2bS0mZ3Q7bW11X2xvY2spCi0JCQlpID0gX19kb19lc3NhKHZjcHUsIG9yYyk7CiYjNDM7CQlzY29wZWRfZ3VhcmQobXV0ZXgsICZhbXA7dmNwdS0mZ3Q7a3ZtLSZndDtzbG90c19hcmNoX2xvY2spCiYjNDM7CQkJc2NvcGVkX2d1YXJkKHJlYWRfbG9jaywgJmFtcDt2Y3B1LSZndDtrdm0tJmd0O21tdV9sb2NrKQomIzQzOwkJCQlpID0gX19kb19lc3NhKHZjcHUsIG9yYyk7CiAJCWlmIChpICZsdDsgMCkKIAkJCXJldHVybiBpOwogCQkvKiBBY2NvdW50IGZvciB0aGUgcG9zc2libGUgZXh0cmEgY2JybCBlbnRyeSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wdi5jIGIvYXJjaC9zMzkwL2t2bS9wdi5jCmluZGV4IDFiZWFjYzg0MWNhODUuLmIwMmUwMTU5ZDNjZDIgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rdm0vcHYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3B2LmMKQEAgLTI0NCw2ICYjNDM7MjQ0LDI0IEBAIHN0YXRpYyB2b2lkIGt2bV9zMzkwX2NsZWFyX3B2X3N0YXRlKHN0cnVjdCBrdm0gKmt2bSkKIAlrdm0tJmd0O2FyY2gucHYuc3Rvcl92YXIgPSBOVUxMOwogfQogCiYjNDM7c3RhdGljIHZvaWQga3ZtX3MzOTBfcHZfZGlzcG9zZV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGZyZWVfc3Rvcl9iYXNlKQomIzQzO3sKJiM0MzsJaWYgKGZyZWVfc3Rvcl9iYXNlKQomIzQzOwkJZnJlZV9wYWdlcyh2Y3B1LSZndDthcmNoLnB2LnN0b3JfYmFzZSwgZ2V0X29yZGVyKHV2X2luZm8uZ3Vlc3RfY3B1X3N0b3JfbGVuKSk7CiYjNDM7CWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzaWRhX2FkZHIodmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2spKTsKJiM0MzsJdmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2stJmd0O3B2X2hhbmRsZV9jcHUgPSAwOwomIzQzOwl2Y3B1LSZndDthcmNoLnNpZV9ibG9jay0mZ3Q7cHZfaGFuZGxlX2NvbmZpZyA9IDA7CiYjNDM7CW1lbXNldCgmYW1wO3ZjcHUtJmd0O2FyY2gucHYsIDAsIHNpemVvZih2Y3B1LSZndDthcmNoLnB2KSk7CiYjNDM7CXZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtzZGYgPSAwOwomIzQzOwkvKgomIzQzOwkgKiBUaGUgc2lkYWQgZmllbGQgKGZvciBzZGYgPT0gMikgaXMgbm93IHRoZSBnYmVhIGZpZWxkIChmb3Igc2RmID09IDApLgomIzQzOwkgKiBVc2UgdGhlIHJlc2V0IHZhbHVlIG9mIGdiZWEgdG8gYXZvaWQgbGVha2luZyB0aGUga2VybmVsIHBvaW50ZXIgb2YKJiM0MzsJICogdGhlIGp1c3QgZnJlZWQgc2lkYS4KJiM0MzsJICovCiYjNDM7CXZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtnYmVhID0gMTsKJiM0MzsJa3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX1RMQl9GTFVTSCwgdmNwdSk7CiYjNDM7fQomIzQzOwogaW50IGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpCiB7CiAJaW50IGNjOwpAQCAtMjU4LDI0ICYjNDM7Mjc2LDkgQEAgaW50IGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpCiAJV0FSTl9PTkNFKGNjLCAmIzM0O3Byb3R2aXJ0IGRlc3Ryb3kgY3B1IGZhaWxlZCByYyAleCBycmMgJXgmIzM0OywgKnJjLCAqcnJjKTsKIAogCS8qIEludGVuZGVkIG1lbW9yeSBsZWFrIGZvciBzb21ldGhpbmcgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiAqLwotCWlmICghY2MpCi0JCWZyZWVfcGFnZXModmNwdS0mZ3Q7YXJjaC5wdi5zdG9yX2Jhc2UsCi0JCQkgICBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9jcHVfc3Rvcl9sZW4pKTsKLQotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzaWRhX2FkZHIodmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2spKTsKLQl2Y3B1LSZndDthcmNoLnNpZV9ibG9jay0mZ3Q7cHZfaGFuZGxlX2NwdSA9IDA7Ci0JdmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2stJmd0O3B2X2hhbmRsZV9jb25maWcgPSAwOwotCW1lbXNldCgmYW1wO3ZjcHUtJmd0O2FyY2gucHYsIDAsIHNpemVvZih2Y3B1LSZndDthcmNoLnB2KSk7Ci0JdmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2stJmd0O3NkZiA9IDA7Ci0JLyoKLQkgKiBUaGUgc2lkYWQgZmllbGQgKGZvciBzZGYgPT0gMikgaXMgbm93IHRoZSBnYmVhIGZpZWxkIChmb3Igc2RmID09IDApLgotCSAqIFVzZSB0aGUgcmVzZXQgdmFsdWUgb2YgZ2JlYSB0byBhdm9pZCBsZWFraW5nIHRoZSBrZXJuZWwgcG9pbnRlciBvZgotCSAqIHRoZSBqdXN0IGZyZWVkIHNpZGEuCi0JICovCi0JdmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2stJmd0O2diZWEgPSAxOwotCWt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UTEJfRkxVU0gsIHZjcHUpOwomIzQzOwlrdm1fczM5MF9wdl9kaXNwb3NlX2NwdSh2Y3B1LCAhY2MpOwogCi0JcmV0dXJuIGNjID8gRUlPIDogMDsKJiM0MzsJcmV0dXJuIGNjID8gLUVJTyA6IDA7CiB9CiAKIGludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpCkBAIC0zMTksOSAmIzQzOzMyMiw3IEBAIGludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpCiAJCSAgICAgdXZjYi5oZWFkZXIucnJjKTsKIAogCWlmIChjYykgewotCQl1MTYgZHVtbXk7Ci0KLQkJa3ZtX3MzOTBfcHZfZGVzdHJveV9jcHUodmNwdSwgJmFtcDtkdW1teSwgJmFtcDtkdW1teSk7CiYjNDM7CQlrdm1fczM5MF9wdl9kaXNwb3NlX2NwdSh2Y3B1LCB0cnVlKTsKIAkJcmV0dXJuIC1FSU87CiAJfQogCkBAIC04MDksNyAmIzQzOzgxMCw3IEBAIHN0YXRpYyBpbnQgdW5wYWNrX29uZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgYWRkciwgdTY0IHR3ZWFrLAogCQkJcmV0dXJuIC1FQUdBSU47CiAJfQogCi0JaWYgKHJldCAmYW1wOyZhbXA7IHJldCAhPSAtRUFHQUlOKQomIzQzOwlpZiAocmV0ICZhbXA7JmFtcDsgcmV0ICE9IC1FQUdBSU4gJmFtcDsmYW1wOyByZXQgIT0gLUVJTlRSKQogCQlLVk1fVVZfRVZFTlQoa3ZtLCAzLCAmIzM0O1BST1RWSVJUIFZNIFVOUEFDSzogZmFpbGVkIGFkZHIgJWxseCB3aXRoIHJjICV4IHJyYyAleCYjMzQ7LAogCQkJICAgICB1dmNiLmdhZGRyLCAqcmMsICpycmMpOwogCXJldHVybiByZXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTU4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHMzOTAgS1ZNIFBhdGNoIFNlcmllcyBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKioKCk9rYXksIHNvIEkgaGF2ZSB0aGlzIHBhdGNoIHNlcmllcyBmb3IgdGhlIHMzOTAgS1ZNIHN1YnN5c3RlbSBpbiBmcm9udCBvZiBtZS4gSSBzZWUgdGhhdCBpdCB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBga3ZtX2hvc3QuaGAsIGBkYXQuY2AsIGBkYXQuaGAsIGBmYXVsdGluLmNgLCBgaW50ZXJjZXB0LmNgLCBgaW50ZXJydXB0LmNgLCBga3ZtLXMzOTAuY2AsIGBwcml2LmNgLCBhbmQgYHB2LmNgLiBBIGZhaXJseSBleHRlbnNpdmUgbW9kaWZpY2F0aW9uLCBzbyBsZXQmIzM5O3MgZGlnIGRlZXBlciB0byBzZWUgd2hlcmUgdGhlIGludGVyZXN0aW5nIGJpdHMgZm9yIGZ1enppbmcgbGllLgoKVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IGRhdGEgYWRkcmVzc2luZyB0cmFuc2xhdGlvbiwgaW5pdGlhbGl6YXRpb24sIGFuZCBzZXZlcmFsIGNvbnRyb2wgZmxvdyBwYXRocyB3aXRoaW4gS1ZNLiBTcGVjaWZpY2FsbHksIGl0IGludHJvZHVjZXMgYSBgYm9vbCBpbml0aWFsaXplZGAgZmxhZyBpbiB0aGUgYGt2bV92Y3B1X2FyY2hgIHN0cnVjdHVyZSwgd2hpY2ggaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24gYXMgYSBwb3RlbnRpYWwgc291cmNlIG9mIHJhY2UgY29uZGl0aW9ucyBpZiBub3QgaGFuZGxlZCBwcm9wZXJseSBhY3Jvc3MgZGlmZmVyZW50IENQVSBzdGF0ZXMuIFRoZSBtb2RpZmljYXRpb25zIHRvIGBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdGAgdG8gcmV0dXJuIHRoZSBzZWN1cmUga2V5IGFuZCBoYW5kbGUgZmFpbHVyZXMgYXJlIGludHJpZ3VpbmcsIGFzIGlzIHRoZSB1c2Ugb2YgYF9fZGF0X3B0ZXBfeGNoZ2AgaW4gYF9kYXRfc2xvdF9wdGVgLCB3aGljaCBoaW50cyBhdCBzb21lIGxvdy1sZXZlbCBtZW1vcnkgb3BlcmF0aW9ucy4gYGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuYCBsb29rcyBsaWtlIGEgaG90c3BvdCBmb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGluc3RydWN0aW9uIHJldHJpZXMgcmVsYXRlZCB0byBgaGFuZGxlX212cGdfcGVpYCBzb3VuZHMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gbG9vayBmb3Igc3VidGxlIGVkZ2UgY2FzZXMuCgpJIHNlZSBhIHBhdHRlcm4gb2YgYWRkaW5nIGluaXRpYWxpemF0aW9uIGNoZWNrcyAoYHZjcHUtJmd0O2FyY2guaW5pdGlhbGl6ZWRgKSBpbiBmdW5jdGlvbnMgbGlrZSBgc2NhX2NsZWFyX2V4dF9jYWxsYCwgYHNjYV9kZWxfdmNwdWAsIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAsIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBuZXcgc3RhdGVzIGJlaW5nIG1hbmFnZWQuIFRoZSB1c2Ugb2YgYGd1YXJkKHNyY3UpYCBhbmQgYGd1YXJkKG11dGV4KWAgaW4gYGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb25gIGlzIGdvb2QgdG8gc2VlIGZvciBjb25jdXJyZW5jeSBzYWZldHksIGJ1dCBJJiMzOTtsbCBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIGFwcGxpZWQgY29uc2lzdGVudGx5LiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhlIHVzZSBvZiBgc21wX3N0b3JlX3JlbGVhc2VgIGFuZCBgc21wX2xvYWRfYWNxdWlyZWAgaW1wbGllcyBjYXJlZnVsIGNvbnNpZGVyYXRpb24gb2YgbWVtb3J5IG9yZGVyaW5nIHdoaWNoIGNvdWxkIG1ha2UgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4KCk5vdywgdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gbG9naWMgb24gczM5MCwgc28gaXQmIzM5O3MgY2xlYXJseSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMuIFRoZSBxdWVzdGlvbiBpczogaXMgczM5MCBLVk0gZnV6emFibGUsIGFuZCBpcyBpdCBhIGdvb2QgdGFyZ2V0PyBZZXMsIGFjY29yZGluZyB0byBteSBrbm93bGVkZ2UsIHN5emthbGxlciBzdXBwb3J0cyBzMzkweCBhbmQgS1ZNLiBBbHNvLCBJJiMzOTt2ZSBnb3QgYSBnb29kIHNldHVwLiBJIGNhbiB0ZXN0IHMzOTB4IEtWTSB3aXRoaW4gUUVNVSB3aXRoIGVpdGhlciBUQ0cgb3IgS1ZNIG9uIGFuIHMzOTB4IGhvc3QuIEFuZCBzeXprYWxsZXIgcnVucyBzMzkweCBWTXMuIEkmIzM5O20gZ29vZCB0byBnbyB0aGVyZS4KClNvLCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIG1vc3QgcHJvbWlzaW5nIGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gTG9va2luZyBhdCB0aGUgY2hhbmdlcywgSSYjMzk7ZCBzYXkgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHByaW1hcnkgdGFyZ2V0czogYGt2bV9zMzkwX2tleW9wYCwgYGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb25gLCBga3ZtX2FyY2hfdmNwdV9jcmVhdGVgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAsIGBoYW5kbGVfcnJiZWAsIGBoYW5kbGVfZXNzYWAsIGBrdm1fczM5MF9wdl9kZXN0cm95X2NwdWAsIGFuZCBga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdWAuCgpGaW5hbGx5LCBqdXN0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIHRvIHZlcmlmeSB0aGF0IHRoZSBiYXNlIEtWTSBpcyBlbmFibGVkOiBgQ09ORklHX0tWTWAuIEFsbCBnb29kLiBJIHRoaW5rIEkgaGF2ZSBhIHNvbGlkIGxpc3Qgb2YgdGFyZ2V0cyB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyIGFuZCBzdGFydCBjcmFmdGluZyBzb21lIGZ1enppbmcgY2FtcGFpZ25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLioga3ZtX3MzOTBfa2V5b3AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTU1MD1zdGF0aWMgdm9pZCBfX2t2bV9zMzkwX2V4aXQodm9pZClcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTYxLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU2MjpzdGF0aWMgaW50IGt2bV9zMzkwX2tleW9wKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3Qga3ZtICprdm0sIGludCBvcCxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NjMtXHRcdFx0ICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuaW9uIHNrZXkgc2tleSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzIxMgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBga3ZtX3MzOTBfa2V5b3BgIENhbGxlcioqCgpPa2F5LCBzbyBga3ZtX3MzOTBfa2V5b3BgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIHNjb3BlZCB3aXRoaW4gaXRzIGN1cnJlbnQgc291cmNlIGZpbGUsIG1ha2luZyBpdCBhIGJpdCBtb3JlIGNoYWxsZW5naW5nIHRvIHVuZGVyc3RhbmQgaXRzIGJyb2FkZXIgY29udGV4dCBhdCBhIGdsYW5jZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoZXJlKiBpdCYjMzk7cyBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxzaXRlIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHB1cnBvc2UgYW5kIHVzYWdlIG9mIHRoaXMgZnVuY3Rpb24gd2l0aGluIHRoZSBLVk0vczM5MCBhcmNoaXRlY3R1cmUuIFRoaXMgaXMgc3RhbmRhcmQgcHJvY2VkdXJlIHdoZW4gSSBlbmNvdW50ZXIgYSBzdGF0aWMgZnVuY3Rpb247IHRoZSBjYWxsIGdyYXBoIGlzIHRoZSBmaXJzdCB0aGluZyBJIHRyYWNlLiBMZXQmIzM5O3MgZmluZCBpdHMgY2FsbGVyKHMpLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX2tleW9wJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdD02NTMwPXRoZSBjYXBhYmlsaXR5IHRvIGJlIHByZXNlbnQuXG4tLVxuRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0LTY1MzktOlR5cGU6IHZtIGlvY3RsXG5Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3Q6NjU0MDo6UGFyYW1ldGVyczogc3RydWN0IGt2bV9zMzkwX2tleW9wIChpbi9vdXQpXG5Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3QtNjU0MS06UmV0dXJuczogMCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIFx1MDAzYyAwIG9uIGVycm9yXG4tLVxuRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0PTY1NDQ9cHJldmlvdXMgc3RvcmFnZSBrZXkgKG9yIHRoZSByZWxldmFudCBwYXJ0IHRoZXJlb2YpIHdpbGwgYmUgcmV0dXJuZWQgaW5cbi0tXG5Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3QtNjU0OC1cbkRvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdDo2NTQ5OiAgc3RydWN0IGt2bV9zMzkwX2tleW9wIHtcbkRvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdC02NTUwLVx0X191NjQgZ3Vlc3RfYWRkcjtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTUwPXN0YXRpYyB2b2lkIF9fa3ZtX3MzOTBfZXhpdCh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NjEtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTYyOnN0YXRpYyBpbnQga3ZtX3MzOTBfa2V5b3Aoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBrdm0gKmt2bSwgaW50IG9wLFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU2My1cdFx0XHQgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5pb24gc2tleSBza2V5KVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yOTI2PWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA1OC1cdFx0c3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWM7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzA1OTpcdFx0c3RydWN0IGt2bV9zMzkwX2tleW9wIGtvcDtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDYwLVx0XHR1bmlvbiBza2V5IHNrZXk7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMwNzEtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzA3MjpcdFx0ciA9IGt2bV9zMzkwX2tleW9wKG1jLCBrdm0sIGtvcC5vcGVyYXRpb24sIGtvcC5ndWVzdF9hZGRyLCBza2V5KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDczLVx0XHRrdm1fczM5MF9mcmVlX21tdV9jYWNoZShtYyk7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oPTEyNDQ9c3RydWN0IGt2bV92ZmlvX3NwYXByX3RjZSB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oLTEyNTEtI2RlZmluZSBLVk1fUzM5MF9LRVlPUF9TU0tFIDB4MDNcbmluY2x1ZGUvdWFwaS9saW51eC9rdm0uaDoxMjUyOnN0cnVjdCBrdm1fczM5MF9rZXlvcCB7XG5pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgtMTI1My1cdF9fdTY0IGd1ZXN0X2FkZHI7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oLTEyNzctI2RlZmluZSBLVk1fUzM5MF9WQ1BVX0ZBVUxUXHQgX0lPVyhLVk1JTywgMHg1MiwgdW5zaWduZWQgbG9uZylcbmluY2x1ZGUvdWFwaS9saW51eC9rdm0uaDoxMjc4OiNkZWZpbmUgS1ZNX1MzOTBfS0VZT1AgICAgICAgICAgIF9JT1dSKEtWTUlPLCAweDUzLCBzdHJ1Y3Qga3ZtX3MzOTBfa2V5b3ApXG5pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgtMTI3OS1cbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmg9MTI0ND1zdHJ1Y3Qga3ZtX3ZmaW9fc3BhcHJfdGNlIHtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgtMTI1MS0jZGVmaW5lIEtWTV9TMzkwX0tFWU9QX1NTS0UgMHgwM1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oOjEyNTI6c3RydWN0IGt2bV9zMzkwX2tleW9wIHtcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaC0xMjUzLVx0X191NjQgZ3Vlc3RfYWRkcjtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgtMTI3Ny0jZGVmaW5lIEtWTV9TMzkwX1ZDUFVfRkFVTFRcdCBfSU9XKEtWTUlPLCAweDUyLCB1bnNpZ25lZCBsb25nKVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oOjEyNzg6I2RlZmluZSBLVk1fUzM5MF9LRVlPUCAgICAgICAgICAgX0lPV1IoS1ZNSU8sIDB4NTMsIHN0cnVjdCBrdm1fczM5MF9rZXlvcClcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaC0xMjc5LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zMzkwL2tleW9wLmM9NzE9c3RhdGljIGludCBkb19rZXlvcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBvcCwgdW5zaWduZWQgbG9uZyBwYWdlX2lkeCwgdW5zaWduZWQgY2hhciBza2V5KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuYy03Mi17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jOjczOlx0c3RydWN0IGt2bV9zMzkwX2tleW9wIGtleW9wID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuYy03NC1cdFx0Lmd1ZXN0X2FkZHIgPSBCVUZfU1RBUlRfQUREUiAmIzQzOyBwYWdlX2lkeCAqIFBBR0VfU0laRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDgwNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBLVk0gUzM5MCBLZXkgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgS1ZNIHN0dWZmIGFuZCBmb2N1c2luZyBvbiB0aGUgUzM5MCBhcmNoaXRlY3R1cmUuIFJpZ2h0LCBzbyBga3ZtX2FyY2hfdm1faW9jdGxgIGlzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGUgYEtWTV9TMzkwX0tFWU9QYCBjb21tYW5kLiBUaGF04oCZcyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIFRoZSBtYWluIGZ1bmN0aW9uLgoKTXkgbmV4dCBzdGVwLCBJIG5lZWQgdG8gYW5hbHl6ZSBga3ZtX3MzOTBfdm1fc2V0X21pZ3JhdGlvbmAuIFRoYXQgZnVuY3Rpb24gaXMgcHJvYmFibHkgaW52b2x2ZWQgaW4gc2V0dGluZyB1cCBvciBtYW5hZ2luZyBtaWdyYXRpb24gcmVsYXRlZCBhY3Rpdml0aWVzLCBzaW5jZSBpdHMgbmFtZSBpbmNsdWRlcyAmIzM0O21pZ3JhdGlvbiYjMzQ7LiBJ4oCZbGwgaGF2ZSB0byBkaWcgZGVlcGVyIHRoZXJlIHRvIHNlZSB0aGUgbWVjaGFuaWNzIG9mIGhvdyB0aGF0IGtleSBvcGVyYXRpb24gaXMgaGFuZGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTEyNzE9c3RhdGljIGludCBrdm1fczM5MF92bV9zdG9wX21pZ3JhdGlvbihzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTEyOTctXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MTI5ODpzdGF0aWMgaW50IGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb24oc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTEyOTktXHRcdFx0XHQgICAgIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyMjkKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgYSBTdGF0aWMgTGFuZHNjYXBlKioKCkFscmlnaHQsIHRoaXMgY29kZeKApiBpdCBmZWVscyBpbmNyZWRpYmx5IHN0YXRpYy4gSSYjMzk7bSBoaXR0aW5nIGEgd2FsbCBoZXJlLiBUaGVyZSYjMzk7cyBzb21ldGhpbmcgaW5oZXJlbnRseSAqdW5jaGFuZ2luZyogYWJvdXQgaXRzIGN1cnJlbnQgc3RhdGUgdGhhdCYjMzk7cyBwcmV2ZW50aW5nIG1lIGZyb20gdW5kZXJzdGFuZGluZyBpdHMgYnJvYWRlciByb2xlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGN1dCB0aHJvdWdoIHRoZSBub2lzZSBhbmQgZmlndXJlIG91dCAqd2hhdCogaXMgcmVzcG9uc2libGUgZm9yIGFjdGl2YXRpbmcgdGhpcyB0aGluZy4gVGhlIGtleSB0byB1bmxvY2tpbmcgaXRzIGZ1bmN0aW9uIGxpZXMgaW4gaWRlbnRpZnlpbmcgdGhlIGVudHJ5IHBvaW50LCB0aGUgb3JpZ2luIG9mIGl0cyBleGVjdXRpb24uIExldCYjMzk7cyBmaW5kIGl0cyBjYWxsZXIuIFRoYXQmIzM5O3MgdGhlIHByaW9yaXR5IHJpZ2h0IG5vdzsgdHJhY2luZyBiYWNrIHRoZSBmbG93IHRvIGl0cyBzb3VyY2Ugc2hvdWxkIGlsbHVtaW5hdGUgaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3ZtX3NldF9taWdyYXRpb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTEyNzE9c3RhdGljIGludCBrdm1fczM5MF92bV9zdG9wX21pZ3JhdGlvbihzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTEyOTctXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MTI5ODpzdGF0aWMgaW50IGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb24oc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTEyOTktXHRcdFx0XHQgICAgIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTIwNDQ9c3RhdGljIGludCBrdm1fczM5MF92bV9zZXRfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTIwNjEtXHRjYXNlIEtWTV9TMzkwX1ZNX01JR1JBVElPTjpcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyMDYyOlx0XHRyZXQgPSBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uKGt2bSwgYXR0cik7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjA2My1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NzY5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIEtWTS9zMzkweCBNaWdyYXRpb24qKgoKT2theSwgc28gYGt2bV9zMzkwX3ZtX3NldF9hdHRyYCBpcyB0aGUgc3RhcnRpbmcgZ3VuIGZvciBhbnkgaW50ZXJhY3Rpb24gcmVsYXRlZCB0byBtaWdyYXRpb24gb24gdGhlIHMzOTB4IGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgS1ZNX1MzOTBfVk1fTUlHUkFUSU9OYCBjb21tYW5kLiBUaGF0JiMzOTtzIG91ciBlbnRyeSBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGhhbmRsZWQsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaG93IHRoZSB2aXJ0dWFsIENQVXMgYXJlIGNyZWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhpcyBwcm9jZXNzLiBUaGUgbmV4dCBmdW5jdGlvbiB0byBleGFtaW5lIHdvdWxkIGJlIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBsb3ctZG93biBvbiBob3cgdGhlIHZpcnR1YWwgQ1BVcyBnZXQgc2V0IHVwIGluaXRpYWxseSwgd2hpY2ggd2lsbCB0aGVuIGlsbHVtaW5hdGUgaG93IG1pZ3JhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9hcmNoX3ZjcHVfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL2FybS5jPTUxMj1pbnQga3ZtX2FyY2hfdmNwdV9wcmVjcmVhdGUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNTIyLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6NTIzOmludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2FybTY0L2t2bS9hcm0uYy01MjQte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTUwNT1pbnQga3ZtX2FyY2hfdmNwdV9wcmVjcmVhdGUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xNTA5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxNTEwOmludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE1MTEte1xuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTI3Mz1pbnQga3ZtX2FyY2hfdmNwdV9wcmVjcmVhdGUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMjc3LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6Mjc4OmludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL21pcHMva3ZtL21pcHMuYy0yNzkte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jPTc0Nj1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQga3ZtcHBjX2RlY3JlbWVudGVyX3dha2V1cChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtNzU1LVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6NzU2OmludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy03NTcte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz0xMjc9aW50IGt2bV9hcmNoX3ZjcHVfcHJlY3JlYXRlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xMzEtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MTMyOmludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMTMzLXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9Mzc5OT1ERUZJTkVfRlJFRShzaWVfcGFnZSwgc3RydWN0IHNpZV9wYWdlICosIGlmIChfVCkgZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKShfVCkpKVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM4MDAtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzgwMTppbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM4MDIte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMjczND1pbnQga3ZtX2FyY2hfdmNwdV9wcmVjcmVhdGUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNzcyLVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyNzczOmludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI3NzQte1xuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjIyPWludCBrdm1fYXJjaF92Y3B1X3ByZWNyZWF0ZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCk7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTYyMzppbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjI0LXZvaWQga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDU0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIEtWTSBGdW5jdGlvbmFsaXR5KioKCk9rYXksIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAuLi4gdGhhdCYjMzk7cyBhIGZhbWlsaWFyIEtWTSBBUEkgZnVuY3Rpb24uIEl0JiMzOTtzIGEgZm91bmRhdGlvbmFsIHBpZWNlLCB1c2VkIHRvIGNvbnN0cnVjdCBhIHZpcnR1YWwgQ1BVLiBOb3csIGxldCYjMzk7cyBwaXZvdCB0byBzb21ldGhpbmcgcmVsYXRlZCBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgYWxsIGFib3V0LiBMZXQmIzM5O3MgZGVsdmUgaW50byBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0IHNlZW1zIGxpa2UgdGhlIHJpZ2h0IG5leHQgc3RlcCB0byBleGFtaW5lIGluIHRoaXMgYXJlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihpbnR8dm9pZHxsb25nfHN0YXRpYykuKiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9hcm0uYz0xMjMwPXN0YXRpYyBpbnQgbm9pbnN0ciBrdm1fYXJtX3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1MC0gKi9cbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEyNTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNTIte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTgyNT12b2lkIGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE4NDgtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE4NDk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1MC17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9NDExPXN0YXRpYyBpbnQgbm9pbnN0ciBrdm1fbWlwc192Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTQyMS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjQyMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9taXBzL2t2bS9taXBzLmMtNDIzLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0xNzMyPWludCBrdm1fdmNwdV9pb2N0bF9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTE3ODAtXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoxNzgxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0xNzgyLXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9Nzc4PXN0YXRpYyB2b2lkIG5vaW5zdHIga3ZtX3Jpc2N2X3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTg1Ny1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo4NTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy04NTkte1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz01MDAxPXN0YXRpYyB2b2lkIHN0b3JlX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MDIxLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjUwMjI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MDIzLXtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTE5Mjc9c3RhdGljIGludCBrdm1feDg2X3ZjcHVfcHJlX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExOTU1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjExOTU2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTE5NTcte1xuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjE2PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTYxNy1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjE4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE2MTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzE3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIEtWTSBJT0NUTHMqKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggS1ZNIGludGVybmFscywgYW5kIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgaXMgcHJldHR5IG11Y2ggYSBnaXZlbi4gSXQmIzM5O3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50LiBSaWdodCwgdGltZSB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIExldCYjMzk7cyBzdGFydCBieSB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgaXRzZWxmLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIGdldCB0aGUgYnJvYWRlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUyNiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuYXJjaC9hcm02NC9rdm0vYXJtLmM9NzgxPXN0YXRpYyBib29sIGt2bV9hcm1fdmNwdV9zdXNwZW5kZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4NS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jOjc4NjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03ODctXHRcdFx0XHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzkzLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6Nzk0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc5NS1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xMjMwPXN0YXRpYyBpbnQgbm9pbnN0ciBrdm1fYXJtX3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1MC0gKi9cbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEyNTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNTIte1xuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jPTE2ODA9c3RhdGljIGludCBrdm1fdmNwdV9zZXRfdGFyZ2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNzAyLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTcwMzpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE3MDQtXHRcdFx0XHRcdCBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCAqaW5pdClcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xODA2PXN0YXRpYyBpbnQga3ZtX2FybV92Y3B1X3NldF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE4MjMtXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxODI0Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE4MjUtXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYz01MTE9c3RhdGljIGludCBzZXRfc3ZlX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTM1LVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo1MzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTUzNy17XG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy01NDAtXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjU0MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTQyLXtcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jPTcxOT1pbnQga3ZtX2FybV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03MzUtXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjczNjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03MzctXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzQxLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo3NDI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzQzLVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jPTgyNT11MzIgX19hdHRyaWJ1dGVfY29uc3RfXyBrdm1fdGFyZ2V0X2NwdSh2b2lkKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODU0LVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo4NTU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg1Ni17XG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04NTktXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg2MDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODYxLXtcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg2NC1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6ODY1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg2Ni1cdFx0XHRcdCAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04ODAtICovXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04ODItXHRcdFx0XHRcdHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKmRiZylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTQyMD12bV9mYXVsdF90IGt2bV9hcmNoX3ZjcHVfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQyNC1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDI1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQyNi1cdFx0XHRcdCAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz00NDQ9aW50IGt2bV9hcmNoX3ZjcHVfZHVtcF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ2Ni1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDY3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDY4LVx0XHRcdFx0c3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NzQtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQ3NTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ3Ni1cdFx0XHRcdHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDkwLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0OTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDkyLVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz05ODQ9c3RhdGljIGludCBrdm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAwMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMy17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDA2LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDA3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDA4LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTEtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMTI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTMte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAyMy1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAyNDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAyNS17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMjE1PXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMzMtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEyMzQ6bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMjM1LVx0XHRcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMwNi1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTMwNzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMwOC17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzE4LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzE5OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzIwLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTE4MjU9dm9pZCBrdm1fYXJjaF92Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xODQ4LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxODQ5OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE4NTAte1xuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTM4Nj12b2lkIGt2bV9hcmNoX3ZjcHVfZGVzdHJveShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMzk3LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6Mzk4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL21pcHMva3ZtL21pcHMuYy0zOTktXHRcdFx0XHRcdHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKmRiZylcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz00MTE9c3RhdGljIGludCBub2luc3RyIGt2bV9taXBzX3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtNDIxLVxuYXJjaC9taXBzL2t2bS9taXBzLmM6NDIyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL21pcHMva3ZtL21pcHMuYy00MjMte1xuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTQ3OT1pbnQga3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MTQtXG5hcmNoL21pcHMva3ZtL21pcHMuYzo1MTU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9taXBzL2t2bS9taXBzLmMtNTE2LVx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUyMC1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjUyMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MjItXHRcdFx0XHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9ODk4PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTkxNy1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjkxODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTkxOS1cdFx0XHQgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9OTg3PWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy05OTgtXG5hcmNoL21pcHMva3ZtL21pcHMuYzo5OTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMDAtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMDQtXG5hcmNoL21pcHMva3ZtL21pcHMuYzoxMDA1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDA2LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz0xMDExPXZvaWQga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDE0LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTAxNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTYte1xuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTktXG5hcmNoL21pcHMva3ZtL21pcHMuYzoxMDIwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAyMS17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9MTA4Mj1pbnQga3ZtX2FyY2hfdmNwdV9kdW1wX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExMTItXG5hcmNoL21pcHMva3ZtL21pcHMuYzoxMTEzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTExNC17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTEyOS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjExMzA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTMxLXtcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTQ2LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTE0NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTE0OC1cdFx0XHRcdCAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYz01MjU9dm9pZCBrdm1wcGNfc3ViYXJjaF92Y3B1X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01MjgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjUyOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01MzAtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTQwLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1NDE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTQyLVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTU1Mi1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6NTUzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NTQte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTgwLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTU4Mi17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MDctXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjYwODppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNjA5LXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTYxMi1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6NjEzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MTQte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM9ODA3PWludCBrdm1wcGNfdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODExLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo4MTI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODEzLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTgxNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6ODE4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTgxOS1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MTk2OD1zdGF0aWMgaW50IGt2bXBwY19oYW5kbGVfbmVzdGVkX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjA5OS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjEwMDpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjEwMS1cdFx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjExNC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjExNTpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjExNi1cdFx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM9MTEzNT1pbnQga3ZtcHBjX2hhbmRsZV9leGl0X3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGV4aXRfbnIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoxNDU1OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU2LVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDgxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoxNDgyOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDgzLVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE0NDI9dm9pZCBrdm1wcGNfc3ViYXJjaF92Y3B1X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE0NDYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTQ0NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNDQ4LXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ3Ny1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNDc4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE0Nzkte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYz0xNjA1PWludCBrdm1wcGNfc2V0X3NyZWdzX2l2b3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTYyOS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNjMwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTYzMS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2NDYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTY0NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2NDgtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYz0xNzI3PWludCBrdm1wcGNfc2V0X29uZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgaWQsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE3OTUtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTc5NjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNzk3LXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTgwMC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxODAxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE4MDIte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODA1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jOjE4MDY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODA3LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9MTk4MD1pbnQga3ZtcHBjX3hsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdWxvbmcgZWFkZHIsIGVudW0geGxhdGVfaW5zdGRhdGEgeGxpZCxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMjAzMC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoyMDMxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMjAzMi1cdFx0XHRcdFx0IHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKmRiZylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0xNzMyPWludCBrdm1fdmNwdV9pb2N0bF9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTE3ODAtXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoxNzgxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0xNzgyLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0yMDAwPWJvb2wga3ZtX2FyY2hfaW50Y19pbml0aWFsaXplZChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAxMi1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwMTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAxNC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDE4LVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6MjAxOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDIwLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jPTIwMjU9bG9uZyBrdm1fYXJjaF92Y3B1X3VubG9ja2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAzOS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwNDA6bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjA0MS0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9MjQ5PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0yNjktXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MjcwOmxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0yNzEtXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTMxNi1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzozMTc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTgtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjItXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MzIzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzI0LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzI4LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMyOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzAte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzMtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MzM0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTMzNS17XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTMzOC1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzozMzk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDAtXHRcdFx0XHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDQtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MzQ1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTM0Ni17XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTM0OS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzozNTA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzUxLXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9NTE5PWJvb2wga3ZtX3Jpc2N2X3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUyMy1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo1MjQ6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUyNS1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNTMxLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjUzMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNTMzLVx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy01NjAtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6NTYxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNTYyLVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTc3OD1zdGF0aWMgdm9pZCBub2luc3RyIGt2bV9yaXNjdl92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy04NTctXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6ODU4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtODU5LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9Mzk0OT1pbnQga3ZtX2FyY2hfdmNwdV9zaG91bGRfa2ljayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM5NTUtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6Mzk1NjpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X29uZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM5NTctXHRcdFx0XHRcdCAgIHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDA0LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQwMDU6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDA2LVx0XHRcdFx0XHQgICBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA1Ny1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MDU4OnN0YXRpYyB2b2lkIGt2bV9hcmNoX3ZjcHVfaW9jdGxfbm9ybWFsX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDU5LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA2OS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MDcwOnN0YXRpYyB2b2lkIGt2bV9hcmNoX3ZjcHVfaW9jdGxfaW5pdGlhbF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA3MS17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMTMtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDExNDpzdGF0aWMgdm9pZCBrdm1fYXJjaF92Y3B1X2lvY3RsX2NsZWFyX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTE1LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDEyOS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTMwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMzEte1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTM3LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMzg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDEzOS17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNDUtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDE0NjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNDctXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTU3LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxNTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTU5LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE2OS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTcwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNzEte1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTg0LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxODU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE4Ni17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxOTktXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDIwMDpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2luaXRpYWxfcHN3KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgcHN3X3QgcHN3KVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyMDEte1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjEyLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyMTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjE0LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDIyMi1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MjIzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDIyNC1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjY0LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyNjU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyNjYtXHRcdFx0XHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyNzktXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDI4MDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDI4MS1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTAwMT1zdGF0aWMgdm9pZCBzdG9yZV9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTAyMS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1MDIyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTAyMy17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTU0ODE9c3RhdGljIGludCBrdm1fczM5MF9oYW5kbGVfcHZfdmNwdV9kdW1wKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTUyMi1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NTIzOmxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTI0LVx0XHRcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz02MTY3PXN0YXRpYyBpbnQga3ZtX2dldF9yZWdfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTYxODgtXG5hcmNoL3g4Ni9rdm0veDg2LmM6NjE4OTpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjE5MC1cdFx0XHQgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTE5Mjc9c3RhdGljIGludCBrdm1feDg2X3ZjcHVfcHJlX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExOTU1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjExOTU2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTE5NTcte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMjA3Nj1zdGF0aWMgdm9pZCBfX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMjExMS1cbmFyY2gveDg2L2t2bS94ODYuYzoxMjExMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gveDg2L2t2bS94ODYuYy0xMjExMy17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTEyMTI0PXN0YXRpYyB2b2lkIF9fc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMTU2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyMTU3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMTU4LXtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTIyMTg9c3RhdGljIHZvaWQgX19nZXRfc3JlZ3MyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVnczIgKnNyZWdzMilcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIyMzUtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTIyMzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gveDg2L2t2bS94ODYuYy0xMjIzNy1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMjQ4LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyMjQ5OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gveDg2L2t2bS94ODYuYy0xMjI1MC1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIyNzQtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTIyNzU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMjc2LVx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMjQ4Nj1zdGF0aWMgaW50IF9fc2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MyICpzcmVnczIpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNTE5LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyNTIwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI1MjEtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMjUzNT1zdGF0aWMgdm9pZCBrdm1fYXJjaF92Y3B1X2d1ZXN0ZGJnX3VwZGF0ZV9hcGljdl9pbmhpYml0KHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI1NTUtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTI1NTY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gveDg2L2t2bS94ODYuYy0xMjU1Ny1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMjYxOS0gKi9cbmFyY2gveDg2L2t2bS94ODYuYzoxMjYyMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNjIxLVx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMjY0MC1cbmFyY2gveDg2L2t2bS94ODYuYzoxMjY0MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gveDg2L2t2bS94ODYuYy0xMjY0Mi17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNjYzLVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyNjY0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNjY1LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTU3MD1sb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNTcxLVx0XHRcdHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzU3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIEtWTSBNZW1vcnkgUmVnaW9uIE9wZXJhdGlvbnMqKgoKQWxyaWdodCwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGlzIGEgcHJldHR5IHN0YW5kYXJkIGVudHJ5IHBvaW50LiBOb3RoaW5nIGp1bXBzIG91dCBhcyBpbW1lZGlhdGVseSBjb25jZXJuaW5nIHRoZXJlLiBNeSBmb2N1cyBuZWVkcyB0byBiZSBkZWVwZXIuIExldCYjMzk7cyBzZWUuLi4gdGhlIHJlYWwgcG90ZW50aWFsIGZvciBpc3N1ZXMsIGVzcGVjaWFsbHkgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCwgbGlrZWx5IGxpZXMgaW4gdGhlIGNvbW1pdG1lbnQgb2YgbWVtb3J5IHJlZ2lvbnMuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBzaG91bGQgYmUgY29uY2VudHJhdGluZyBteSBlZmZvcnRzLiBUaGF0IGZ1bmN0aW9uIGlzIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihpbnR8dm9pZHxsb25nfHN0YXRpYykuKiBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9tbXUuYz0yNTEwPWludCBfX2luaXQga3ZtX21tdV9pbml0KHUzMiBoeXBfdmFfYml0cylcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTcxLVxuYXJjaC9hcm02NC9rdm0vbW11LmM6MjU3Mjp2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTI1NzMtXHRcdFx0XHQgICBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpvbGQsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL21tdS5jPTM3OT1pbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSwgY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tbXUuYy00NDEtXG5hcmNoL2xvb25nYXJjaC9rdm0vbW11LmM6NDQyOnZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9sb29uZ2FyY2gva3ZtL21tdS5jLTQ0My1cdFx0XHRcdCAgIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz0yMDQ9aW50IGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMjExLVxuYXJjaC9taXBzL2t2bS9taXBzLmM6MjEyOnZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMjEzLVx0XHRcdFx0ICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jPTcxOT1pbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy03MjYtXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzo3Mjc6dm9pZCBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy03MjgtXHRcdFx0XHQgICBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpvbGQsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmM9MTM3PXZvaWQga3ZtX2FyY2hfZmx1c2hfc2hhZG93X21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTE1NC1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjE1NTp2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTE1Ni1cdFx0XHRcdHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTgwNz1zdGF0aWMgbG9uZyBjbW1hX2RfY291bnRfcHRlKHVuaW9uIHB0ZSAqcHRlcCwgZ2ZuX3QgZ2ZuLCBnZm5fdCBuZXh0LCBzdHJ1Y3QgZGF0X3dhbGsgKndhbGspXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU4MTMtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTgxNDp2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01ODE1LVx0XHRcdFx0c3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMzY0OD1zdGF0aWMgdm9pZCBrdm1fbW11X3Nsb3RfYXBwbHlfZmxhZ3Moc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzc2NC1cbmFyY2gveDg2L2t2bS94ODYuYzoxMzc2NTp2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gveDg2L2t2bS94ODYuYy0xMzc2Ni1cdFx0XHRcdHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTI0NT1pbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTI0OC1cdFx0XHRcdGVudW0ga3ZtX21yX2NoYW5nZSBjaGFuZ2UpO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjEyNDk6dm9pZCBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTI1MC1cdFx0XHRcdHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwNTgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIHByb3ZpZGVkIHRlY2huaWNhbCBzbmlwcGV0czoKCioqRGVidWdnaW5nIE1lbW9yeSBSZWdpb24gQ29tbWl0dGFsIGluIEtWTSoqCgpPa2F5LCBzbyBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLi4uIHRoYXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgZnVuY3Rpb24gY2FsbCBpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgdGhlcmUgYXMgYSBwcm9ibGVtOyBpdCYjMzk7cyB0aGUgZXhwZWN0ZWQgbWV0aG9kLiBOb3csIGdpdmVuIHRoYXQgY29udGV4dCwgYW5kIGFzc3VtaW5nIEkmIzM5O20gdHJhY2tpbmcgZG93biBhIG1lbW9yeS1yZWxhdGVkIGlzc3VlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGJhc2VkIG9uIGV4cGVyaWVuY2UsIGlzIHRvIGludmVzdGlnYXRlIGhvdyBgaGFuZGxlX3JyYmVgIGlzIGludGVyYWN0aW5nLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoYXQgbmV4dCwgYXMgaXQgbGlrZWx5IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBtZW1vcnkgcmVnaW9uIGNvbW1pdCwgYW5kIGEgbWVtb3J5IGNvcnJ1cHRpb24gY291bGQgYmUgaW50cm9kdWNlZCB0aGVyZS4gVGhhdCYjMzk7cyB0aGUgbGlrZWx5IHNwb3QgdG8gaW5zcGVjdCBuZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGhhbmRsZV9ycmJlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vcHJpdi5jPTI1Nz1zdGF0aWMgaW50IGhhbmRsZV9pc2tlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0yODgtXG5hcmNoL3MzOTAva3ZtL3ByaXYuYzoyODk6c3RhdGljIGludCBoYW5kbGVfcnJiZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0yOTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjM5MAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyBhIFN0YXRpYyBMYW5kc2NhcGUqKgoKQWxyaWdodCwgdGhpcyBjb2Rl4oCmIGl0IGZlZWxzIGluY3JlZGlibHkgc3RhdGljLiBJJiMzOTttIGhpdHRpbmcgYSB3YWxsIGhlcmUuIFRoZXJlJiMzOTtzIHNvbWV0aGluZyBpbmhlcmVudGx5ICp1bmNoYW5naW5nKiBhYm91dCBpdHMgY3VycmVudCBzdGF0ZSB0aGF0JiMzOTtzIHByZXZlbnRpbmcgbWUgZnJvbSB1bmRlcnN0YW5kaW5nIGl0cyBicm9hZGVyIHJvbGUuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY3V0IHRocm91Z2ggdGhlIG5vaXNlIGFuZCBmaWd1cmUgb3V0ICp3aGF0KiBpcyByZXNwb25zaWJsZSBmb3IgYWN0aXZhdGluZyB0aGlzIHRoaW5nLiBUaGUga2V5IHRvIHVubG9ja2luZyBpdHMgZnVuY3Rpb24gbGllcyBpbiBpZGVudGlmeWluZyB0aGUgZW50cnkgcG9pbnQsIHRoZSBvcmlnaW4gb2YgaXRzIGV4ZWN1dGlvbi4gTGV0JiMzOTtzIGZpbmQgaXRzIGNhbGxlci4gVGhhdCYjMzk7cyB0aGUgcHJpb3JpdHkgcmlnaHQgbm93OyB0cmFjaW5nIGJhY2sgdGhlIGZsb3cgdG8gaXRzIHNvdXJjZSBzaG91bGQgaWxsdW1pbmF0ZSBpdHMgcHVycG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFuZGxlX3JyYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9wcml2LmM9MjU3PXN0YXRpYyBpbnQgaGFuZGxlX2lza2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jLTI4OC1cbmFyY2gvczM5MC9rdm0vcHJpdi5jOjI4OTpzdGF0aWMgaW50IGhhbmRsZV9ycmJlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTI5MC17XG4tLVxuYXJjaC9zMzkwL2t2bS9wcml2LmM9OTU5PWludCBrdm1fczM5MF9oYW5kbGVfYjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jLTk3OS1cdGNhc2UgMHgyYTpcbmFyY2gvczM5MC9rdm0vcHJpdi5jOjk4MDpcdFx0cmV0dXJuIGhhbmRsZV9ycmJlKHZjcHUpO1xuYXJjaC9zMzkwL2t2bS9wcml2LmMtOTgxLVx0Y2FzZSAweDJiOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjgxNgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQjIgSGFuZGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIHN0YXJ0aW5nIGF0IGBrdm1fczM5MF9oYW5kbGVfYjJgLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IHBsYWNlIEkgbmVlZCB0byBsb29rLiBOb3csIHdoYXQmIzM5O3MgbmV4dD8gTGV0JiMzOTtzIGdldCByaWdodCB0byBpdC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGV4YW1pbmluZyBgaGFuZGxlX2Vzc2FgLiBUaGF0IHNob3VsZCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYWxsIHdvcmtzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLiogaGFuZGxlX2Vzc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9wcml2LmM9MTE5MT1zdGF0aWMgdm9pZCBfZXNzYV9jbGVhcl9jYnJsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyAqY2JybCwgaW50IGxlbilcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0xMjE2LVxuYXJjaC9zMzkwL2t2bS9wcml2LmM6MTIxNzpzdGF0aWMgaW50IGhhbmRsZV9lc3NhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTEyMTgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzEyNwoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyBhIFN0YXRpYyBMYW5kc2NhcGUqKgoKQWxyaWdodCwgdGhpcyBjb2Rl4oCmIGl0IGZlZWxzIGluY3JlZGlibHkgc3RhdGljLiBJJiMzOTttIGhpdHRpbmcgYSB3YWxsIGhlcmUuIFRoZXJlJiMzOTtzIHNvbWV0aGluZyBpbmhlcmVudGx5ICp1bmNoYW5naW5nKiBhYm91dCBpdHMgY3VycmVudCBzdGF0ZSB0aGF0JiMzOTtzIHByZXZlbnRpbmcgbWUgZnJvbSB1bmRlcnN0YW5kaW5nIGl0cyBicm9hZGVyIHJvbGUuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY3V0IHRocm91Z2ggdGhlIG5vaXNlIGFuZCBmaWd1cmUgb3V0ICp3aGF0KiBpcyByZXNwb25zaWJsZSBmb3IgYWN0aXZhdGluZyB0aGlzIHRoaW5nLiBUaGUga2V5IHRvIHVubG9ja2luZyBpdHMgZnVuY3Rpb24gbGllcyBpbiBpZGVudGlmeWluZyB0aGUgZW50cnkgcG9pbnQsIHRoZSBvcmlnaW4gb2YgaXRzIGV4ZWN1dGlvbi4gTGV0JiMzOTtzIGZpbmQgaXRzIGNhbGxlci4gVGhhdCYjMzk7cyB0aGUgcHJpb3JpdHkgcmlnaHQgbm93OyB0cmFjaW5nIGJhY2sgdGhlIGZsb3cgdG8gaXRzIHNvdXJjZSBzaG91bGQgaWxsdW1pbmF0ZSBpdHMgcHVycG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFuZGxlX2Vzc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9wcml2LmM9MTE5MT1zdGF0aWMgdm9pZCBfZXNzYV9jbGVhcl9jYnJsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyAqY2JybCwgaW50IGxlbilcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0xMjE2LVxuYXJjaC9zMzkwL2t2bS9wcml2LmM6MTIxNzpzdGF0aWMgaW50IGhhbmRsZV9lc3NhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTEyMTgte1xuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jPTEyODQ9aW50IGt2bV9zMzkwX2hhbmRsZV9iOShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9wcml2LmMtMTI5My1cdGNhc2UgMHhhYjpcbmFyY2gvczM5MC9rdm0vcHJpdi5jOjEyOTQ6XHRcdHJldHVybiBoYW5kbGVfZXNzYSh2Y3B1KTtcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTEyOTUtXHRjYXNlIDB4YWY6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNTcxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgUzM5MCBLVk0gQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIHN0YXJ0aW5nIGF0IGBrdm1fczM5MF9oYW5kbGVfYjlgLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGFsbCBiZWdpbnMuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGhvdyB0aGUgY29kZSBoYW5kbGVzIENQVSBkZXN0cnVjdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gY2hlY2sgYGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1YCBuZXh0LiBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHZpcnR1YWwgbWFjaGluZSYjMzk7cyBDUFUgcmVzb3VyY2VzIGFyZSBjbGVhbmVkIHVwLiBJIHdhbnQgdG8gdHJhY2UgdGhhdCBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD0yOTU9c3RhdGljIGlubGluZSBodmFfdCBncGFfdG9faHZhKHN0cnVjdCBrdm0gKmt2bSwgZ3BhX3QgZ3BhKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC0zMDQtLyogaW1wbGVtZW50ZWQgaW4gcHYuYyAqL1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjMwNTppbnQga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtMzA2LWludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpO1xuLS1cbmFyY2gvczM5MC9rdm0vcHYuYz0yNDc9c3RhdGljIHZvaWQga3ZtX3MzOTBfcHZfZGlzcG9zZV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGZyZWVfc3Rvcl9iYXNlKVxuLS1cbmFyY2gvczM5MC9rdm0vcHYuYy0yNjQtXG5hcmNoL3MzOTAva3ZtL3B2LmM6MjY1OmludCBrdm1fczM5MF9wdl9kZXN0cm95X2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuYXJjaC9zMzkwL2t2bS9wdi5jLTI2Ni17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTQwCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZXhwcmVzc2VkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIGFuIGV4cGVydCB1c2VyOgoKKipJZGVudGlmeWluZyB0aGUgU291cmNlKioKCkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIG9yaWdpbiBvZiB0aGlzLiBUaGF0IG1lYW5zIHBpbnBvaW50aW5nIGl0cyBjYWxsZXIsIHRoZSBlbnRpdHkgb3IgcHJvY2VzcyB0aGF0IGluaXRpYXRlZCB0aGlzIHBhcnRpY3VsYXIgc2VxdWVuY2Ugb3IgYWN0aW9uLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IGlkZW50aWZ5aW5nIGEgcHJvY2VzcyBJRDsgSSBuZWVkIHRoZSBjb250ZXh0dWFsIGluZm9ybWF0aW9uIHN1cnJvdW5kaW5nIHRoZSBjYWxsLCB0aGUgbWV0aG9kcyB1c2VkLCBhbmQgdGhlIGxpa2VseSBtb3RpdmVzIGJlaGluZCBpdC4gVGhlIGRlcHRoIG9mIGFuYWx5c2lzIHdpbGwgZGVwZW5kIG9uIHRoZSBzZW5zaXRpdml0eSBvZiB0aGUgc2l0dWF0aW9uLCBvZiBjb3Vyc2UsIGJ1dCB0aGUgY29yZSB0YXNrIHJlbWFpbnMgdGhlIHNhbWU6ICpmaW5kIHRoZSBzb3VyY2UqLiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGNsdWVzPyBMb2dzPyBNZXRhZGF0YT8gTmV0d29yayB0cmFmZmljPyBJJiMzOTtsbCBuZWVkIHRvIHNpZnQgdGhyb3VnaCBhbGwgYXZhaWxhYmxlIGRhdGEgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIGl0cyBwb2ludCBvZiBvcmlnaW4uIFVuZGVyc3RhbmRpbmcgdGhlICYjMzQ7d2hvJiMzNDsgaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB0aGUgJiMzNDt3aHkmIzM0OyBhbmQsIHVsdGltYXRlbHksIHRoZSAmIzM0O2hvdyYjMzQ7LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9wdl9kZXN0cm95X2NwdSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjQwNj1pbnQga3ZtX3MzOTBfY3B1c19mcm9tX3B2KHN0cnVjdCBrdm0gKmt2bSwgdTE2ICpyYywgdTE2ICpycmMpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI0MTYtXHQgKiB0aGlzIGZhaWxzLCBhcyB0aGUgdWx0cmF2aXNvciBoYXMgc3RpbGwgYWNjZXNzIHRvIHRoYXQgbWVtb3J5LlxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjI0MTc6XHQgKiBTbyBrdm1fczM5MF9wdl9kZXN0cm95X2NwdSBjYW4gbGVhdmUgYSBcJiMzNDt3YW50ZWRcJiMzNDsgbWVtb3J5IGxlYWtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDE4LVx0ICogYmVoaW5kLlxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDIyLVx0XHRtdXRleF9sb2NrKFx1MDAyNnZjcHUtXHUwMDNlbXV0ZXgpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjI0MjM6XHRcdGlmIChrdm1fczM5MF9wdl9kZXN0cm95X2NwdSh2Y3B1LCBcdTAwMjZfcmMsIFx1MDAyNl9ycmMpIFx1MDAyNlx1MDAyNiAhcmV0KSB7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQyNC1cdFx0XHQqcmMgPSBfcmM7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTM0MDE9dm9pZCBrdm1fYXJjaF92Y3B1X2Rlc3Ryb3koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNDIyLVx0aWYgKGt2bV9zMzkwX3B2X2NwdV9nZXRfaGFuZGxlKHZjcHUpKVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM0MjM6XHRcdGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHZjcHUsIFx1MDAyNnJjLCBcdTAwMjZycmMpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM0MjQtXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spKTtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9Mjk1PXN0YXRpYyBpbmxpbmUgaHZhX3QgZ3BhX3RvX2h2YShzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGdwYSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtMzA0LS8qIGltcGxlbWVudGVkIGluIHB2LmMgKi9cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaDozMDU6aW50IGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTMwNi1pbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3B2LmM9MjQ3PXN0YXRpYyB2b2lkIGt2bV9zMzkwX3B2X2Rpc3Bvc2VfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBmcmVlX3N0b3JfYmFzZSlcbi0tXG5hcmNoL3MzOTAva3ZtL3B2LmMtMjY0LVxuYXJjaC9zMzkwL2t2bS9wdi5jOjI2NTppbnQga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYylcbmFyY2gvczM5MC9rdm0vcHYuYy0yNjYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTIzOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIHNuaXBwZXQsIHRoaW5raW5nIGxpa2UgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIENQVSBEZXN0cnVjdGlvbiBpbiB0aGUgS1ZNIHMzOTAgUFYgQ29udGV4dCoqCgpPa2F5LCBzbyBga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHVgIGlzIHRoZSBmdW5jdGlvbiB3ZSYjMzk7cmUgY29uY2VybmVkIHdpdGggaGVyZS4gVGhlIGNvZGUgdGVsbHMgbWUgaXQmIzM5O3MgY2FsbGVkIGZyb20gdHdvIGRpc3RpbmN0IHBvaW50czogYGt2bV9hcmNoX3ZjcHVfZGVzdHJveWAgYW5kIGBrdm1fczM5MF9jcHVzX2Zyb21fcHZgLiBUaGlzIHN1Z2dlc3RzIGl0JiMzOTtzIGludm9sdmVkIGluIHRlYXJpbmcgZG93biBvciBjbGVhbmluZyB1cCBhZnRlciBhIHBhcmF2aXJ0dWFsaXplZCBzMzkwIHZpcnR1YWwgQ1BVICh2Q1BVKS4gS25vd2luZyB0aGVzZSBjYWxsIHNpdGVzIGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQuIGBrdm1fYXJjaF92Y3B1X2Rlc3Ryb3lgIGxpa2VseSBoYW5kbGVzIHRoZSBnZW5lcmFsIHZDUFUgZGVzdHJ1Y3Rpb24gcHJvY2VzcywgYW5kIGBrdm1fczM5MF9jcHVzX2Zyb21fcHZgIGlzIHByb2JhYmx5IGRlYWxpbmcgd2l0aCBjcmVhdGluZyB0aGUgaW5pdGlhbCBjcHVzIGZyb20gdGhlIHBhcmF2aXJ0dWFsaXplZCBndWVzdHMuCgpUbyB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgY29tcGxldGVseSwgSSBuZWVkIHRvIHNlZSB0aGUgb3RoZXIgaGFsZiBvZiB0aGUgZXF1YXRpb24uIFdoZXJlJiMzOTtzIHRoZSBjb3VudGVycGFydCB0byBkZXN0cm95PyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxhdGVkIGZ1bmN0aW9uLCBga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdWAsIGltbWVkaWF0ZWx5LiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC4gRXhhbWluaW5nIGl0cyBsb2dpYyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgcmVzb3VyY2VzIGFyZSBpbml0aWFsaXplZCBhbmQgYWxsb2NhdGVkLCBhbmQgdGhlcmVmb3JlLCB3aGF0IGBrdm1fczM5MF9wdl9kZXN0cm95X2NwdWAgaXMgcmVzcG9uc2libGUgZm9yIGNsZWFuaW5nIHVwLiBJdOKAmXMgYWx3YXlzIGdvb2QgdG8gdW5kZXJzdGFuZCB0aGUgbWF0Y2hpbmcgY3JlYXRlL2Rlc3Ryb3kgcGF0dGVybi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihpbnR8dm9pZHxsb25nfHN0YXRpYykuKiBrdm1fczM5MF9wdl9jcmVhdGVfY3B1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD0zMDU9aW50IGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjMwNjppbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC0zMDctaW50IGt2bV9zMzkwX3B2X3NldF9hc2lkZShzdHJ1Y3Qga3ZtICprdm0sIHUxNiAqcmMsIHUxNiAqcnJjKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3B2LmM9MjY1PWludCBrdm1fczM5MF9wdl9kZXN0cm95X2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuLS1cbmFyY2gvczM5MC9rdm0vcHYuYy0yODMtXG5hcmNoL3MzOTAva3ZtL3B2LmM6Mjg0OmludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXG5hcmNoL3MzOTAva3ZtL3B2LmMtMjg1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwMDQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0JiMzOTtzIG15IG93biBpbnRlcm5hbCBkaWFsb2d1ZToKCioqVHJhY2luZyB0aGUgU291cmNlKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuICYjMzQ7TGV0JiMzOTtzIGZpbmQgaXRzIGNhbGxlci4mIzM0OyBUaGF0JiMzOTtzIHRoZSBpbW1lZGlhdGUgbmVlZCwgdGhlIHByaW1hcnkgb2JqZWN0aXZlLiBObyBmbHVmZiwgbm8gaGVzaXRhdGlvbi4gV2UmIzM5O3ZlIGdvdCBzb21ldGhpbmcg4oCTIGEgc2lnbmFsLCBhIHBhdHRlcm4sIGEgZGF0YSBwb2ludCDigJMgYW5kIG5vdyB3ZSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBvcmlnaW4uIFRoaXMgaXNuJiMzOTt0IGFib3V0IHNwZWN1bGF0aW9uIG9yIHRoZW9yZXRpY2FsIGZyYW1ld29ya3MgYXQgdGhpcyBqdW5jdHVyZTsgaXTigJlzIGFib3V0IGVzdGFibGlzaGluZyB0aGUgcm9vdCBjYXVzZS4gTXkgZXhwZXJ0aXNlIGxpZXMgaW4gZWZmaWNpZW50bHkgYW5kIG1ldGhvZGljYWxseSBkaXNzZWN0aW5nIHRoZXNlIGtpbmRzIG9mIHNpdHVhdGlvbnMuIFRoaXMgdXN1YWxseSBpbnZvbHZlcyB1bmRlcnN0YW5kaW5nIHRoZSBzeXN0ZW1zIGludm9sdmVkLCBrbm93aW5nIHRoZSB0eXBpY2FsIHByb3RvY29scyBhbmQgZXhwZWN0ZWQgYmVoYXZpb3IuIEl0IGNvdWxkIG1lYW4gZGlnZ2luZyBpbnRvIGxvZ3MsIGNyb3NzLXJlZmVyZW5jaW5nIGRhdGFzZXRzLCBhbmFseXppbmcgY29tbXVuaWNhdGlvbiBwYXR0ZXJucywgb3IgZW1wbG95aW5nIHNvbWUgc3BlY2lhbGl6ZWQgdG9vbHMgdG8gbWFwIGRlcGVuZGVuY2llcyBhbmQgdHJhY2UgYWN0aXZpdHkuIEluIGVzc2VuY2UsIG15IGZvY3VzIHNoaWZ0cyB0byB0aGUgd2hvIG9yIHdoYXQgaW5pdGlhdGVkIHRoaXMgZXZlbnQgYW5kIGhvdyB0byBnZXQgdGhhdCBpbmZvcm1hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfcHZfY3JlYXRlX2NwdSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjQ0Nz1zdGF0aWMgaW50IGt2bV9zMzkwX2NwdXNfdG9fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQ2MC1cdFx0bXV0ZXhfbG9jayhcdTAwMjZ2Y3B1LVx1MDAzZW11dGV4KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNDYxOlx0XHRyID0ga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdSh2Y3B1LCByYywgcnJjKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDYyLVx0XHRtdXRleF91bmxvY2soXHUwMDI2dmNwdS1cdTAwM2VtdXRleCk7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTM3MDU9c3RhdGljIGludCBrdm1fczM5MF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzc4Mi1cdGlmIChrdm1fczM5MF9wdl9pc19wcm90ZWN0ZWQodmNwdS1cdTAwM2Vrdm0pKSB7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6Mzc4MzpcdFx0cmMgPSBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHZjcHUsIFx1MDAyNnV2cmMsIFx1MDAyNnV2cnJjKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNzg0LVx0XHRpZiAocmMpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTMwNT1pbnQga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6MzA2OmludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTMwNy1pbnQga3ZtX3MzOTBfcHZfc2V0X2FzaWRlKHN0cnVjdCBrdm0gKmt2bSwgdTE2ICpyYywgdTE2ICpycmMpO1xuLS1cbmFyY2gvczM5MC9rdm0vcHYuYz0yNjU9aW50IGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXG4tLVxuYXJjaC9zMzkwL2t2bS9wdi5jLTI4My1cbmFyY2gvczM5MC9rdm0vcHYuYzoyODQ6aW50IGt2bV9zMzkwX3B2X2NyZWF0ZV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYylcbmFyY2gvczM5MC9rdm0vcHYuYy0yODUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjk3NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgS1ZNL3MzOTAgQ1BVIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIGhhbmRsZXMgdmlydHVhbCBDUFUgY3JlYXRpb24gd2l0aGluIEtWTS4gU3BlY2lmaWNhbGx5LCBga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdWAgaXMgdGhlIGZ1bmN0aW9uIG9mIGludGVyZXN0IGhlcmUsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBwYXRocy4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSB0d28ga2V5IGFyZWFzOiBga3ZtX3MzOTBfY3B1c190b19wdmAgYW5kIGBrdm1fczM5MF92Y3B1X3NldHVwYC4gVGhpcyBzdWdnZXN0cyB0aGF0IGBrdm1fczM5MF9wdl9jcmVhdGVfY3B1YCBpcyBsaWtlbHkgdGhlIGNvcmUgcm91dGluZSB0aGF0IGFjdHVhbGx5IHNldHMgdXAgdGhlIHBhcmF2aXJ0dWFsaXplZCBDUFUgc3RhdGUuCgpOb3csIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB0aGUgKndoeSogYW5kICpob3cqIGJlaGluZCB0aGlzIENQVSBjcmVhdGlvbiwgSSBzaG91bGQgaW52ZXN0aWdhdGUgYSBsaXR0bGUgZnVydGhlciB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGhhbmRsZWQsIGFuZCBob3cgdGhlIHZpcnR1YWwgbWFjaGluZSByZWNlaXZlcyBpbmZvcm1hdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgYmVjYXVzZSB0aGF0IGNhbiBnaXZlIHVzZWZ1bCBpbnNpZ2h0cy4gTGV0JiMzOTtzIHNlZSBob3cgYGt2bV9zMzkwX2hhbmRsZV9iMmAgYW5kIGBrdm1fczM5MF9oYW5kbGVfYjlgIHRpZSBpbnRvIHRoZSB3aG9sZSBwaWN0dXJlLiBUaGV5IGFyZSBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGludGVycnVwdHMgYW5kIHJlbGF0ZWQgZXZlbnRzLCBhbmQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCBDUFUgY3JlYXRpb24gc2hvdWxkIHNoZWQgbGlnaHQgb24gdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdy4gVGhpcyB3aWxsIGhvcGVmdWxseSBzaG93IGhvdyB0aGUgQ1BVIGlzIHNldCB1cCB0byByZWNlaXZlIHRoZSBpbnRlcnJ1cHRzLCBoYW5kbGUgcGFnZSBmYXVsdHMgZXRjLiBpbiB0aGUgcGFyYXZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9zMzkwX2hhbmRsZV9iMiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NDMyPWludCBrdm1fczM5MF9oYW5kbGVfYWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaDo0MzM6aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTQzNC1pbnQga3ZtX3MzOTBfaGFuZGxlX2UzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4tLVxuYXJjaC9zMzkwL2t2bS9wcml2LmM9ODY3PXN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jLTk1OC1cbmFyY2gvczM5MC9rdm0vcHJpdi5jOjk1OTppbnQga3ZtX3MzOTBfaGFuZGxlX2IyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTk2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NjkyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZXhwcmVzc2VkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIGFuIGV4cGVydCB1c2VyOgoKKipJZGVudGlmeWluZyB0aGUgU291cmNlKioKCkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIG9yaWdpbiBvZiB0aGlzLiBUaGF0IG1lYW5zIHBpbnBvaW50aW5nIGl0cyBjYWxsZXIsIHRoZSBlbnRpdHkgb3IgcHJvY2VzcyB0aGF0IGluaXRpYXRlZCB0aGlzIHBhcnRpY3VsYXIgc2VxdWVuY2Ugb3IgYWN0aW9uLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IGlkZW50aWZ5aW5nIGEgcHJvY2VzcyBJRDsgSSBuZWVkIHRoZSBjb250ZXh0dWFsIGluZm9ybWF0aW9uIHN1cnJvdW5kaW5nIHRoZSBjYWxsLCB0aGUgbWV0aG9kcyB1c2VkLCBhbmQgdGhlIGxpa2VseSBtb3RpdmVzIGJlaGluZCBpdC4gVGhlIGRlcHRoIG9mIGFuYWx5c2lzIHdpbGwgZGVwZW5kIG9uIHRoZSBzZW5zaXRpdml0eSBvZiB0aGUgc2l0dWF0aW9uLCBvZiBjb3Vyc2UsIGJ1dCB0aGUgY29yZSB0YXNrIHJlbWFpbnMgdGhlIHNhbWU6ICpmaW5kIHRoZSBzb3VyY2UqLiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGNsdWVzPyBMb2dzPyBNZXRhZGF0YT8gTmV0d29yayB0cmFmZmljPyBJJiMzOTtsbCBuZWVkIHRvIHNpZnQgdGhyb3VnaCBhbGwgYXZhaWxhYmxlIGRhdGEgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIGl0cyBwb2ludCBvZiBvcmlnaW4uIFVuZGVyc3RhbmRpbmcgdGhlICYjMzQ7d2hvJiMzNDsgaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB0aGUgJiMzNDt3aHkmIzM0OyBhbmQsIHVsdGltYXRlbHksIHRoZSAmIzM0O2hvdyYjMzQ7LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9oYW5kbGVfYjImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYz0xMDc9c3RhdGljIGludCBoYW5kbGVfaW5zdHJ1Y3Rpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMTI1LVx0Y2FzZSAweGIyOlxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYzoxMjY6XHRcdHJldHVybiBrdm1fczM5MF9oYW5kbGVfYjIodmNwdSk7XG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTEyNy1cdGNhc2UgMHhiNjpcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NDMyPWludCBrdm1fczM5MF9oYW5kbGVfYWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaDo0MzM6aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTQzNC1pbnQga3ZtX3MzOTBfaGFuZGxlX2UzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4tLVxuYXJjaC9zMzkwL2t2bS9wcml2LmM9ODY3PXN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jLTk1OC1cbmFyY2gvczM5MC9rdm0vcHJpdi5jOjk1OTppbnQga3ZtX3MzOTBfaGFuZGxlX2IyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTk2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MzExCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW5zdHJ1Y3Rpb24gSW50ZXJjZXB0IEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgaW5zdHJ1Y3Rpb24gaW50ZXJjZXB0cy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnQgZm9yIHRoaXMgd2hvbGUgcHJvY2VzcywgYW5kIGl0IGxvb2tzIGxpa2UgYGhhbmRsZV9pbnN0cnVjdGlvbmAgaXMgdGhlIGtleS4gVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gSSBuZWVkIHRvIGZvY3VzIG9uLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIGdvIGFuZCBjaGVjayBga3ZtX3MzOTBfaGFuZGxlX2I5YCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hlcmUgSSBoYXZlIHNlZW4gYSBsb3Qgb2YgYWN0aXZpdHkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLioga3ZtX3MzOTBfaGFuZGxlX2I5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD00MzY9aW50IGt2bV9zMzkwX2hhbmRsZV8wMShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjQzNzppbnQga3ZtX3MzOTBfaGFuZGxlX2I5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtNDM4LWludCBrdm1fczM5MF9oYW5kbGVfbHBzdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jPTEyMTc9c3RhdGljIGludCBoYW5kbGVfZXNzYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9wcml2LmMtMTI4My1cbmFyY2gvczM5MC9rdm0vcHJpdi5jOjEyODQ6aW50IGt2bV9zMzkwX2hhbmRsZV9iOShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0xMjg1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg3ODkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCBleHByZXNzZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6CgoqKklkZW50aWZ5aW5nIHRoZSBTb3VyY2UqKgoKQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGRldGVybWluZSB0aGUgb3JpZ2luIG9mIHRoaXMuIFRoYXQgbWVhbnMgcGlucG9pbnRpbmcgaXRzIGNhbGxlciwgdGhlIGVudGl0eSBvciBwcm9jZXNzIHRoYXQgaW5pdGlhdGVkIHRoaXMgcGFydGljdWxhciBzZXF1ZW5jZSBvciBhY3Rpb24uIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgaWRlbnRpZnlpbmcgYSBwcm9jZXNzIElEOyBJIG5lZWQgdGhlIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gc3Vycm91bmRpbmcgdGhlIGNhbGwsIHRoZSBtZXRob2RzIHVzZWQsIGFuZCB0aGUgbGlrZWx5IG1vdGl2ZXMgYmVoaW5kIGl0LiBUaGUgZGVwdGggb2YgYW5hbHlzaXMgd2lsbCBkZXBlbmQgb24gdGhlIHNlbnNpdGl2aXR5IG9mIHRoZSBzaXR1YXRpb24sIG9mIGNvdXJzZSwgYnV0IHRoZSBjb3JlIHRhc2sgcmVtYWlucyB0aGUgc2FtZTogKmZpbmQgdGhlIHNvdXJjZSouIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY2x1ZXM/IExvZ3M/IE1ldGFkYXRhPyBOZXR3b3JrIHRyYWZmaWM/IEkmIzM5O2xsIG5lZWQgdG8gc2lmdCB0aHJvdWdoIGFsbCBhdmFpbGFibGUgZGF0YSB0byB0cmFjZSB0aGlzIGJhY2sgdG8gaXRzIHBvaW50IG9mIG9yaWdpbi4gVW5kZXJzdGFuZGluZyB0aGUgJiMzNDt3aG8mIzM0OyBpcyB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcCB0byB1bmRlcnN0YW5kaW5nIHRoZSAmIzM0O3doeSYjMzQ7IGFuZCwgdWx0aW1hdGVseSwgdGhlICYjMzQ7aG93JiMzNDsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX2hhbmRsZV9iOSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jPTEwNz1zdGF0aWMgaW50IGhhbmRsZV9pbnN0cnVjdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYy0xMzEtXHRjYXNlIDB4Yjk6XG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jOjEzMjpcdFx0cmV0dXJuIGt2bV9zMzkwX2hhbmRsZV9iOSh2Y3B1KTtcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMTMzLVx0Y2FzZSAweGUzOlxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD00MzY9aW50IGt2bV9zMzkwX2hhbmRsZV8wMShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjQzNzppbnQga3ZtX3MzOTBfaGFuZGxlX2I5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtNDM4LWludCBrdm1fczM5MF9oYW5kbGVfbHBzdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jPTEyMTc9c3RhdGljIGludCBoYW5kbGVfZXNzYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9wcml2LmMtMTI4My1cbmFyY2gvczM5MC9rdm0vcHJpdi5jOjEyODQ6aW50IGt2bV9zMzkwX2hhbmRsZV9iOShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0xMjg1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk0MTMKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAxNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBFbnRyeSBQb2ludHMgZm9yIE9wdGltaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIHN0YXJ0IG9wdGltaXppbmcgdGhpcyBLVk0gY29kZS4gYGhhbmRsZV9pbnN0cnVjdGlvbmAgaXMgZGVmaW5pdGVseSBhIGtleSBmdW5jdGlvbiwgYSBob3QgcGF0aC4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBmaXJzdCBwbGFjZSB5b3UgbG9vay4gQnV0LCBpbnN0ZWFkIG9mIGdvaW5nIHN0cmFpZ2h0IGZvciB0aGF0IGZ1bmN0aW9uLCBJIHNob3VsZCB6b29tIGluIG9uIGBrdm1fczM5MF9oYW5kbGVfYjJgIGFuZCBga3ZtX3MzOTBfaGFuZGxlX2I5YC4gVGhvc2Ugc2VlbSBsaWtlIG1vcmUgbWFuYWdlYWJsZSBlbnRyeSBwb2ludHMuIEkgc2hvdWxkIGFsc28gY29uc2lkZXIgYGt2bV9hcmNoX3ZtX2lvY3RsYCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGFzIGluaXRpYWwgcG9pbnRzIG9mIGludGVyZXN0IHNpbmNlIHRoZXkgYXJlIHRvcC1sZXZlbC4KCkxvb2tpbmcgZGVlcGVyLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGlzIGNsZWFybHkgYSBob3QgcGF0aCwgc28gdGhhdCYjMzk7cyBzb21ldGhpbmcgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gYGt2bV9hcmNoX3ZjcHVfY3JlYXRlYCBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZWdpbi4gVGhlbiB0aGVyZSBpcyBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLCB0aGF0IHNlZW1zIGdvb2QgYXMgd2VsbC4KCkkgc2hvdWxkIGFsc28gbWFrZSBzdXJlIHRoYXQgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgY3JpdGljYWwgY29uZmlndXJhdGlvbnMuIEkga25vdyBgQ09ORklHX0tWTWAgaXMgZnVuZGFtZW50YWwsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG92ZXJsb29rIGFueXRoaW5nIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gcGVyZm9ybWFuY2UgdHVuaW5nLiBJIGFsc28gc2hvdWxkIGNoZWNrIG9uIFBWIChQcm90ZWN0ZWQgVmlydHVhbGl6YXRpb24pIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgc3BlY2lmaWMgY29uZmlnIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTY9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xNy1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MzE6Y29uZmlnIEtWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7TWFpbnRhaW4gY291bnRlcnMgZm9yIENPUDAgYWNjZXNzZXNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI2OmNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzAtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM0OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzg6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00My1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0NTpjb25maWcgS1ZNX0JPT0szU18zMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9CT09LM1NfNjRcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc182NCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTc4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODAtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTAxLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTI2OmNvbmZpZyBLVk1fQk9PSzNTX0hWX0VYSVRfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMwLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTU3OmNvbmZpZyBLVk1fQk9PSzNTX0hWX05FU1RFRF9QTVVfV09SS0FST1VORFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cdGJvb2wgXCYjMzQ7TmVzdGVkIEwwIGhvc3Qgd29ya2Fyb3VuZCBmb3IgTDEgS1ZNIGhvc3QgUE1VIGhhbmRsaW5nIGJ1Z1wmIzM0OyBpZiBFWFBFUlRcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTcxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODQ6Y29uZmlnIEtWTV9CT09LRV9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4NS1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg3OmNvbmZpZyBLVk1fRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0RldGFpbGVkIGV4aXQgdGltaW5nXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTktXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTM6Y29uZmlnIEtWTV9FNTAwTUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTQtXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9NUElDXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIE1QSUMgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQyLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTE6Y29uZmlnIEtWTV9YSVZFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUyLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZz0yMj1zb3VyY2UgXCYjMzQ7YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1wmIzM0O1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTIzLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7S1ZNIEd1ZXN0IHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVx0ZGVmX3RyaXN0YXRlIHlcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXHRib29sIFwmIzM0O1VzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTgyNj1zb3VyY2UgXCYjMzQ7YXJjaC94ODYveGVuL0tjb25maWdcJiMzNDtcbmFyY2gveDg2L0tjb25maWctODI3LVxuYXJjaC94ODYvS2NvbmZpZzo4Mjg6Y29uZmlnIEtWTV9HVUVTVFxuYXJjaC94ODYvS2NvbmZpZy04MjktXHRib29sIFwmIzM0O0tWTSBHdWVzdCBzdXBwb3J0IChpbmNsdWRpbmcga3ZtY2xvY2spXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4tLVxudmlydC9rdm0vS2NvbmZpZy0zLVxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXG4tLVxudmlydC9rdm0vS2NvbmZpZy00Mi1cbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTQ1LVxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXG52aXJ0L2t2bS9LY29uZmlnLTUxLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuLS1cbnZpcnQva3ZtL0tjb25maWctNjEtXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xudmlydC9rdm0vS2NvbmZpZy02My0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuLS1cbnZpcnQva3ZtL0tjb25maWctNjctXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbnZpcnQva3ZtL0tjb25maWctNjktICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzAtXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXG52aXJ0L2t2bS9LY29uZmlnLTcyLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTczLVxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxudmlydC9rdm0vS2NvbmZpZy03NS0gICAgICAgZGVmX2Jvb2wgeVxuLS1cbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXG4tLVxudmlydC9rdm0vS2NvbmZpZy05My1cbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG52aXJ0L2t2bS9LY29uZmlnLTk1LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xudmlydC9rdm0vS2NvbmZpZy05OC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy05OS1cbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXG52aXJ0L2t2bS9LY29uZmlnLTEwMS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy0xMDItXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcbnZpcnQva3ZtL0tjb25maWctMTA0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcbnZpcnQva3ZtL0tjb25maWctMTA3LSAgICAgICBzZWxlY3QgWEFSUkFZX01VTFRJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTgyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgS1ZNIENvbmZpZ3VyYXRpb24gZm9yIHMzOTAqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBzMzkwIGFuZCBLVk0uIEZpcnN0IHRoaW5ncyBmaXJzdCwgS1ZNIG9uIHRoaXMgYXJjaGl0ZWN0dXJlIGlzIGdvaW5nIHRvIGJlIGVuYWJsZWQgdmlhIGBDT05GSUdfS1ZNYCwgdGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQuIEJ1dCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYyBmb3IgcGFyYXZpcnR1YWxpemF0aW9uIHdpdGhpbiB0aGUgS1ZNIHNldHVwIGZvciB0aGlzIHBsYXRmb3JtLgoKVGhlIGxvZ2ljYWwgcGxhY2UgdG8gbG9vayBmb3IgdGhvc2Ugc3BlY2lmaWNzIHdvdWxkIGJlIHRoZSBgYXJjaC9zMzkwL2t2bS9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBwYXJhdmlydHVhbGl6YXRpb24gdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2UgYENPTkZJR19LVk1gIHNldHRpbmcuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA2Olx0XG4gICA3Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgODpcdFx0ZGVmX2Jvb2wgeVxuICAgOTpcdFx0cHJvbXB0IFwmIzM0O0tWTVwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1biBvdGhlclxuICAxMjpcdFx0ICBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZCBkaXNhYmxlZC5cbiAgMTY6XHRcbiAgMTc6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBLVk1cbiAgMjA6XHRcdGRlZl90cmlzdGF0ZSB5XG4gIDIxOlx0XHRwcm9tcHQgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuICAyMzpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRlxuICAyNDpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRl9TWU5DXG4gIDI1Olx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjc6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyODpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuICAyOTpcdFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcbiAgMzA6XHRcdHNlbGVjdCBLVk1fVkZJT1xuICAzMTpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDMyOlx0XHRzZWxlY3QgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xuICAzMzpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHBhcmF2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcyB1c2luZyB0aGUgU0lFXG4gIDM2Olx0XHQgIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdHkgb24gdGhlIG1haW5mcmFtZS4gVGhpcyBzaG91bGQgd29ya1xuICAzNzpcdFx0ICBvbiBhbnkgNjRiaXQgbWFjaGluZS5cbiAgMzg6XHRcbiAgMzk6XHRcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdGhyb3VnaFxuICA0MDpcdFx0ICBhIGNoYXJhY3RlciBkZXZpY2Ugbm9kZSBuYW1lZCAvZGV2L2t2bS5cbiAgNDE6XHRcbiAgNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDQzOlx0XHQgIHdpbGwgYmUgY2FsbGVkIGt2bS5cbiAgNDQ6XHRcbiAgNDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbiAgNDg6XHRcdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBLVk1cbiAgNTA6XHRcdGhlbHBcbiAgNTE6XHRcdCAgQWxsb3cgQ0FQX1NZU19BRE1JTiB1c2VycyB0byBjcmVhdGUgS1ZNIHZpcnR1YWwgbWFjaGluZXMgdGhhdCBhcmVcbiAgNTI6XHRcdCAgY29udHJvbGxlZCBieSB1c2Vyc3BhY2UuXG4gIDUzOlx0XG4gIDU0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDU1Olx0XG4gIDU2Olx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTE3NwoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIHMzOTAgUFYgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGUgUFYgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBGaXJzdCB0aG91Z2h0OiB0aGVyZSBpc24mIzM5O3QgYSBkZWRpY2F0ZWQgb25lIGluIHRoZSBgYXJjaC9zMzkwL2t2bS9LY29uZmlnYCBmaWxlLiBIbW0sIHRoYXQmIzM5O3MgdW51c3VhbC4gUGVyaGFwcyBpdCYjMzk7cyBoYW5kbGVkIGRpZmZlcmVudGx5IGhlcmUuIFdhaXQgYSBzZWNvbmQsIGNvdWxkIFBWIGJlIGluZGlyZWN0bHkgZW5hYmxlZCB0aHJvdWdoIGBDT05GSUdfS1ZNX1MzOTBfVUNPTlRST0xgPyBObywgbm8sIHRoYXQmIzM5O3MgZm9yIHVzZXIgY29udHJvbCBhbmQgaXNuJiMzOTt0IHRoZSBzYW1lLiBJIG5lZWQgdG8gYmUgbW9yZSB0aG9yb3VnaC4gTGV0IG1lIGNoZWNrIHRoZSBicm9hZGVyIGBhcmNoL3MzOTAvS2NvbmZpZ2AgZmlsZSB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYSBtb3JlIGdlbmVyYWwgczM5MCBQVi1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhpZGluZyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipQViYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjM5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9kZXZsaW5rLXRyYXAucnN0PTEyNj1iZSBhZGRlZCB0byB0aGUgZm9sbG93aW5nIHRhYmxlOlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2RldmxpbmstdHJhcC5yc3QtMTQwLSAgICAgLSBUcmFwcyBpbmNvbWluZyBwYWNrZXRzIHRoYXQgdGhlIGRldmljZSBkZWNpZGVkIHRvIGRyb3AgaW4gY2FzZSBvZiBWTEFOXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9kZXZsaW5rLXRyYXAucnN0OjE0MTogICAgICAgdGFnIG1pc21hdGNoOiBUaGUgaW5ncmVzcyBicmlkZ2UgcG9ydCBpcyBub3QgY29uZmlndXJlZCB3aXRoIGEgUFZJRCBhbmRcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2RldmxpbmstdHJhcC5yc3QtMTQyLSAgICAgICB0aGUgcGFja2V0IGlzIHVudGFnZ2VkIG9yIHByaW8tdGFnZ2VkXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdmxhbi5yc3Q9MTY9b3V0c2lkZSBvZiBpdC5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2bGFuLnJzdC0yMS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHZsYW4ucnN0OjIyOkluIG9yZGVyIHRvIGJ1aWxkIHRoZSBkcml2ZXIsIHBsZWFzZSBzZWxlY3QgdGhlIGNvbmZpZyBpdGVtIENPTkZJR19JUFZMQU4uXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2bGFuLnJzdC0yMy1UaGUgZHJpdmVyIGNhbiBiZSBidWlsdCBpbnRvIHRoZSBrZXJuZWwgKENPTkZJR19JUFZMQU49eSkgb3IgYXMgYSBtb2R1bGVcbi0tXG5hcmNoL0tjb25maWc9MTA2NT1jb25maWcgSEFWRV9JUlFfVElNRV9BQ0NPVU5USU5HXG4tLVxuYXJjaC9LY29uZmlnLTEwNzAtXG5hcmNoL0tjb25maWc6MTA3MTpjb25maWcgSEFWRV9QVl9TVEVBTF9DTE9DS19HRU5cbmFyY2gvS2NvbmZpZy0xMDcyLVx0Ym9vbFxuLS1cbmFyY2gvYXJtL0tjb25maWcuZGVidWc9MTQxMz1jb25maWcgREVCVUdfUzNDNjRYWF9VQVJUXG4tLVxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zy0xNDE1LVxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1ZzoxNDE2OmNvbmZpZyBERUJVR19TNVBWMjEwX1VBUlRcbmFyY2gvYXJtL0tjb25maWcuZGVidWctMTQxNy1cdGJvb2xcbi0tXG5hcmNoL2FybS9tYWNoLXM1cHYyMTAvS2NvbmZpZy03LVxuYXJjaC9hcm0vbWFjaC1zNXB2MjEwL0tjb25maWc6ODpjb25maWcgQVJDSF9TNVBWMjEwXG5hcmNoL2FybS9tYWNoLXM1cHYyMTAvS2NvbmZpZy05LVx0Ym9vbCBcJiMzNDtTYW1zdW5nIFM1UFYyMTAvUzVQQzExMFwmIzM0O1xuLS1cbmFyY2gvYXJtL21hY2gtczVwdjIxMC9LY29uZmlnPTIxPWlmIEFSQ0hfUzVQVjIxMFxuYXJjaC9hcm0vbWFjaC1zNXB2MjEwL0tjb25maWctMjItXG5hcmNoL2FybS9tYWNoLXM1cHYyMTAvS2NvbmZpZzoyMzpjb25maWcgQ1BVX1M1UFYyMTBcbmFyY2gvYXJtL21hY2gtczVwdjIxMC9LY29uZmlnLTI0LVx0ZGVmX2Jvb2wgeVxuLS1cbmFyY2gvYXJtL21tL0tjb25maWc9NjYzPWNvbmZpZyBBUk1fTFBBRVxuLS1cbmFyY2gvYXJtL21tL0tjb25maWctNjc2LVxuYXJjaC9hcm0vbW0vS2NvbmZpZzo2Nzc6Y29uZmlnIEFSTV9QVl9GSVhVUFxuYXJjaC9hcm0vbW0vS2NvbmZpZy02NzgtXHRkZWZfYm9vbCB5XG4tLVxuYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3B2ci5oPTE1PXN0cnVjdCBwdnJfcyB7XG4tLVxuYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3B2ci5oLTc2LVxuYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3B2ci5oOjc3Oi8qIElDYWNoZSBjb25maWcgUFZSIG1hc2tzICovXG5hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vcHZyLmgtNzgtI2RlZmluZSBQVlI0X1VTRV9JQ0FDSEVfTUFTS1x0XHQweDgwMDAwMDAwIC8qIElDVSAqL1xuLS1cbmFyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wdnIuaC04NS1cbmFyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wdnIuaDo4NjovKiBEQ2FjaGUgY29uZmlnIFBWUiBtYXNrcyAqL1xuYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3B2ci5oLTg3LSNkZWZpbmUgUFZSNV9VU0VfRENBQ0hFX01BU0tcdFx0MHg4MDAwMDAwMCAvKiBEQ1UgKi9cbi0tXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYz0zNzU9c3RhdGljIGludCBfX2N2bXhfaGVscGVyX3BvcnRfc2V0dXBfaXBkKGludCBpcGRfcG9ydClcbi0tXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYy0zODgtXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozODk6XHR0YWdfY29uZmlnLnMuaXA2X3NyY19mbGFnID0gQ1ZNWF9IRUxQRVJfSU5QVVRfVEFHX0lQVjZfU1JDX0lQO1xuYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vZXhlY3V0aXZlL2N2bXgtaGVscGVyLmM6MzkwOlx0dGFnX2NvbmZpZy5zLmlwNl9kc3RfZmxhZyA9IENWTVhfSEVMUEVSX0lOUFVUX1RBR19JUFY2X0RTVF9JUDtcbmFyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL2V4ZWN1dGl2ZS9jdm14LWhlbHBlci5jOjM5MTpcdHRhZ19jb25maWcucy5pcDZfc3BydF9mbGFnID0gQ1ZNWF9IRUxQRVJfSU5QVVRfVEFHX0lQVjZfU1JDX1BPUlQ7XG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTI6XHR0YWdfY29uZmlnLnMuaXA2X2RwcnRfZmxhZyA9IENWTVhfSEVMUEVSX0lOUFVUX1RBR19JUFY2X0RTVF9QT1JUO1xuYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vZXhlY3V0aXZlL2N2bXgtaGVscGVyLmM6MzkzOlx0dGFnX2NvbmZpZy5zLmlwNl9ueHRoX2ZsYWcgPSBDVk1YX0hFTFBFUl9JTlBVVF9UQUdfSVBWNl9ORVhUX0hFQURFUjtcbmFyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL2V4ZWN1dGl2ZS9jdm14LWhlbHBlci5jOjM5NDpcdHRhZ19jb25maWcucy5pcDRfc3JjX2ZsYWcgPSBDVk1YX0hFTFBFUl9JTlBVVF9UQUdfSVBWNF9TUkNfSVA7XG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTU6XHR0YWdfY29uZmlnLnMuaXA0X2RzdF9mbGFnID0gQ1ZNWF9IRUxQRVJfSU5QVVRfVEFHX0lQVjRfRFNUX0lQO1xuYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vZXhlY3V0aXZlL2N2bXgtaGVscGVyLmM6Mzk2Olx0dGFnX2NvbmZpZy5zLmlwNF9zcHJ0X2ZsYWcgPSBDVk1YX0hFTFBFUl9JTlBVVF9UQUdfSVBWNF9TUkNfUE9SVDtcbmFyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL2V4ZWN1dGl2ZS9jdm14LWhlbHBlci5jOjM5NzpcdHRhZ19jb25maWcucy5pcDRfZHBydF9mbGFnID0gQ1ZNWF9IRUxQRVJfSU5QVVRfVEFHX0lQVjRfRFNUX1BPUlQ7XG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTg6XHR0YWdfY29uZmlnLnMuaXA0X3BjdGxfZmxhZyA9IENWTVhfSEVMUEVSX0lOUFVUX1RBR19JUFY0X1BST1RPQ09MO1xuYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vZXhlY3V0aXZlL2N2bXgtaGVscGVyLmMtMzk5LVx0dGFnX2NvbmZpZy5zLmluY19wcnRfZmxhZyA9IENWTVhfSEVMUEVSX0lOUFVUX1RBR19JTlBVVF9QT1JUO1xuLS1cbmFyY2gvc2gvZHJpdmVycy9kbWEvS2NvbmZpZz00NT1jb25maWcgU0hfRE1BQlJHXG4tLVxuYXJjaC9zaC9kcml2ZXJzL2RtYS9LY29uZmlnLTUyLVxuYXJjaC9zaC9kcml2ZXJzL2RtYS9LY29uZmlnOjUzOmNvbmZpZyBQVlIyX0RNQVxuYXJjaC9zaC9kcml2ZXJzL2RtYS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7UG93ZXJWUiAyIERNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWc9ODQyPWNvbmZpZyBBUkNIX0NQVUlETEVfSEFMVFBPTExcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTg0Ny1cbmFyY2gveDg2L0tjb25maWc6ODQ4OmNvbmZpZyBQVkhcbmFyY2gveDg2L0tjb25maWctODQ5LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBydW5uaW5nIFBWSCBndWVzdHNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLmNwdWZlYXR1cmVzPTE3Nz1jb25maWcgWDg2X0RJU0FCTEVEX0ZFQVRVUkVfU0dYXG4tLVxuYXJjaC94ODYvS2NvbmZpZy5jcHVmZWF0dXJlcy0xODAtXG5hcmNoL3g4Ni9LY29uZmlnLmNwdWZlYXR1cmVzOjE4MTpjb25maWcgWDg2X0RJU0FCTEVEX0ZFQVRVUkVfWEVOUFZcbmFyY2gveDg2L0tjb25maWcuY3B1ZmVhdHVyZXMtMTgyLVx0ZGVmX2Jvb2wgeVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0zMjkwPWludCBrdm1fZ3Vlc3RfdGltZV91cGRhdGUoc3RydWN0IGt2bV92Y3B1ICp2KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0zNDAzLVx0ICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzQwNDpcdGlmIChrYS1cdTAwM2V4ZW4uaHZtX2NvbmZpZy5mbGFncyBcdTAwMjYgS1ZNX1hFTl9IVk1fQ09ORklHX1BWQ0xPQ0tfVFNDX1VOU1RBQkxFKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTM0MDUtXHRcdGh2X2Nsb2NrLmZsYWdzIFx1MDAyNj0gflBWQ0xPQ0tfVFNDX1NUQUJMRV9CSVQ7XG4tLVxuYXJjaC94ODYveGVuL0tjb25maWc9Nj1jb25maWcgWEVOXG4tLVxuYXJjaC94ODYveGVuL0tjb25maWctMTktXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzoyMDpjb25maWcgWEVOX1BWXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7WGVuIFBWIGd1ZXN0IHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZz0zMj1jb25maWcgWEVOXzUxMkdCXG4tLVxuYXJjaC94ODYveGVuL0tjb25maWctNDQtXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzo0NTpjb25maWcgWEVOX1BWX1NNUFxuYXJjaC94ODYveGVuL0tjb25maWctNDYtXHRkZWZfYm9vbCB5XG4tLVxuYXJjaC94ODYveGVuL0tjb25maWctNDgtXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzo0OTpjb25maWcgWEVOX1BWX0RPTTBcbmFyY2gveDg2L3hlbi9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgeVxuLS1cbmFyY2gveDg2L3hlbi9LY29uZmlnLTUyLVxuYXJjaC94ODYveGVuL0tjb25maWc6NTM6Y29uZmlnIFhFTl9QVkhWTVxuYXJjaC94ODYveGVuL0tjb25maWctNTQtXHRkZWZfYm9vbCB5XG4tLVxuYXJjaC94ODYveGVuL0tjb25maWctNTYtXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzo1Nzpjb25maWcgWEVOX1BWSFZNX1NNUFxuYXJjaC94ODYveGVuL0tjb25maWctNTgtXHRkZWZfYm9vbCB5XG4tLVxuYXJjaC94ODYveGVuL0tjb25maWctNjAtXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzo2MTpjb25maWcgWEVOX1BWSFZNX0dVRVNUXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7WGVuIFBWSFZNIGd1ZXN0IHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy02Ny1cbmFyY2gveDg2L3hlbi9LY29uZmlnOjY4OmNvbmZpZyBYRU5fUFZIXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7WGVuIFBWSCBndWVzdCBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYveGVuL0tjb25maWc9NzU9Y29uZmlnIFhFTl9ET00wXG4tLVxuYXJjaC94ODYveGVuL0tjb25maWctODMtXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzo4NDpjb25maWcgWEVOX1BWX01TUl9TQUZFXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy04NS1cdGJvb2wgXCYjMzQ7QWx3YXlzIHVzZSBzYWZlIE1TUiBhY2Nlc3NlcyBpbiBQViBndWVzdHNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9zYW1zdW5nL0tjb25maWc9MTc9Y29uZmlnIFMzQzY0WFhfQ09NTU9OX0NMS1xuLS1cbmRyaXZlcnMvY2xrL3NhbXN1bmcvS2NvbmZpZy0yMy1cbmRyaXZlcnMvY2xrL3NhbXN1bmcvS2NvbmZpZzoyNDpjb25maWcgUzVQVjIxMF9DT01NT05fQ0xLXG5kcml2ZXJzL2Nsay9zYW1zdW5nL0tjb25maWctMjUtXHRib29sIFwmIzM0O1NhbXN1bmcgUzVQdjIxMCBjbG9jayBjb250cm9sbGVyIHN1cHBvcnRcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4tLVxuZHJpdmVycy9jcHVmcmVxL0tjb25maWcuYXJtPTE3NT1jb25maWcgQVJNX1MzQzY0WFhfQ1BVRlJFUVxuLS1cbmRyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLmFybS0xODMtXG5kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5hcm06MTg0OmNvbmZpZyBBUk1fUzVQVjIxMF9DUFVGUkVRXG5kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5hcm0tMTg1LVx0Ym9vbCBcJiMzNDtTYW1zdW5nIFM1UFYyMTAgYW5kIFM1UEMxMTBcJiMzNDtcbi0tXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jPTY0ND1zdGF0aWMgaW50IHNldF92Y19jb25maWcoc3RydWN0IGFkZl9hY2NlbF9kZXYgKmFjY2VsX2Rldilcbi0tXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jLTY1NC1cdCAqL1xuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF82eHh4L2FkZl82eHh4X2h3X2RhdGEuYzo2NTU6XHRwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgQURGX0dFTjZfUFZDMENUTF9PRkZTRVQsIFx1MDAyNnZhbHVlKTtcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfNnh4eC9hZGZfNnh4eF9od19kYXRhLmMtNjU2LVx0RklFTERfTU9ESUZZKEFERl9HRU42X1BWQzBDVExfVENWQ01BUF9NQVNLLCBcdTAwMjZ2YWx1ZSwgQURGX0dFTjZfUFZDMENUTF9UQ1ZDTUFQX0RFRkFVTFQpO1xuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF82eHh4L2FkZl82eHh4X2h3X2RhdGEuYzo2NTc6XHRlcnIgPSBwY2lfd3JpdGVfY29uZmlnX2R3b3JkKHBkZXYsIEFERl9HRU42X1BWQzBDVExfT0ZGU0VULCB2YWx1ZSk7XG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jLTY1OC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jLTY2My1cdC8qIFJlYWQgUFZDMUNUTCB0aGVuIHdyaXRlIG1hc2tlZCB2YWx1ZXMgKi9cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfNnh4eC9hZGZfNnh4eF9od19kYXRhLmM6NjY0Olx0cGNpX3JlYWRfY29uZmlnX2R3b3JkKHBkZXYsIEFERl9HRU42X1BWQzFDVExfT0ZGU0VULCBcdTAwMjZ2YWx1ZSk7XG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jLTY2NS1cdEZJRUxEX01PRElGWShBREZfR0VONl9QVkMxQ1RMX1RDVkNNQVBfTUFTSywgXHUwMDI2dmFsdWUsIEFERl9HRU42X1BWQzFDVExfVENWQ01BUF9ERUZBVUxUKTtcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfNnh4eC9hZGZfNnh4eF9od19kYXRhLmMtNjY2LVx0RklFTERfTU9ESUZZKEFERl9HRU42X1BWQzFDVExfVkNFTl9NQVNLLCBcdTAwMjZ2YWx1ZSwgQURGX0dFTjZfUFZDMUNUTF9WQ0VOX09OKTtcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfNnh4eC9hZGZfNnh4eF9od19kYXRhLmM6NjY3Olx0ZXJyID0gcGNpX3dyaXRlX2NvbmZpZ19kd29yZChwZGV2LCBBREZfR0VONl9QVkMxQ1RMX09GRlNFVCwgdmFsdWUpO1xuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF82eHh4L2FkZl82eHh4X2h3X2RhdGEuYy02NjgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3BpYi9LY29uZmlnPTIwMT1jb25maWcgR1BJQl9QQ01DSUFcbi0tXG5kcml2ZXJzL2dwaWIvS2NvbmZpZy0yMDctXG5kcml2ZXJzL2dwaWIvS2NvbmZpZzoyMDg6Y29uZmlnIEdQSUJfTFBWT1xuZHJpdmVycy9ncGliL0tjb25maWctMjA5LSAgICAgICB0cmlzdGF0ZSBcJiMzNDtMUFZPIERJWSBVU0IgR1BJQlwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaW14L0tjb25maWc9MzY9Y29uZmlnIERSTV9JTVg4TVBfSERNSV9QQUlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2lteC9LY29uZmlnLTQ1LVxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9pbXgvS2NvbmZpZzo0Njpjb25maWcgRFJNX0lNWDhNUF9IRE1JX1BWSVxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9pbXgvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O0ZyZWVzY2FsZSBpLk1YOE1QIEhETUkgUFZJIGJyaWRnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpX3BsbC5jPTQ4Nj1pbnQgYnh0X2RzaV9wbGxfY29tcHV0ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlcixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Zsdl9kc2lfcGxsLmMtNTMyLVx0aWYgKGRpc3BsYXktXHUwMDNlcGxhdGZvcm0uYnJveHRvbiBcdTAwMjZcdTAwMjYgZHNpX3JhdGlvIFx1MDAzYz0gNTApXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Zsdl9kc2lfcGxsLmM6NTMzOlx0XHRjb25maWctXHUwMDNlZHNpX3BsbC5jdHJsIHw9IEJYVF9EU0lfUExMX1BWRF9SQVRJT18xO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpX3BsbC5jLTUzNC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX2RldmljZS5jPTQxNz1wdnJfZ3B1aWRfZGVjb2RlX3JlZyhjb25zdCBzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2Rldiwgc3RydWN0IHB2cl9ncHVfaWQgKmdwdV9pZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX2RldmljZS5jLTQzMi1cdFx0dTMyIGNvcmVfaWQgPSBwdnJfY3JfcmVhZDMyKHB2cl9kZXYsIFJPR1VFX0NSX0NPUkVfSUQpO1xuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kZXZpY2UuYzo0MzM6XHRcdHUxNiBjb3JlX2lkX2NvbmZpZyA9IFBWUl9DUl9GSUVMRF9HRVQoY29yZV9pZCwgQ09SRV9JRF9DT05GSUcpO1xuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kZXZpY2UuYy00MzQtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX1ZNV0FSRV9QVlJETUFcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1ZNd2FyZSBQYXJhdmlydHVhbGl6ZWQgUkRNQSBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9oZHB2ci9LY29uZmlnLTItXG5kcml2ZXJzL21lZGlhL3VzYi9oZHB2ci9LY29uZmlnOjM6Y29uZmlnIFZJREVPX0hEUFZSXG5kcml2ZXJzL21lZGlhL3VzYi9oZHB2ci9LY29uZmlnLTQtXHR0cmlzdGF0ZSBcJiMzNDtIYXVwcGF1Z2UgSEQgUFZSIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9wdnJ1c2IyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvS2NvbmZpZzoyOmNvbmZpZyBWSURFT19QVlJVU0IyXG5kcml2ZXJzL21lZGlhL3VzYi9wdnJ1c2IyL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0hhdXBwYXVnZSBXaW5UVi1QVlIgVVNCMiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvcHZydXNiMi9LY29uZmlnLTE5LVxuZHJpdmVycy9tZWRpYS91c2IvcHZydXNiMi9LY29uZmlnOjIwOmNvbmZpZyBWSURFT19QVlJVU0IyX1NZU0ZTXG5kcml2ZXJzL21lZGlhL3VzYi9wdnJ1c2IyL0tjb25maWctMjEtXHRib29sIFwmIzM0O3B2cnVzYjIgc3lzZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvS2NvbmZpZy0zNS1cbmRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvS2NvbmZpZzozNjpjb25maWcgVklERU9fUFZSVVNCMl9EVkJcbmRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvS2NvbmZpZy0zNy1cdGJvb2wgXCYjMzQ7cHZydXNiMiBBVFNDL0RWQiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvcHZydXNiMi9LY29uZmlnLTU2LVxuZHJpdmVycy9tZWRpYS91c2IvcHZydXNiMi9LY29uZmlnOjU3OmNvbmZpZyBWSURFT19QVlJVU0IyX0RFQlVHSUZDXG5kcml2ZXJzL21lZGlhL3VzYi9wdnJ1c2IyL0tjb25maWctNTgtXHRib29sIFwmIzM0O3B2cnVzYjIgZGVidWcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9taXNjL3B2cGFuaWMvS2NvbmZpZy03LVxuZHJpdmVycy9taXNjL3B2cGFuaWMvS2NvbmZpZzo4OmNvbmZpZyBQVlBBTklDXG5kcml2ZXJzL21pc2MvcHZwYW5pYy9LY29uZmlnLTktXHRib29sIFwmIzM0O3B2cGFuaWMgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL21pc2MvcHZwYW5pYy9LY29uZmlnLTE0LVxuZHJpdmVycy9taXNjL3B2cGFuaWMvS2NvbmZpZzoxNTpjb25maWcgUFZQQU5JQ19NTUlPXG5kcml2ZXJzL21pc2MvcHZwYW5pYy9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7cHZwYW5pYyBNTUlPIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9taXNjL3B2cGFuaWMvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbWlzYy9wdnBhbmljL0tjb25maWc6MjE6Y29uZmlnIFBWUEFOSUNfUENJXG5kcml2ZXJzL21pc2MvcHZwYW5pYy9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7cHZwYW5pYyBQQ0kgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMTkyLVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTM6Y29uZmlnIElQVkxBTl9MM1NcbmRyaXZlcnMvbmV0L0tjb25maWctMTk0LVx0ZGVwZW5kcyBvbiBORVRGSUxURVJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5OC1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTk5OmNvbmZpZyBJUFZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMTUtXG5kcml2ZXJzL25ldC9LY29uZmlnOjIxNjpjb25maWcgSVBWVEFQXG5kcml2ZXJzL25ldC9LY29uZmlnLTIxNy1cdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gYmFzZWQgdGFwIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDAyPW10NzUzMF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwMzEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjAzMjpcdFx0LyogT25seSBjb25maWd1cmUgUFZJRCBpZiBWTEFOIGZpbHRlcmluZyBpcyBlbmFibGVkICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjAzMy1cdFx0aWYgKGRzYV9wb3J0X2lzX3ZsYW5fZmlsdGVyaW5nKGRzYV90b19wb3J0KGRzLCBwb3J0KSkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM9MTM2Mz12c2M3M3h4X3ZsYW5fY2hhbmdlX3B2aWQoc3RydWN0IHZzYzczeHggKnZzYywgaW50IHBvcnQsIHUxNiB2aWQsIGJvb2wgc2V0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTEzODctICogVXBkYXRlIHRoZSBQVklEIG9mIGEgcG9ydCBzbyB0aGF0IGl0IGZvbGxvd3MgZWl0aGVyIHRoZSBicmlkZ2UgUFZJRFxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6MTM4ODogKiBjb25maWd1cmF0aW9uLCB3aGVuIHRoZSBicmlkZ2UgaXMgY3VycmVudGx5IFZMQU4tYXdhcmUsIG9yIHRoZSBQVklEXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy0xMzg5LSAqIGZyb20gdGFnXzgwMjFxLCB3aGVuIHRoZSBwb3J0IGlzIHN0YW5kYWxvbmUgb3IgdW5kZXIgYSBWTEFOLXVuYXdhcmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTE1OTA9c3RhdGljIGNvbnN0IHN0cnVjdCBpY2VfcnNzX2hhc2hfY2ZnIGRlZmF1bHRfcnNzX2NmZ3NbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTE2MzUtXHRcdElDRV9IQVNIX1NDVFBfSVBWNiwgSUNFX1JTU19PVVRFUl9IRUFERVJTLCBmYWxzZX0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjE2MzY6XHQvKiBjb25maWd1cmUgUlNTIGZvciBJUFNFQyBFU1AgU1BJIHdpdGggaW5wdXQgc2V0IE1BQ19JUFY0X1NQSSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0xNjM3LVx0e0lDRV9GTE9XX1NFR19IRFJfRVNQLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX252ZV92eGxhbi5jPTEzMj1tbHhzd19zcF9udmVfdnhsYW5fdWxfcHJvdG9fc2lwX2NvbmZpZyhjb25zdCBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fbnZlX3Z4bGFuLmMtMTM2LVx0Y2FzZSBBRl9JTkVUOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fbnZlX3Z4bGFuLmM6MTM3Olx0XHRjb25maWctXHUwMDNldWxfcHJvdG8gPSBNTFhTV19TUF9MM19QUk9UT19JUFY0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fbnZlX3Z4bGFuLmMtMTM4LVx0XHRjb25maWctXHUwMDNldWxfc2lwLmFkZHI0ID0gY2ZnLVx1MDAzZXNhZGRyLnNpbi5zaW5fYWRkci5zX2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fbnZlX3Z4bGFuLmMtMTQwLVx0Y2FzZSBBRl9JTkVUNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX252ZV92eGxhbi5jOjE0MTpcdFx0Y29uZmlnLVx1MDAzZXVsX3Byb3RvID0gTUxYU1dfU1BfTDNfUFJPVE9fSVBWNjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX252ZV92eGxhbi5jLTE0Mi1cdFx0Y29uZmlnLVx1MDAzZXVsX3NpcC5hZGRyNiA9IGNmZy1cdTAwM2VzYWRkci5zaW42LnNpbjZfYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9wcGUvcHBlX2NvbmZpZy5jPTE4NTg9c3RhdGljIGludCBwcGVfcnNzX2hhc2hfaW5pdChzdHJ1Y3QgcHBlX2RldmljZSAqcHBlX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9wcGUvcHBlX2NvbmZpZy5jLTE4OTAtXHQvKiBDb25maWd1cmUgUlNTIHNlZWQgY29uZmlncyBmb3IgSVB2NCBwYWNrZXQuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9wcGUvcHBlX2NvbmZpZy5jOjE4OTE6XHRyZXQgPSBwcGVfcnNzX2hhc2hfY29uZmlnX3NldChwcGVfZGV2LCBQUEVfUlNTX0hBU0hfTU9ERV9JUFY0LCBoYXNoX2NmZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9wcGUvcHBlX2NvbmZpZy5jLTE4OTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3BwZS9wcGVfY29uZmlnLmMtMTkwMC1cdC8qIENvbmZpZ3VyZSBSU1Mgc2VlZCBjb25maWdzIGZvciBJUHY2IHBhY2tldC4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3BwZS9wcGVfY29uZmlnLmM6MTkwMTpcdHJldHVybiBwcGVfcnNzX2hhc2hfY29uZmlnX3NldChwcGVfZGV2LCBQUEVfUlNTX0hBU0hfTU9ERV9JUFY2LCBoYXNoX2NmZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9wcGUvcHBlX2NvbmZpZy5jLTE5MDItfVxuLS1cbmRyaXZlcnMvbmV0L3dhbi9oZGxjX2ZyLmMtMTYtXG5kcml2ZXJzL25ldC93YW4vaGRsY19mci5jOjE3OiAoYWN0aXZlKSAgICAtXHUwMDNlIDAgd2hlbiBcJiMzNDtpZmNvbmZpZyBQVkMgZG93blwmIzM0OyBvciBcJiMzNDtsaW5rIHVucmVsaWFibGVcJiMzNDsgb3IgXCYjMzQ7UFZDIGNyZWF0ZVwmIzM0O1xuZHJpdmVycy9uZXQvd2FuL2hkbGNfZnIuYy0xOC1cdCAgICAgLVx1MDAzZSAxIHdoZW4gXCYjMzQ7UFZDIHVwXCYjMzQ7IGFuZCAoZXhpc3QsbmV3KSA9IDEsMFxuLS1cbmRyaXZlcnMvbmV0L3dhbi9oZGxjX2ZyLmM9NDU2PXN0YXRpYyB2b2lkIGZyX2xtaV9zZW5kKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBmdWxscmVwKVxuLS1cbmRyaXZlcnMvbmV0L3dhbi9oZGxjX2ZyLmMtNTEzLVxuZHJpdmVycy9uZXQvd2FuL2hkbGNfZnIuYzo1MTQ6XHRcdFx0LyogaWZjb25maWcgUFZDIHVwICovXG5kcml2ZXJzL25ldC93YW4vaGRsY19mci5jLTUxNS1cdFx0XHRpZiAocHZjLVx1MDAzZW9wZW5fY291bnQgXHUwMDI2XHUwMDI2ICFwdmMtXHUwMDNlc3RhdGUuYWN0aXZlIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvcGh5L3NhbXN1bmcvS2NvbmZpZz02NT1jb25maWcgUEhZX0VYWU5PUzUyNTBfVVNCMlxuLS1cbmRyaXZlcnMvcGh5L3NhbXN1bmcvS2NvbmZpZy02OS1cbmRyaXZlcnMvcGh5L3NhbXN1bmcvS2NvbmZpZzo3MDpjb25maWcgUEhZX1M1UFYyMTBfVVNCMlxuZHJpdmVycy9waHkvc2Ftc3VuZy9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTNVBWMjEwXCYjMzQ7XG4tLVxuZHJpdmVycy9waW5jdHJsL3Zpc2NvbnRpL0tjb25maWc9Mj1jb25maWcgUElOQ1RSTF9WSVNDT05USVxuLS1cbmRyaXZlcnMvcGluY3RybC92aXNjb250aS9LY29uZmlnLTgtXG5kcml2ZXJzL3BpbmN0cmwvdmlzY29udGkvS2NvbmZpZzo5OmNvbmZpZyBQSU5DVFJMX1RNUFY3NzAwXG5kcml2ZXJzL3BpbmN0cmwvdmlzY29udGkvS2NvbmZpZy0xMC1cdGJvb2wgXCYjMzQ7VG9zaGliYSBWaXNjb250aSBUTVBWNzcwMCBzZXJpZXMgcGluY3RybCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3JlZ3VsYXRvci9LY29uZmlnPTEwOTE9Y29uZmlnIFJFR1VMQVRPUl9QRlVaRTEwMFxuLS1cbmRyaXZlcnMvcmVndWxhdG9yL0tjb25maWctMTA5OC1cbmRyaXZlcnMvcmVndWxhdG9yL0tjb25maWc6MTA5OTpjb25maWcgUkVHVUxBVE9SX1BWODgwNjBcbmRyaXZlcnMvcmVndWxhdG9yL0tjb25maWctMTEwMC1cdHRyaXN0YXRlIFwmIzM0O1Bvd2VydmVudHVyZSBTZW1pY29uZHVjdG9yIFBWODgwNjAgcmVndWxhdG9yXCYjMzQ7XG4tLVxuZHJpdmVycy9yZWd1bGF0b3IvS2NvbmZpZy0xMTA2LVxuZHJpdmVycy9yZWd1bGF0b3IvS2NvbmZpZzoxMTA3OmNvbmZpZyBSRUdVTEFUT1JfUFY4ODA4MFxuZHJpdmVycy9yZWd1bGF0b3IvS2NvbmZpZy0xMTA4LVx0dHJpc3RhdGUgXCYjMzQ7UG93ZXJ2ZW50dXJlIFNlbWljb25kdWN0b3IgUFY4ODA4MCByZWd1bGF0b3JcJiMzNDtcbi0tXG5kcml2ZXJzL3JlZ3VsYXRvci9LY29uZmlnLTExMTMtXG5kcml2ZXJzL3JlZ3VsYXRvci9LY29uZmlnOjExMTQ6Y29uZmlnIFJFR1VMQVRPUl9QVjg4MDkwXG5kcml2ZXJzL3JlZ3VsYXRvci9LY29uZmlnLTExMTUtXHR0cmlzdGF0ZSBcJiMzNDtQb3dlcnZlbnR1cmUgU2VtaWNvbmR1Y3RvciBQVjg4MDkwIHJlZ3VsYXRvclwmIzM0O1xuLS1cbmRyaXZlcnMvcmVndWxhdG9yL3B2ODgwODAtcmVndWxhdG9yLmM9MzYyPXN0YXRpYyBpbnQgcHY4ODA4MF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbi0tXG5kcml2ZXJzL3JlZ3VsYXRvci9wdjg4MDgwLXJlZ3VsYXRvci5jLTUwMi1cdGlmIChpbml0X2RhdGEpXG5kcml2ZXJzL3JlZ3VsYXRvci9wdjg4MDgwLXJlZ3VsYXRvci5jOjUwMzpcdFx0Y29uZmlnLmluaXRfZGF0YSA9IFx1MDAyNmluaXRfZGF0YVtQVjg4MDgwX0lEX0hWQlVDS107XG5kcml2ZXJzL3JlZ3VsYXRvci9wdjg4MDgwLXJlZ3VsYXRvci5jLTUwNC1cbmRyaXZlcnMvcmVndWxhdG9yL3B2ODgwODAtcmVndWxhdG9yLmM6NTA1Olx0Y29uZmlnLmRyaXZlcl9kYXRhID0gKHZvaWQgKilcdTAwMjZwdjg4MDgwX3JlZ3VsYXRvcl9pbmZvW1BWODgwODBfSURfSFZCVUNLXTtcbmRyaXZlcnMvcmVndWxhdG9yL3B2ODgwODAtcmVndWxhdG9yLmMtNTA2LVx0Y2hpcC1cdTAwM2VyZGV2W1BWODgwODBfSURfSFZCVUNLXSA9IGRldm1fcmVndWxhdG9yX3JlZ2lzdGVyKGNoaXAtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvc2NzaS9LY29uZmlnPTU1Mz1jb25maWcgU0NTSV9NWVJTXG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWctNTY4LVxuZHJpdmVycy9zY3NpL0tjb25maWc6NTY5OmNvbmZpZyBWTVdBUkVfUFZTQ1NJXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy01NzAtXHR0cmlzdGF0ZSBcJiMzNDtWTXdhcmUgUFZTQ1NJIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2RlZi5oPTg1Nj1zdGF0aWMgaW5saW5lIGludCBpc19pcHY0X2VuYWJsZWQoc3RydWN0IHNjc2lfcWxhX2hvc3QgKmhhKVxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2RlZi5oLTg1Ny17XG5kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfZGVmLmg6ODU4Olx0cmV0dXJuICgoaGEtXHUwMDNlaXBfY29uZmlnLmlwdjRfb3B0aW9ucyBcdTAwMjYgSVBPUFRfSVBWNF9QUk9UT0NPTF9FTkFCTEUpICE9IDApO1xuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2RlZi5oLTg1OS19XG4tLVxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmM9MjAwMT1zdGF0aWMgdm9pZCBxbGE0eHh4X2NyZWF0ZV9pZmFjZXMoc3RydWN0IHNjc2lfcWxhX2hvc3QgKmhhKVxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmMtMjAwMi17XG5kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfb3MuYzoyMDAzOlx0aWYgKGhhLVx1MDAzZWlwX2NvbmZpZy5pcHY0X29wdGlvbnMgXHUwMDI2IElQT1BUX0lQVjRfUFJPVE9DT0xfRU5BQkxFKVxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmMtMjAwNC1cdFx0cWxhNHh4eF9jcmVhdGVfaXB2NF9pZmFjZShoYSk7XG5kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfb3MuYy0yMDA1LVxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmM6MjAwNjpcdGlmIChoYS1cdTAwM2VpcF9jb25maWcuaXB2Nl9vcHRpb25zIFx1MDAyNiBJUFY2X09QVF9JUFY2X1BST1RPQ09MX0VOQUJMRSlcbmRyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jLTIwMDctXHRcdHFsYTR4eHhfY3JlYXRlX2lwdjZfaWZhY2UoaGEpO1xuLS1cbmRyaXZlcnMvc2NzaS92bXdfcHZzY3NpLmM9MTI5OD1zdGF0aWMgdTMyIHB2c2NzaV9nZXRfbWF4X3RhcmdldHMoc3RydWN0IHB2c2NzaV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvc2NzaS92bXdfcHZzY3NpLmMtMTMxNi1cdC8qIEZldGNoIGNvbmZpZyBpbmZvIGZyb20gdGhlIGRldmljZS4gKi9cbmRyaXZlcnMvc2NzaS92bXdfcHZzY3NpLmM6MTMxNzpcdGNtZC5jb25maWdQYWdlQWRkcmVzcyA9ICgodTY0KVBWU0NTSV9DT05GSUdfQ09OVFJPTExFUl9BRERSRVNTKSBcdTAwM2NcdTAwM2MgMzI7XG5kcml2ZXJzL3Njc2kvdm13X3B2c2NzaS5jOjEzMTg6XHRjbWQuY29uZmlnUGFnZU51bSA9IFBWU0NTSV9DT05GSUdfUEFHRV9DT05UUk9MTEVSO1xuZHJpdmVycy9zY3NpL3Ztd19wdnNjc2kuYy0xMzE5LVx0Y21kLmNtcEFkZHIgPSBjb25maWdQYWdlUEE7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU3Nz1jb25maWcgRkJfWFZSMTAwMFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01ODYtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTg3OmNvbmZpZyBGQl9QVlIyXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTg4LVx0dHJpc3RhdGUgXCYjMzQ7TkVDIFBvd2VyVlIgMiBkaXNwbGF5IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3hlbi9LY29uZmlnPTIwOD1jb25maWcgWEVOX1BDSURFVl9CQUNLRU5EXG4tLVxuZHJpdmVycy94ZW4vS2NvbmZpZy0yMzEtXG5kcml2ZXJzL3hlbi9LY29uZmlnOjIzMjpjb25maWcgWEVOX1BWQ0FMTFNfRlJPTlRFTkRcbmRyaXZlcnMveGVuL0tjb25maWctMjMzLVx0dHJpc3RhdGUgXCYjMzQ7WEVOIFBWIENhbGxzIGZyb250ZW5kIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMveGVuL0tjb25maWctMjQxLVxuZHJpdmVycy94ZW4vS2NvbmZpZzoyNDI6Y29uZmlnIFhFTl9QVkNBTExTX0JBQ0tFTkRcbmRyaXZlcnMveGVuL0tjb25maWctMjQzLVx0dHJpc3RhdGUgXCYjMzQ7WEVOIFBWIENhbGxzIGJhY2tlbmQgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy94ZW4vS2NvbmZpZz0yOTg9Y29uZmlnIFhFTl9NQ0VfTE9HXG4tLVxuZHJpdmVycy94ZW4vS2NvbmZpZy0zMDQtXG5kcml2ZXJzL3hlbi9LY29uZmlnOjMwNTpjb25maWcgWEVOX0hBVkVfUFZNTVVcbmRyaXZlcnMveGVuL0tjb25maWctMzA2LVx0Ym9vbFxuLS1cbm5ldC82bG93cGFuL0tjb25maWc9NDA9Y29uZmlnIDZMT1dQQU5fTkhDX0hPUFxuLS1cbm5ldC82bG93cGFuL0tjb25maWctNDYtXG5uZXQvNmxvd3Bhbi9LY29uZmlnOjQ3OmNvbmZpZyA2TE9XUEFOX05IQ19JUFY2XG5uZXQvNmxvd3Bhbi9LY29uZmlnLTQ4LVx0dHJpc3RhdGUgXCYjMzQ7SVB2NiBIZWFkZXIgU3VwcG9ydFwmIzM0O1xuLS1cbm5ldC82bG93cGFuL0tjb25maWc9Nzc9Y29uZmlnIDZMT1dQQU5fR0hDX1VEUFxuLS1cbm5ldC82bG93cGFuL0tjb25maWctODEtXG5uZXQvNmxvd3Bhbi9LY29uZmlnOjgyOmNvbmZpZyA2TE9XUEFOX0dIQ19JQ01QVjZcbm5ldC82bG93cGFuL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtHSEMgSUNNUHY2IFN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvZHNhL3RhZ19kc2EuYy04MS0gKiAgICAgb24gdHJhbnNtaXQgYnkgdGhlIENQVSB0byBkZWZlciB0aGUgZm9yd2FyZGluZyBkZWNpc2lvbiB0byB0aGVcbm5ldC9kc2EvdGFnX2RzYS5jOjgyOiAqICAgICBoYXJkd2FyZSwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29uZmlnIG9mIFBWVC9WVFUvQVRVXG5uZXQvZHNhL3RhZ19kc2EuYy04My0gKiAgICAgZXRjLiBTb3VyY2UgYWRkcmVzcyBsZWFybmluZyB0YWtlcyBwbGFjZXMgaWYgZW5hYmxlZCBvbiB0aGVcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTI2OD1jb25maWcgU1lOX0NPT0tJRVNcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMwMy1cbm5ldC9pcHY0L0tjb25maWc6MzA0OmNvbmZpZyBORVRfSVBWVElcbm5ldC9pcHY0L0tjb25maWctMzA1LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCAoc2VjdXJlKSBJUDogdHVubmVsaW5nXCYjMzQ7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9Nj1tZW51IFwmIzM0O0lQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvblwmIzM0O1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTgtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo5OmNvbmZpZyBORl9ERUZSQUdfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTAtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTE0PWNvbmZpZyBJUF9ORl9JUFRBQkxFU19MRUdBQ1lcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0yMy1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjI0OmNvbmZpZyBORl9TT0NLRVRfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMjUtXHR0cmlzdGF0ZSBcJiMzNDtJUHY0IHNvY2tldCBsb29rdXAgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTI5LVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MzA6Y29uZmlnIE5GX1RQUk9YWV9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjQgdHByb3h5IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0zMz1pZiBORl9UQUJMRVNcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTM0LVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MzU6Y29uZmlnIE5GX1RBQkxFU19JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7SVB2NCBuZl90YWJsZXMgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTQwPWlmIE5GX1RBQkxFU19JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00MS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjQyOmNvbmZpZyBORlRfUkVKRUNUX0lQVjRcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTQzLVx0c2VsZWN0IE5GX1JFSkVDVF9JUFY0XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDYtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo0Nzpjb25maWcgTkZUX0RVUF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjQgbmZfdGFibGVzIHBhY2tldCBkdXBsaWNhdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNTMtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo1NDpjb25maWcgTkZUX0ZJQl9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy01NS1cdHNlbGVjdCBORlRfRklCXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9NzA9ZW5kaWYgIyBORl9UQUJMRVNcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTcxLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6NzI6Y29uZmlnIE5GX0RVUF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy03My1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBJUHY0IHBhY2tldCBkdXBsaWNhdGlvbiB0byBhbHRlcm5hdGUgZGVzdGluYXRpb25cJiMzNDtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz03OT1jb25maWcgTkZfTE9HX0FSUFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTg2LVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6ODc6Y29uZmlnIE5GX0xPR19JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy04OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjQgcGFja2V0IGxvZ2dpbmdcJiMzNDtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy05NC1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjk1OmNvbmZpZyBORl9SRUpFQ1RfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctOTYtXHR0cmlzdGF0ZSBcJiMzNDtJUHY0IHBhY2tldCByZWplY3Rpb25cJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTUtXG5uZXQvaXB2Ni9LY29uZmlnOjY6bWVudWNvbmZpZyBJUFY2XG5uZXQvaXB2Ni9LY29uZmlnLTctXHRib29sIFwmIzM0O1RoZSBJUHY2IHByb3RvY29sXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xOT1pZiBJUFY2XG5uZXQvaXB2Ni9LY29uZmlnLTIwLVxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxubmV0L2lwdjYvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7SVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zMC1cbm5ldC9pcHY2L0tjb25maWc6MzE6Y29uZmlnIElQVjZfUk9VVEVfSU5GT1xubmV0L2lwdjYvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7SVB2NjogUm91dGUgSW5mb3JtYXRpb24gKFJGQyA0MTkxKSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zOC1cbm5ldC9pcHY2L0tjb25maWc6Mzk6Y29uZmlnIElQVjZfT1BUSU1JU1RJQ19EQURcbm5ldC9pcHY2L0tjb25maWctNDAtXHRib29sIFwmIzM0O0lQdjY6IEVuYWJsZSBSRkMgNDQyOSBPcHRpbWlzdGljIERBRFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWc9MTAyPWNvbmZpZyBJTkVUNl9JUENPTVBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTExMS1cbm5ldC9pcHY2L0tjb25maWc6MTEyOmNvbmZpZyBJUFY2X01JUDZcbm5ldC9pcHY2L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogTW9iaWxpdHlcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTExOS1cbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxubmV0L2lwdjYvS2NvbmZpZy0xMjEtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE0OS1cbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxubmV0L2lwdjYvS2NvbmZpZy0xNTEtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTYxLVxubmV0L2lwdjYvS2NvbmZpZzoxNjI6Y29uZmlnIElQVjZfU0lUXG5uZXQvaXB2Ni9LY29uZmlnLTE2My1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElQdjYtaW4tSVB2NCB0dW5uZWwgKFNJVCBkcml2ZXIpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNzYtXG5uZXQvaXB2Ni9LY29uZmlnOjE3Nzpjb25maWcgSVBWNl9TSVRfNlJEXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7SVB2NjogSVB2NiBSYXBpZCBEZXBsb3ltZW50ICg2UkQpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xOTUtXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxubmV0L2lwdjYvS2NvbmZpZy0xOTctXHRib29sXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cbm5ldC9pcHY2L0tjb25maWc6MTk5OmNvbmZpZyBJUFY2X1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMDAtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJUC1pbi1JUHY2IHR1bm5lbCAoUkZDMjQ3MylcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBHUkUgdHVubmVsXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMjctXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1Vcbm5ldC9pcHY2L0tjb25maWctMjI5LVx0dHJpc3RhdGVcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIzMS1cbm5ldC9pcHY2L0tjb25maWc6MjMyOmNvbmZpZyBJUFY2X0ZPVV9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjMzLVx0dHJpc3RhdGVcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cbm5ldC9pcHY2L0tjb25maWc6MjM3OmNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvS2NvbmZpZy0yMzgtXHRib29sIFwmIzM0O0lQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yNDItXG5uZXQvaXB2Ni9LY29uZmlnOjI0Mzpjb25maWcgSVBWNl9TVUJUUkVFU1xubmV0L2lwdjYvS2NvbmZpZy0yNDQtXHRib29sIFwmIzM0O0lQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI1Ni1cbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxubmV0L2lwdjYvS2NvbmZpZy0yNTgtXHRib29sIFwmIzM0O0lQdjY6IG11bHRpY2FzdCByb3V0aW5nXCYjMzQ7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NjA2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIEtleSBLVk0vczM5MCBGdW5jdGlvbnMqKgoKUmlnaHQsIGBDT05GSUdfS1ZNYCBpcyBkZWZpbml0ZWx5IHRoZSByZWxldmFudCBzdGFydGluZyBwb2ludCwgc28gSSBjYW4gY29uZmlybSB0aGF0LiBOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBjb3JlIGZ1bmN0aW9ucyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGFuZCB0aGF0IGFyZSBjcml0aWNhbCBmb3IgbXkgY3VycmVudCBpbnZlc3RpZ2F0aW9uLiBUaGUgcHJpbWFyeSBvbmVzIEkgc2hvdWxkIGZvY3VzIG9uLCBiYXNlZCBvbiB0aGlzLCBhcmU6CgoqICAgYGt2bV9zMzkwX2tleW9wYCwgYW5kIHRoYXQmIzM5O3MgYWNjZXNzZWQgdGhyb3VnaCBga3ZtX2FyY2hfdm1faW9jdGxgLgoqICAgYGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb25gIOKAkyBhbHNvIHRocm91Z2ggYGt2bV9hcmNoX3ZtX2lvY3RsYCwgb2YgY291cnNlLgoqICAgYGt2bV9hcmNoX3ZjcHVfY3JlYXRlYAoqICAgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYAoqICAgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgCiogICBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gCiogICBga3ZtX3MzOTBfaGFuZGxlX2IyYAoqICAgYGt2bV9zMzkwX2hhbmRsZV9iOWAKCkhhbmcgb24gYSBtb21lbnQuLi4gSSBzZWUgdGhhdCBga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHVgIGFuZCBga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdWAgYXJlIGNhbGxlZCBpbnRlcm5hbGx5IGZyb20gYGt2bV9zMzkwX2NwdXNfZnJvbV9wdmAgYW5kIGBrdm1fczM5MF9jcHVzX3RvX3B2YC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB0cmFjZSBiYWNrIHRvIHRoZSBlbnRyeSBwb2ludHMgb2YgKnRob3NlKiBmdW5jdGlvbnMgdG9vLCBzbyBJIHVuZGVyc3RhbmQgaG93IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIFBWcy4gVGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9jcHVzX2Zyb21fcHYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTIzNDg9c3RhdGljIGludCBrdm1fczM5MF9zZXRfY21tYV9iaXRzKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjM5My0vKipcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyMzk0OiAqIGt2bV9zMzkwX2NwdXNfZnJvbV9wdiAtIENvbnZlcnQgYWxsIHByb3RlY3RlZCB2Q1BVcyBpbiBhIHByb3RlY3RlZCBWTSB0b1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTIzOTUtICogbm9uIHByb3RlY3RlZC5cbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQwNS0gKi9cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNDA2OmludCBrdm1fczM5MF9jcHVzX2Zyb21fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDA3LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjQ0Nz1zdGF0aWMgaW50IGt2bV9zMzkwX2NwdXNfdG9fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQ2Ni1cdGlmIChyKVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjI0Njc6XHRcdGt2bV9zMzkwX2NwdXNfZnJvbV9wdihrdm0sIFx1MDAyNmR1bW15LCBcdTAwMjZkdW1teSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQ2OC1cdHJldHVybiByO1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yNTgwPXN0YXRpYyBpbnQga3ZtX3MzOTBfaGFuZGxlX3B2KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9wdl9jbWQgKmNtZClcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjYyNi1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNjI3Olx0XHRyID0ga3ZtX3MzOTBfY3B1c19mcm9tX3B2KGt2bSwgXHUwMDI2Y21kLVx1MDAzZXJjLCBcdTAwMjZjbWQtXHUwMDNlcnJjKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNjI4LVx0XHQvKlxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNjUxLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjI2NTI6XHRcdHIgPSBrdm1fczM5MF9jcHVzX2Zyb21fcHYoa3ZtLCBcdTAwMjZjbWQtXHUwMDNlcmMsIFx1MDAyNmNtZC1cdTAwM2VycmMpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI2NTMtXHRcdC8qXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTQ2OT1fX3U2NCBrdm1fczM5MF9nZXRfY3B1X3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NDcwOmludCBrdm1fczM5MF9jcHVzX2Zyb21fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtNDcxLWludCBfX2t2bV9zMzkwX21wcm90ZWN0X21hbnkoc3RydWN0IGdtYXAgKmdtYXAsIGdwYV90IGdwYSwgdTggbnBhZ2VzLCB1bnNpZ25lZCBpbnQgcHJvdCxcbi0tXG5hcmNoL3MzOTAva3ZtL3B2LmM9Njg1PXN0YXRpYyB2b2lkIGt2bV9zMzkwX3B2X21tdV9ub3RpZmllcl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcbi0tXG5hcmNoL3MzOTAva3ZtL3B2LmMtNjk4LVx0ICovXG5hcmNoL3MzOTAva3ZtL3B2LmM6Njk5Olx0ciA9IGt2bV9zMzkwX2NwdXNfZnJvbV9wdihrdm0sIFx1MDAyNmR1bW15LCBcdTAwMjZkdW1teSk7XG5hcmNoL3MzOTAva3ZtL3B2LmMtNzAwLVx0aWYgKCFyIFx1MDAyNlx1MDAyNiBpc19kZXN0cm95X2Zhc3RfYXZhaWxhYmxlKCkgXHUwMDI2XHUwMDI2IGt2bV9zMzkwX3B2X2dldF9oYW5kbGUoa3ZtKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTczMzkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqRGl2aW5nIGludG8gdGhlIFBWIENvbW1hbmQgSGFuZGxlcioqCgpSaWdodCwgYGt2bV9zMzkwX2hhbmRsZV9wdmAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZmlyc3QgcGxhY2UgZXhlY3V0aW9uIGhpdHMgZm9yIGFueSBwYXJhdmlydHVhbGl6ZWQgKFBWKSBjb21tYW5kIHdpdGhpbiB0aGUgS1ZNL3MzOTAgY29udGV4dC4gU28sIGFueXRoaW5nIHRoYXQmIzM5O3MgZ29pbmcgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdW5kZXJseWluZyBob3N0IGFyY2hpdGVjdHVyZSB0aHJvdWdoIFBWIG1lY2hhbmlzbXPigKYgdGhpcyBpcyB3aGVyZSBpdCBhbGwgYmVnaW5zLiBJdCYjMzk7cyB0aGUgZ2F0ZWtlZXBlciwgZXNzZW50aWFsbHkuCgpOb3csIG15IG5leHQgdGhvdWdodCBpcyBuYXR1cmFsbHk6IHdoYXQgY29tZXMgKmFmdGVyKiB0aGF0PyBXaGVyZSBkb2VzIGl0IGdvPyBUaGUgbG9naWNhbCBmb2xsb3ctdXAsIHRoZW4sIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBmdW5jdGlvbiBga3ZtX3MzOTBfY3B1c190b19wdmAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGxvb2sgdG8gdW5kZXJzdGFuZCB0aGUgaW1tZWRpYXRlIGNvbnRyb2wgZmxvdy4gV2hhdCBhY3Rpb25zIGlzIGl0IHRha2luZyBvbiB0aGUgQ1BVIHNpZGU/IFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcCBpbiB0cmFjaW5nIHRoaXMgZmxvdy4gSSBleHBlY3QgYGt2bV9zMzkwX2NwdXNfdG9fcHZgIHRvIG1hbmFnZSB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gbG9naWNhbCBDUFVzIGFuZCB0aGUgUFYgbWVjaGFuaXNtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9jcHVzX3RvX3B2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yNDA2PWludCBrdm1fczM5MF9jcHVzX2Zyb21fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQzNi0vKipcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNDM3OiAqIGt2bV9zMzkwX2NwdXNfdG9fcHYgLSBDb252ZXJ0IGFsbCBub24tcHJvdGVjdGVkIHZDUFVzIGluIGEgcHJvdGVjdGVkIFZNXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQzOC0gKiB0byBwcm90ZWN0ZWQuXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI0NDYtICovXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjQ0NzpzdGF0aWMgaW50IGt2bV9zMzkwX2NwdXNfdG9fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDQ4LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjU4MD1zdGF0aWMgaW50IGt2bV9zMzkwX2hhbmRsZV9wdihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fcHZfY21kICpjbWQpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI2MTMtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjYxNDpcdFx0ciA9IGt2bV9zMzkwX2NwdXNfdG9fcHYoa3ZtLCBcdTAwMjZjbWQtXHUwMDNlcmMsIFx1MDAyNmNtZC1cdTAwM2VycmMpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI2MTUtXHRcdGlmIChyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODEyMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBLVk0vczM5MCBTcGVjaWZpY3MqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEtWTS9zMzkwIGNvZGUsIGFuZCBga3ZtX3MzOTBfaGFuZGxlX3B2YCBpcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBtYWluIGZvY3VzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUuIEluaXRpYWxseSwgSSBpZGVudGlmaWVkIGBrdm1fYXJjaF92bV9pb2N0bGAsIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAsIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAsIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCwgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCwgYGt2bV9zMzkwX2hhbmRsZV9iMmAsIGBrdm1fczM5MF9oYW5kbGVfYjlgLCBhbmQgb2YgY291cnNlLCBga3ZtX3MzOTBfaGFuZGxlX3B2YC4KCkJ1dCB3YWl0LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucywgdG8gcHJldmVudCBiaWFzZWQgdGVzdCBkaXN0cmlidXRpb25zLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHNwZWNpZmljIGhhbmRsZXJzIHdpdGhpbiB0aG9zZSBicm9hZGVyIGZ1bmN0aW9ucy4gIExldCYjMzk7cyByZWZpbmUgdGhpcy4KCkZvciBga3ZtX2FyY2hfdm1faW9jdGxgLCBJJiMzOTtsbCBzcGVjaWZpY2FsbHkgZm9jdXMgb246IGBrdm1fczM5MF92bV9zZXRfYXR0cmAgKHdoaWNoIGZ1cnRoZXIgY2FsbHMgYGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb25gKSwgYGt2bV9zMzkwX2hhbmRsZV9wdmAgKHRoaXMgaXMgaW1wb3J0YW50KSwgYGt2bV9zMzkwX3NldF9jbW1hX2JpdHNgLCBga3ZtX3MzOTBfZ2V0X2NtbWFfYml0c2AsIGBrdm1fczM5MF9zZXRfc2tleXNgLCBhbmQgYGt2bV9zMzkwX2dldF9za2V5c2AuCgpBbmQgZm9yIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCwgdGhlIGNvcmUgaXMgYGt2bV9zMzkwX3ZjcHVfc2V0dXBgIChjYWxsZWQgZnJvbSBga3ZtX2FyY2hfdmNwdV9jcmVhdGVgKS4KCk5vdywgSSYjMzk7bGwgcGF5IHNvbWUgYXR0ZW50aW9uIHRvIGBrdm1fczM5MF9zZXRfY21tYV9iaXRzYCBhbmQgYGt2bV9zMzkwX2dldF9jbW1hX2JpdHNgIGFzIHdlbGwuIFRoZXkgc2hvdWxkIGJlIGludGVyZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9zMzkwX3NldF9jbW1hX2JpdHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTIyOTE9c3RhdGljIGludCBrdm1fczM5MF9nZXRfY21tYV9iaXRzKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjM0Ny0gKi9cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyMzQ4OnN0YXRpYyBpbnQga3ZtX3MzOTBfc2V0X2NtbWFfYml0cyhzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjM0OS1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGt2bV9zMzkwX2NtbWFfbG9nICphcmdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTIzMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd24sIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqRGl2aW5nIGludG8gYGt2bV9zMzkwX2dldF9jbW1hX2JpdHNgKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gYGt2bV9zMzkwX2dldF9jbW1hX2JpdHNgLiBKdXN0IHRoZSBuYW1lIGl0c2VsZiB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCByZXRyaWV2aW5nIHNvbWUgY3J1Y2lhbCBiaXRzIHJlbGF0ZWQgdG8gdGhlIENvbW1vbiBNZW1vcnkgTWFuYWdlbWVudCBBcmVhIChDTU1BKSBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIHdpdGhpbiB0aGUgS1ZNIGNvbnRleHQuIFRoaXMgZnVuY3Rpb24gbGlrZWx5IHBsYXlzIGEgdml0YWwgcm9sZSBpbiBoYW5kbGluZyBndWVzdCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsbHkgaW5mbHVlbmNlcyB0aGluZ3MgbGlrZSBhZGRyZXNzIHRyYW5zbGF0aW9uIG9yIG1lbW9yeSBwcm90ZWN0aW9uIHdpdGhpbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBzMzkwIGFyY2hpdGVjdHVyZSBpcyB1bmlxdWUsIHNvIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW50ZXJlc3Rpbmc7IEkgYW50aWNpcGF0ZSB0aGF0IGl0IHRvdWNoZXMgYXNwZWN0cyBvZiB0aGUgYWRkcmVzc2luZyBtb2RlbCBpbiBhIHdheSBub3Qgc2VlbiBpbiBtb3JlIGNvbW1vbiBhcmNoaXRlY3R1cmVzLiBUaGlzIG1heSBoYXZlIGltcGxpY2F0aW9ucyBvbiBob3cgYSBndWVzdCBiZWhhdmVzIGluIHRoZSB2aXJ0dWFsIGNvbnRleHQuIExldCYjMzk7cyBzZWUgd2hhdOKAmXMgZ29pbmcgb24gaW5zaWRlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoaWNoIGJpdHMgaXTigJlzIHJlc3BvbnNpYmxlIGZvciBhbmQgd2hhdCB0aGV5IHNpZ25pZnkgaW4gdGhlIGdyYW5kIHNjaGVtZSBvZiB0aGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLioga3ZtX3MzOTBfZ2V0X2NtbWFfYml0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjIyMT1zdGF0aWMgaW50IGt2bV9zMzkwX3NldF9za2V5cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9za2V5cyAqYXJncylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjI5MC0gKi9cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyMjkxOnN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X2NtbWFfYml0cyhzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjI5Mi1cdFx0XHRcdCAgc3RydWN0IGt2bV9zMzkwX2NtbWFfbG9nICphcmdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTcxMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBmdW5jdGlvbnMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93biBpbW1lZGlhdGUgdGhvdWdodHM6CgoqKkFuYWx5emluZyBga3ZtX3MzOTBfc2V0X3NrZXlzYCBhbmQgYGt2bV9zMzkwX2dldF9za2V5c2AqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYGt2bV9zMzkwX3NldF9za2V5c2AgYW5kIGBrdm1fczM5MF9nZXRfc2tleXNgLiBUaG9zZSBuYW1lcyBhcmUgcHJldHR5IGRlc2NyaXB0aXZlLCBzbyBJJiMzOTttIGFzc3VtaW5nIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc2V0dGluZyBhbmQgZ2V0dGluZyBzdG9yYWdlIGtleXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudCBmb3IgczM5MCBhcmNoaXRlY3R1cmUuIFRoaXMgbGlrZWx5IGludm9sdmVzIG1hbmFnaW5nIHRoZSBtZW1vcnkgYWNjZXNzIGNvbnRyb2wgbWVjaGFuaXNtcyBhdmFpbGFibGUgb24gdGhhdCBoYXJkd2FyZS4KCmBzZXRfc2tleXNgIHN1Z2dlc3RzIHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY29uZmlndXJpbmcgdGhlIHN0b3JhZ2Uga2V5cyBmb3IgYSBndWVzdCwgd2hpbGUgYGdldF9za2V5c2Agb2J2aW91c2x5IGRlYWxzIHdpdGggcmV0cmlldmluZyB0aGVtLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBjb250ZXh0OyBhcmUgd2Ugc2V0dGluZy9nZXR0aW5nIHRoZXNlIGtleXMgZm9yIGEgc3BlY2lmaWMgZ3Vlc3QgdkNQVSwgb3IgYSB3aG9sZSBWTSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzcGVjaWZpY3Mgd2lsbCBiZSBpbiB0aGUgaW1wbGVtZW50YXRpb24uCgpJJiMzOTtkIGV4cGVjdCB0byBzZWUgc29tZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSYjMzk7cyBrZXkgbWFuYWdlbWVudCBpbnN0cnVjdGlvbnMgb3IgcmVnaXN0ZXJzLiBQcm9iYWJseSBzb21lIGJpdCBtYW5pcHVsYXRpb24gaXMgaW52b2x2ZWQsIHBlcmhhcHMgZGlyZWN0IG1lbW9yeSBhY2Nlc3Mgb3IgdXBkYXRlcyB0byBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuIFRoZXJlIGNvdWxkIGFsc28gYmUgc29tZSBuZWNlc3NhcnkgY2hlY2tzIGZvciBwZXJtaXNzaW9ucyBvciBzZWN1cml0eSBjb250ZXh0IHRvIHByZXZlbnQgdW5hdXRob3JpemVkIGFjY2VzcyBhbmQgbW9kaWZpY2F0aW9uLiBBIGNvbW1vbiB1c2UgY2FzZSBoZXJlIHdvdWxkIGJlIHRvIGltcGxlbWVudCBhIGZvcm0gb2YgbWVtb3J5IHByb3RlY3Rpb24sIGlzb2xhdGlvbiBvciBlbmNyeXB0aW9uIHdpdGhpbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpJIHdhbnQgdG8ga25vdyB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHRvby4gV2hhdCYjMzk7cyB0aGUgaGlnaC1sZXZlbCBmbG93IHRoYXQgdHJpZ2dlcnMgdGhlc2Ugb3BlcmF0aW9ucz8gVGhhdCYjMzk7cyBnb2luZyB0byB0ZWxsIG1lIHdoYXQgdGhlIGludGVuZGVkIHB1cnBvc2UgaXMuIEFyZSB0aGVzZSBjYWxsZWQgb24gVk0gc3RhcnR1cCwgbWlncmF0aW9uLCBvciBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbj8gQXJlIHRoZXkgcGFydCBvZiBhIHNlY3VyaXR5IHN1YnN5c3RlbT8gQXJlIHRoZXkgdHJpZ2dlcmVkIGJ5IGEgaHlwZXJ2aXNvciBjYWxsLCBvciB0aHJvdWdoIGEgZ3Vlc3QgZHJpdmVyPwoKSSYjMzk7bGwga2VlcCBhIHNoYXJwIGV5ZSBvdXQgZm9yIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBsb2NraW5nIG1lY2hhbmlzbXMsIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzLiBFc3BlY2lhbGx5IGluIGBnZXRfc2tleXNgIGJlY2F1c2UgcmVhZGluZyBrZXktYmFzZWQgbWV0YWRhdGEgYW5kIHN0cnVjdHVyZXMgY2FuIGJlIGhpZ2hseSBwcm9uZSB0byByYWNlIGNvbmRpdGlvbnMgaWYgbm90IGhhbmRsZWQgcHJvcGVybHkuIEkmIzM5O2xsIGFsc28gY2hlY2sgaG93IHRoZXNlIGludGVyYWN0IHdpdGggdGhlIG92ZXJhbGwgS1ZNIHMzOTAgY29kZSwgZXNwZWNpYWxseSB0aGUgbWVtb3J5IG1hbmFnZW1lbnQsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZyBjb21wb25lbnRzLiBBcmUgdGhleSB0aHJlYWQtc2FmZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihpbnR8dm9pZHxsb25nfHN0YXRpYykuKiBrdm1fczM5MF9zZXRfc2tleXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTIxODE9c3RhdGljIGludCBrdm1fczM5MF9nZXRfc2tleXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfc2tleXMgKmFyZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTIyMjAtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjIyMTpzdGF0aWMgaW50IGt2bV9zMzkwX3NldF9za2V5cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9za2V5cyAqYXJncylcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yMjIyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA0NTUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBga3ZtX3MzOTBfZ2V0X3NrZXlzYDoKCioqRGVjb25zdHJ1Y3RpbmcgYGt2bV9zMzkwX2dldF9za2V5c2AqKgoKUmlnaHQsIGBrdm1fczM5MF9nZXRfc2tleXNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyB3aXRoaW4gdGhlIEtWTS9zMzkwIGNvbnRleHQuIEdpdmVuIHRoZSBuYW1lLCBpdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgd2l0aCByZXRyaWV2aW5nICpzb21ldGhpbmcqIHJlbGF0ZWQgdG8gc2VjdXJpdHkga2V5cywgb3IgJiMzNDtza2V5cyYjMzQ7IGFzIHRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cywgd2l0aGluIHRoZSBTLzM5MCBhcmNoaXRlY3R1cmUuIEdpdmVuIEtWTSBjb250ZXh0LCB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgcmVsYXRlZCB0byB2aXJ0dWFsaXplZCBzeXN0ZW1zLCBhbmQgaG93IHRoZSBndWVzdCBpcyB3b3JraW5nIHdpdGggdGhlIHVuZGVybHlpbmcgc2VjdXJpdHkgY29uZmlndXJhdGlvbiBvZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZToKCiogICBXaGF0IGFyZSB0aGVzZSAmIzM0O3NrZXlzJiMzNDs/IEFyZSB0aGV5IGhhcmR3YXJlIGtleXMsIHNvZnR3YXJlLWRlZmluZWQga2V5cywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/CiogICBXaGF0IGlzIHRoZSAqcHVycG9zZSogb2YgZ2V0dGluZyB0aGVzZSBrZXlzPyBJcyBpdCBmb3IgZ3Vlc3QgYWNjZXNzLCBzZWN1cml0eSB2YWxpZGF0aW9uLCBvciBhIG1vcmUgZXNvdGVyaWMgZnVuY3Rpb24/CiogICBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIHVzZWQ/IEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCBzaGVkIGxpZ2h0IG9uIGl0cyBpbnRlbmRlZCBmdW5jdGlvbi4gQXJlIHdlIGxvb2tpbmcgYXQgY29udHJvbCBwYXRocywgb3IgcGVyaGFwcyBzZWN1cml0eSBhdWRpdCBhbmQgdmFsaWRhdGlvbj8KCkkmIzM5O20gYW50aWNpcGF0aW5nIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNyaXRpY2FsIGZvciBhc3BlY3RzIG9mIGhvdyBLVk0gb24gdGhlIFMvMzkwIGFyY2hpdGVjdHVyZSBkZWFscyB3aXRoIHNlbnNpdGl2ZSBkYXRhLiBUaGlzIG1pZ2h0IGJlIGFib3V0IG1hbmFnaW5nIHNlY3VyZSBtZW1vcnkgcmVnaW9ucywgdmFsaWRhdGluZyBndWVzdCBhY2Nlc3MgcGVybWlzc2lvbnMsIG9yIHBlcmhhcHMgZXZlbiBpbXBsZW1lbnRpbmcgYSBmb3JtIG9mIGF0dGVzdGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGl0cyBzcGVjaWZpYyByb2xlIGluIHRoZSBsYXJnZXIgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciBpdHMgcmV0dXJuaW5nIGhhcmR3YXJlIGluZm9ybWF0aW9uIG9yIGEgc29mdHdhcmUgaW1wbGVtZW50YXRpb24uIEkgYW50aWNpcGF0ZSBpdCB3aWxsIGJlIGNyaXRpY2FsIGZvciBwcm92aWRpbmcgYSBzYWZlIGFuZCBzZWN1cmUgdmlydHVhbGl6YXRpb24gZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9zMzkwX2dldF9za2V5cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjEwMz1zdGF0aWMgaW50IGt2bV9zMzkwX3ZtX2hhc19hdHRyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjE4MC1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyMTgxOnN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X3NrZXlzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3NrZXlzICphcmdzKVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTIxODIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTA1MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBLZXkgS1ZNL3MzOTAgRnVuY3Rpb25zKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgZnVuY3Rpb25zIHRoYXQgbWFuYWdlIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSB3aXRoaW4gS1ZNLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QuIE15IGluaXRpYWwgbGlzdCBpbmNsdWRlczogYGt2bV9zMzkwX3ZtX3NldF9hdHRyYCwgYGt2bV9zMzkwX2hhbmRsZV9wdmAsIGBrdm1fczM5MF9zZXRfY21tYV9iaXRzYCwgYGt2bV9zMzkwX2dldF9jbW1hX2JpdHNgLCBga3ZtX3MzOTBfc2V0X3NrZXlzYCwgYGt2bV9zMzkwX2dldF9za2V5c2AsIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAsIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fczM5MF9oYW5kbGVfYjJgLCBhbmQgYGt2bV9zMzkwX2hhbmRsZV9iOWAuIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhleSBpbnRlcmZhY2Ugd2l0aCBlYWNoIG90aGVyIHRvIG1hbmFnZSB0aGUgc3RhdGUgYW5kIHJlc291cmNlcyBvZiB0aGUgczM5MCB2aXJ0dWFsIG1hY2hpbmVzLgoKV2FpdCBhIHNlY29uZCwgYGt2bV9zMzkwX3ZtX3NldF9hdHRyYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgbWFrZXMgbWUgd2FudCB0byB2ZXJpZnkgaXRzIHNjb3BlLiBXaGVyZSBpcyBpdCBiZWluZyBjYWxsZWQgZnJvbT8gSSYjMzk7bGwgcXVpY2tseSBjaGVjayBpZiBpdCYjMzk7cyBiZWluZyBpbnZva2VkIHRocm91Z2ggYGt2bV9hcmNoX3ZtX2lvY3RsYCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBvdmVyYWxsIEtWTSBpb2N0bCBoYW5kbGluZyBmb3IgczM5MCBWTXMuIEtub3dpbmcgdGhlIGNhbGwgY2hhaW4gd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYmlnIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3ZtX3NldF9hdHRyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yMDMxPXN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X3RvcG9fY2hhbmdlX2luZGljYXRpb24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yMDQzLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjIwNDQ6c3RhdGljIGludCBrdm1fczM5MF92bV9zZXRfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjA0NS17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI5MjY9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yOTU4LVx0XHRcdGJyZWFrO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjI5NTk6XHRcdHIgPSBrdm1fczM5MF92bV9zZXRfYXR0cihrdm0sIFx1MDAyNmF0dHIpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI5NjAtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTk1NwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBLVk0vczM5MCBIeXBlcmNhbGwgSGFuZGxpbmcqKgoKT2theSwgc28gdGhlIGluaXRpYWwgYWZmaXJtYXRpdmUgcmVzcG9uc2UgaXMgY2xlYXIuIExldCYjMzk7cyBkZWx2ZSBkZWVwZXIgaW50byB0aGUgY29yZSBsb2dpYyBvZiB0aGUgYGt2bV9zMzkwX2hhbmRsZV9wdmAgZnVuY3Rpb24uIE15IHByaW1hcnkgZm9jdXMgaGVyZSBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaHlwZXJ2aXNvciBpbnRlcmFjdHMgd2l0aCB0aGUgZ3Vlc3QmIzM5O3MgcHJpdmlsZWdlZCBpbnN0cnVjdGlvbnMgb24gdGhlIFMvMzkwIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSB0eXBpY2FsIFBWIChQcm9ibGVtIFN0YXRlIFZlY3RvcikgdHJhcCBoYW5kbGluZyBmbG93LiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgaG93IGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQsIHRoZSByZWdpc3RlciBzYXZlL3Jlc3RvcmUgbWVjaGFuaXNtcywgYW5kIHRoZSBjcnVjaWFsIGRpc3RpbmN0aW9uIGJldHdlZW4gdmlydHVhbCBhbmQgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZXMgaW4gdGhpcyBjb250ZXh0LiBJcyBpdCB0aGUgYXBwcm9wcmlhdGUgZW50cnkgcG9pbnQgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgdGhlIFBWPyBJJiMzOTttIGFudGljaXBhdGluZyBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggdGhlIENQIChDb250cm9sIFByb2dyYW0pLCBpbmNsdWRpbmcgdGhlIGVtdWxhdGlvbiBvZiBwcml2aWxlZ2VkIGluc3RydWN0aW9ucywgYW5kIHRoZSBtYW5hZ2VtZW50IG9mIGhhcmR3YXJlIHJlc291cmNlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHNpZ25zIG9mIG9wdGltaXphdGlvbiwgcGFydGljdWxhcmx5IGluIHRoZSB0cmFwIGhhbmRsaW5nIGxhdGVuY3kuIEkgbmVlZCB0byBhc2NlcnRhaW4gaWYgdGhlIGZ1bmN0aW9uIGVmZmVjdGl2ZWx5IGFuZCBzZWN1cmVseSBoYW5kbGVzIHRoZSBndWVzdCYjMzk7cyBwcml2aWxlZ2VkIGluc3RydWN0aW9uIGV4ZWN1dGlvbiB0aHJvdWdoIHRoZSBQViBtZWNoYW5pc20uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX2hhbmRsZV9wdiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjQ0Nz1zdGF0aWMgaW50IGt2bV9zMzkwX2NwdXNfdG9fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQ3OC0gKi9cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNDc5OnN0YXRpYyBzc2l6ZV90IGt2bV9zMzkwX2hhbmRsZV9wdl9pbmZvKHN0cnVjdCBrdm1fczM5MF9wdl9pbmZvICppbmZvKVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI0ODAte1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yNTE4PXN0YXRpYyBpbnQga3ZtX3MzOTBfcHZfZG1wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9wdl9jbWQgKmNtZCxcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjU3OS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNTgwOnN0YXRpYyBpbnQga3ZtX3MzOTBfaGFuZGxlX3B2KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9wdl9jbWQgKmNtZClcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNTgxLXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjc2NS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNzY2Olx0XHRkYXRhX2xlbiA9IGt2bV9zMzkwX2hhbmRsZV9wdl9pbmZvKFx1MDAyNmluZm8pO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI3NjctXHRcdGlmIChkYXRhX2xlbiBcdTAwM2MgMCkge1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yOTI2PWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA0MC1cdFx0LyogbXVzdCBiZSBjYWxsZWQgd2l0aG91dCBrdm0tXHUwMDNlbG9jayAqL1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMwNDE6XHRcdHIgPSBrdm1fczM5MF9oYW5kbGVfcHYoa3ZtLCBcdTAwMjZhcmdzKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDQyLVx0XHRpZiAoY29weV90b191c2VyKGFyZ3AsIFx1MDAyNmFyZ3MsIHNpemVvZihhcmdzKSkpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTQzNj1sb25nIGt2bV9hcmNoX3ZjcHVfdW5sb2NrZWRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTQ4MC1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NDgxOnN0YXRpYyBpbnQga3ZtX3MzOTBfaGFuZGxlX3B2X3ZjcHVfZHVtcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTQ4Mi1cdFx0XHRcdFx0c3RydWN0IGt2bV9wdl9jbWQgKmNtZClcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTUyMz1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU3MjUtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTcyNjpcdFx0ciA9IGt2bV9zMzkwX2hhbmRsZV9wdl92Y3B1X2R1bXAodmNwdSwgXHUwMDI2Y21kKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NzI3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzIxNQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBga3ZtX3MzOTBfdmNwdV9zZXR1cGAqKgoKWWVzLCB0aGF0JiMzOTtzIGNvcnJlY3QuIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBrdm1fczM5MF92Y3B1X3NldHVwYC4gSSBuZWVkIHRvIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgaW4gdGhlIEtWTS9zMzkwIGFyY2hpdGVjdHVyZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGluaXRpYWxpemVzIHRoZSB2Q1BVIGNvbnRleHQsIHNldHMgdXAgdGhlIGd1ZXN0IHN0YXRlLCBhbmQgaGFuZGxlcyBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgaWRpb3N5bmNyYXNpZXMuIEl0JiMzOTtzIGEgY3JpdGljYWwgZW50cnkgcG9pbnQuIEkgd2FudCB0byBiZSBjZXJ0YWluIEkgaGF2ZSBhIHNvbGlkIGdyYXNwIG9mIGFueSBudWFuY2VzIHdpdGhpbiB0aGF0IGZ1bmN0aW9uIGFzIEkgbWlnaHQgbmVlZCB0byBtYWtlIGNoYW5nZXMgb3IgZGVidWcgYW4gaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3ZjcHVfc2V0dXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTM2Nzg9dm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2ODQtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzY4NTppbnQga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNjg2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzY5NS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozNjk2OnN0YXRpYyB2b2lkIGt2bV9zMzkwX3ZjcHVfc2V0dXBfbW9kZWwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2OTcte1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNzA0LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM3MDU6c3RhdGljIGludCBrdm1fczM5MF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNzA2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzcxOC1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozNzE5Olx0a3ZtX3MzOTBfdmNwdV9zZXR1cF9tb2RlbCh2Y3B1KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNzIwLVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNzY3LVx0aWYgKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudXNlX2NtbWEpIHtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozNzY4Olx0XHRyYyA9IGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYSh2Y3B1KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNzY5LVx0XHRpZiAocmMpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTM4MDE9aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzg2My1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozODY0Olx0cmMgPSBrdm1fczM5MF92Y3B1X3NldHVwKHZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM4NjUtXHRpZiAocmMpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NDY1PXZvaWQga3ZtX3MzOTBfc3luY19yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NDY2OmludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC00Njctdm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDMzOQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTS9zMzkwIEluc3RydWN0aW9uIEhhbmRsaW5nIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEtWTS9zMzkwIGNvZGUsIHN0YXJ0aW5nIHdpdGggYGt2bV9hcmNoX3ZjcHVfY3JlYXRlYCBhcyB0aGUgZW50cnkgcG9pbnQsIG5hdHVyYWxseS4gTXkgZm9jdXMgaXMgdGhlIGluc3RydWN0aW9uIGhhbmRsaW5nIHBhdGgsIGFuZCBJJiMzOTttIGhvbWluZyBpbiBvbiBwZXJmb3JtYW5jZS1jcml0aWNhbCBhcmVhcy4gSSBzZWUgdGhhdCBga3ZtX3MzOTBfaGFuZGxlX2IyYCBhbmQgYGt2bV9zMzkwX2hhbmRsZV9iOWAgZ2V0IGNhbGxlZCBmcm9tIGBoYW5kbGVfaW5zdHJ1Y3Rpb25gLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIFNpbmNlIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgaXMgYSBob3QgcGF0aCwgbGlzdGluZyB0aGUgZnVuY3Rpb25zIGNhbGxlZCBkaXJlY3RseSBmcm9tIGl0IHdvdWxkIGJlIGEgZ29vZCBzdGFydCBmb3IgcHJvZmlsaW5nLgoKSG93ZXZlciwgYGt2bV9zMzkwX2hhbmRsZV9iMmAgc2VlbXMgdG8gYmUgaGFuZGxpbmcgYSBidW5jaCBvZiBkaWZmZXJlbnQgaW5zdHJ1Y3Rpb25zLiBBaCwgdGhlIHNwZWNpZmljIG9uZXMgSSYjMzk7bSBpbnRlcmVzdGVkIGluLCBiYXNlZCBvbiB0aGUgcmVjZW50IG1vZGlmaWNhdGlvbnMsIGFyZSBgaGFuZGxlX3JyYmVgIGFuZCBgaGFuZGxlX2Vzc2FgLiBOb3csIGEgc25hZzogdGhlc2UgYXJlIHN0YXRpYyBmdW5jdGlvbnMuIFRoZSBwcm9tcHQgcmVtaW5kcyBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMaXN0aW5nIHN0YXRpYyBmdW5jdGlvbnMgbWlnaHQgbm90IGJlIG9wdGltYWwsIGFzIHRoZXkgY291bGQgYmUgaW5saW5lZC4gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkmIzM5O3JlIGFjdHVhbGx5IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBMZXQgbWUgdmVyaWZ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYW5kbGVfcnJiZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3ByaXYuYz0yNTc9c3RhdGljIGludCBoYW5kbGVfaXNrZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9wcml2LmMtMjg4LVxuYXJjaC9zMzkwL2t2bS9wcml2LmM6Mjg5OnN0YXRpYyBpbnQgaGFuZGxlX3JyYmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9wcml2LmMtMjkwLXtcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz05NTk9aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9wcml2LmMtOTc5LVx0Y2FzZSAweDJhOlxuYXJjaC9zMzkwL2t2bS9wcml2LmM6OTgwOlx0XHRyZXR1cm4gaGFuZGxlX3JyYmUodmNwdSk7XG5hcmNoL3MzOTAva3ZtL3ByaXYuYy05ODEtXHRjYXNlIDB4MmI6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MTY0CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgU3RhdGljLCBOb24tSW5saW5lZCBDb2RlIFBhdGhzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBzZWVtaW5nbHkgc3RhdGljIGVsZW1lbnRzLCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGV5ICphcmVuJiMzOTt0KiBpbmxpbmVkLiBUaGUgZmFjdCB0aGF0IHRoZXkmIzM5O3JlIGNhbGxlZCB3aXRoaW4gYSBgc3dpdGNoYCBzdGF0ZW1lbnQgaW4gYGt2bV9zMzkwX2hhbmRsZV9iMmAgaXMgYSBzdHJvbmcgaW5kaWNhdG9yIG9mIHRoYXQuIEhvd2V2ZXIsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGluY2x1ZGUgYGt2bV9zMzkwX2hhbmRsZV9iOWAgaW4gbXkgbGlzdCBvZiBjYW5kaWRhdGVzLCBiZWNhdXNlLCB3ZWxsLCBpdCYjMzk7cyBqdXN0IGdvb2QgcHJhY3RpY2UgdG8gY292ZXIgYWxsIHRoZSBvYnZpb3VzIHJlbGF0ZWQgY29kZS4gSXQmIzM5O3MgYmV0dGVyIHRvIGJlIG92ZXJseSBjYXV0aW91cyB0aGFuIHRvIG1pc3Mgc29tZXRoaW5nIGNyaXRpY2FsLgoKTm93LCBsZXQmIzM5O3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBoYW5kbGVfbXZwZ19wZWlgLiBJIG5lZWQgdG8gZGlnIGludG8gdGhhdCBvbmUgbmV4dCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFuZGxlX212cGdfcGVpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM9MzAzPXN0YXRpYyBpbnQgaGFuZGxlX2V4dGVybmFsX2ludGVycnVwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYy0zNTAtLyoqXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jOjM1MTogKiBoYW5kbGVfbXZwZ19wZWkgLSBIYW5kbGUgTU9WRSBQQUdFIHBhcnRpYWwgZXhlY3V0aW9uIGludGVyY2VwdGlvbi5cbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMzUyLSAqIEB2Y3B1OiB2aXJ0dWFsIGNwdVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMzU4LSAqL1xuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYzozNTk6c3RhdGljIGludCBoYW5kbGVfbXZwZ19wZWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYy0zNjAte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM9Mzk4PXN0YXRpYyBpbnQgaGFuZGxlX3BhcnRpYWxfZXhlY3V0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTQwMi1cdGlmICh2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWlwYSA9PSAweGIyNTQpXHQvKiBNVlBHICovXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jOjQwMzpcdFx0cmV0dXJuIGhhbmRsZV9tdnBnX3BlaSh2Y3B1KTtcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtNDA0LVx0aWYgKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlaXBhIFx1MDAzZVx1MDAzZSA4ID09IDB4YWUpXHQvKiBTSUdQICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1ODI4CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlRoaW5raW5nIFRocm91Z2ggUGFydGlhbCBFeGVjdXRpb24qKgoKQWxyaWdodCwgc28gYGhhbmRsZV9wYXJ0aWFsX2V4ZWN1dGlvbmAgaXMgc3RhdGljIHRvbywgaHVoPyBUaGF0IG9ic2VydmF0aW9uIGJyaW5ncyBhIGZldyBpbW1lZGlhdGUgaW1wbGljYXRpb25zIHRvIG1pbmQsIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dC4gSWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRoYXQgc3RhdGljIG5hdHVyZSBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGZvciB0aHJlYWQgc2FmZXR5LiBJdCBzdWdnZXN0cyB0aGF0IGFueSBzdGF0ZSBpbmZvcm1hdGlvbiByZWxldmFudCB0byBhIHBhcnRpYWwgZXhlY3V0aW9uIOKAkyB0aGUgcmVzdWx0cywgaW50ZXJtZWRpYXRlIHN0ZXBzLCBwZXJoYXBzIGVycm9yIGZsYWdzIOKAkyBpcyBlaXRoZXIgZXhwbGljaXRseSBiZWluZyBtYW5hZ2VkIGV4dGVybmFsbHksIHByb2JhYmx5IHRocm91Z2ggc2hhcmVkIGRhdGEgc3RydWN0dXJlcywgb3IgdGhhdCB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIHN0YXRlbGVzcyBhbmQgcmVsaWVzIHNvbGVseSBvbiBpdHMgaW5wdXQgYXJndW1lbnRzLgoKSWYgdGhlIGdvYWwgaXMgdG8gcHJldmVudCBhbnkgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3IsIHRoaXMgaXMgYW4gZWxlZ2FudCBzb2x1dGlvbi4gVGhlIGZ1bmN0aW9uICppdHNlbGYqIGRvZXNuJiMzOTt0IG1haW50YWluIHN0YXRlLCBlbGltaW5hdGluZyBhIGNsYXNzIG9mIGNvbmN1cnJlbmN5IGlzc3VlcyB0aGF0IGNhbiBiZSB0cmlja3kgdG8gZGVidWcuIEJ1dCB0aGlzIGFsc28gbWVhbnMgdGhhdCB0aGUgY2FsbGVyIG11c3QgaGFuZGxlIHRoaW5ncyBzdWNoIGFzIGVycm9yIGNoZWNraW5nLiBJZiB3ZSBuZWVkIHRvIGFsbG93IGZvciB0aGUgZHluYW1pYyBhc3NpZ25tZW50IG9mIHRoaW5ncyBsaWtlIHJlc291cmNlcywgdGhlbiB0aGlzIGlzIGFuIGltcG9ydGFudCBjb25zdHJhaW50LgoKSG93ZXZlciwgaWYgd2UgYXJlIG5vdCBpbiBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQsIHRoZSBpbXBsaWNhdGlvbnMgYXJlIGxpa2VseSBtb3JlIHBlcmZvcm1hbmNlIHJlbGF0ZWQsIGJlY2F1c2UgdGhlIGZ1bmN0aW9ucyBzaG91bGQgYmUgYWJsZSB0byByZXVzZSByZXNvdXJjZXMgd2l0aG91dCBjb250ZW50aW9uLiBJbiB0aGlzIGNhc2UsIHdlIGhhdmUgYSBndWFyYW50ZWUgb24gd2hhdCBpcyBnb2luZyBvbiBhdCBlYWNoIGV4ZWN1dGlvbiBzdGFnZSBhbmQgdGhpcyBpcyBncmVhdCBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLgoKT3ZlcmFsbCwgaXQgcmVpbmZvcmNlcyB0aGUgbmVlZCB0byBjYXJlZnVsbHkgY29uc2lkZXIgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgZXhlY3V0aW9uIGZsb3cuIFdoZXRoZXIgaXQmIzM5O3MgYSBkZWxpYmVyYXRlIGRlc2lnbiBjaG9pY2UgZm9yIHNhZmV0eSwgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIG9yIHBlcmhhcHMgYSBjb25zdHJhaW50IGltcG9zZWQgYnkgYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZSwgdGhlIHN0YXRpYyBuYXR1cmUgb2YgYGhhbmRsZV9wYXJ0aWFsX2V4ZWN1dGlvbmAgZGVmaW5pdGVseSBzaGFwZXMgaXRzIHJvbGUgYW5kIGhvdyB3ZSBpbnRlcmFjdCB3aXRoIGl0LiBJJiMzOTtkIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhIGJpdCBtb3JlIHRvIHNlZSBob3cgdGhpcyBwbGF5cyBvdXQgaW4gcHJhY3RpY2UsIGJ1dCB0aGF0JiMzOTtzIG15IGluaXRpYWwgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFuZGxlX3BhcnRpYWxfZXhlY3V0aW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM9MzU5PXN0YXRpYyBpbnQgaGFuZGxlX212cGdfcGVpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTM5Ny1cbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM6Mzk4OnN0YXRpYyBpbnQgaGFuZGxlX3BhcnRpYWxfZXhlY3V0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMzk5LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jPTYxNj1pbnQga3ZtX2hhbmRsZV9zaWVfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTY0Ni1cdGNhc2UgSUNQVF9QQVJURVhFQzpcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM6NjQ3Olx0XHRyYyA9IGhhbmRsZV9wYXJ0aWFsX2V4ZWN1dGlvbih2Y3B1KTtcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtNjQ4LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY0ODMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byB0aGUgS1ZNIFMzOTAgSW50ZXJjZXB0KioKCk9rYXksIHNvIHdlJiMzOTtyZSBzdGFydGluZyBhdCBga3ZtX2hhbmRsZV9zaWVfaW50ZXJjZXB0YCwgdGhhdCYjMzk7cyBvdXIgaW5pdGlhbCBlbnRyeSBwb2ludC4gS25vd2luZyB0aGF0IGZ1bmN0aW9uIG5hbWUsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIFN5c3RlbSBJbnRlcnJ1cHQgRXZlbnQgKFNJRSkgaW50ZXJjZXB0cyB3aXRoaW4gS1ZNLCBsaWtlbHkgb24gdGhlIFMzOTAgYXJjaGl0ZWN0dXJlLiBUaGlzIHN1Z2dlc3RzIHdlJiMzOTtyZSBoYW5kbGluZyBldmVudHMgdGhhdCByZXF1aXJlIHRoZSBoeXBlcnZpc29yJiMzOTtzIGludGVydmVudGlvbiDigJMgdHJhcHMgZnJvbSB0aGUgZ3Vlc3QsIGVzc2VudGlhbGx5LgoKTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBrdm1fczM5MF9mYXVsdGluX2dmbmAuIFRoYXQgbmFtZSBzY3JlYW1zICYjMzQ7ZmF1bHRpbmcgaW4gYSBHbG9iYWwgRnJhbWUgTnVtYmVyIChHRk4pJiMzNDsgdG8gbWUuIFRoaXMgcHJvYmFibHkgbWVhbnMgd2UgYXJlIHJlc29sdmluZyBhIG1lbW9yeSBhY2Nlc3MgaXNzdWUuIFBlcmhhcHMgYSBwYWdlIGZhdWx0IHdpdGhpbiB0aGUgZ3Vlc3QsIHdoZXJlIGEgdmlydHVhbCBhZGRyZXNzIG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWQgaW50byBhIHBoeXNpY2FsIGFkZHJlc3MsIGFuZCB0aGUgaHlwZXJ2aXNvciBoYXMgdG8gbWFuYWdlIHRoaXMgbWFwcGluZy4gSXQgaXMgYWxsIGFib3V0IG1lbW9yeSBtYW5hZ2VtZW50LgoKR2l2ZW4gdGhlIGNvbnRleHQgb2YgYW4gU0lFIGludGVyY2VwdCwgdGhlIGZhdWx0IHByb2JhYmx5IHJlcXVpcmVkIGEgaHlwZXJ2aXNvciBhY3Rpb24gdG8gbWFrZSB0aGUgbWVtb3J5IHBhZ2UgYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9mYXVsdGluX2dmbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYz0xNT1ib29sIGt2bV9hcmNoX3NldHVwX2FzeW5jX3BmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4tLVxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMtMTctLypcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jOjE4OiAqIGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKCkgLSBoYW5kbGUgYSBkYXQgZmF1bHQuXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy0xOS0gKiBAdmNwdTogVGhlIHZDUFUgd2hvc2UgZ21hcCBpcyB0byBiZSBmaXhlZCB1cCwgb3IgTlVMTCBpZiBvcGVyYXRpbmcgb24gdGhlIFZNLlxuLS1cbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTMyLSAqL1xuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmM6MzM6aW50IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgZ3Vlc3RfZmF1bHQgKmYpXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy0zNC17XG4tLVxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtMTUtXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uaDoxNjppbnQga3ZtX3MzOTBfZmF1bHRpbl9nZm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBndWVzdF9mYXVsdCAqZik7XG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uaC0xNy1pbnQga3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2Uoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgZ3Vlc3RfZmF1bHQgKmYsIGdmbl90IGdmbiwgYm9vbCB3KTtcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5oLTE4LVxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmg6MTk6c3RhdGljIGlubGluZSBpbnQga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtMjAtXHRcdFx0XHRcdCAgICAgIGdmbl90IGdmbiwgYm9vbCB3cilcbi0tXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uaC0yMy1cbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5oOjI0Olx0cmV0dXJuIGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKHZjcHUsIGt2bSwgXHUwMDI2Zik7XG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uaC0yNS19XG4tLVxuYXJjaC9zMzkwL2t2bS9nYWNjZXNzLmM9ODgyPXN0YXRpYyBpbnQgYWNjZXNzX2d1ZXN0X3BhZ2Vfd2l0aF9rZXlfZ3BhKHN0cnVjdCBrdm0gKmt2bSwgZW51bSBnYWNjX21vZGUgbW9kZSwgZ3BhX3QgZ3BhLFxuLS1cbmFyY2gvczM5MC9rdm0vZ2FjY2Vzcy5jLTkwMi1cbmFyY2gvczM5MC9rdm0vZ2FjY2Vzcy5jOjkwMzpcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm4oTlVMTCwga3ZtLCBcdTAwMjZmYXVsdCk7XG5hcmNoL3MzOTAva3ZtL2dhY2Nlc3MuYy05MDQtXHRpZiAocmMpXG4tLVxuYXJjaC9zMzkwL2t2bS9nYWNjZXNzLmM9MTEzNz1pbnQgY21weGNoZ19ndWVzdF9hYnNfd2l0aF9rZXkoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBncGEsIGludCBsZW4sIHVuaW9uIGt2bV9zMzkwX3F1YWQgKm9sZCxcbi0tXG5hcmNoL3MzOTAva3ZtL2dhY2Nlc3MuYy0xMTU5LVxuYXJjaC9zMzkwL2t2bS9nYWNjZXNzLmM6MTE2MDpcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm4oTlVMTCwga3ZtLCBcdTAwMjZmYXVsdCk7XG5hcmNoL3MzOTAva3ZtL2dhY2Nlc3MuYy0xMTYxLVx0aWYgKHJjKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM9MzU5PXN0YXRpYyBpbnQgaGFuZGxlX212cGdfcGVpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTM4NS1cdGRvIHtcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM6Mzg2Olx0XHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKHNyY2FkZHIpLCBmYWxzZSk7XG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTM4Ny1cdH0gd2hpbGUgKHJjID09IC1FQUdBSU4pO1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMzkxLVx0ZG8ge1xuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYzozOTI6XHRcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHZjcHUsIE5VTEwsIGdwYV90b19nZm4oZHN0YWRkciksIHRydWUpO1xuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYy0zOTMtXHR9IHdoaWxlIChyYyA9PSAtRUFHQUlOKTtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NDMzNT1zdGF0aWMgaW50IGt2bV9zMzkwX2ZpeHVwX3ByZWZpeChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQzNDQtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDM0NTpcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHZjcHUsIE5VTEwsIGdmbiwgdHJ1ZSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDM0Ni1cdGlmIChyYylcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MzQ3LVx0XHRyZXR1cm4gcmM7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDM0ODpcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHZjcHUsIE5VTEwsIGdmbiAmIzQzOyAxLCB0cnVlKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MzQ5LVx0aWYgKHJjKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00NjM2PXN0YXRpYyBpbnQgdmNwdV9kYXRfZmF1bHRfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdhZGRyLCBib29sIHdyKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00NjQ3LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQ2NDg6XHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKHZjcHUsIE5VTEwsIFx1MDAyNmYpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQ2NDktXHRpZiAocmMgXHUwMDNjPSAwKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz01NTIzPWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTY0NC1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NjQ1Olx0XHRcdHIgPSBrdm1fczM5MF9mYXVsdGluX2dmbl9zaW1wbGUodmNwdSwgTlVMTCwgZ3BhX3RvX2dmbihnYWRkciksIGZhbHNlKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NjQ2LVx0XHRcdGlmIChyID09IFBHTV9BRERSRVNTSU5HKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz01ODg5PWxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9wcmVfZmF1bHRfbWVtb3J5ICpyYW5nZSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTg5Ny1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1ODk4Olx0cmMgPSBrdm1fczM5MF9mYXVsdGluX2dmbih2Y3B1LCBOVUxMLCBcdTAwMjZmKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01ODk5LVx0aWYgKHJjID09IFBHTV9BRERSRVNTSU5HKVxuLS1cbmFyY2gvczM5MC9rdm0vcHYuYz0xNDc9aW50IGt2bV9zMzkwX3B2X21ha2Vfc2VjdXJlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnYWRkciwgdm9pZCAqdXZjYilcbi0tXG5hcmNoL3MzOTAva3ZtL3B2LmMtMTYyLVx0c2NvcGVkX2d1YXJkKG11dGV4LCBcdTAwMjZrdm0tXHUwMDNlYXJjaC5wdi5pbXBvcnRfbG9jaykge1xuYXJjaC9zMzkwL2t2bS9wdi5jOjE2MzpcdFx0cmMgPSBrdm1fczM5MF9mYXVsdGluX2dmbihOVUxMLCBrdm0sIFx1MDAyNmYpO1xuYXJjaC9zMzkwL2t2bS9wdi5jLTE2NC1cbi0tXG5hcmNoL3MzOTAva3ZtL3B2LmM9NzkxPXN0YXRpYyBpbnQgdW5wYWNrX29uZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgYWRkciwgdTY0IHR3ZWFrLFxuLS1cbmFyY2gvczM5MC9rdm0vcHYuYy04MDctXHRpZiAocmV0ID09IC1FTlhJTykge1xuYXJjaC9zMzkwL2t2bS9wdi5jOjgwODpcdFx0cmV0ID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKE5VTEwsIGt2bSwgZ3BhX3RvX2dmbihhZGRyKSwgdHJ1ZSk7XG5hcmNoL3MzOTAva3ZtL3B2LmMtODA5LVx0XHRpZiAoIXJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkwNTgKCQkJCQkJCW91dHB1dDogMTg3CgkJCQkJCQl0aG91Z2h0czogMTI0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgVGFyZ2V0IEZ1bmN0aW9uIExpc3QgZm9yIEtWTSBvbiBzMzkwKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGJlc3QgdGFyZ2V0IHRoZSBLVk0gY2hhbmdlcyBpbiB0aGlzIHBhdGNoIGZvciBmdXp6aW5nLiBga3ZtX3MzOTBfZmF1bHRpbl9nZm5gIGlzIG1lbnRpb25lZCBhcyBiZWluZyBjYWxsZWQgZnJvbSBhIGZldyBwbGFjZXMsIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBleHBsb3JlLiBJIG5lZWQgdG8gbWFrZSBhIHNvbGlkIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgcmVwcmVzZW50IGVudHJ5IHBvaW50cyB0byB0aGUgbW9kaWZpZWQgY29kZS4KCkxldCYjMzk7cyBzZWUsIGluaXRpYWxseSwgSSBjYW1lIHVwIHdpdGggYSBsaXN0OiBga3ZtX3MzOTBfdm1fc2V0X2F0dHJgLCBga3ZtX3MzOTBfaGFuZGxlX3B2YCwgYGt2bV9zMzkwX3NldF9jbW1hX2JpdHNgLCBga3ZtX3MzOTBfZ2V0X2NtbWFfYml0c2AsIGBrdm1fczM5MF9zZXRfc2tleXNgLCBga3ZtX3MzOTBfZ2V0X3NrZXlzYCwgYGt2bV9hcmNoX3ZjcHVfY3JlYXRlYCwgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCwgYGt2bV9zMzkwX2hhbmRsZV9iMmAsIGBrdm1fczM5MF9oYW5kbGVfYjlgLCBhbmQgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAuCgpIb3dldmVyLCBzb21lIG9mIHRob3NlIGFyZSBzdGF0aWMuIGBrdm1fczM5MF92bV9zZXRfYXR0cmAsIGBrdm1fczM5MF9oYW5kbGVfcHZgLCBga3ZtX3MzOTBfc2V0X2NtbWFfYml0c2AsIGBrdm1fczM5MF9nZXRfY21tYV9iaXRzYCwgYGt2bV9zMzkwX3NldF9za2V5c2AsIGFuZCBga3ZtX3MzOTBfZ2V0X3NrZXlzYCBhcmUgYWxsIHN0YXRpYyBhbmQgY2FsbGVkIGZyb20gYGt2bV9hcmNoX3ZtX2lvY3RsYC4gSSB3YW50IHRvIGF2b2lkIGxpc3RpbmcgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyBpZiBJIGNhbi4gU28sIEkgbmVlZCB0byB0aGluayBhYm91dCB3aGF0IHRoZSBhY3R1YWwgQVBJIGVudHJ5IHBvaW50cyBhcmUuICBga3ZtX2FyY2hfdm1faW9jdGxgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgYXJlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGZvciB0aGUgaW9jdGwgY2FsbHMuIEJ1dCwgdGhlIHByb21wdCBzYXlzICYjMzQ7QXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucywmIzM0OyBhbmQgdGhvc2UgYXJlIHByZXR0eSBnZW5lcmljIGlvY3RsIGRpc3BhdGNoZXJzLiBIb3dldmVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IGV4Y2x1ZGUgaW1wb3J0YW50IGNvZGUgcGF0aHMsIHNvIGxldCYjMzk7cyBrZWVwIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgc2luY2UgdGhhdCYjMzk7cyBtb2RpZmllZCBkaXJlY3RseSBieSB0aGlzIHBhdGNoLgoKSSBhbHNvIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCAgYGt2bV9zMzkwX2hhbmRsZV9iMmAgYW5kIGBrdm1fczM5MF9oYW5kbGVfYjlgIGFyZSBpbnN0cnVjdGlvbiBoYW5kbGVycy4gVGhleSBhcmUgcmVhY2hhYmxlIHdoZW4gdGhlIGd1ZXN0IGV4ZWN1dGVzIGNlcnRhaW4gaW5zdHJ1Y3Rpb25zLgoKT2theSwgbGV0JiMzOTtzIHJlZmluZSB0aGUgbGlzdCBmdXJ0aGVyLiBJIGNhbiBsaXN0IGBrdm1fYXJjaF92bV9pb2N0bGAsIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCwgYW5kIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIEFsc28sIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAsIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fczM5MF9oYW5kbGVfYjJgLCBga3ZtX3MzOTBfaGFuZGxlX2I5YC4gIEl0IGFsc28gc2VlbXMgSSBjYW4gbGlzdCBga3ZtX3MzOTBfaGFuZGxlX3B2YC4KCkkgdGhpbmsgdGhhdCYjMzk7cyBhIGdvb2QgYW5kIHNvbGlkIGxpc3QuIFRoZSBjaGFuZ2VzIHRvdWNoIGNvcmUgS1ZNIGZ1bmN0aW9uYWxpdHkgZm9yIHMzOTAsIGluY2x1ZGluZyBtZW1vcnkgbWFuYWdlbWVudCwgVkNQVSBjcmVhdGlvbi9leGVjdXRpb24sIGlvY3RscywgYW5kIHRoZSBoYW5kbGluZyBvZiBjZXJ0YWluIGluc3RydWN0aW9ucy4gYENPTkZJR19LVk1gIGlzIHRoZSByZWxldmFudCBjb25maWcuIFRoZSBnb2FsIGlzIHRvIGVuc3VyZSB0aGF0IGEgZnV6emVyIGhhcyBnb29kIGNvdmVyYWdlIG9mIHRoZSBuZXcgY29kZSwgc28gdGhlIGFuc3dlciBpcyBgV29ydGhGdXp6aW5nPXRydWVgLgoKSGVyZSYjMzk7cyB0aGUgZmluYWwgbGlzdDoKCi0gYGt2bV9hcmNoX3ZtX2lvY3RsYAotIGBrdm1fYXJjaF92Y3B1X2lvY3RsYAotIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAKLSBga3ZtX2FyY2hfdmNwdV9jcmVhdGVgCi0gYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYAotIGBrdm1fczM5MF9oYW5kbGVfYjJgCi0gYGt2bV9zMzkwX2hhbmRsZV9iOWAKLSBga3ZtX3MzOTBfaGFuZGxlX3B2YAoKQ29uZmlnOiBgS1ZNYApXb3J0aEZ1enppbmc9dHJ1ZQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdm1faW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bCYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfYjImIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfaGFuZGxlX2I5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgS1ZNIGxvZ2ljIG9uIHMzOTAsIGluY2x1ZGluZyBtZW1vcnkgcmVnaW9uIGNvbW1pdCwgVkNQVSBjcmVhdGlvbi9ydW4vaW9jdGwsIFBWIENQVSBjcmVhdGlvbi9kZXN0cnVjdGlvbiwgYW5kIGluc3RydWN0aW9uIGludGVyY2VwdGlvbiBoYW5kbGluZyAoUlJCRSwgRVNTQSwgTVZQRykuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgaW5zdHJ1Y3Rpb24gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF92bV9pb2N0bCYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfY3JlYXRlJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX2hhbmRsZV9iMiYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfYjkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgb24gczM5MCwgaW5jbHVkaW5nIG1lbW9yeSByZWdpb24gY29tbWl0LCBWQ1BVIGNyZWF0aW9uL3J1bi9pb2N0bCwgUFYgQ1BVIGNyZWF0aW9uL2Rlc3RydWN0aW9uLCBhbmQgaW5zdHJ1Y3Rpb24gaW50ZXJjZXB0aW9uIGhhbmRsaW5nIChSUkJFLCBFU1NBLCBNVlBHKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBpbnN0cnVjdGlvbiBleGVjdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0MTozMC41NTg0NTkxODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTUyNzk1MDYzOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdm1faW9jdGxcIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxcIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2NyZWF0ZVwiLFxuICAgIFwia3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV9iMlwiLFxuICAgIFwia3ZtX3MzOTBfaGFuZGxlX2I5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgb24gczM5MCwgaW5jbHVkaW5nIG1lbW9yeSByZWdpb24gY29tbWl0LCBWQ1BVIGNyZWF0aW9uL3J1bi9pb2N0bCwgUFYgQ1BVIGNyZWF0aW9uL2Rlc3RydWN0aW9uLCBhbmQgaW5zdHJ1Y3Rpb24gaW50ZXJjZXB0aW9uIGhhbmRsaW5nIChSUkJFLCBFU1NBLCBNVlBHKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBpbnN0cnVjdGlvbiBleGVjdXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQxOjMwLjU1ODQ2NzAyNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExMjQ1NzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDVkNjg0NDEzY2FlOGUxMDk0NmY2MGUxN2YzYzhlOGM1Y2Q3YTIxOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAzMCAwMDo0MToyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuaW5kZXggZWFhMzRjNWJkM2MxMS4uZWRmNzViNmFkMjBjZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbisrKyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTQ0MCw2ICs0NDAsNyBAQCBzdHJ1Y3Qga3ZtX3ZjcHVfYXJjaCB7XFxuIFxcdGJvb2wgc2tleV9lbmFibGVkO1xcbiBcXHQvKiBJbmRpY2F0b3IgaWYgdGhlIGFjY2VzcyByZWdpc3RlcnMgaGF2ZSBiZWVuIGxvYWRlZCBmcm9tIGd1ZXN0ICovXFxuIFxcdGJvb2wgYWNyc19sb2FkZWQ7XFxuK1xcdGJvb2wgaW5pdGlhbGl6ZWQ7XFxuIFxcdHN0cnVjdCBrdm1fczM5MF9wdl92Y3B1IHB2O1xcbiBcXHR1bmlvbiBkaWFnMzE4X2luZm8gZGlhZzMxOF9pbmZvO1xcbiBcXHRzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYztcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9kYXQuYyBiL2FyY2gvczM5MC9rdm0vZGF0LmNcXG5pbmRleCBlZDQyNTlkMTc2Mjk1Li4zZjJkNmU4OTAyZDc2IDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vZGF0LmNcXG4rKysgYi9hcmNoL3MzOTAva3ZtL2RhdC5jXFxuQEAgLTc1NSwxMyArNzU1LDE1IEBAIGludCBkYXRfY29uZF9zZXRfc3RvcmFnZV9rZXkoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbW1jLCB1bmlvbiBhc2NlIGFzY2UsIGdmXFxuIFxcdHJldHVybiByYztcXG4gfVxcbiBcXG4taW50IGRhdF9yZXNldF9yZWZlcmVuY2VfYml0KHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2ZuKVxcbitpbnQgZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZm4sIHVuaW9uIHNrZXkgKnNrZXkpXFxuIHtcXG4gXFx0dW5pb24gcGdzdGUgcGdzdGUsIG9sZDtcXG4gXFx0dW5pb24gY3JzdGUgKmNyc3RlcDtcXG4gXFx0dW5pb24gcHRlICpwdGVwO1xcbiBcXHRpbnQgcmM7XFxuIFxcbitcXHRza2V5LVxcdTAwM2Vza2V5ID0gMDtcXG4rXFxuIFxcdHJjID0gZGF0X2VudHJ5X3dhbGsoTlVMTCwgZ2ZuLCBhc2NlLCBEQVRfV0FMS19BTlksIFRBQkxFX1RZUEVfUEFHRV9UQUJMRSwgXFx1MDAyNmNyc3RlcCwgXFx1MDAyNnB0ZXApO1xcbiBcXHRpZiAocmMpXFxuIFxcdFxcdHJldHVybiByYztcXG5AQCAtNzcxLDIxICs3NzMsMjMgQEAgaW50IGRhdF9yZXNldF9yZWZlcmVuY2VfYml0KHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2ZuKVxcbiBcXG4gXFx0XFx0aWYgKCFjcnN0ZS5oLmZjIHx8ICFjcnN0ZS5zLmZjMS5wcilcXG4gXFx0XFx0XFx0cmV0dXJuIDA7XFxuLVxcdFxcdHJldHVybiBwYWdlX3Jlc2V0X3JlZmVyZW5jZWQobGFyZ2VfY3JzdGVfdG9fcGh5cygqY3JzdGVwLCBnZm4pKTtcXG4rXFx0XFx0c2tleS1cXHUwMDNlc2tleSA9IHBhZ2VfcmVzZXRfcmVmZXJlbmNlZChsYXJnZV9jcnN0ZV90b19waHlzKCpjcnN0ZXAsIGdmbikpIFxcdTAwM2NcXHUwMDNjIDE7XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcdG9sZCA9IHBnc3RlX2dldF9sb2NrKHB0ZXApO1xcbiBcXHRwZ3N0ZSA9IG9sZDtcXG4gXFxuIFxcdGlmICghcHRlcC1cXHUwMDNlaC5pKSB7XFxuLVxcdFxcdHJjID0gcGFnZV9yZXNldF9yZWZlcmVuY2VkKHB0ZV9vcmlnaW4oKnB0ZXApKTtcXG4tXFx0XFx0cGdzdGUuaHIgPSByYyBcXHUwMDNlXFx1MDAzZSAxO1xcbitcXHRcXHRza2V5LVxcdTAwM2Vza2V5ID0gcGFnZV9yZXNldF9yZWZlcmVuY2VkKHB0ZV9vcmlnaW4oKnB0ZXApKSBcXHUwMDNjXFx1MDAzYyAxO1xcbitcXHRcXHRwZ3N0ZS5ociA9IHNrZXktXFx1MDAzZXI7XFxuIFxcdH1cXG4tXFx0cmMgfD0gKHBnc3RlLmdyIFxcdTAwM2NcXHUwMDNjIDEpIHwgcGdzdGUuZ2M7XFxuK1xcdHNrZXktXFx1MDAzZXIgfD0gcGdzdGUuZ3I7XFxuK1xcdHNrZXktXFx1MDAzZWMgfD0gcGdzdGUuZ2M7XFxuIFxcdHBnc3RlLmdyID0gMDtcXG4gXFxuIFxcdGRhdF91cGRhdGVfcHRlcF9zZChvbGQsIHBnc3RlLCBwdGVwKTtcXG4gXFx0cGdzdGVfc2V0X3VubG9jayhwdGVwLCBwZ3N0ZSk7XFxuLVxcdHJldHVybiByYztcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBsb25nIGRhdF9yZXNldF9za2V5c19wdGUodW5pb24gcHRlICpwdGVwLCBnZm5fdCBnZm4sIGdmbl90IG5leHQsIHN0cnVjdCBkYXRfd2FsayAqd2FsaylcXG5AQCAtODQ2LDYgKzg1MCw3IEBAIHN0YXRpYyBsb25nIF9kYXRfc2xvdF9wdGUodW5pb24gcHRlICpwdGVwLCBnZm5fdCBnZm4sIGdmbl90IG5leHQsIHN0cnVjdCBkYXRfd2FsXFxuIFxcdHN0cnVjdCBzbG90X3ByaXYgKnAgPSB3YWxrLVxcdTAwM2Vwcml2O1xcbiBcXHR1bmlvbiBjcnN0ZSBkdW1teSA9IHsgLnZhbCA9IHAtXFx1MDAzZXRva2VuIH07XFxuIFxcdHVuaW9uIHB0ZSBuZXdfcHRlLCBwdGUgPSBSRUFEX09OQ0UoKnB0ZXApO1xcbitcXHR1bmlvbiBwZ3N0ZSBwZ3N0ZTtcXG4gXFxuIFxcdG5ld19wdGUgPSBfUFRFX1RPSyhkdW1teS50b2sudHlwZSwgZHVtbXkudG9rLnBhcik7XFxuIFxcbkBAIC04NTMsNyArODU4LDExIEBAIHN0YXRpYyBsb25nIF9kYXRfc2xvdF9wdGUodW5pb24gcHRlICpwdGVwLCBnZm5fdCBnZm4sIGdmbl90IG5leHQsIHN0cnVjdCBkYXRfd2FsXFxuIFxcdGlmIChwdGUudmFsID09IG5ld19wdGUudmFsKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGRhdF9wdGVwX3hjaGcocHRlcCwgbmV3X3B0ZSwgZ2ZuLCB3YWxrLVxcdTAwM2Vhc2NlLCBmYWxzZSk7XFxuK1xcdHBnc3RlID0gcGdzdGVfZ2V0X2xvY2socHRlcCk7XFxuK1xcdHBnc3RlID0gX19kYXRfcHRlcF94Y2hnKHB0ZXAsIHBnc3RlLCBuZXdfcHRlLCBnZm4sIHdhbGstXFx1MDAzZWFzY2UsIGZhbHNlKTtcXG4rXFx0cGdzdGUuY21tYV9kID0gMDtcXG4rXFx0cGdzdGVfc2V0X3VubG9jayhwdGVwLCBwZ3N0ZSk7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9kYXQuaCBiL2FyY2gvczM5MC9rdm0vZGF0LmhcXG5pbmRleCBmYWQ2MDUzMDVlMDVjLi4xNDFlZTdiOWYwMTkxIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vZGF0LmhcXG4rKysgYi9hcmNoL3MzOTAva3ZtL2RhdC5oXFxuQEAgLTUzNyw3ICs1MzcsNyBAQCBpbnQgZGF0X3NldF9zdG9yYWdlX2tleShzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgdW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZlxcbiBcXHRcXHRcXHR1bmlvbiBza2V5IHNrZXksIGJvb2wgbnEpO1xcbiBpbnQgZGF0X2NvbmRfc2V0X3N0b3JhZ2Vfa2V5KHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1tYywgdW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZm4sXFxuIFxcdFxcdFxcdCAgICAgdW5pb24gc2tleSBza2V5LCB1bmlvbiBza2V5ICpvbGRrZXksIGJvb2wgbnEsIGJvb2wgbXIsIGJvb2wgbWMpO1xcbi1pbnQgZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZm4pO1xcbitpbnQgZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZm4sIHVuaW9uIHNrZXkgKnNrZXkpO1xcbiBsb25nIGRhdF9yZXNldF9za2V5cyh1bmlvbiBhc2NlIGFzY2UsIGdmbl90IHN0YXJ0KTtcXG4gXFxuIHVuc2lnbmVkIGxvbmcgZGF0X2dldF9wdHZhbChzdHJ1Y3QgcGFnZV90YWJsZSAqdGFibGUsIHN0cnVjdCBwdHZhbF9wYXJhbSBwYXJhbSk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vZmF1bHRpbi5jIGIvYXJjaC9zMzkwL2t2bS9mYXVsdGluLmNcXG5pbmRleCBmZWU4MDA0N2JkOTRmLi40ZmY0YzU5NzA5NTY2IDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vZmF1bHRpbi5jXFxuKysrIGIvYXJjaC9zMzkwL2t2bS9mYXVsdGluLmNcXG5AQCAtOTIsOCArOTIsOCBAQCBpbnQga3ZtX3MzOTBfZmF1bHRpbl9nZm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBndWVzdF9mYVxcbiBcXHRcXHRpZiAoaXNfbm9zbG90X3BmbihmLVxcdTAwM2VwZm4pKVxcbiBcXHRcXHRcXHRyZXR1cm4gUEdNX0FERFJFU1NJTkc7XFxuIFxcdFxcdC8qIFNpZ25hbCBwZW5kaW5nOiB0cnkgYWdhaW4uICovXFxuLVxcdFxcdGlmIChmLVxcdTAwM2VwZm4gPT0gS1ZNX1BGTl9FUlJfU0lHUEVORElORylcXG4tXFx0XFx0XFx0cmV0dXJuIC1FQUdBSU47XFxuK1xcdFxcdGlmIChpc19zaWdwZW5kaW5nX3BmbihmLVxcdTAwM2VwZm4pKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlRSO1xcbiBcXHRcXHQvKiBDaGVjayBpZiBpdCdzIHJlYWQtb25seSBtZW1vcnk7IGRvbid0IHRyeSB0byBhY3R1YWxseSBoYW5kbGUgdGhhdCBjYXNlLiAqL1xcbiBcXHRcXHRpZiAoZi1cXHUwMDNlcGZuID09IEtWTV9QRk5fRVJSX1JPX0ZBVUxUKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jXFxuaW5kZXggMTk4MGRmNjFlZjMwNC4uYTQwZmUyYTEwY2JmZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jXFxuKysrIGIvYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuY1xcbkBAIC0zNjksMjcgKzM2OSwzMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9tdnBnX3BlaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmIChyYylcXG4gXFx0XFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcmMpO1xcbiBcXG4tXFx0ZG8ge1xcbi1cXHRcXHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKHNyY2FkZHIpLCBmYWxzZSk7XFxuLVxcdH0gd2hpbGUgKHJjID09IC1FQUdBSU4pO1xcbi1cXHRpZiAocmMpXFxuLVxcdFxcdHJldHVybiByYztcXG4tXFxuLVxcdC8qIEVuc3VyZSB0aGF0IHRoZSBzb3VyY2UgaXMgcGFnZWQtaW4sIG5vIGFjdHVhbCBhY2Nlc3MgLVxcdTAwM2Ugbm8ga2V5IGNoZWNraW5nICovXFxuK1xcdC8qIEVuc3VyZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBpcyBwYWdlZC1pbiwgbm8gYWN0dWFsIGFjY2VzcyAtXFx1MDAzZSBubyBrZXkgY2hlY2tpbmcgKi9cXG4gXFx0cmMgPSBndWVzdF90cmFuc2xhdGVfYWRkcmVzc193aXRoX2tleSh2Y3B1LCB2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZXMucmVncy5ncHJzW3JlZzFdLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICByZWcxLCBcXHUwMDI2ZHN0YWRkciwgR0FDQ19TVE9SRSwgMCk7XFxuIFxcdGlmIChyYylcXG4gXFx0XFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcmMpO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogSWYgYW4gZXJyb3IgaGFwcGVucyBiZWxvdywgdGhlIGluc3RydWN0aW9uIG5lZWRzIHRvIGJlIHJldHJpZWQuXFxuK1xcdCAqIFBvc2l0aXZlIGVycm9yIGNvZGVzIGFyZSBpbXBvc3NpYmxlOyBhZGRyZXNzaW5nIGV4Y2VwdGlvbnMgd291bGRcXG4rXFx0ICogaGF2ZSBiZWVuIGRpc2NvdmVyZWQgYW5kIHJlcG9ydGVkIGFib3ZlLlxcbitcXHQgKi9cXG4rXFx0a3ZtX3MzOTBfcmV0cnlfaW5zdHIodmNwdSk7XFxuK1xcbiBcXHRkbyB7XFxuLVxcdFxcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHZjcHUsIE5VTEwsIGdwYV90b19nZm4oZHN0YWRkciksIHRydWUpO1xcbitcXHRcXHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKHNyY2FkZHIpLCBmYWxzZSk7XFxuIFxcdH0gd2hpbGUgKHJjID09IC1FQUdBSU4pO1xcbiBcXHRpZiAocmMpXFxuIFxcdFxcdHJldHVybiByYztcXG4gXFxuLVxcdGt2bV9zMzkwX3JldHJ5X2luc3RyKHZjcHUpO1xcbitcXHRkbyB7XFxuK1xcdFxcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHZjcHUsIE5VTEwsIGdwYV90b19nZm4oZHN0YWRkciksIHRydWUpO1xcbitcXHR9IHdoaWxlIChyYyA9PSAtRUFHQUlOKTtcXG4gXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gcmM7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaGFuZGxlX3BhcnRpYWxfZXhlY3V0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcXG5pbmRleCA5ZTNlNmIwZDcyYWQ2Li44ZDE0NmEwNjgxZGNlIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcXG4rKysgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXFxuQEAgLTg0LDEwICs4NCwxMyBAQCBzdGF0aWMgaW50IHNjYV9pbmplY3RfZXh0X2NhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgc3JjX2lkKVxcbiBzdGF0aWMgdm9pZCBzY2FfY2xlYXJfZXh0X2NhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuIFxcdHN0cnVjdCBlc2NhX2Jsb2NrICpzY2EgPSB2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guc2NhO1xcbi1cXHR1bmlvbiBlc2NhX3NpZ3BfY3RybCAqc2lncF9jdHJsID0gXFx1MDAyNnNjYS1cXHUwMDNlY3B1W3ZjcHUtXFx1MDAzZXZjcHVfaWRdLnNpZ3BfY3RybDtcXG4rXFx0dW5pb24gZXNjYV9zaWdwX2N0cmwgKnNpZ3BfY3RybDtcXG4gXFxuLVxcdGlmICgha3ZtX3MzOTBfdXNlX3NjYV9lbnRyaWVzKCkpXFxuK1xcdGlmICgha3ZtX3MzOTBfdXNlX3NjYV9lbnRyaWVzKCkgfHwgIXZjcHUtXFx1MDAzZWFyY2guaW5pdGlhbGl6ZWQgfHwga3ZtX2lzX3Vjb250cm9sKHZjcHUtXFx1MDAzZWt2bSkpXFxuIFxcdFxcdHJldHVybjtcXG4rXFxuK1xcdC8qIEluaXRpYWxpemUgYWZ0ZXIgdGhlIGFib3ZlIGNoZWNrLCB0byBwcmV2ZW50IGdvaW5nIG91dCBvZiBib3VuZHMgKi9cXG4rXFx0c2lncF9jdHJsID0gXFx1MDAyNnNjYS1cXHUwMDNlY3B1W3ZjcHUtXFx1MDAzZXZjcHVfaWRdLnNpZ3BfY3RybDtcXG4gXFx0a3ZtX3MzOTBfY2xlYXJfY3B1ZmxhZ3ModmNwdSwgQ1BVU1RBVF9FQ0FMTF9QRU5EKTtcXG4gXFxuIFxcdFdSSVRFX09OQ0Uoc2lncF9jdHJsLVxcdTAwM2V2YWx1ZSwgMCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuYyBiL2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuY1xcbmluZGV4IDE1MGI1ZGQyMTcwZTIuLjg0YzZmNzdlOWZjOTMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jXFxuKysrIGIvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jXFxuQEAgLTU3MSw3ICs1NzEsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2tleW9wKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3Qga3ZtICprdm0sIGludCBvcFxcbiBcXHRzd2l0Y2ggKG9wKSB7XFxuIFxcdGNhc2UgS1ZNX1MzOTBfS0VZT1BfU1NLRTpcXG4gXFx0XFx0ciA9IGRhdF9jb25kX3NldF9zdG9yYWdlX2tleShtYywgYXNjZSwgZ2ZuLCBza2V5LCBcXHUwMDI2c2tleSwgMCwgMCwgMCk7XFxuLVxcdFxcdGlmIChyIFxcdTAwM2U9IDApXFxuK1xcdFxcdGlmIChyID09IDAgfHwgciA9PSAxKVxcbiBcXHRcXHRcXHRyZXR1cm4gc2tleS5za2V5O1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBLVk1fUzM5MF9LRVlPUF9JU0tFOlxcbkBAIC01ODAsMTQgKzU4MCwxNCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2tleW9wKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3Qga3ZtICprdm0sIGludCBvcFxcbiBcXHRcXHRcXHRyZXR1cm4gc2tleS5za2V5O1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBLVk1fUzM5MF9LRVlPUF9SUkJFOlxcbi1cXHRcXHRyID0gZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQoYXNjZSwgZ2ZuKTtcXG4tXFx0XFx0aWYgKHIgXFx1MDAzZSAwKVxcbi1cXHRcXHRcXHRyZXR1cm4gciBcXHUwMDNjXFx1MDAzYyAxO1xcbitcXHRcXHRyID0gZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQoYXNjZSwgZ2ZuLCBcXHUwMDI2c2tleSk7XFxuK1xcdFxcdGlmICghcilcXG4rXFx0XFx0XFx0cmV0dXJuIHNrZXkuc2tleTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuLVxcdHJldHVybiByO1xcbitcXHRyZXR1cm4gciBcXHUwMDNlIDAgPyAtRUZBVUxUIDogcjtcXG4gfVxcbiBcXG4gLyogU2VjdGlvbjogZGV2aWNlIHJlbGF0ZWQgKi9cXG5AQCAtMTMwMCw3ICsxMzAwLDkgQEAgc3RhdGljIGludCBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4ge1xcbiBcXHRpbnQgcmVzID0gLUVOWElPO1xcbiBcXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG4rXFx0Z3VhcmQoc3JjdSkoXFx1MDAyNmt2bS1cXHUwMDNlc3JjdSk7XFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19hcmNoX2xvY2spO1xcbitcXG4gXFx0c3dpdGNoIChhdHRyLVxcdTAwM2VhdHRyKSB7XFxuIFxcdGNhc2UgS1ZNX1MzOTBfVk1fTUlHUkFUSU9OX1NUQVJUOlxcbiBcXHRcXHRyZXMgPSBrdm1fczM5MF92bV9zdGFydF9taWdyYXRpb24oa3ZtKTtcXG5AQCAtMTMxMSw3ICsxMzEzLDYgQEAgc3RhdGljIGludCBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbiBcXG4gXFx0cmV0dXJuIHJlcztcXG4gfVxcbkBAIC0yMjE0LDcgKzIyMTUsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2dldF9za2V5cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9za2V5cyAqYXJncylcXG4gXFx0fVxcbiBcXG4gXFx0a3ZmcmVlKGtleXMpO1xcbi1cXHRyZXR1cm4gcjtcXG4rXFx0cmV0dXJuIHIgXFx1MDAzYz0gMCA/IHIgOiAtRUZBVUxUO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGt2bV9zMzkwX3NldF9za2V5cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9za2V5cyAqYXJncylcXG5AQCAtMjI3Niw3ICsyMjc3LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9zZXRfc2tleXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfc2tleXMgKmFyZ3MpXFxuIFxcdGt2bV9zMzkwX2ZyZWVfbW11X2NhY2hlKG1jKTtcXG4gb3V0OlxcbiBcXHRrdmZyZWUoa2V5cyk7XFxuLVxcdHJldHVybiByO1xcbitcXHRyZXR1cm4gciBcXHUwMDNjPSAwID8gciA6IC1FRkFVTFQ7XFxuIH1cXG4gXFxuIC8qXFxuQEAgLTIzODYsNyArMjM4Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfc2V0X2NtbWFfYml0cyhzdHJ1Y3Qga3ZtICprdm0sXFxuIFxcbiBcXHRzZXRfYml0KEdNQVBfRkxBR19VU0VTX0NNTSwgXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC5nbWFwLVxcdTAwM2VmbGFncyk7XFxuIFxcbi1cXHRyZXR1cm4gcjtcXG4rXFx0cmV0dXJuIHIgXFx1MDAzYz0gMCA/IHIgOiAtRUZBVUxUO1xcbiB9XFxuIFxcbiAvKipcXG5AQCAtMjk5OCw5ICsyOTk5LDggQEAgaW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbiBcXHRcXHRyID0gLUVGQVVMVDtcXG4gXFx0XFx0aWYgKGNvcHlfZnJvbV91c2VyKFxcdTAwMjZhcmdzLCBhcmdwLCBzaXplb2YoYXJncykpKVxcbiBcXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG4tXFx0XFx0ciA9IGt2bV9zMzkwX2dldF9jbW1hX2JpdHMoa3ZtLCBcXHUwMDI2YXJncyk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG4rXFx0XFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19hcmNoX2xvY2spXFxuK1xcdFxcdFxcdHIgPSBrdm1fczM5MF9nZXRfY21tYV9iaXRzKGt2bSwgXFx1MDAyNmFyZ3MpO1xcbiBcXHRcXHRpZiAoIXIpIHtcXG4gXFx0XFx0XFx0ciA9IGNvcHlfdG9fdXNlcihhcmdwLCBcXHUwMDI2YXJncywgc2l6ZW9mKGFyZ3MpKTtcXG4gXFx0XFx0XFx0aWYgKHIpXFxuQEAgLTMwMTQsOSArMzAxNCw5IEBAIGludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcXG4gXFx0XFx0ciA9IC1FRkFVTFQ7XFxuIFxcdFxcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2YXJncywgYXJncCwgc2l6ZW9mKGFyZ3MpKSlcXG4gXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlc2xvdHNfbG9jayk7XFxuK1xcdFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlc2xvdHNfYXJjaF9sb2NrKTtcXG4gXFx0XFx0ciA9IGt2bV9zMzkwX3NldF9jbW1hX2JpdHMoa3ZtLCBcXHUwMDI2YXJncyk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG4rXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2FyY2hfbG9jayk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcdGNhc2UgS1ZNX1MzOTBfUFZfQ09NTUFORDoge1xcbkBAIC0zNDYxLDcgKzM0NjEsNyBAQCBzdGF0aWMgdm9pZCBzY2FfZGVsX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuIFxcdHN0cnVjdCBlc2NhX2Jsb2NrICpzY2EgPSB2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guc2NhO1xcbiBcXG4tXFx0aWYgKCFrdm1fczM5MF91c2Vfc2NhX2VudHJpZXMoKSlcXG4rXFx0aWYgKCFrdm1fczM5MF91c2Vfc2NhX2VudHJpZXMoKSB8fCAhdmNwdS1cXHUwMDNlYXJjaC5pbml0aWFsaXplZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y2xlYXJfYml0X2ludih2Y3B1LVxcdTAwM2V2Y3B1X2lkLCAodW5zaWduZWQgbG9uZyAqKXNjYS1cXHUwMDNlbWNuKTtcXG5AQCAtMzQ4MSw4ICszNDgxLDggQEAgc3RhdGljIHZvaWQgc2NhX2FkZF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0aWYgKCFrdm1fczM5MF91c2Vfc2NhX2VudHJpZXMoKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0V1JJVEVfT05DRShzY2EtXFx1MDAzZWNwdVt2Y3B1LVxcdTAwM2V2Y3B1X2lkXS5zZGEsIHZpcnRfdG9fcGh5cyh2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jaykpO1xcbiBcXHRzZXRfYml0X2ludih2Y3B1LVxcdTAwM2V2Y3B1X2lkLCAodW5zaWduZWQgbG9uZyAqKXNjYS1cXHUwMDNlbWNuKTtcXG4tXFx0c2NhLVxcdTAwM2VjcHVbdmNwdS1cXHUwMDNldmNwdV9pZF0uc2RhID0gdmlydF90b19waHlzKHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBzY2FfY2FuX2FkZF92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkKVxcbkBAIC0zNjEzLDYgKzM2MTMsOSBAQCB2b2lkIGt2bV9hcmNoX3ZjcHVfcG9zdGNyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmICh0ZXN0X2t2bV9mYWNpbGl0eSh2Y3B1LVxcdTAwM2Vrdm0sIDc0KSB8fCB2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2gudXNlcl9pbnN0cjAgfHxcXG4gXFx0ICAgIHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC51c2VyX29wZXJleGVjKVxcbiBcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlaWN0bCB8PSBJQ1RMX09QRVJFWEM7XFxuK1xcbitcXHQvKiBQYWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bigpIGFuZCBrdm1fYXJjaF92Y3B1X2lvY3RsKCkgKi9cXG4rXFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2guaW5pdGlhbGl6ZWQsIHRydWUpO1xcbiB9XFxuIFxcbiBzdGF0aWMgYm9vbCBrdm1faGFzX3Bja21vX3N1YmZ1bmMoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIG5yKVxcbkBAIC0zNjc0LDcgKzM2NzcsOCBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcbiB2b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbi1cXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2VjYnJsbykpO1xcbitcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zaWVfYmxvY2stXFx1MDAzZWNicmxvKVxcbitcXHRcXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2VjYnJsbykpO1xcbiBcXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlY2JybG8gPSAwO1xcbiB9XFxuIFxcbkBAIC0zNzkyLDIxICszNzk2LDIxIEBAIGludCBrdm1fYXJjaF92Y3B1X3ByZWNyZWF0ZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK0RFRklORV9GUkVFKHNpZV9wYWdlLCBzdHJ1Y3Qgc2llX3BhZ2UgKiwgaWYgKF9UKSBmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpKF9UKSkpXFxuK1xcbiBpbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuLVxcdHN0cnVjdCBzaWVfcGFnZSAqc2llX3BhZ2U7XFxuK1xcdHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jIF9fZnJlZShrdm1fczM5MF9tbXVfY2FjaGUpID0gTlVMTDtcXG4rXFx0c3RydWN0IHNpZV9wYWdlICpzaWVfcGFnZSBfX2ZyZWUoc2llX3BhZ2UpID0gTlVMTDtcXG4gXFx0aW50IHJjO1xcbiBcXG4gXFx0QlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qgc2llX3BhZ2UpICE9IDQwOTYpO1xcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLm1jID0ga3ZtX3MzOTBfbmV3X21tdV9jYWNoZSgpO1xcbi1cXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2gubWMpXFxuK1xcdG1jID0ga3ZtX3MzOTBfbmV3X21tdV9jYWNoZSgpO1xcbitcXHRpZiAoIW1jKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFx0c2llX3BhZ2UgPSAoc3RydWN0IHNpZV9wYWdlICopIGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi1cXHRpZiAoIXNpZV9wYWdlKSB7XFxuLVxcdFxcdGt2bV9zMzkwX2ZyZWVfbW11X2NhY2hlKHZjcHUtXFx1MDAzZWFyY2gubWMpO1xcbi1cXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLm1jID0gTlVMTDtcXG4rXFx0aWYgKCFzaWVfcGFnZSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLVxcdH1cXG4gXFxuIFxcdHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrID0gXFx1MDAyNnNpZV9wYWdlLVxcdTAwM2VzaWVfYmxvY2s7XFxuIFxcdHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2VpdGRiYSA9IHZpcnRfdG9fcGh5cyhcXHUwMDI2c2llX3BhZ2UtXFx1MDAzZWl0ZGIpO1xcbkBAIC0zODQ4LDEwICszODUyLDkgQEAgaW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0dmNwdS1cXHUwMDNlcnVuLVxcdTAwM2Vrdm1fdmFsaWRfcmVncyB8PSBLVk1fU1lOQ19GUFJTO1xcbiBcXG4gXFx0aWYgKGt2bV9pc191Y29udHJvbCh2Y3B1LVxcdTAwM2Vrdm0pKSB7XFxuLVxcdFxcdHJjID0gLUVOT01FTTtcXG4gXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5nbWFwID0gZ21hcF9uZXdfY2hpbGQodmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmdtYXAsIC0xVUwpO1xcbiBcXHRcXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2guZ21hcClcXG4tXFx0XFx0XFx0Z290byBvdXRfZnJlZV9zaWVfYmxvY2s7XFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuIFxcbiBcXHRWTV9FVkVOVCh2Y3B1LVxcdTAwM2Vrdm0sIDMsIFxcXCJjcmVhdGUgY3B1ICVkIGF0IDB4JXAsIHNpZSBibG9jayBhdCAweCVwXFxcIixcXG5AQCAtMzg1OSwyMCArMzg2MiwxOSBAQCBpbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHR0cmFjZV9rdm1fczM5MF9jcmVhdGVfdmNwdSh2Y3B1LVxcdTAwM2V2Y3B1X2lkLCB2Y3B1LCB2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jayk7XFxuIFxcbiBcXHRyYyA9IGt2bV9zMzkwX3ZjcHVfc2V0dXAodmNwdSk7XFxuLVxcdGlmIChyYylcXG4tXFx0XFx0Z290byBvdXRfdWNvbnRyb2xfdW5pbml0O1xcbitcXHRpZiAocmMpIHtcXG4rXFx0XFx0aWYgKGt2bV9pc191Y29udHJvbCh2Y3B1LVxcdTAwM2Vrdm0pKSB7XFxuK1xcdFxcdFxcdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXFx1MDAyNnZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5nbWFwLVxcdTAwM2VjaGlsZHJlbl9sb2NrKVxcbitcXHRcXHRcXHRcXHRnbWFwX3JlbW92ZV9jaGlsZCh2Y3B1LVxcdTAwM2VhcmNoLmdtYXApO1xcbitcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmdtYXAgPSBnbWFwX3B1dCh2Y3B1LVxcdTAwM2VhcmNoLmdtYXApO1xcbitcXHRcXHR9XFxuK1xcdFxcdHJldHVybiByYztcXG4rXFx0fVxcbiBcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC5tYyA9IG5vX2ZyZWVfcHRyKG1jKTtcXG4rXFx0c2llX3BhZ2UgPSBOVUxMO1xcbiBcXHRrdm1fczM5MF91cGRhdGVfdG9wb2xvZ3lfY2hhbmdlX3JlcG9ydCh2Y3B1LVxcdTAwM2Vrdm0sIDEpO1xcbiBcXHRyZXR1cm4gMDtcXG4tXFxuLW91dF91Y29udHJvbF91bmluaXQ6XFxuLVxcdGlmIChrdm1faXNfdWNvbnRyb2wodmNwdS1cXHUwMDNla3ZtKSkge1xcbi1cXHRcXHRnbWFwX3JlbW92ZV9jaGlsZCh2Y3B1LVxcdTAwM2VhcmNoLmdtYXApO1xcbi1cXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmdtYXAgPSBnbWFwX3B1dCh2Y3B1LVxcdTAwM2VhcmNoLmdtYXApO1xcbi1cXHR9XFxuLW91dF9mcmVlX3NpZV9ibG9jazpcXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSh2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jaykpO1xcbi1cXHRyZXR1cm4gcmM7XFxuIH1cXG4gXFxuIGludCBrdm1fYXJjaF92Y3B1X3J1bm5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5AQCAtNTAzOSw2ICs1MDQxLDEwIEBAIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdCAgICBrdm1fcnVuLVxcdTAwM2Vrdm1fZGlydHlfcmVncyBcXHUwMDI2IH5LVk1fU1lOQ19TMzkwX1ZBTElEX0ZJRUxEUylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHQvKiBQYWlycyB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4ga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKCkgKi9cXG4rXFx0aWYgKCFzbXBfbG9hZF9hY3F1aXJlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLmluaXRpYWxpemVkKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHR2Y3B1X2xvYWQodmNwdSk7XFxuIFxcbiBcXHRpZiAoZ3Vlc3RkYmdfZXhpdF9wZW5kaW5nKHZjcHUpKSB7XFxuQEAgLTU1MjMsNiArNTUyOSwxMCBAQCBsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuIFxcdGxvbmcgcjtcXG4gXFx0dTE2IHJjLCBycmM7XFxuIFxcbitcXHQvKiBQYWlycyB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4ga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKCkgKi9cXG4rXFx0aWYgKCFzbXBfbG9hZF9hY3F1aXJlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLmluaXRpYWxpemVkKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHR2Y3B1X2xvYWQodmNwdSk7XFxuIFxcbiBcXHRzd2l0Y2ggKGlvY3RsKSB7XFxuQEAgLTU3OTQsMjQgKzU4MDQsMzggQEAgaW50IGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgbG9uZyBjbW1hX2RfY291bnRfcHRlKHVuaW9uIHB0ZSAqcHRlcCwgZ2ZuX3QgZ2ZuLCBnZm5fdCBuZXh0LCBzdHJ1Y3QgZGF0X3dhbGsgKndhbGspXFxuK3tcXG4rXFx0aWYgKHBnc3RlX29mKHB0ZXApLVxcdTAwM2VjbW1hX2QpXFxuK1xcdFxcdGF0b21pYzY0X2RlYyh3YWxrLVxcdTAwM2Vwcml2KTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpvbGQsXFxuIFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm5ldyxcXG4gXFx0XFx0XFx0XFx0ZW51bSBrdm1fbXJfY2hhbmdlIGNoYW5nZSlcXG4ge1xcbi1cXHRzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYyA9IE5VTEw7XFxuLVxcdGludCByYyA9IDA7XFxuK1xcdGNvbnN0IHN0cnVjdCBkYXRfd2Fsa19vcHMgb3BzID0geyAucHRlX2VudHJ5ID0gY21tYV9kX2NvdW50X3B0ZSwgfTtcXG4rXFx0c3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMgX19mcmVlKGt2bV9zMzkwX21tdV9jYWNoZSkgPSBOVUxMO1xcbitcXHRpbnQgcmMgPSAtRU5PTUVNO1xcbitcXG4rXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2FyY2hfbG9jayk7XFxuIFxcbiBcXHRpZiAoY2hhbmdlID09IEtWTV9NUl9GTEFHU19PTkxZKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRtYyA9IGt2bV9zMzkwX25ld19tbXVfY2FjaGUoKTtcXG4tXFx0aWYgKCFtYykge1xcbi1cXHRcXHRyYyA9IC1FTk9NRU07XFxuK1xcdGlmICghbWMpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbi1cXHR9XFxuLVxcbityZXRyeTpcXG4gXFx0c2NvcGVkX2d1YXJkKHdyaXRlX2xvY2ssIFxcdTAwMjZrdm0tXFx1MDAzZW1tdV9sb2NrKSB7XFxuK1xcdFxcdGlmIChrdm0tXFx1MDAzZWFyY2gubWlncmF0aW9uX21vZGUgXFx1MDAyNlxcdTAwMjYga3ZtLVxcdTAwM2VhcmNoLnVzZV9jbW1hIFxcdTAwMjZcXHUwMDI2IG9sZCkge1xcbitcXHRcXHRcXHRfZGF0X3dhbGtfZ2ZuX3JhbmdlKG9sZC1cXHUwMDNlYmFzZV9nZm4sIG9sZC1cXHUwMDNlYmFzZV9nZm4gKyBvbGQtXFx1MDAzZW5wYWdlcyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIGt2bS1cXHUwMDNlYXJjaC5nbWFwLVxcdTAwM2Vhc2NlLCBcXHUwMDI2b3BzLCBEQVRfV0FMS19JR05fSE9MRVMsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLmNtbWFfZGlydHlfcGFnZXMpO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRzd2l0Y2ggKGNoYW5nZSkge1xcbiBcXHRcXHRjYXNlIEtWTV9NUl9ERUxFVEU6XFxuIFxcdFxcdFxcdHJjID0gZGF0X2RlbGV0ZV9zbG90KG1jLCBrdm0tXFx1MDAzZWFyY2guZ21hcC1cXHUwMDNlYXNjZSwgb2xkLVxcdTAwM2ViYXNlX2dmbiwgb2xkLVxcdTAwM2VucGFnZXMpO1xcbkBAIC01ODI3LDEzICs1ODUxLDE4IEBAIHZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbiBcXHRcXHRjYXNlIEtWTV9NUl9GTEFHU19PTkxZOlxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG4rXFx0XFx0XFx0cmMgPSAwO1xcbiBcXHRcXHRcXHRXQVJOKDEsIFxcXCJVbmtub3duIEtWTSBNUiBDSEFOR0U6ICVkXFxcXG5cXFwiLCBjaGFuZ2UpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4rXFx0aWYgKHJjID09IC1FTk9NRU0pIHtcXG4rXFx0XFx0cmMgPSBrdm1fczM5MF9tbXVfY2FjaGVfdG9wdXAobWMpO1xcbitcXHRcXHRpZiAoIXJjKVxcbitcXHRcXHRcXHRnb3RvIHJldHJ5O1xcbitcXHR9XFxuIG91dDpcXG4tXFx0aWYgKHJjKVxcbitcXHRpZiAoS1ZNX0JVR19PTihyYywga3ZtKSlcXG4gXFx0XFx0cHJfd2FybihcXFwiZmFpbGVkIHRvIGNvbW1pdCBtZW1vcnkgcmVnaW9uXFxcXG5cXFwiKTtcXG4tXFx0a3ZtX3MzOTBfZnJlZV9tbXVfY2FjaGUobWMpO1xcbiBcXHRyZXR1cm47XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9wcml2LmNcXG5pbmRleCBhZDBkZGM0MzNhNzNjLi5iMWJhMjRjMzQ2ZWZhIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vcHJpdi5jXFxuKysrIGIvYXJjaC9zMzkwL2t2bS9wcml2LmNcXG5AQCAtMjg5LDYgKzI4OSw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX2lza2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBzdGF0aWMgaW50IGhhbmRsZV9ycmJlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGdhZGRyO1xcbitcXHR1bmlvbiBza2V5IHNrZXk7XFxuIFxcdGludCByZWcxLCByZWcyO1xcbiBcXHRpbnQgcmM7XFxuIFxcbkBAIC0zMDcsMTIgKzMwOCwxMiBAQCBzdGF0aWMgaW50IGhhbmRsZV9ycmJlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0Z2FkZHIgPSBrdm1fczM5MF9sb2dpY2FsX3RvX2VmZmVjdGl2ZSh2Y3B1LCBnYWRkcik7XFxuIFxcdGdhZGRyID0ga3ZtX3MzOTBfcmVhbF90b19hYnModmNwdSwgZ2FkZHIpO1xcbiBcXHRzY29wZWRfZ3VhcmQocmVhZF9sb2NrLCBcXHUwMDI2dmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VtbXVfbG9jaylcXG4tXFx0XFx0cmMgPSBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh2Y3B1LVxcdTAwM2VhcmNoLmdtYXAtXFx1MDAzZWFzY2UsIGdwYV90b19nZm4oZ2FkZHIpKTtcXG4rXFx0XFx0cmMgPSBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh2Y3B1LVxcdTAwM2VhcmNoLmdtYXAtXFx1MDAzZWFzY2UsIGdwYV90b19nZm4oZ2FkZHIpLCBcXHUwMDI2c2tleSk7XFxuIFxcdGlmIChyYyBcXHUwMDNlIDApXFxuIFxcdFxcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgcmMpO1xcbiBcXHRpZiAocmMgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gcmM7XFxuLVxcdGt2bV9zMzkwX3NldF9wc3dfY2ModmNwdSwgcmMpO1xcbitcXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIChza2V5LnNrZXkgXFx1MDAzZVxcdTAwM2UgMSkgXFx1MDAyNiAzKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTEyNjAsOCArMTI2MSw5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX2Vzc2Eoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRcXHQvKiBSZXRyeSB0aGUgRVNTQSBpbnN0cnVjdGlvbiAqL1xcbiBcXHRcXHRrdm1fczM5MF9yZXRyeV9pbnN0cih2Y3B1KTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0c2NvcGVkX2d1YXJkKHJlYWRfbG9jaywgXFx1MDAyNnZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlbW11X2xvY2spXFxuLVxcdFxcdFxcdGkgPSBfX2RvX2Vzc2EodmNwdSwgb3JjKTtcXG4rXFx0XFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2dmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VzbG90c19hcmNoX2xvY2spXFxuK1xcdFxcdFxcdHNjb3BlZF9ndWFyZChyZWFkX2xvY2ssIFxcdTAwMjZ2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZW1tdV9sb2NrKVxcbitcXHRcXHRcXHRcXHRpID0gX19kb19lc3NhKHZjcHUsIG9yYyk7XFxuIFxcdFxcdGlmIChpIFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0cmV0dXJuIGk7XFxuIFxcdFxcdC8qIEFjY291bnQgZm9yIHRoZSBwb3NzaWJsZSBleHRyYSBjYnJsIGVudHJ5ICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcHYuYyBiL2FyY2gvczM5MC9rdm0vcHYuY1xcbmluZGV4IDFiZWFjYzg0MWNhODUuLmIwMmUwMTU5ZDNjZDIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wdi5jXFxuKysrIGIvYXJjaC9zMzkwL2t2bS9wdi5jXFxuQEAgLTI0NCw2ICsyNDQsMjQgQEAgc3RhdGljIHZvaWQga3ZtX3MzOTBfY2xlYXJfcHZfc3RhdGUoc3RydWN0IGt2bSAqa3ZtKVxcbiBcXHRrdm0tXFx1MDAzZWFyY2gucHYuc3Rvcl92YXIgPSBOVUxMO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBrdm1fczM5MF9wdl9kaXNwb3NlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZnJlZV9zdG9yX2Jhc2UpXFxuK3tcXG4rXFx0aWYgKGZyZWVfc3Rvcl9iYXNlKVxcbitcXHRcXHRmcmVlX3BhZ2VzKHZjcHUtXFx1MDAzZWFyY2gucHYuc3Rvcl9iYXNlLCBnZXRfb3JkZXIodXZfaW5mby5ndWVzdF9jcHVfc3Rvcl9sZW4pKTtcXG4rXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNpZGFfYWRkcih2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jaykpO1xcbitcXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlcHZfaGFuZGxlX2NwdSA9IDA7XFxuK1xcdHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2Vwdl9oYW5kbGVfY29uZmlnID0gMDtcXG4rXFx0bWVtc2V0KFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnB2LCAwLCBzaXplb2YodmNwdS1cXHUwMDNlYXJjaC5wdikpO1xcbitcXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlc2RmID0gMDtcXG4rXFx0LypcXG4rXFx0ICogVGhlIHNpZGFkIGZpZWxkIChmb3Igc2RmID09IDIpIGlzIG5vdyB0aGUgZ2JlYSBmaWVsZCAoZm9yIHNkZiA9PSAwKS5cXG4rXFx0ICogVXNlIHRoZSByZXNldCB2YWx1ZSBvZiBnYmVhIHRvIGF2b2lkIGxlYWtpbmcgdGhlIGtlcm5lbCBwb2ludGVyIG9mXFxuK1xcdCAqIHRoZSBqdXN0IGZyZWVkIHNpZGEuXFxuK1xcdCAqL1xcbitcXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlZ2JlYSA9IDE7XFxuK1xcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UTEJfRkxVU0gsIHZjcHUpO1xcbit9XFxuK1xcbiBpbnQga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYylcXG4ge1xcbiBcXHRpbnQgY2M7XFxuQEAgLTI1OCwyNCArMjc2LDkgQEAgaW50IGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXFxuIFxcdFdBUk5fT05DRShjYywgXFxcInByb3R2aXJ0IGRlc3Ryb3kgY3B1IGZhaWxlZCByYyAleCBycmMgJXhcXFwiLCAqcmMsICpycmMpO1xcbiBcXG4gXFx0LyogSW50ZW5kZWQgbWVtb3J5IGxlYWsgZm9yIHNvbWV0aGluZyB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4uICovXFxuLVxcdGlmICghY2MpXFxuLVxcdFxcdGZyZWVfcGFnZXModmNwdS1cXHUwMDNlYXJjaC5wdi5zdG9yX2Jhc2UsXFxuLVxcdFxcdFxcdCAgIGdldF9vcmRlcih1dl9pbmZvLmd1ZXN0X2NwdV9zdG9yX2xlbikpO1xcbi1cXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNpZGFfYWRkcih2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jaykpO1xcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlcHZfaGFuZGxlX2NwdSA9IDA7XFxuLVxcdHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2Vwdl9oYW5kbGVfY29uZmlnID0gMDtcXG4tXFx0bWVtc2V0KFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnB2LCAwLCBzaXplb2YodmNwdS1cXHUwMDNlYXJjaC5wdikpO1xcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlc2RmID0gMDtcXG4tXFx0LypcXG4tXFx0ICogVGhlIHNpZGFkIGZpZWxkIChmb3Igc2RmID09IDIpIGlzIG5vdyB0aGUgZ2JlYSBmaWVsZCAoZm9yIHNkZiA9PSAwKS5cXG4tXFx0ICogVXNlIHRoZSByZXNldCB2YWx1ZSBvZiBnYmVhIHRvIGF2b2lkIGxlYWtpbmcgdGhlIGtlcm5lbCBwb2ludGVyIG9mXFxuLVxcdCAqIHRoZSBqdXN0IGZyZWVkIHNpZGEuXFxuLVxcdCAqL1xcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlZ2JlYSA9IDE7XFxuLVxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UTEJfRkxVU0gsIHZjcHUpO1xcbitcXHRrdm1fczM5MF9wdl9kaXNwb3NlX2NwdSh2Y3B1LCAhY2MpO1xcbiBcXG4tXFx0cmV0dXJuIGNjID8gRUlPIDogMDtcXG4rXFx0cmV0dXJuIGNjID8gLUVJTyA6IDA7XFxuIH1cXG4gXFxuIGludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXFxuQEAgLTMxOSw5ICszMjIsNyBAQCBpbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxcbiBcXHRcXHQgICAgIHV2Y2IuaGVhZGVyLnJyYyk7XFxuIFxcbiBcXHRpZiAoY2MpIHtcXG4tXFx0XFx0dTE2IGR1bW15O1xcbi1cXG4tXFx0XFx0a3ZtX3MzOTBfcHZfZGVzdHJveV9jcHUodmNwdSwgXFx1MDAyNmR1bW15LCBcXHUwMDI2ZHVtbXkpO1xcbitcXHRcXHRrdm1fczM5MF9wdl9kaXNwb3NlX2NwdSh2Y3B1LCB0cnVlKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcdH1cXG4gXFxuQEAgLTgwOSw3ICs4MTAsNyBAQCBzdGF0aWMgaW50IHVucGFja19vbmUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGFkZHIsIHU2NCB0d2VhayxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FQUdBSU47XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FQUdBSU4pXFxuK1xcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FQUdBSU4gXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FSU5UUilcXG4gXFx0XFx0S1ZNX1VWX0VWRU5UKGt2bSwgMywgXFxcIlBST1RWSVJUIFZNIFVOUEFDSzogZmFpbGVkIGFkZHIgJWxseCB3aXRoIHJjICV4IHJyYyAleFxcXCIsXFxuIFxcdFxcdFxcdCAgICAgdXZjYi5nYWRkciwgKnJjLCAqcnJjKTtcXG4gXFx0cmV0dXJuIHJldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDE6MzEuMDcwNzQ4NTI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Njk0NzY3MjAyNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZtX2lvY3RsXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX3J1blwiLFxuICAgIFwia3ZtX2FyY2hfdmNwdV9jcmVhdGVcIixcbiAgICBcImt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uXCIsXG4gICAgXCJrdm1fczM5MF9oYW5kbGVfYjJcIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV9iOVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgS1ZNIGxvZ2ljIG9uIHMzOTAsIGluY2x1ZGluZyBtZW1vcnkgcmVnaW9uIGNvbW1pdCwgVkNQVSBjcmVhdGlvbi9ydW4vaW9jdGwsIFBWIENQVSBjcmVhdGlvbi9kZXN0cnVjdGlvbiwgYW5kIGluc3RydWN0aW9uIGludGVyY2VwdGlvbiBoYW5kbGluZyAoUlJCRSwgRVNTQSwgTVZQRykuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgaW5zdHJ1Y3Rpb24gZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwNWQ2ODQ0MTNjYWU4ZTEwOTQ2ZjYwZTE3ZjNjOGU4YzVjZDdhMjE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDA6NDE6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCBlYWEzNGM1YmQzYzExLi5lZGY3NWI2YWQyMGNlIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbisrKyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtNDQwLDYgKzQ0MCw3IEBAIHN0cnVjdCBrdm1fdmNwdV9hcmNoIHtcbiBcdGJvb2wgc2tleV9lbmFibGVkO1xuIFx0LyogSW5kaWNhdG9yIGlmIHRoZSBhY2Nlc3MgcmVnaXN0ZXJzIGhhdmUgYmVlbiBsb2FkZWQgZnJvbSBndWVzdCAqL1xuIFx0Ym9vbCBhY3JzX2xvYWRlZDtcbitcdGJvb2wgaW5pdGlhbGl6ZWQ7XG4gXHRzdHJ1Y3Qga3ZtX3MzOTBfcHZfdmNwdSBwdjtcbiBcdHVuaW9uIGRpYWczMThfaW5mbyBkaWFnMzE4X2luZm87XG4gXHRzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYztcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2RhdC5jIGIvYXJjaC9zMzkwL2t2bS9kYXQuY1xuaW5kZXggZWQ0MjU5ZDE3NjI5NS4uM2YyZDZlODkwMmQ3NiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vZGF0LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vZGF0LmNcbkBAIC03NTUsMTMgKzc1NSwxNSBAQCBpbnQgZGF0X2NvbmRfc2V0X3N0b3JhZ2Vfa2V5KHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1tYywgdW5pb24gYXNjZSBhc2NlLCBnZlxuIFx0cmV0dXJuIHJjO1xuIH1cbiBcbi1pbnQgZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZm4pXG4raW50IGRhdF9yZXNldF9yZWZlcmVuY2VfYml0KHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2ZuLCB1bmlvbiBza2V5ICpza2V5KVxuIHtcbiBcdHVuaW9uIHBnc3RlIHBnc3RlLCBvbGQ7XG4gXHR1bmlvbiBjcnN0ZSAqY3JzdGVwO1xuIFx0dW5pb24gcHRlICpwdGVwO1xuIFx0aW50IHJjO1xuIFxuK1x0c2tleS1cdTAwM2Vza2V5ID0gMDtcbitcbiBcdHJjID0gZGF0X2VudHJ5X3dhbGsoTlVMTCwgZ2ZuLCBhc2NlLCBEQVRfV0FMS19BTlksIFRBQkxFX1RZUEVfUEFHRV9UQUJMRSwgXHUwMDI2Y3JzdGVwLCBcdTAwMjZwdGVwKTtcbiBcdGlmIChyYylcbiBcdFx0cmV0dXJuIHJjO1xuQEAgLTc3MSwyMSArNzczLDIzIEBAIGludCBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh1bmlvbiBhc2NlIGFzY2UsIGdmbl90IGdmbilcbiBcbiBcdFx0aWYgKCFjcnN0ZS5oLmZjIHx8ICFjcnN0ZS5zLmZjMS5wcilcbiBcdFx0XHRyZXR1cm4gMDtcbi1cdFx0cmV0dXJuIHBhZ2VfcmVzZXRfcmVmZXJlbmNlZChsYXJnZV9jcnN0ZV90b19waHlzKCpjcnN0ZXAsIGdmbikpO1xuK1x0XHRza2V5LVx1MDAzZXNrZXkgPSBwYWdlX3Jlc2V0X3JlZmVyZW5jZWQobGFyZ2VfY3JzdGVfdG9fcGh5cygqY3JzdGVwLCBnZm4pKSBcdTAwM2NcdTAwM2MgMTtcbitcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXHRvbGQgPSBwZ3N0ZV9nZXRfbG9jayhwdGVwKTtcbiBcdHBnc3RlID0gb2xkO1xuIFxuIFx0aWYgKCFwdGVwLVx1MDAzZWguaSkge1xuLVx0XHRyYyA9IHBhZ2VfcmVzZXRfcmVmZXJlbmNlZChwdGVfb3JpZ2luKCpwdGVwKSk7XG4tXHRcdHBnc3RlLmhyID0gcmMgXHUwMDNlXHUwMDNlIDE7XG4rXHRcdHNrZXktXHUwMDNlc2tleSA9IHBhZ2VfcmVzZXRfcmVmZXJlbmNlZChwdGVfb3JpZ2luKCpwdGVwKSkgXHUwMDNjXHUwMDNjIDE7XG4rXHRcdHBnc3RlLmhyID0gc2tleS1cdTAwM2VyO1xuIFx0fVxuLVx0cmMgfD0gKHBnc3RlLmdyIFx1MDAzY1x1MDAzYyAxKSB8IHBnc3RlLmdjO1xuK1x0c2tleS1cdTAwM2VyIHw9IHBnc3RlLmdyO1xuK1x0c2tleS1cdTAwM2VjIHw9IHBnc3RlLmdjO1xuIFx0cGdzdGUuZ3IgPSAwO1xuIFxuIFx0ZGF0X3VwZGF0ZV9wdGVwX3NkKG9sZCwgcGdzdGUsIHB0ZXApO1xuIFx0cGdzdGVfc2V0X3VubG9jayhwdGVwLCBwZ3N0ZSk7XG4tXHRyZXR1cm4gcmM7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGxvbmcgZGF0X3Jlc2V0X3NrZXlzX3B0ZSh1bmlvbiBwdGUgKnB0ZXAsIGdmbl90IGdmbiwgZ2ZuX3QgbmV4dCwgc3RydWN0IGRhdF93YWxrICp3YWxrKVxuQEAgLTg0Niw2ICs4NTAsNyBAQCBzdGF0aWMgbG9uZyBfZGF0X3Nsb3RfcHRlKHVuaW9uIHB0ZSAqcHRlcCwgZ2ZuX3QgZ2ZuLCBnZm5fdCBuZXh0LCBzdHJ1Y3QgZGF0X3dhbFxuIFx0c3RydWN0IHNsb3RfcHJpdiAqcCA9IHdhbGstXHUwMDNlcHJpdjtcbiBcdHVuaW9uIGNyc3RlIGR1bW15ID0geyAudmFsID0gcC1cdTAwM2V0b2tlbiB9O1xuIFx0dW5pb24gcHRlIG5ld19wdGUsIHB0ZSA9IFJFQURfT05DRSgqcHRlcCk7XG4rXHR1bmlvbiBwZ3N0ZSBwZ3N0ZTtcbiBcbiBcdG5ld19wdGUgPSBfUFRFX1RPSyhkdW1teS50b2sudHlwZSwgZHVtbXkudG9rLnBhcik7XG4gXG5AQCAtODUzLDcgKzg1OCwxMSBAQCBzdGF0aWMgbG9uZyBfZGF0X3Nsb3RfcHRlKHVuaW9uIHB0ZSAqcHRlcCwgZ2ZuX3QgZ2ZuLCBnZm5fdCBuZXh0LCBzdHJ1Y3QgZGF0X3dhbFxuIFx0aWYgKHB0ZS52YWwgPT0gbmV3X3B0ZS52YWwpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0ZGF0X3B0ZXBfeGNoZyhwdGVwLCBuZXdfcHRlLCBnZm4sIHdhbGstXHUwMDNlYXNjZSwgZmFsc2UpO1xuK1x0cGdzdGUgPSBwZ3N0ZV9nZXRfbG9jayhwdGVwKTtcbitcdHBnc3RlID0gX19kYXRfcHRlcF94Y2hnKHB0ZXAsIHBnc3RlLCBuZXdfcHRlLCBnZm4sIHdhbGstXHUwMDNlYXNjZSwgZmFsc2UpO1xuK1x0cGdzdGUuY21tYV9kID0gMDtcbitcdHBnc3RlX3NldF91bmxvY2socHRlcCwgcGdzdGUpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vZGF0LmggYi9hcmNoL3MzOTAva3ZtL2RhdC5oXG5pbmRleCBmYWQ2MDUzMDVlMDVjLi4xNDFlZTdiOWYwMTkxIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9kYXQuaFxuKysrIGIvYXJjaC9zMzkwL2t2bS9kYXQuaFxuQEAgLTUzNyw3ICs1MzcsNyBAQCBpbnQgZGF0X3NldF9zdG9yYWdlX2tleShzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgdW5pb24gYXNjZSBhc2NlLCBnZm5fdCBnZlxuIFx0XHRcdHVuaW9uIHNrZXkgc2tleSwgYm9vbCBucSk7XG4gaW50IGRhdF9jb25kX3NldF9zdG9yYWdlX2tleShzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptbWMsIHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2ZuLFxuIFx0XHRcdCAgICAgdW5pb24gc2tleSBza2V5LCB1bmlvbiBza2V5ICpvbGRrZXksIGJvb2wgbnEsIGJvb2wgbXIsIGJvb2wgbWMpO1xuLWludCBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh1bmlvbiBhc2NlIGFzY2UsIGdmbl90IGdmbik7XG4raW50IGRhdF9yZXNldF9yZWZlcmVuY2VfYml0KHVuaW9uIGFzY2UgYXNjZSwgZ2ZuX3QgZ2ZuLCB1bmlvbiBza2V5ICpza2V5KTtcbiBsb25nIGRhdF9yZXNldF9za2V5cyh1bmlvbiBhc2NlIGFzY2UsIGdmbl90IHN0YXJ0KTtcbiBcbiB1bnNpZ25lZCBsb25nIGRhdF9nZXRfcHR2YWwoc3RydWN0IHBhZ2VfdGFibGUgKnRhYmxlLCBzdHJ1Y3QgcHR2YWxfcGFyYW0gcGFyYW0pO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vZmF1bHRpbi5jIGIvYXJjaC9zMzkwL2t2bS9mYXVsdGluLmNcbmluZGV4IGZlZTgwMDQ3YmQ5NGYuLjRmZjRjNTk3MDk1NjYgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uY1xuKysrIGIvYXJjaC9zMzkwL2t2bS9mYXVsdGluLmNcbkBAIC05Miw4ICs5Miw4IEBAIGludCBrdm1fczM5MF9mYXVsdGluX2dmbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGd1ZXN0X2ZhXG4gXHRcdGlmIChpc19ub3Nsb3RfcGZuKGYtXHUwMDNlcGZuKSlcbiBcdFx0XHRyZXR1cm4gUEdNX0FERFJFU1NJTkc7XG4gXHRcdC8qIFNpZ25hbCBwZW5kaW5nOiB0cnkgYWdhaW4uICovXG4tXHRcdGlmIChmLVx1MDAzZXBmbiA9PSBLVk1fUEZOX0VSUl9TSUdQRU5ESU5HKVxuLVx0XHRcdHJldHVybiAtRUFHQUlOO1xuK1x0XHRpZiAoaXNfc2lncGVuZGluZ19wZm4oZi1cdTAwM2VwZm4pKVxuK1x0XHRcdHJldHVybiAtRUlOVFI7XG4gXHRcdC8qIENoZWNrIGlmIGl0J3MgcmVhZC1vbmx5IG1lbW9yeTsgZG9uJ3QgdHJ5IHRvIGFjdHVhbGx5IGhhbmRsZSB0aGF0IGNhc2UuICovXG4gXHRcdGlmIChmLVx1MDAzZXBmbiA9PSBLVk1fUEZOX0VSUl9ST19GQVVMVClcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYyBiL2FyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmNcbmluZGV4IDE5ODBkZjYxZWYzMDQuLmE0MGZlMmExMGNiZmUgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jXG5AQCAtMzY5LDI3ICszNjksMzAgQEAgc3RhdGljIGludCBoYW5kbGVfbXZwZ19wZWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7XG4gXG4tXHRkbyB7XG4tXHRcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKHZjcHUsIE5VTEwsIGdwYV90b19nZm4oc3JjYWRkciksIGZhbHNlKTtcbi1cdH0gd2hpbGUgKHJjID09IC1FQUdBSU4pO1xuLVx0aWYgKHJjKVxuLVx0XHRyZXR1cm4gcmM7XG4tXG4tXHQvKiBFbnN1cmUgdGhhdCB0aGUgc291cmNlIGlzIHBhZ2VkLWluLCBubyBhY3R1YWwgYWNjZXNzIC1cdTAwM2Ugbm8ga2V5IGNoZWNraW5nICovXG4rXHQvKiBFbnN1cmUgdGhhdCB0aGUgZGVzdGluYXRpb24gaXMgcGFnZWQtaW4sIG5vIGFjdHVhbCBhY2Nlc3MgLVx1MDAzZSBubyBrZXkgY2hlY2tpbmcgKi9cbiBcdHJjID0gZ3Vlc3RfdHJhbnNsYXRlX2FkZHJlc3Nfd2l0aF9rZXkodmNwdSwgdmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbcmVnMV0sXG4gXHRcdFx0XHRcdCAgICAgIHJlZzEsIFx1MDAyNmRzdGFkZHIsIEdBQ0NfU1RPUkUsIDApO1xuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7XG4gXG4rXHQvKlxuK1x0ICogSWYgYW4gZXJyb3IgaGFwcGVucyBiZWxvdywgdGhlIGluc3RydWN0aW9uIG5lZWRzIHRvIGJlIHJldHJpZWQuXG4rXHQgKiBQb3NpdGl2ZSBlcnJvciBjb2RlcyBhcmUgaW1wb3NzaWJsZTsgYWRkcmVzc2luZyBleGNlcHRpb25zIHdvdWxkXG4rXHQgKiBoYXZlIGJlZW4gZGlzY292ZXJlZCBhbmQgcmVwb3J0ZWQgYWJvdmUuXG4rXHQgKi9cbitcdGt2bV9zMzkwX3JldHJ5X2luc3RyKHZjcHUpO1xuK1xuIFx0ZG8ge1xuLVx0XHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKGRzdGFkZHIpLCB0cnVlKTtcbitcdFx0cmMgPSBrdm1fczM5MF9mYXVsdGluX2dmbl9zaW1wbGUodmNwdSwgTlVMTCwgZ3BhX3RvX2dmbihzcmNhZGRyKSwgZmFsc2UpO1xuIFx0fSB3aGlsZSAocmMgPT0gLUVBR0FJTik7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbi1cdGt2bV9zMzkwX3JldHJ5X2luc3RyKHZjcHUpO1xuK1x0ZG8ge1xuK1x0XHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKGRzdGFkZHIpLCB0cnVlKTtcbitcdH0gd2hpbGUgKHJjID09IC1FQUdBSU4pO1xuIFxuLVx0cmV0dXJuIDA7XG4rXHRyZXR1cm4gcmM7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaGFuZGxlX3BhcnRpYWxfZXhlY3V0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jIGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xuaW5kZXggOWUzZTZiMGQ3MmFkNi4uOGQxNDZhMDY4MWRjZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbkBAIC04NCwxMCArODQsMTMgQEAgc3RhdGljIGludCBzY2FfaW5qZWN0X2V4dF9jYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHNyY19pZClcbiBzdGF0aWMgdm9pZCBzY2FfY2xlYXJfZXh0X2NhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBlc2NhX2Jsb2NrICpzY2EgPSB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnNjYTtcbi1cdHVuaW9uIGVzY2Ffc2lncF9jdHJsICpzaWdwX2N0cmwgPSBcdTAwMjZzY2EtXHUwMDNlY3B1W3ZjcHUtXHUwMDNldmNwdV9pZF0uc2lncF9jdHJsO1xuK1x0dW5pb24gZXNjYV9zaWdwX2N0cmwgKnNpZ3BfY3RybDtcbiBcbi1cdGlmICgha3ZtX3MzOTBfdXNlX3NjYV9lbnRyaWVzKCkpXG4rXHRpZiAoIWt2bV9zMzkwX3VzZV9zY2FfZW50cmllcygpIHx8ICF2Y3B1LVx1MDAzZWFyY2guaW5pdGlhbGl6ZWQgfHwga3ZtX2lzX3Vjb250cm9sKHZjcHUtXHUwMDNla3ZtKSlcbiBcdFx0cmV0dXJuO1xuK1xuK1x0LyogSW5pdGlhbGl6ZSBhZnRlciB0aGUgYWJvdmUgY2hlY2ssIHRvIHByZXZlbnQgZ29pbmcgb3V0IG9mIGJvdW5kcyAqL1xuK1x0c2lncF9jdHJsID0gXHUwMDI2c2NhLVx1MDAzZWNwdVt2Y3B1LVx1MDAzZXZjcHVfaWRdLnNpZ3BfY3RybDtcbiBcdGt2bV9zMzkwX2NsZWFyX2NwdWZsYWdzKHZjcHUsIENQVVNUQVRfRUNBTExfUEVORCk7XG4gXG4gXHRXUklURV9PTkNFKHNpZ3BfY3RybC1cdTAwM2V2YWx1ZSwgMCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jIGIvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jXG5pbmRleCAxNTBiNWRkMjE3MGUyLi44NGM2Zjc3ZTlmYzkzIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmNcbkBAIC01NzEsNyArNTcxLDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9rZXlvcChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGt2bSAqa3ZtLCBpbnQgb3BcbiBcdHN3aXRjaCAob3ApIHtcbiBcdGNhc2UgS1ZNX1MzOTBfS0VZT1BfU1NLRTpcbiBcdFx0ciA9IGRhdF9jb25kX3NldF9zdG9yYWdlX2tleShtYywgYXNjZSwgZ2ZuLCBza2V5LCBcdTAwMjZza2V5LCAwLCAwLCAwKTtcbi1cdFx0aWYgKHIgXHUwMDNlPSAwKVxuK1x0XHRpZiAociA9PSAwIHx8IHIgPT0gMSlcbiBcdFx0XHRyZXR1cm4gc2tleS5za2V5O1xuIFx0XHRicmVhaztcbiBcdGNhc2UgS1ZNX1MzOTBfS0VZT1BfSVNLRTpcbkBAIC01ODAsMTQgKzU4MCwxNCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2tleW9wKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3Qga3ZtICprdm0sIGludCBvcFxuIFx0XHRcdHJldHVybiBza2V5LnNrZXk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fUzM5MF9LRVlPUF9SUkJFOlxuLVx0XHRyID0gZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQoYXNjZSwgZ2ZuKTtcbi1cdFx0aWYgKHIgXHUwMDNlIDApXG4tXHRcdFx0cmV0dXJuIHIgXHUwMDNjXHUwMDNjIDE7XG4rXHRcdHIgPSBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdChhc2NlLCBnZm4sIFx1MDAyNnNrZXkpO1xuK1x0XHRpZiAoIXIpXG4rXHRcdFx0cmV0dXJuIHNrZXkuc2tleTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbi1cdHJldHVybiByO1xuK1x0cmV0dXJuIHIgXHUwMDNlIDAgPyAtRUZBVUxUIDogcjtcbiB9XG4gXG4gLyogU2VjdGlvbjogZGV2aWNlIHJlbGF0ZWQgKi9cbkBAIC0xMzAwLDcgKzEzMDAsOSBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb24oc3RydWN0IGt2bSAqa3ZtLFxuIHtcbiBcdGludCByZXMgPSAtRU5YSU87XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmt2bS1cdTAwM2VzbG90c19sb2NrKTtcbitcdGd1YXJkKHNyY3UpKFx1MDAyNmt2bS1cdTAwM2VzcmN1KTtcbitcdGd1YXJkKG11dGV4KShcdTAwMjZrdm0tXHUwMDNlc2xvdHNfYXJjaF9sb2NrKTtcbitcbiBcdHN3aXRjaCAoYXR0ci1cdTAwM2VhdHRyKSB7XG4gXHRjYXNlIEtWTV9TMzkwX1ZNX01JR1JBVElPTl9TVEFSVDpcbiBcdFx0cmVzID0ga3ZtX3MzOTBfdm1fc3RhcnRfbWlncmF0aW9uKGt2bSk7XG5AQCAtMTMxMSw3ICsxMzEzLDYgQEAgc3RhdGljIGludCBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uKHN0cnVjdCBrdm0gKmt2bSxcbiBcdGRlZmF1bHQ6XG4gXHRcdGJyZWFrO1xuIFx0fVxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzbG90c19sb2NrKTtcbiBcbiBcdHJldHVybiByZXM7XG4gfVxuQEAgLTIyMTQsNyArMjIxNSw3IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X3NrZXlzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3NrZXlzICphcmdzKVxuIFx0fVxuIFxuIFx0a3ZmcmVlKGtleXMpO1xuLVx0cmV0dXJuIHI7XG4rXHRyZXR1cm4gciBcdTAwM2M9IDAgPyByIDogLUVGQVVMVDtcbiB9XG4gXG4gc3RhdGljIGludCBrdm1fczM5MF9zZXRfc2tleXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfc2tleXMgKmFyZ3MpXG5AQCAtMjI3Niw3ICsyMjc3LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9zZXRfc2tleXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfc2tleXMgKmFyZ3MpXG4gXHRrdm1fczM5MF9mcmVlX21tdV9jYWNoZShtYyk7XG4gb3V0OlxuIFx0a3ZmcmVlKGtleXMpO1xuLVx0cmV0dXJuIHI7XG4rXHRyZXR1cm4gciBcdTAwM2M9IDAgPyByIDogLUVGQVVMVDtcbiB9XG4gXG4gLypcbkBAIC0yMzg2LDcgKzIzODcsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3NldF9jbW1hX2JpdHMoc3RydWN0IGt2bSAqa3ZtLFxuIFxuIFx0c2V0X2JpdChHTUFQX0ZMQUdfVVNFU19DTU0sIFx1MDAyNmt2bS1cdTAwM2VhcmNoLmdtYXAtXHUwMDNlZmxhZ3MpO1xuIFxuLVx0cmV0dXJuIHI7XG4rXHRyZXR1cm4gciBcdTAwM2M9IDAgPyByIDogLUVGQVVMVDtcbiB9XG4gXG4gLyoqXG5AQCAtMjk5OCw5ICsyOTk5LDggQEAgaW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuIFx0XHRyID0gLUVGQVVMVDtcbiBcdFx0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNmFyZ3MsIGFyZ3AsIHNpemVvZihhcmdzKSkpXG4gXHRcdFx0YnJlYWs7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuLVx0XHRyID0ga3ZtX3MzOTBfZ2V0X2NtbWFfYml0cyhrdm0sIFx1MDAyNmFyZ3MpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuK1x0XHRzY29wZWRfZ3VhcmQobXV0ZXgsIFx1MDAyNmt2bS1cdTAwM2VzbG90c19hcmNoX2xvY2spXG4rXHRcdFx0ciA9IGt2bV9zMzkwX2dldF9jbW1hX2JpdHMoa3ZtLCBcdTAwMjZhcmdzKTtcbiBcdFx0aWYgKCFyKSB7XG4gXHRcdFx0ciA9IGNvcHlfdG9fdXNlcihhcmdwLCBcdTAwMjZhcmdzLCBzaXplb2YoYXJncykpO1xuIFx0XHRcdGlmIChyKVxuQEAgLTMwMTQsOSArMzAxNCw5IEBAIGludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbiBcdFx0ciA9IC1FRkFVTFQ7XG4gXHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZhcmdzLCBhcmdwLCBzaXplb2YoYXJncykpKVxuIFx0XHRcdGJyZWFrO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmt2bS1cdTAwM2VzbG90c19sb2NrKTtcbitcdFx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfYXJjaF9sb2NrKTtcbiBcdFx0ciA9IGt2bV9zMzkwX3NldF9jbW1hX2JpdHMoa3ZtLCBcdTAwMjZhcmdzKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzbG90c19sb2NrKTtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzbG90c19hcmNoX2xvY2spO1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGNhc2UgS1ZNX1MzOTBfUFZfQ09NTUFORDoge1xuQEAgLTM0NjEsNyArMzQ2MSw3IEBAIHN0YXRpYyB2b2lkIHNjYV9kZWxfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0c3RydWN0IGVzY2FfYmxvY2sgKnNjYSA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guc2NhO1xuIFxuLVx0aWYgKCFrdm1fczM5MF91c2Vfc2NhX2VudHJpZXMoKSlcbitcdGlmICgha3ZtX3MzOTBfdXNlX3NjYV9lbnRyaWVzKCkgfHwgIXZjcHUtXHUwMDNlYXJjaC5pbml0aWFsaXplZClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y2xlYXJfYml0X2ludih2Y3B1LVx1MDAzZXZjcHVfaWQsICh1bnNpZ25lZCBsb25nICopc2NhLVx1MDAzZW1jbik7XG5AQCAtMzQ4MSw4ICszNDgxLDggQEAgc3RhdGljIHZvaWQgc2NhX2FkZF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGlmICgha3ZtX3MzOTBfdXNlX3NjYV9lbnRyaWVzKCkpXG4gXHRcdHJldHVybjtcbiBcbitcdFdSSVRFX09OQ0Uoc2NhLVx1MDAzZWNwdVt2Y3B1LVx1MDAzZXZjcHVfaWRdLnNkYSwgdmlydF90b19waHlzKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spKTtcbiBcdHNldF9iaXRfaW52KHZjcHUtXHUwMDNldmNwdV9pZCwgKHVuc2lnbmVkIGxvbmcgKilzY2EtXHUwMDNlbWNuKTtcbi1cdHNjYS1cdTAwM2VjcHVbdmNwdS1cdTAwM2V2Y3B1X2lkXS5zZGEgPSB2aXJ0X3RvX3BoeXModmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc2NhX2Nhbl9hZGRfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZClcbkBAIC0zNjEzLDYgKzM2MTMsOSBAQCB2b2lkIGt2bV9hcmNoX3ZjcHVfcG9zdGNyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAodGVzdF9rdm1fZmFjaWxpdHkodmNwdS1cdTAwM2Vrdm0sIDc0KSB8fCB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnVzZXJfaW5zdHIwIHx8XG4gXHQgICAgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC51c2VyX29wZXJleGVjKVxuIFx0XHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWljdGwgfD0gSUNUTF9PUEVSRVhDO1xuK1xuK1x0LyogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKCkgaW4ga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKSBhbmQga3ZtX2FyY2hfdmNwdV9pb2N0bCgpICovXG4rXHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guaW5pdGlhbGl6ZWQsIHRydWUpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBrdm1faGFzX3Bja21vX3N1YmZ1bmMoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIG5yKVxuQEAgLTM2NzQsNyArMzY3Nyw4IEBAIHN0YXRpYyB2b2lkIGt2bV9zMzkwX3ZjcHVfY3J5cHRvX3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcbiB2b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pKTtcbitcdGlmICh2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWNicmxvKVxuK1x0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pKTtcbiBcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8gPSAwO1xuIH1cbiBcbkBAIC0zNzkyLDIxICszNzk2LDIxIEBAIGludCBrdm1fYXJjaF92Y3B1X3ByZWNyZWF0ZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZClcbiBcdHJldHVybiAwO1xuIH1cbiBcbitERUZJTkVfRlJFRShzaWVfcGFnZSwgc3RydWN0IHNpZV9wYWdlICosIGlmIChfVCkgZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKShfVCkpKVxuK1xuIGludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuLVx0c3RydWN0IHNpZV9wYWdlICpzaWVfcGFnZTtcbitcdHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jIF9fZnJlZShrdm1fczM5MF9tbXVfY2FjaGUpID0gTlVMTDtcbitcdHN0cnVjdCBzaWVfcGFnZSAqc2llX3BhZ2UgX19mcmVlKHNpZV9wYWdlKSA9IE5VTEw7XG4gXHRpbnQgcmM7XG4gXG4gXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBzaWVfcGFnZSkgIT0gNDA5Nik7XG4tXHR2Y3B1LVx1MDAzZWFyY2gubWMgPSBrdm1fczM5MF9uZXdfbW11X2NhY2hlKCk7XG4tXHRpZiAoIXZjcHUtXHUwMDNlYXJjaC5tYylcbitcdG1jID0ga3ZtX3MzOTBfbmV3X21tdV9jYWNoZSgpO1xuK1x0aWYgKCFtYylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHRzaWVfcGFnZSA9IChzdHJ1Y3Qgc2llX3BhZ2UgKikgZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tXHRpZiAoIXNpZV9wYWdlKSB7XG4tXHRcdGt2bV9zMzkwX2ZyZWVfbW11X2NhY2hlKHZjcHUtXHUwMDNlYXJjaC5tYyk7XG4tXHRcdHZjcHUtXHUwMDNlYXJjaC5tYyA9IE5VTEw7XG4rXHRpZiAoIXNpZV9wYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdH1cbiBcbiBcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2sgPSBcdTAwMjZzaWVfcGFnZS1cdTAwM2VzaWVfYmxvY2s7XG4gXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWl0ZGJhID0gdmlydF90b19waHlzKFx1MDAyNnNpZV9wYWdlLVx1MDAzZWl0ZGIpO1xuQEAgLTM4NDgsMTAgKzM4NTIsOSBAQCBpbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2Vrdm1fdmFsaWRfcmVncyB8PSBLVk1fU1lOQ19GUFJTO1xuIFxuIFx0aWYgKGt2bV9pc191Y29udHJvbCh2Y3B1LVx1MDAzZWt2bSkpIHtcbi1cdFx0cmMgPSAtRU5PTUVNO1xuIFx0XHR2Y3B1LVx1MDAzZWFyY2guZ21hcCA9IGdtYXBfbmV3X2NoaWxkKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZ21hcCwgLTFVTCk7XG4gXHRcdGlmICghdmNwdS1cdTAwM2VhcmNoLmdtYXApXG4tXHRcdFx0Z290byBvdXRfZnJlZV9zaWVfYmxvY2s7XG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXG4gXHRWTV9FVkVOVCh2Y3B1LVx1MDAzZWt2bSwgMywgXCJjcmVhdGUgY3B1ICVkIGF0IDB4JXAsIHNpZSBibG9jayBhdCAweCVwXCIsXG5AQCAtMzg1OSwyMCArMzg2MiwxOSBAQCBpbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0dHJhY2Vfa3ZtX3MzOTBfY3JlYXRlX3ZjcHUodmNwdS1cdTAwM2V2Y3B1X2lkLCB2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrKTtcbiBcbiBcdHJjID0ga3ZtX3MzOTBfdmNwdV9zZXR1cCh2Y3B1KTtcbi1cdGlmIChyYylcbi1cdFx0Z290byBvdXRfdWNvbnRyb2xfdW5pbml0O1xuK1x0aWYgKHJjKSB7XG4rXHRcdGlmIChrdm1faXNfdWNvbnRyb2wodmNwdS1cdTAwM2Vrdm0pKSB7XG4rXHRcdFx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrLCBcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmdtYXAtXHUwMDNlY2hpbGRyZW5fbG9jaylcbitcdFx0XHRcdGdtYXBfcmVtb3ZlX2NoaWxkKHZjcHUtXHUwMDNlYXJjaC5nbWFwKTtcbitcdFx0XHR2Y3B1LVx1MDAzZWFyY2guZ21hcCA9IGdtYXBfcHV0KHZjcHUtXHUwMDNlYXJjaC5nbWFwKTtcbitcdFx0fVxuK1x0XHRyZXR1cm4gcmM7XG4rXHR9XG4gXG4rXHR2Y3B1LVx1MDAzZWFyY2gubWMgPSBub19mcmVlX3B0cihtYyk7XG4rXHRzaWVfcGFnZSA9IE5VTEw7XG4gXHRrdm1fczM5MF91cGRhdGVfdG9wb2xvZ3lfY2hhbmdlX3JlcG9ydCh2Y3B1LVx1MDAzZWt2bSwgMSk7XG4gXHRyZXR1cm4gMDtcbi1cbi1vdXRfdWNvbnRyb2xfdW5pbml0OlxuLVx0aWYgKGt2bV9pc191Y29udHJvbCh2Y3B1LVx1MDAzZWt2bSkpIHtcbi1cdFx0Z21hcF9yZW1vdmVfY2hpbGQodmNwdS1cdTAwM2VhcmNoLmdtYXApO1xuLVx0XHR2Y3B1LVx1MDAzZWFyY2guZ21hcCA9IGdtYXBfcHV0KHZjcHUtXHUwMDNlYXJjaC5nbWFwKTtcbi1cdH1cbi1vdXRfZnJlZV9zaWVfYmxvY2s6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spKTtcbi1cdHJldHVybiByYztcbiB9XG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfcnVubmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuQEAgLTUwMzksNiArNTA0MSwxMCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0ICAgIGt2bV9ydW4tXHUwMDNla3ZtX2RpcnR5X3JlZ3MgXHUwMDI2IH5LVk1fU1lOQ19TMzkwX1ZBTElEX0ZJRUxEUylcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHQvKiBQYWlycyB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4ga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKCkgKi9cbitcdGlmICghc21wX2xvYWRfYWNxdWlyZShcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guaW5pdGlhbGl6ZWQpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHZjcHVfbG9hZCh2Y3B1KTtcbiBcbiBcdGlmIChndWVzdGRiZ19leGl0X3BlbmRpbmcodmNwdSkpIHtcbkBAIC01NTIzLDYgKzU1MjksMTAgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuIFx0bG9uZyByO1xuIFx0dTE2IHJjLCBycmM7XG4gXG4rXHQvKiBQYWlycyB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlKCkgaW4ga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKCkgKi9cbitcdGlmICghc21wX2xvYWRfYWNxdWlyZShcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guaW5pdGlhbGl6ZWQpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHZjcHVfbG9hZCh2Y3B1KTtcbiBcbiBcdHN3aXRjaCAoaW9jdGwpIHtcbkBAIC01Nzk0LDI0ICs1ODA0LDM4IEBAIGludCBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBsb25nIGNtbWFfZF9jb3VudF9wdGUodW5pb24gcHRlICpwdGVwLCBnZm5fdCBnZm4sIGdmbl90IG5leHQsIHN0cnVjdCBkYXRfd2FsayAqd2Fsaylcbit7XG4rXHRpZiAocGdzdGVfb2YocHRlcCktXHUwMDNlY21tYV9kKVxuK1x0XHRhdG9taWM2NF9kZWMod2Fsay1cdTAwM2Vwcml2KTtcbitcdHJldHVybiAwO1xuK31cbitcbiB2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbiBcdFx0XHRcdHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbiBcdFx0XHRcdGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm5ldyxcbiBcdFx0XHRcdGVudW0ga3ZtX21yX2NoYW5nZSBjaGFuZ2UpXG4ge1xuLVx0c3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMgPSBOVUxMO1xuLVx0aW50IHJjID0gMDtcbitcdGNvbnN0IHN0cnVjdCBkYXRfd2Fsa19vcHMgb3BzID0geyAucHRlX2VudHJ5ID0gY21tYV9kX2NvdW50X3B0ZSwgfTtcbitcdHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jIF9fZnJlZShrdm1fczM5MF9tbXVfY2FjaGUpID0gTlVMTDtcbitcdGludCByYyA9IC1FTk9NRU07XG4rXG4rXHRndWFyZChtdXRleCkoXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2FyY2hfbG9jayk7XG4gXG4gXHRpZiAoY2hhbmdlID09IEtWTV9NUl9GTEFHU19PTkxZKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRtYyA9IGt2bV9zMzkwX25ld19tbXVfY2FjaGUoKTtcbi1cdGlmICghbWMpIHtcbi1cdFx0cmMgPSAtRU5PTUVNO1xuK1x0aWYgKCFtYylcbiBcdFx0Z290byBvdXQ7XG4tXHR9XG4tXG4rcmV0cnk6XG4gXHRzY29wZWRfZ3VhcmQod3JpdGVfbG9jaywgXHUwMDI2a3ZtLVx1MDAzZW1tdV9sb2NrKSB7XG4rXHRcdGlmIChrdm0tXHUwMDNlYXJjaC5taWdyYXRpb25fbW9kZSBcdTAwMjZcdTAwMjYga3ZtLVx1MDAzZWFyY2gudXNlX2NtbWEgXHUwMDI2XHUwMDI2IG9sZCkge1xuK1x0XHRcdF9kYXRfd2Fsa19nZm5fcmFuZ2Uob2xkLVx1MDAzZWJhc2VfZ2ZuLCBvbGQtXHUwMDNlYmFzZV9nZm4gKyBvbGQtXHUwMDNlbnBhZ2VzLFxuK1x0XHRcdFx0XHQgICAga3ZtLVx1MDAzZWFyY2guZ21hcC1cdTAwM2Vhc2NlLCBcdTAwMjZvcHMsIERBVF9XQUxLX0lHTl9IT0xFUyxcbitcdFx0XHRcdFx0ICAgIFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNtbWFfZGlydHlfcGFnZXMpO1xuK1x0XHR9XG4rXG4gXHRcdHN3aXRjaCAoY2hhbmdlKSB7XG4gXHRcdGNhc2UgS1ZNX01SX0RFTEVURTpcbiBcdFx0XHRyYyA9IGRhdF9kZWxldGVfc2xvdChtYywga3ZtLVx1MDAzZWFyY2guZ21hcC1cdTAwM2Vhc2NlLCBvbGQtXHUwMDNlYmFzZV9nZm4sIG9sZC1cdTAwM2VucGFnZXMpO1xuQEAgLTU4MjcsMTMgKzU4NTEsMTggQEAgdm9pZCBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4gXHRcdGNhc2UgS1ZNX01SX0ZMQUdTX09OTFk6XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4rXHRcdFx0cmMgPSAwO1xuIFx0XHRcdFdBUk4oMSwgXCJVbmtub3duIEtWTSBNUiBDSEFOR0U6ICVkXFxuXCIsIGNoYW5nZSk7XG4gXHRcdH1cbiBcdH1cbitcdGlmIChyYyA9PSAtRU5PTUVNKSB7XG4rXHRcdHJjID0ga3ZtX3MzOTBfbW11X2NhY2hlX3RvcHVwKG1jKTtcbitcdFx0aWYgKCFyYylcbitcdFx0XHRnb3RvIHJldHJ5O1xuK1x0fVxuIG91dDpcbi1cdGlmIChyYylcbitcdGlmIChLVk1fQlVHX09OKHJjLCBrdm0pKVxuIFx0XHRwcl93YXJuKFwiZmFpbGVkIHRvIGNvbW1pdCBtZW1vcnkgcmVnaW9uXFxuXCIpO1xuLVx0a3ZtX3MzOTBfZnJlZV9tbXVfY2FjaGUobWMpO1xuIFx0cmV0dXJuO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3ByaXYuYyBiL2FyY2gvczM5MC9rdm0vcHJpdi5jXG5pbmRleCBhZDBkZGM0MzNhNzNjLi5iMWJhMjRjMzQ2ZWZhIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wcml2LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vcHJpdi5jXG5AQCAtMjg5LDYgKzI4OSw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX2lza2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHN0YXRpYyBpbnQgaGFuZGxlX3JyYmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZ2FkZHI7XG4rXHR1bmlvbiBza2V5IHNrZXk7XG4gXHRpbnQgcmVnMSwgcmVnMjtcbiBcdGludCByYztcbiBcbkBAIC0zMDcsMTIgKzMwOCwxMiBAQCBzdGF0aWMgaW50IGhhbmRsZV9ycmJlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGdhZGRyID0ga3ZtX3MzOTBfbG9naWNhbF90b19lZmZlY3RpdmUodmNwdSwgZ2FkZHIpO1xuIFx0Z2FkZHIgPSBrdm1fczM5MF9yZWFsX3RvX2Ficyh2Y3B1LCBnYWRkcik7XG4gXHRzY29wZWRfZ3VhcmQocmVhZF9sb2NrLCBcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2VtbXVfbG9jaylcbi1cdFx0cmMgPSBkYXRfcmVzZXRfcmVmZXJlbmNlX2JpdCh2Y3B1LVx1MDAzZWFyY2guZ21hcC1cdTAwM2Vhc2NlLCBncGFfdG9fZ2ZuKGdhZGRyKSk7XG4rXHRcdHJjID0gZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXQodmNwdS1cdTAwM2VhcmNoLmdtYXAtXHUwMDNlYXNjZSwgZ3BhX3RvX2dmbihnYWRkciksIFx1MDAyNnNrZXkpO1xuIFx0aWYgKHJjIFx1MDAzZSAwKVxuIFx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIHJjKTtcbiBcdGlmIChyYyBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHJjO1xuLVx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCByYyk7XG4rXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIChza2V5LnNrZXkgXHUwMDNlXHUwMDNlIDEpIFx1MDAyNiAzKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xMjYwLDggKzEyNjEsOSBAQCBzdGF0aWMgaW50IGhhbmRsZV9lc3NhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdFx0LyogUmV0cnkgdGhlIEVTU0EgaW5zdHJ1Y3Rpb24gKi9cbiBcdFx0a3ZtX3MzOTBfcmV0cnlfaW5zdHIodmNwdSk7XG4gXHR9IGVsc2Uge1xuLVx0XHRzY29wZWRfZ3VhcmQocmVhZF9sb2NrLCBcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2VtbXVfbG9jaylcbi1cdFx0XHRpID0gX19kb19lc3NhKHZjcHUsIG9yYyk7XG4rXHRcdHNjb3BlZF9ndWFyZChtdXRleCwgXHUwMDI2dmNwdS1cdTAwM2Vrdm0tXHUwMDNlc2xvdHNfYXJjaF9sb2NrKVxuK1x0XHRcdHNjb3BlZF9ndWFyZChyZWFkX2xvY2ssIFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZW1tdV9sb2NrKVxuK1x0XHRcdFx0aSA9IF9fZG9fZXNzYSh2Y3B1LCBvcmMpO1xuIFx0XHRpZiAoaSBcdTAwM2MgMClcbiBcdFx0XHRyZXR1cm4gaTtcbiBcdFx0LyogQWNjb3VudCBmb3IgdGhlIHBvc3NpYmxlIGV4dHJhIGNicmwgZW50cnkgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3B2LmMgYi9hcmNoL3MzOTAva3ZtL3B2LmNcbmluZGV4IDFiZWFjYzg0MWNhODUuLmIwMmUwMTU5ZDNjZDIgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3B2LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vcHYuY1xuQEAgLTI0NCw2ICsyNDQsMjQgQEAgc3RhdGljIHZvaWQga3ZtX3MzOTBfY2xlYXJfcHZfc3RhdGUoc3RydWN0IGt2bSAqa3ZtKVxuIFx0a3ZtLVx1MDAzZWFyY2gucHYuc3Rvcl92YXIgPSBOVUxMO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBrdm1fczM5MF9wdl9kaXNwb3NlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZnJlZV9zdG9yX2Jhc2UpXG4re1xuK1x0aWYgKGZyZWVfc3Rvcl9iYXNlKVxuK1x0XHRmcmVlX3BhZ2VzKHZjcHUtXHUwMDNlYXJjaC5wdi5zdG9yX2Jhc2UsIGdldF9vcmRlcih1dl9pbmZvLmd1ZXN0X2NwdV9zdG9yX2xlbikpO1xuK1x0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNpZGFfYWRkcih2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrKSk7XG4rXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZXB2X2hhbmRsZV9jcHUgPSAwO1xuK1x0dmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2Vwdl9oYW5kbGVfY29uZmlnID0gMDtcbitcdG1lbXNldChcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gucHYsIDAsIHNpemVvZih2Y3B1LVx1MDAzZWFyY2gucHYpKTtcbitcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlc2RmID0gMDtcbitcdC8qXG4rXHQgKiBUaGUgc2lkYWQgZmllbGQgKGZvciBzZGYgPT0gMikgaXMgbm93IHRoZSBnYmVhIGZpZWxkIChmb3Igc2RmID09IDApLlxuK1x0ICogVXNlIHRoZSByZXNldCB2YWx1ZSBvZiBnYmVhIHRvIGF2b2lkIGxlYWtpbmcgdGhlIGtlcm5lbCBwb2ludGVyIG9mXG4rXHQgKiB0aGUganVzdCBmcmVlZCBzaWRhLlxuK1x0ICovXG4rXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWdiZWEgPSAxO1xuK1x0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX1RMQl9GTFVTSCwgdmNwdSk7XG4rfVxuK1xuIGludCBrdm1fczM5MF9wdl9kZXN0cm95X2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuIHtcbiBcdGludCBjYztcbkBAIC0yNTgsMjQgKzI3Niw5IEBAIGludCBrdm1fczM5MF9wdl9kZXN0cm95X2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuIFx0V0FSTl9PTkNFKGNjLCBcInByb3R2aXJ0IGRlc3Ryb3kgY3B1IGZhaWxlZCByYyAleCBycmMgJXhcIiwgKnJjLCAqcnJjKTtcbiBcbiBcdC8qIEludGVuZGVkIG1lbW9yeSBsZWFrIGZvciBzb21ldGhpbmcgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiAqL1xuLVx0aWYgKCFjYylcbi1cdFx0ZnJlZV9wYWdlcyh2Y3B1LVx1MDAzZWFyY2gucHYuc3Rvcl9iYXNlLFxuLVx0XHRcdCAgIGdldF9vcmRlcih1dl9pbmZvLmd1ZXN0X2NwdV9zdG9yX2xlbikpO1xuLVxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNpZGFfYWRkcih2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrKSk7XG4tXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZXB2X2hhbmRsZV9jcHUgPSAwO1xuLVx0dmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2Vwdl9oYW5kbGVfY29uZmlnID0gMDtcbi1cdG1lbXNldChcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gucHYsIDAsIHNpemVvZih2Y3B1LVx1MDAzZWFyY2gucHYpKTtcbi1cdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlc2RmID0gMDtcbi1cdC8qXG4tXHQgKiBUaGUgc2lkYWQgZmllbGQgKGZvciBzZGYgPT0gMikgaXMgbm93IHRoZSBnYmVhIGZpZWxkIChmb3Igc2RmID09IDApLlxuLVx0ICogVXNlIHRoZSByZXNldCB2YWx1ZSBvZiBnYmVhIHRvIGF2b2lkIGxlYWtpbmcgdGhlIGtlcm5lbCBwb2ludGVyIG9mXG4tXHQgKiB0aGUganVzdCBmcmVlZCBzaWRhLlxuLVx0ICovXG4tXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWdiZWEgPSAxO1xuLVx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX1RMQl9GTFVTSCwgdmNwdSk7XG4rXHRrdm1fczM5MF9wdl9kaXNwb3NlX2NwdSh2Y3B1LCAhY2MpO1xuIFxuLVx0cmV0dXJuIGNjID8gRUlPIDogMDtcbitcdHJldHVybiBjYyA/IC1FSU8gOiAwO1xuIH1cbiBcbiBpbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuQEAgLTMxOSw5ICszMjIsNyBAQCBpbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxuIFx0XHQgICAgIHV2Y2IuaGVhZGVyLnJyYyk7XG4gXG4gXHRpZiAoY2MpIHtcbi1cdFx0dTE2IGR1bW15O1xuLVxuLVx0XHRrdm1fczM5MF9wdl9kZXN0cm95X2NwdSh2Y3B1LCBcdTAwMjZkdW1teSwgXHUwMDI2ZHVtbXkpO1xuK1x0XHRrdm1fczM5MF9wdl9kaXNwb3NlX2NwdSh2Y3B1LCB0cnVlKTtcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXG5AQCAtODA5LDcgKzgxMCw3IEBAIHN0YXRpYyBpbnQgdW5wYWNrX29uZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgYWRkciwgdTY0IHR3ZWFrLFxuIFx0XHRcdHJldHVybiAtRUFHQUlOO1xuIFx0fVxuIFxuLVx0aWYgKHJldCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FQUdBSU4pXG4rXHRpZiAocmV0IFx1MDAyNlx1MDAyNiByZXQgIT0gLUVBR0FJTiBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FSU5UUilcbiBcdFx0S1ZNX1VWX0VWRU5UKGt2bSwgMywgXCJQUk9UVklSVCBWTSBVTlBBQ0s6IGZhaWxlZCBhZGRyICVsbHggd2l0aCByYyAleCBycmMgJXhcIixcbiBcdFx0XHQgICAgIHV2Y2IuZ2FkZHIsICpyYywgKnJyYyk7XG4gXHRyZXR1cm4gcmV0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDE6MzEuMDcwNzUwNjg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMzMjM3NTY0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBzMzkwIEtWTSBQYXRjaCBTZXJpZXMgZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqXG5cbk9rYXksIHNvIEkgaGF2ZSB0aGlzIHBhdGNoIHNlcmllcyBmb3IgdGhlIHMzOTAgS1ZNIHN1YnN5c3RlbSBpbiBmcm9udCBvZiBtZS4gSSBzZWUgdGhhdCBpdCB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBga3ZtX2hvc3QuaGAsIGBkYXQuY2AsIGBkYXQuaGAsIGBmYXVsdGluLmNgLCBgaW50ZXJjZXB0LmNgLCBgaW50ZXJydXB0LmNgLCBga3ZtLXMzOTAuY2AsIGBwcml2LmNgLCBhbmQgYHB2LmNgLiBBIGZhaXJseSBleHRlbnNpdmUgbW9kaWZpY2F0aW9uLCBzbyBsZXQncyBkaWcgZGVlcGVyIHRvIHNlZSB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgYml0cyBmb3IgZnV6emluZyBsaWUuXG5cblRoZSBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBkYXRhIGFkZHJlc3NpbmcgdHJhbnNsYXRpb24sIGluaXRpYWxpemF0aW9uLCBhbmQgc2V2ZXJhbCBjb250cm9sIGZsb3cgcGF0aHMgd2l0aGluIEtWTS4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgYGJvb2wgaW5pdGlhbGl6ZWRgIGZsYWcgaW4gdGhlIGBrdm1fdmNwdV9hcmNoYCBzdHJ1Y3R1cmUsIHdoaWNoIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uIGFzIGEgcG90ZW50aWFsIHNvdXJjZSBvZiByYWNlIGNvbmRpdGlvbnMgaWYgbm90IGhhbmRsZWQgcHJvcGVybHkgYWNyb3NzIGRpZmZlcmVudCBDUFUgc3RhdGVzLiBUaGUgbW9kaWZpY2F0aW9ucyB0byBgZGF0X3Jlc2V0X3JlZmVyZW5jZV9iaXRgIHRvIHJldHVybiB0aGUgc2VjdXJlIGtleSBhbmQgaGFuZGxlIGZhaWx1cmVzIGFyZSBpbnRyaWd1aW5nLCBhcyBpcyB0aGUgdXNlIG9mIGBfX2RhdF9wdGVwX3hjaGdgIGluIGBfZGF0X3Nsb3RfcHRlYCwgd2hpY2ggaGludHMgYXQgc29tZSBsb3ctbGV2ZWwgbWVtb3J5IG9wZXJhdGlvbnMuIGBrdm1fczM5MF9mYXVsdGluX2dmbmAgbG9va3MgbGlrZSBhIGhvdHNwb3QgZm9yIHBvdGVudGlhbCBpc3N1ZXMuIFRoZSBpbnN0cnVjdGlvbiByZXRyaWVzIHJlbGF0ZWQgdG8gYGhhbmRsZV9tdnBnX3BlaWAgc291bmRzIGxpa2UgYSBnb29kIHBsYWNlIHRvIGxvb2sgZm9yIHN1YnRsZSBlZGdlIGNhc2VzLlxuXG5JIHNlZSBhIHBhdHRlcm4gb2YgYWRkaW5nIGluaXRpYWxpemF0aW9uIGNoZWNrcyAoYHZjcHUtXHUwMDNlYXJjaC5pbml0aWFsaXplZGApIGluIGZ1bmN0aW9ucyBsaWtlIGBzY2FfY2xlYXJfZXh0X2NhbGxgLCBgc2NhX2RlbF92Y3B1YCwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCwgYW5kIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlcmUgYXJlIG5ldyBzdGF0ZXMgYmVpbmcgbWFuYWdlZC4gVGhlIHVzZSBvZiBgZ3VhcmQoc3JjdSlgIGFuZCBgZ3VhcmQobXV0ZXgpYCBpbiBga3ZtX3MzOTBfdm1fc2V0X21pZ3JhdGlvbmAgaXMgZ29vZCB0byBzZWUgZm9yIGNvbmN1cnJlbmN5IHNhZmV0eSwgYnV0IEknbGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIGFwcGxpZWQgY29uc2lzdGVudGx5LiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhlIHVzZSBvZiBgc21wX3N0b3JlX3JlbGVhc2VgIGFuZCBgc21wX2xvYWRfYWNxdWlyZWAgaW1wbGllcyBjYXJlZnVsIGNvbnNpZGVyYXRpb24gb2YgbWVtb3J5IG9yZGVyaW5nIHdoaWNoIGNvdWxkIG1ha2UgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy5cblxuTm93LCB0aGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBsb2dpYyBvbiBzMzkwLCBzbyBpdCdzIGNsZWFybHkgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzLiBUaGUgcXVlc3Rpb24gaXM6IGlzIHMzOTAgS1ZNIGZ1enphYmxlLCBhbmQgaXMgaXQgYSBnb29kIHRhcmdldD8gWWVzLCBhY2NvcmRpbmcgdG8gbXkga25vd2xlZGdlLCBzeXprYWxsZXIgc3VwcG9ydHMgczM5MHggYW5kIEtWTS4gQWxzbywgSSd2ZSBnb3QgYSBnb29kIHNldHVwLiBJIGNhbiB0ZXN0IHMzOTB4IEtWTSB3aXRoaW4gUUVNVSB3aXRoIGVpdGhlciBUQ0cgb3IgS1ZNIG9uIGFuIHMzOTB4IGhvc3QuIEFuZCBzeXprYWxsZXIgcnVucyBzMzkweCBWTXMuIEknbSBnb29kIHRvIGdvIHRoZXJlLlxuXG5TbywgbGV0J3MgaWRlbnRpZnkgdGhlIG1vc3QgcHJvbWlzaW5nIGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gTG9va2luZyBhdCB0aGUgY2hhbmdlcywgSSdkIHNheSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgcHJpbWFyeSB0YXJnZXRzOiBga3ZtX3MzOTBfa2V5b3BgLCBga3ZtX3MzOTBfdm1fc2V0X21pZ3JhdGlvbmAsIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAsIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAsIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCwgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCwgYGhhbmRsZV9ycmJlYCwgYGhhbmRsZV9lc3NhYCwgYGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1YCwgYW5kIGBrdm1fczM5MF9wdl9jcmVhdGVfY3B1YC5cblxuRmluYWxseSwganVzdCB0byBiZSBzdXJlLCBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyB0byB2ZXJpZnkgdGhhdCB0aGUgYmFzZSBLVk0gaXMgZW5hYmxlZDogYENPTkZJR19LVk1gLiBBbGwgZ29vZC4gSSB0aGluayBJIGhhdmUgYSBzb2xpZCBsaXN0IG9mIHRhcmdldHMgdG8gaW52ZXN0aWdhdGUgZnVydGhlciBhbmQgc3RhcnQgY3JhZnRpbmcgc29tZSBmdXp6aW5nIGNhbXBhaWducy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExNTgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDE6NDQuMzk0NTEwMzI1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjkyODE5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxsb25nfHN0YXRpYykuKiBrdm1fczM5MF9rZXlvcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTUwPXN0YXRpYyB2b2lkIF9fa3ZtX3MzOTBfZXhpdCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU2MS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTYyOnN0YXRpYyBpbnQga3ZtX3MzOTBfa2V5b3Aoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBrdm0gKmt2bSwgaW50IG9wLFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NjMtXFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuaW9uIHNrZXkgc2tleSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDE6NDguMTYzNzk4NTE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1ODcwMTM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGBrdm1fczM5MF9rZXlvcGAgQ2FsbGVyKipcblxuT2theSwgc28gYGt2bV9zMzkwX2tleW9wYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCdzIHNjb3BlZCB3aXRoaW4gaXRzIGN1cnJlbnQgc291cmNlIGZpbGUsIG1ha2luZyBpdCBhIGJpdCBtb3JlIGNoYWxsZW5naW5nIHRvIHVuZGVyc3RhbmQgaXRzIGJyb2FkZXIgY29udGV4dCBhdCBhIGdsYW5jZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoZXJlKiBpdCdzIGJlaW5nIGNhbGxlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbHNpdGUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBhbmQgdXNhZ2Ugb2YgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhlIEtWTS9zMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUgd2hlbiBJIGVuY291bnRlciBhIHN0YXRpYyBmdW5jdGlvbjsgdGhlIGNhbGwgZ3JhcGggaXMgdGhlIGZpcnN0IHRoaW5nIEkgdHJhY2UuIExldCdzIGZpbmQgaXRzIGNhbGxlcihzKS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyMTIsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0MTo1Mi4wMjI1MDIyMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjk4MDAyMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX2tleW9wXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdD02NTMwPXRoZSBjYXBhYmlsaXR5IHRvIGJlIHByZXNlbnQuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3QtNjUzOS06VHlwZTogdm0gaW9jdGxcXG5Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3Q6NjU0MDo6UGFyYW1ldGVyczogc3RydWN0IGt2bV9zMzkwX2tleW9wIChpbi9vdXQpXFxuRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0LTY1NDEtOlJldHVybnM6IDAgaW4gY2FzZSBvZiBzdWNjZXNzLCBcXHUwMDNjIDAgb24gZXJyb3JcXG4tLVxcbkRvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdD02NTQ0PXByZXZpb3VzIHN0b3JhZ2Uga2V5IChvciB0aGUgcmVsZXZhbnQgcGFydCB0aGVyZW9mKSB3aWxsIGJlIHJldHVybmVkIGluXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3QtNjU0OC1cXG5Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3Q6NjU0OTogIHN0cnVjdCBrdm1fczM5MF9rZXlvcCB7XFxuRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0LTY1NTAtXFx0X191NjQgZ3Vlc3RfYWRkcjtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz01NTA9c3RhdGljIHZvaWQgX19rdm1fczM5MF9leGl0KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTYxLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NjI6c3RhdGljIGludCBrdm1fczM5MF9rZXlvcChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGt2bSAqa3ZtLCBpbnQgb3AsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU2My1cXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5pb24gc2tleSBza2V5KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI5MjY9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMwNTgtXFx0XFx0c3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWM7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMwNTk6XFx0XFx0c3RydWN0IGt2bV9zMzkwX2tleW9wIGtvcDtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA2MC1cXHRcXHR1bmlvbiBza2V5IHNrZXk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA3MS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzA3MjpcXHRcXHRyID0ga3ZtX3MzOTBfa2V5b3AobWMsIGt2bSwga29wLm9wZXJhdGlvbiwga29wLmd1ZXN0X2FkZHIsIHNrZXkpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDczLVxcdFxcdGt2bV9zMzkwX2ZyZWVfbW11X2NhY2hlKG1jKTtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9rdm0uaD0xMjQ0PXN0cnVjdCBrdm1fdmZpb19zcGFwcl90Y2Uge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oLTEyNTEtI2RlZmluZSBLVk1fUzM5MF9LRVlPUF9TU0tFIDB4MDNcXG5pbmNsdWRlL3VhcGkvbGludXgva3ZtLmg6MTI1MjpzdHJ1Y3Qga3ZtX3MzOTBfa2V5b3Age1xcbmluY2x1ZGUvdWFwaS9saW51eC9rdm0uaC0xMjUzLVxcdF9fdTY0IGd1ZXN0X2FkZHI7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgtMTI3Ny0jZGVmaW5lIEtWTV9TMzkwX1ZDUFVfRkFVTFRcXHQgX0lPVyhLVk1JTywgMHg1MiwgdW5zaWduZWQgbG9uZylcXG5pbmNsdWRlL3VhcGkvbGludXgva3ZtLmg6MTI3ODojZGVmaW5lIEtWTV9TMzkwX0tFWU9QICAgICAgICAgICBfSU9XUihLVk1JTywgMHg1Mywgc3RydWN0IGt2bV9zMzkwX2tleW9wKVxcbmluY2x1ZGUvdWFwaS9saW51eC9rdm0uaC0xMjc5LVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oPTEyNDQ9c3RydWN0IGt2bV92ZmlvX3NwYXByX3RjZSB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgtMTI1MS0jZGVmaW5lIEtWTV9TMzkwX0tFWU9QX1NTS0UgMHgwM1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaDoxMjUyOnN0cnVjdCBrdm1fczM5MF9rZXlvcCB7XFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oLTEyNTMtXFx0X191NjQgZ3Vlc3RfYWRkcjtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaC0xMjc3LSNkZWZpbmUgS1ZNX1MzOTBfVkNQVV9GQVVMVFxcdCBfSU9XKEtWTUlPLCAweDUyLCB1bnNpZ25lZCBsb25nKVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaDoxMjc4OiNkZWZpbmUgS1ZNX1MzOTBfS0VZT1AgICAgICAgICAgIF9JT1dSKEtWTUlPLCAweDUzLCBzdHJ1Y3Qga3ZtX3MzOTBfa2V5b3ApXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oLTEyNzktXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jPTcxPXN0YXRpYyBpbnQgZG9fa2V5b3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgb3AsIHVuc2lnbmVkIGxvbmcgcGFnZV9pZHgsIHVuc2lnbmVkIGNoYXIgc2tleSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jLTcyLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jOjczOlxcdHN0cnVjdCBrdm1fczM5MF9rZXlvcCBrZXlvcCA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jLTc0LVxcdFxcdC5ndWVzdF9hZGRyID0gQlVGX1NUQVJUX0FERFIgKyBwYWdlX2lkeCAqIFBBR0VfU0laRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDE6NTQuNzIwNTEyMTM5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2NzY1NDA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtWTSBTMzkwIEtleSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgS1ZNIHN0dWZmIGFuZCBmb2N1c2luZyBvbiB0aGUgUzM5MCBhcmNoaXRlY3R1cmUuIFJpZ2h0LCBzbyBga3ZtX2FyY2hfdm1faW9jdGxgIGlzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGUgYEtWTV9TMzkwX0tFWU9QYCBjb21tYW5kLiBUaGF04oCZcyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIFRoZSBtYWluIGZ1bmN0aW9uLlxuXG5NeSBuZXh0IHN0ZXAsIEkgbmVlZCB0byBhbmFseXplIGBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uYC4gVGhhdCBmdW5jdGlvbiBpcyBwcm9iYWJseSBpbnZvbHZlZCBpbiBzZXR0aW5nIHVwIG9yIG1hbmFnaW5nIG1pZ3JhdGlvbiByZWxhdGVkIGFjdGl2aXRpZXMsIHNpbmNlIGl0cyBuYW1lIGluY2x1ZGVzIFwibWlncmF0aW9uXCIuIEnigJlsbCBoYXZlIHRvIGRpZyBkZWVwZXIgdGhlcmUgdG8gc2VlIHRoZSBtZWNoYW5pY3Mgb2YgaG93IHRoYXQga2V5IG9wZXJhdGlvbiBpcyBoYW5kbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgwNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQxOjU4LjY4ODE2ODYxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTU5MDc1MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxsb25nfHN0YXRpYykuKiBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0xMjcxPXN0YXRpYyBpbnQga3ZtX3MzOTBfdm1fc3RvcF9taWdyYXRpb24oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTEyOTctXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjEyOTg6c3RhdGljIGludCBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMTI5OS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjAxLjk0NDA4MTE5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODU5MDQ5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyBhIFN0YXRpYyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCB0aGlzIGNvZGXigKYgaXQgZmVlbHMgaW5jcmVkaWJseSBzdGF0aWMuIEknbSBoaXR0aW5nIGEgd2FsbCBoZXJlLiBUaGVyZSdzIHNvbWV0aGluZyBpbmhlcmVudGx5ICp1bmNoYW5naW5nKiBhYm91dCBpdHMgY3VycmVudCBzdGF0ZSB0aGF0J3MgcHJldmVudGluZyBtZSBmcm9tIHVuZGVyc3RhbmRpbmcgaXRzIGJyb2FkZXIgcm9sZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjdXQgdGhyb3VnaCB0aGUgbm9pc2UgYW5kIGZpZ3VyZSBvdXQgKndoYXQqIGlzIHJlc3BvbnNpYmxlIGZvciBhY3RpdmF0aW5nIHRoaXMgdGhpbmcuIFRoZSBrZXkgdG8gdW5sb2NraW5nIGl0cyBmdW5jdGlvbiBsaWVzIGluIGlkZW50aWZ5aW5nIHRoZSBlbnRyeSBwb2ludCwgdGhlIG9yaWdpbiBvZiBpdHMgZXhlY3V0aW9uLiBMZXQncyBmaW5kIGl0cyBjYWxsZXIuIFRoYXQncyB0aGUgcHJpb3JpdHkgcmlnaHQgbm93OyB0cmFjaW5nIGJhY2sgdGhlIGZsb3cgdG8gaXRzIHNvdXJjZSBzaG91bGQgaWxsdW1pbmF0ZSBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUyMjksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0MjowNS44Mjk5ODg1NjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTMxNjA1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfdm1fc2V0X21pZ3JhdGlvblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MTI3MT1zdGF0aWMgaW50IGt2bV9zMzkwX3ZtX3N0b3BfbWlncmF0aW9uKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0xMjk3LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoxMjk4OnN0YXRpYyBpbnQga3ZtX3MzOTBfdm1fc2V0X21pZ3JhdGlvbihzdHJ1Y3Qga3ZtICprdm0sXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTEyOTktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTIwNDQ9c3RhdGljIGludCBrdm1fczM5MF92bV9zZXRfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjA2MS1cXHRjYXNlIEtWTV9TMzkwX1ZNX01JR1JBVElPTjpcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjA2MjpcXHRcXHRyZXQgPSBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uKGt2bSwgYXR0cik7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTIwNjMtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjA4LjI0MzE1ODQ3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzM2NzU5MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBLVk0vczM5MHggTWlncmF0aW9uKipcblxuT2theSwgc28gYGt2bV9zMzkwX3ZtX3NldF9hdHRyYCBpcyB0aGUgc3RhcnRpbmcgZ3VuIGZvciBhbnkgaW50ZXJhY3Rpb24gcmVsYXRlZCB0byBtaWdyYXRpb24gb24gdGhlIHMzOTB4IGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgS1ZNX1MzOTBfVk1fTUlHUkFUSU9OYCBjb21tYW5kLiBUaGF0J3Mgb3VyIGVudHJ5IHBvaW50LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgaGFuZGxlZCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBob3cgdGhlIHZpcnR1YWwgQ1BVcyBhcmUgY3JlYXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGlzIHByb2Nlc3MuIFRoZSBuZXh0IGZ1bmN0aW9uIHRvIGV4YW1pbmUgd291bGQgYmUgYGt2bV9hcmNoX3ZjcHVfY3JlYXRlYC4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGxvdy1kb3duIG9uIGhvdyB0aGUgdmlydHVhbCBDUFVzIGdldCBzZXQgdXAgaW5pdGlhbGx5LCB3aGljaCB3aWxsIHRoZW4gaWxsdW1pbmF0ZSBob3cgbWlncmF0aW9uIGludGVyYWN0cyB3aXRoIHRoZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NzY5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDI6MTMuOTc5OTIwODIzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzA4ODc2NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLioga3ZtX2FyY2hfdmNwdV9jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vYXJtLmM9NTEyPWludCBrdm1fYXJjaF92Y3B1X3ByZWNyZWF0ZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTUyMi1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo1MjM6aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy01MjQte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xNTA1PWludCBrdm1fYXJjaF92Y3B1X3ByZWNyZWF0ZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTUwOS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE1MTA6aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE1MTEte1xcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9MjczPWludCBrdm1fYXJjaF92Y3B1X3ByZWNyZWF0ZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTI3Ny1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzoyNzg6aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0yNzkte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9NzQ2PXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBrdm1wcGNfZGVjcmVtZW50ZXJfd2FrZXVwKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTc1NS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzo3NTY6aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy03NTcte1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTEyNz1pbnQga3ZtX2FyY2hfdmNwdV9wcmVjcmVhdGUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMTMxLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzoxMzI6aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMTMzLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zNzk5PURFRklORV9GUkVFKHNpZV9wYWdlLCBzdHJ1Y3Qgc2llX3BhZ2UgKiwgaWYgKF9UKSBmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpKF9UKSkpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM4MDAtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM4MDE6aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzgwMi17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTI3MzQ9aW50IGt2bV9hcmNoX3ZjcHVfcHJlY3JlYXRlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNzcyLVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMjc3MzppbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMjc3NC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTYyMj1pbnQga3ZtX2FyY2hfdmNwdV9wcmVjcmVhdGUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQpO1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjIzOmludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjI0LXZvaWQga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjE3LjI4ODgwNzIwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc0MDA0MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBLVk0gRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAuLi4gdGhhdCdzIGEgZmFtaWxpYXIgS1ZNIEFQSSBmdW5jdGlvbi4gSXQncyBhIGZvdW5kYXRpb25hbCBwaWVjZSwgdXNlZCB0byBjb25zdHJ1Y3QgYSB2aXJ0dWFsIENQVS4gTm93LCBsZXQncyBwaXZvdCB0byBzb21ldGhpbmcgcmVsYXRlZCBhbmQgc2VlIHdoYXQgaXQncyBhbGwgYWJvdXQuIExldCdzIGRlbHZlIGludG8gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBuZXh0IHN0ZXAgdG8gZXhhbWluZSBpbiB0aGlzIGFyZWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MDU0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDI6MjEuMDYyODE0NzM0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzA3OTQ5NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLioga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vYXJtLmM9MTIzMD1zdGF0aWMgaW50IG5vaW5zdHIga3ZtX2FybV92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1MC0gKi9cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMjUxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1Mi17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTE4MjU9dm9pZCBrdm1fYXJjaF92Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE4NDgtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxODQ5OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xODUwLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTQxMT1zdGF0aWMgaW50IG5vaW5zdHIga3ZtX21pcHNfdmNwdV9lbnRlcl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTQyMS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzo0MjI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL21pcHMva3ZtL21pcHMuYy00MjMte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9MTczMj1pbnQga3ZtX3ZjcHVfaW9jdGxfc2V0X29uZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTE3ODAtXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6MTc4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTE3ODIte1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTc3OD1zdGF0aWMgdm9pZCBub2luc3RyIGt2bV9yaXNjdl92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTg1Ny1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6ODU4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTg1OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTAwMT1zdGF0aWMgdm9pZCBzdG9yZV9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MDIxLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1MDIyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUwMjMte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExOTI3PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExOTU1LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMTk1NjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMTk1Ny17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTYxNj1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjE3LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKmRiZyk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE2MTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE2MTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjI0LjM3MDc2OTg3NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTY2OTE0OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBLVk0gSU9DVExzKipcblxuT2theSwgc28gSSdtIGRlYWxpbmcgd2l0aCBLVk0gaW50ZXJuYWxzLCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBwcmV0dHkgbXVjaCBhIGdpdmVuLiBJdCdzIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludC4gUmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LiBMZXQncyBzdGFydCBieSB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgaXRzZWxmLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIGdldCB0aGUgYnJvYWRlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODMxNywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjI3LjUzNzY4Nzg2NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzNjE0NjY5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9hcmNoX3ZjcHVfaW9jdGxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MjYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTc4MT1zdGF0aWMgYm9vbCBrdm1fYXJtX3ZjcHVfc3VzcGVuZGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4NS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo3ODY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4Ny1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03OTMtXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6Nzk0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03OTUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTIzMD1zdGF0aWMgaW50IG5vaW5zdHIga3ZtX2FybV92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1MC0gKi9cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMjUxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1Mi17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xNjgwPXN0YXRpYyBpbnQga3ZtX3ZjcHVfc2V0X3RhcmdldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNzAyLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjE3MDM6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTcwNC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xODA2PXN0YXRpYyBpbnQga3ZtX2FybV92Y3B1X3NldF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTgyMy1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxODI0Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xODI1LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYz01MTE9c3RhdGljIGludCBzZXRfc3ZlX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy01MzUtXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo1MzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy01Mzcte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy01NDAtXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo1NDE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy01NDIte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYz03MTk9aW50IGt2bV9hcm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03MzUtXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo3MzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTczNy1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03NDEtXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo3NDI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTc0My1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYz04MjU9dTMyIF9fYXR0cmlidXRlX2NvbnN0X18ga3ZtX3RhcmdldF9jcHUodm9pZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODU0LVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6ODU1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODU2LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODU5LVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6ODYwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODYxLXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODY0LVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6ODY1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04NjYtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODgwLSAqL1xcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6ODgxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04ODItXFx0XFx0XFx0XFx0XFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz00MjA9dm1fZmF1bHRfdCBrdm1fYXJjaF92Y3B1X2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQyNC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQyNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDI2LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTQ0ND1pbnQga3ZtX2FyY2hfdmNwdV9kdW1wX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NjYtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0Njc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDY4LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NzQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0NzU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDc2LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00OTAtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0OTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ5Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTk4ND1zdGF0aWMgaW50IGt2bV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDEtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDAyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMy17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDYtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDA3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwOC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTEtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDEyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxMy17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDI0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAyNS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMTU9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMjMzLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIzNDpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMjM1LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzA2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTMwNzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMDgte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzE4LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTMxOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjAte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xODI1PXZvaWQga3ZtX2FyY2hfdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xODQ4LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTg0OTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1MC17XFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYz0zODY9dm9pZCBrdm1fYXJjaF92Y3B1X2Rlc3Ryb3koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMzk3LVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjM5ODppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTM5OS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYz00MTE9c3RhdGljIGludCBub2luc3RyIGt2bV9taXBzX3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy00MjEtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6NDIyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtNDIzLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTQ3OT1pbnQga3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUxNC1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzo1MTU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUxNi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MjAtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6NTIxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MjItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9ODk4PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtOTE3LVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjkxODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy05MTktXFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9OTg3PWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTk5OC1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzo5OTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDAwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDA0LVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjEwMDU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDA2LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYz0xMDExPXZvaWQga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTQtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTAxNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDE2LXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTktXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTAyMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDIxLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTEwODI9aW50IGt2bV9hcmNoX3ZjcHVfZHVtcF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExMTItXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTExMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTE0LXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExMjktXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTEzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTMxLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExNDYtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTE0NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExNDgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM9NTI1PXZvaWQga3ZtcHBjX3N1YmFyY2hfdmNwdV91bmluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01MjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1Mjk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTUzMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NDAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1NDE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTU0Mi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NTQte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01ODAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01ODIte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MDctXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo2MDg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MDkte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo2MTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MTQte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYz04MDc9aW50IGt2bXBwY192Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTgxMS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjgxMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODEzLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODE3LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6ODE4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy04MTktXFx0XFx0XFx0XFx0XFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0xOTY4PXN0YXRpYyBpbnQga3ZtcHBjX2hhbmRsZV9uZXN0ZWRfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwOTktXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTAwOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjEwMS1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMTQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTE1OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjExNi1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jPTExMzU9aW50IGt2bXBwY19oYW5kbGVfZXhpdF9wcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBleGl0X25yKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MTQ1NTpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0NTYtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDgxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MTQ4MjpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0ODMtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE0NDI9dm9pZCBrdm1wcGNfc3ViYXJjaF92Y3B1X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ0Ni1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTQ0NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ0OC17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ3Ny1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTQ3ODppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ3OS17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9MTYwNT1pbnQga3ZtcHBjX3NldF9zcmVnc19pdm9yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTYyOS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTYzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjMxLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjQ2LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNjQ3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2NDgtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE3Mjc9aW50IGt2bXBwY19zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBpZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNzk1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNzk2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNzk3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODAwLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxODAxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODAyLXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODA1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxODA2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE4MDctICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE5ODA9aW50IGt2bXBwY194bGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVsb25nIGVhZGRyLCBlbnVtIHhsYXRlX2luc3RkYXRhIHhsaWQsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMjAzMC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MjAzMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0yMDMyLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0xNzMyPWludCBrdm1fdmNwdV9pb2N0bF9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTc4MC1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoxNzgxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTc4Mi17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0yMDAwPWJvb2wga3ZtX2FyY2hfaW50Y19pbml0aWFsaXplZChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDEyLVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwMTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMTQtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDE4LVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwMTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMjAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0yMDI1PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAzOS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoyMDQwOmxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDQxLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTI0OT1sb25nIGt2bV9hcmNoX3ZjcHVfdW5sb2NrZWRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0yNjktXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjI3MDpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTI3MS1cXHRcXHRcXHQgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTYtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMxNzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjItXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMyMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjgtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMyOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzMwLXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzMtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMzNDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzM1LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzgtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMzOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDQtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjM0NTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzQ2LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDktXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjM1MDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzUxLXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz01MTk9Ym9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy01MjMtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjUyNDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUyNS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNTMxLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo1MzI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy01MzMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTU2MC1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6NTYxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTU2Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9Nzc4PXN0YXRpYyB2b2lkIG5vaW5zdHIga3ZtX3Jpc2N2X3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtODU3LVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo4NTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtODU5LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zOTQ5PWludCBrdm1fYXJjaF92Y3B1X3Nob3VsZF9raWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zOTU1LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozOTU2OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM5NTctXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDAwNC1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDAwNTpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X29uZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDA2LVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNTctXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQwNTg6c3RhdGljIHZvaWQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ub3JtYWxfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDU5LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDY5LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MDcwOnN0YXRpYyB2b2lkIGt2bV9hcmNoX3ZjcHVfaW9jdGxfaW5pdGlhbF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNzEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMTMtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMTQ6c3RhdGljIHZvaWQga3ZtX2FyY2hfdmNwdV9pb2N0bF9jbGVhcl9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMTUte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMjktXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMzA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMzEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMzctXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMzg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMzkte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNDUtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxNDY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE0Ny1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNTctXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxNTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE1OS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNjktXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxNzA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNzEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxODQtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxODU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxODYte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxOTktXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyMDA6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9pbml0aWFsX3BzdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHBzd190IHBzdylcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDIwMS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDIxMi1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDIxMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjE0LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDIyMi1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDIyMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjI0LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKmRiZylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjY0LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MjY1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDI2Ni1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDI3OS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDI4MDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyODEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTUwMDE9c3RhdGljIHZvaWQgc3RvcmVfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTAyMS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTAyMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MDIzLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz01NDgxPXN0YXRpYyBpbnQga3ZtX3MzOTBfaGFuZGxlX3B2X3ZjcHVfZHVtcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTUyMi1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTUyMzpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MjQtXFx0XFx0XFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9NjE2Nz1zdGF0aWMgaW50IGt2bV9nZXRfcmVnX2xpc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTYxODgtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjYxODk6bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbmFyY2gveDg2L2t2bS94ODYuYy02MTkwLVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExOTI3PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExOTU1LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMTk1NjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMTk1Ny17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTIwNzY9c3RhdGljIHZvaWQgX19nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMjExMS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTIxMTI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMTEzLXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMjEyND1zdGF0aWMgdm9pZCBfX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMTU2LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMjE1NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIxNTgte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTEyMjE4PXN0YXRpYyB2b2lkIF9fZ2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MyICpzcmVnczIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIyMzUtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyMjM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMjM3LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIyNDgtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyMjQ5OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIyNTAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMjc0LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMjI3NTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMjc2LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMjQ4Nj1zdGF0aWMgaW50IF9fc2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MyICpzcmVnczIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI1MTktXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyNTIwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNTIxLVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTI1MzU9c3RhdGljIHZvaWQga3ZtX2FyY2hfdmNwdV9ndWVzdGRiZ191cGRhdGVfYXBpY3ZfaW5oaWJpdChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI1NTUtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyNTU2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNTU3LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKmRiZylcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMjYxOS0gKi9cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTI2MjA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI2MjEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNjQwLVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMjY0MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI2NDIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyNjYzLVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMjY2NDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI2NjUte1xcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTE1NzA9bG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE1NzEtXFx0XFx0XFx0dW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZyk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjMwLjg3Mzg0MzE1OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjIwNzYyMzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgS1ZNIE1lbW9yeSBSZWdpb24gT3BlcmF0aW9ucyoqXG5cbkFscmlnaHQsIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBhIHByZXR0eSBzdGFuZGFyZCBlbnRyeSBwb2ludC4gTm90aGluZyBqdW1wcyBvdXQgYXMgaW1tZWRpYXRlbHkgY29uY2VybmluZyB0aGVyZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgZGVlcGVyLiBMZXQncyBzZWUuLi4gdGhlIHJlYWwgcG90ZW50aWFsIGZvciBpc3N1ZXMsIGVzcGVjaWFsbHkgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCwgbGlrZWx5IGxpZXMgaW4gdGhlIGNvbW1pdG1lbnQgb2YgbWVtb3J5IHJlZ2lvbnMuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAuIFRoYXQncyB3aGVyZSBJIHNob3VsZCBiZSBjb25jZW50cmF0aW5nIG15IGVmZm9ydHMuIFRoYXQgZnVuY3Rpb24gaXMga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDc1NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjM1LjA5NDYwOTg0NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI3MTE4MzU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL21tdS5jPTI1MTA9aW50IF9faW5pdCBrdm1fbW11X2luaXQodTMyIGh5cF92YV9iaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMjU3MS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoyNTcyOnZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTI1NzMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21tdS5jPTM3OT1pbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSwgY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21tdS5jLTQ0MS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vbW11LmM6NDQyOnZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tbXUuYy00NDMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9MjA0PWludCBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMjExLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjIxMjp2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0yMTMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9NzE5PWludCBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtNzI2LVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjcyNzp2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy03MjgtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM9MTM3PXZvaWQga3ZtX2FyY2hfZmx1c2hfc2hhZG93X21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtMTU0LVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjE1NTp2b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy0xNTYtXFx0XFx0XFx0XFx0c3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTU4MDc9c3RhdGljIGxvbmcgY21tYV9kX2NvdW50X3B0ZSh1bmlvbiBwdGUgKnB0ZXAsIGdmbl90IGdmbiwgZ2ZuX3QgbmV4dCwgc3RydWN0IGRhdF93YWxrICp3YWxrKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU4MTMtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU4MTQ6dm9pZCBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU4MTUtXFx0XFx0XFx0XFx0c3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTEzNjQ4PXN0YXRpYyB2b2lkIGt2bV9tbXVfc2xvdF9hcHBseV9mbGFncyhzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM3NjQtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNzY1OnZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS94ODYuYy0xMzc2Ni1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpvbGQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTI0NT1pbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMjQ4LVxcdFxcdFxcdFxcdGVudW0ga3ZtX21yX2NoYW5nZSBjaGFuZ2UpO1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxMjQ5OnZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMjUwLVxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDI6MzguMzY1ODAzMTcyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDQ0NjI2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIHByb3ZpZGVkIHRlY2huaWNhbCBzbmlwcGV0czpcblxuKipEZWJ1Z2dpbmcgTWVtb3J5IFJlZ2lvbiBDb21taXR0YWwgaW4gS1ZNKipcblxuT2theSwgc28gYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4uLiB0aGF0J3MgYSBwcmV0dHkgc3RhbmRhcmQgZnVuY3Rpb24gY2FsbCBpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgdGhlcmUgYXMgYSBwcm9ibGVtOyBpdCdzIHRoZSBleHBlY3RlZCBtZXRob2QuIE5vdywgZ2l2ZW4gdGhhdCBjb250ZXh0LCBhbmQgYXNzdW1pbmcgSSdtIHRyYWNraW5nIGRvd24gYSBtZW1vcnktcmVsYXRlZCBpc3N1ZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwLCBiYXNlZCBvbiBleHBlcmllbmNlLCBpcyB0byBpbnZlc3RpZ2F0ZSBob3cgYGhhbmRsZV9ycmJlYCBpcyBpbnRlcmFjdGluZy4gSSdtIGZvY3VzaW5nIG9uIHRoYXQgbmV4dCwgYXMgaXQgbGlrZWx5IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBtZW1vcnkgcmVnaW9uIGNvbW1pdCwgYW5kIGEgbWVtb3J5IGNvcnJ1cHRpb24gY291bGQgYmUgaW50cm9kdWNlZCB0aGVyZS4gVGhhdCdzIHRoZSBsaWtlbHkgc3BvdCB0byBpbnNwZWN0IG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDU4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDI6NDIuNTcwMjY5OTUyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTg4NDcxNDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLiogaGFuZGxlX3JyYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9wcml2LmM9MjU3PXN0YXRpYyBpbnQgaGFuZGxlX2lza2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtMjg4LVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jOjI4OTpzdGF0aWMgaW50IGhhbmRsZV9ycmJlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0yOTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0Mjo0NS43NTg3NDgwNjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3ODQ2MDMwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIGEgU3RhdGljIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHRoaXMgY29kZeKApiBpdCBmZWVscyBpbmNyZWRpYmx5IHN0YXRpYy4gSSdtIGhpdHRpbmcgYSB3YWxsIGhlcmUuIFRoZXJlJ3Mgc29tZXRoaW5nIGluaGVyZW50bHkgKnVuY2hhbmdpbmcqIGFib3V0IGl0cyBjdXJyZW50IHN0YXRlIHRoYXQncyBwcmV2ZW50aW5nIG1lIGZyb20gdW5kZXJzdGFuZGluZyBpdHMgYnJvYWRlciByb2xlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGN1dCB0aHJvdWdoIHRoZSBub2lzZSBhbmQgZmlndXJlIG91dCAqd2hhdCogaXMgcmVzcG9uc2libGUgZm9yIGFjdGl2YXRpbmcgdGhpcyB0aGluZy4gVGhlIGtleSB0byB1bmxvY2tpbmcgaXRzIGZ1bmN0aW9uIGxpZXMgaW4gaWRlbnRpZnlpbmcgdGhlIGVudHJ5IHBvaW50LCB0aGUgb3JpZ2luIG9mIGl0cyBleGVjdXRpb24uIExldCdzIGZpbmQgaXRzIGNhbGxlci4gVGhhdCdzIHRoZSBwcmlvcml0eSByaWdodCBub3c7IHRyYWNpbmcgYmFjayB0aGUgZmxvdyB0byBpdHMgc291cmNlIHNob3VsZCBpbGx1bWluYXRlIGl0cyBwdXJwb3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjM5MCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjQ5LjQzNzIxMDg2OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxMjczOTE0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYW5kbGVfcnJiZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3ByaXYuYz0yNTc9c3RhdGljIGludCBoYW5kbGVfaXNrZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0yODgtXFxuYXJjaC9zMzkwL2t2bS9wcml2LmM6Mjg5OnN0YXRpYyBpbnQgaGFuZGxlX3JyYmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTI5MC17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz05NTk9aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy05NzktXFx0Y2FzZSAweDJhOlxcbmFyY2gvczM5MC9rdm0vcHJpdi5jOjk4MDpcXHRcXHRyZXR1cm4gaGFuZGxlX3JyYmUodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtOTgxLVxcdGNhc2UgMHgyYjpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDI6NTEuODQ5OTU1NjU4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Mzg5NDk1MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCMiBIYW5kbGVyKipcblxuT2theSwgc28gSSdtIHN0YXJ0aW5nIGF0IGBrdm1fczM5MF9oYW5kbGVfYjJgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZmlyc3QgcGxhY2UgSSBuZWVkIHRvIGxvb2suIE5vdywgd2hhdCdzIG5leHQ/IExldCdzIGdldCByaWdodCB0byBpdC4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gZXhhbWluaW5nIGBoYW5kbGVfZXNzYWAuIFRoYXQgc2hvdWxkIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBhbGwgd29ya3MuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjgxNiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjU1LjY4ODkwODc5NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIzODg4MjI3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGhhbmRsZV9lc3NhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vcHJpdi5jPTExOTE9c3RhdGljIHZvaWQgX2Vzc2FfY2xlYXJfY2JybChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgKmNicmwsIGludCBsZW4pXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0xMjE2LVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jOjEyMTc6c3RhdGljIGludCBoYW5kbGVfZXNzYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtMTIxOC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQyOjU4LjkyNzc5ODU5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODAzMzc1MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyBhIFN0YXRpYyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCB0aGlzIGNvZGXigKYgaXQgZmVlbHMgaW5jcmVkaWJseSBzdGF0aWMuIEknbSBoaXR0aW5nIGEgd2FsbCBoZXJlLiBUaGVyZSdzIHNvbWV0aGluZyBpbmhlcmVudGx5ICp1bmNoYW5naW5nKiBhYm91dCBpdHMgY3VycmVudCBzdGF0ZSB0aGF0J3MgcHJldmVudGluZyBtZSBmcm9tIHVuZGVyc3RhbmRpbmcgaXRzIGJyb2FkZXIgcm9sZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjdXQgdGhyb3VnaCB0aGUgbm9pc2UgYW5kIGZpZ3VyZSBvdXQgKndoYXQqIGlzIHJlc3BvbnNpYmxlIGZvciBhY3RpdmF0aW5nIHRoaXMgdGhpbmcuIFRoZSBrZXkgdG8gdW5sb2NraW5nIGl0cyBmdW5jdGlvbiBsaWVzIGluIGlkZW50aWZ5aW5nIHRoZSBlbnRyeSBwb2ludCwgdGhlIG9yaWdpbiBvZiBpdHMgZXhlY3V0aW9uLiBMZXQncyBmaW5kIGl0cyBjYWxsZXIuIFRoYXQncyB0aGUgcHJpb3JpdHkgcmlnaHQgbm93OyB0cmFjaW5nIGJhY2sgdGhlIGZsb3cgdG8gaXRzIHNvdXJjZSBzaG91bGQgaWxsdW1pbmF0ZSBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxMjcsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0MzowMi45MDgxNDA5MjhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjM4NTI1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFuZGxlX2Vzc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9wcml2LmM9MTE5MT1zdGF0aWMgdm9pZCBfZXNzYV9jbGVhcl9jYnJsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyAqY2JybCwgaW50IGxlbilcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTEyMTYtXFxuYXJjaC9zMzkwL2t2bS9wcml2LmM6MTIxNzpzdGF0aWMgaW50IGhhbmRsZV9lc3NhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0xMjE4LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jPTEyODQ9aW50IGt2bV9zMzkwX2hhbmRsZV9iOShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0xMjkzLVxcdGNhc2UgMHhhYjpcXG5hcmNoL3MzOTAva3ZtL3ByaXYuYzoxMjk0OlxcdFxcdHJldHVybiBoYW5kbGVfZXNzYSh2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0xMjk1LVxcdGNhc2UgMHhhZjpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDM6MDUuMTMxOTk3OTQ3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjQ1ODkyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFMzOTAgS1ZNIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gc3RhcnRpbmcgYXQgYGt2bV9zMzkwX2hhbmRsZV9iOWAuIFRoYXQncyB3aGVyZSBpdCBhbGwgYmVnaW5zLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIHNlZSBob3cgdGhlIGNvZGUgaGFuZGxlcyBDUFUgZGVzdHJ1Y3Rpb24uIEl0IG1ha2VzIHNlbnNlIHRvIGNoZWNrIGBrdm1fczM5MF9wdl9kZXN0cm95X2NwdWAgbmV4dC4gSXQncyBhIGtleSBmdW5jdGlvbiBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHZpcnR1YWwgbWFjaGluZSdzIENQVSByZXNvdXJjZXMgYXJlIGNsZWFuZWQgdXAuIEkgd2FudCB0byB0cmFjZSB0aGF0IHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTcxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDM6MDkuNTk2NTkwNDIyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjk2MTgyMjczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLioga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTI5NT1zdGF0aWMgaW5saW5lIGh2YV90IGdwYV90b19odmEoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBncGEpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtMzA0LS8qIGltcGxlbWVudGVkIGluIHB2LmMgKi9cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6MzA1OmludCBrdm1fczM5MF9wdl9kZXN0cm95X2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtMzA2LWludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wdi5jPTI0Nz1zdGF0aWMgdm9pZCBrdm1fczM5MF9wdl9kaXNwb3NlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZnJlZV9zdG9yX2Jhc2UpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3B2LmMtMjY0LVxcbmFyY2gvczM5MC9rdm0vcHYuYzoyNjU6aW50IGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXFxuYXJjaC9zMzkwL2t2bS9wdi5jLTI2Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQzOjEyLjg5Mjc4MjIzNVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODgzNjAzODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIGV4cHJlc3NlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhbiBleHBlcnQgdXNlcjpcblxuKipJZGVudGlmeWluZyB0aGUgU291cmNlKipcblxuQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGRldGVybWluZSB0aGUgb3JpZ2luIG9mIHRoaXMuIFRoYXQgbWVhbnMgcGlucG9pbnRpbmcgaXRzIGNhbGxlciwgdGhlIGVudGl0eSBvciBwcm9jZXNzIHRoYXQgaW5pdGlhdGVkIHRoaXMgcGFydGljdWxhciBzZXF1ZW5jZSBvciBhY3Rpb24uIFRoaXMgaXNuJ3QganVzdCBhYm91dCBpZGVudGlmeWluZyBhIHByb2Nlc3MgSUQ7IEkgbmVlZCB0aGUgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBzdXJyb3VuZGluZyB0aGUgY2FsbCwgdGhlIG1ldGhvZHMgdXNlZCwgYW5kIHRoZSBsaWtlbHkgbW90aXZlcyBiZWhpbmQgaXQuIFRoZSBkZXB0aCBvZiBhbmFseXNpcyB3aWxsIGRlcGVuZCBvbiB0aGUgc2Vuc2l0aXZpdHkgb2YgdGhlIHNpdHVhdGlvbiwgb2YgY291cnNlLCBidXQgdGhlIGNvcmUgdGFzayByZW1haW5zIHRoZSBzYW1lOiAqZmluZCB0aGUgc291cmNlKi4gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBjbHVlcz8gTG9ncz8gTWV0YWRhdGE/IE5ldHdvcmsgdHJhZmZpYz8gSSdsbCBuZWVkIHRvIHNpZnQgdGhyb3VnaCBhbGwgYXZhaWxhYmxlIGRhdGEgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIGl0cyBwb2ludCBvZiBvcmlnaW4uIFVuZGVyc3RhbmRpbmcgdGhlIFwid2hvXCIgaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB0aGUgXCJ3aHlcIiBhbmQsIHVsdGltYXRlbHksIHRoZSBcImhvd1wiLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDE0MCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDM6MTYuNzc2Mzg5NDUzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc4MDg3OTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yNDA2PWludCBrdm1fczM5MF9jcHVzX2Zyb21fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDE2LVxcdCAqIHRoaXMgZmFpbHMsIGFzIHRoZSB1bHRyYXZpc29yIGhhcyBzdGlsbCBhY2Nlc3MgdG8gdGhhdCBtZW1vcnkuXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjI0MTc6XFx0ICogU28ga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHUgY2FuIGxlYXZlIGEgXFxcIndhbnRlZFxcXCIgbWVtb3J5IGxlYWtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQxOC1cXHQgKiBiZWhpbmQuXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQyMi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2Y3B1LVxcdTAwM2VtdXRleCk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjI0MjM6XFx0XFx0aWYgKGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHZjcHUsIFxcdTAwMjZfcmMsIFxcdTAwMjZfcnJjKSBcXHUwMDI2XFx1MDAyNiAhcmV0KSB7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI0MjQtXFx0XFx0XFx0KnJjID0gX3JjO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTM0MDE9dm9pZCBrdm1fYXJjaF92Y3B1X2Rlc3Ryb3koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM0MjItXFx0aWYgKGt2bV9zMzkwX3B2X2NwdV9nZXRfaGFuZGxlKHZjcHUpKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozNDIzOlxcdFxcdGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHZjcHUsIFxcdTAwMjZyYywgXFx1MDAyNnJyYyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM0MjQtXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSh2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jaykpO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTI5NT1zdGF0aWMgaW5saW5lIGh2YV90IGdwYV90b19odmEoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBncGEpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtMzA0LS8qIGltcGxlbWVudGVkIGluIHB2LmMgKi9cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6MzA1OmludCBrdm1fczM5MF9wdl9kZXN0cm95X2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtMzA2LWludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wdi5jPTI0Nz1zdGF0aWMgdm9pZCBrdm1fczM5MF9wdl9kaXNwb3NlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZnJlZV9zdG9yX2Jhc2UpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3B2LmMtMjY0LVxcbmFyY2gvczM5MC9rdm0vcHYuYzoyNjU6aW50IGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXFxuYXJjaC9zMzkwL2t2bS9wdi5jLTI2Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQzOjE5LjA1NDQ4MjQ2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjA5NjM5NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0LCB0aGlua2luZyBsaWtlIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIENQVSBEZXN0cnVjdGlvbiBpbiB0aGUgS1ZNIHMzOTAgUFYgQ29udGV4dCoqXG5cbk9rYXksIHNvIGBrdm1fczM5MF9wdl9kZXN0cm95X2NwdWAgaXMgdGhlIGZ1bmN0aW9uIHdlJ3JlIGNvbmNlcm5lZCB3aXRoIGhlcmUuIFRoZSBjb2RlIHRlbGxzIG1lIGl0J3MgY2FsbGVkIGZyb20gdHdvIGRpc3RpbmN0IHBvaW50czogYGt2bV9hcmNoX3ZjcHVfZGVzdHJveWAgYW5kIGBrdm1fczM5MF9jcHVzX2Zyb21fcHZgLiBUaGlzIHN1Z2dlc3RzIGl0J3MgaW52b2x2ZWQgaW4gdGVhcmluZyBkb3duIG9yIGNsZWFuaW5nIHVwIGFmdGVyIGEgcGFyYXZpcnR1YWxpemVkIHMzOTAgdmlydHVhbCBDUFUgKHZDUFUpLiBLbm93aW5nIHRoZXNlIGNhbGwgc2l0ZXMgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludC4gYGt2bV9hcmNoX3ZjcHVfZGVzdHJveWAgbGlrZWx5IGhhbmRsZXMgdGhlIGdlbmVyYWwgdkNQVSBkZXN0cnVjdGlvbiBwcm9jZXNzLCBhbmQgYGt2bV9zMzkwX2NwdXNfZnJvbV9wdmAgaXMgcHJvYmFibHkgZGVhbGluZyB3aXRoIGNyZWF0aW5nIHRoZSBpbml0aWFsIGNwdXMgZnJvbSB0aGUgcGFyYXZpcnR1YWxpemVkIGd1ZXN0cy5cblxuVG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIGNvbXBsZXRlbHksIEkgbmVlZCB0byBzZWUgdGhlIG90aGVyIGhhbGYgb2YgdGhlIGVxdWF0aW9uLiBXaGVyZSdzIHRoZSBjb3VudGVycGFydCB0byBkZXN0cm95PyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGF0ZWQgZnVuY3Rpb24sIGBrdm1fczM5MF9wdl9jcmVhdGVfY3B1YCwgaW1tZWRpYXRlbHkuIFRoYXQncyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuIEV4YW1pbmluZyBpdHMgbG9naWMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHJlc291cmNlcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGFsbG9jYXRlZCwgYW5kIHRoZXJlZm9yZSwgd2hhdCBga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHVgIGlzIHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1cC4gSXTigJlzIGFsd2F5cyBnb29kIHRvIHVuZGVyc3RhbmQgdGhlIG1hdGNoaW5nIGNyZWF0ZS9kZXN0cm95IHBhdHRlcm4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjM4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDM6MjMuMzE1NDQ5ODU5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDQ1Mjc1MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLioga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9MzA1PWludCBrdm1fczM5MF9wdl9kZXN0cm95X2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6MzA2OmludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC0zMDctaW50IGt2bV9zMzkwX3B2X3NldF9hc2lkZShzdHJ1Y3Qga3ZtICprdm0sIHUxNiAqcmMsIHUxNiAqcnJjKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHYuYz0yNjU9aW50IGt2bV9zMzkwX3B2X2Rlc3Ryb3lfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3B2LmMtMjgzLVxcbmFyY2gvczM5MC9rdm0vcHYuYzoyODQ6aW50IGt2bV9zMzkwX3B2X2NyZWF0ZV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYylcXG5hcmNoL3MzOTAva3ZtL3B2LmMtMjg1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDM6MjYuNzYwNzMwMzdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2MjU0NTg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0J3MgbXkgb3duIGludGVybmFsIGRpYWxvZ3VlOlxuXG4qKlRyYWNpbmcgdGhlIFNvdXJjZSoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gXCJMZXQncyBmaW5kIGl0cyBjYWxsZXIuXCIgVGhhdCdzIHRoZSBpbW1lZGlhdGUgbmVlZCwgdGhlIHByaW1hcnkgb2JqZWN0aXZlLiBObyBmbHVmZiwgbm8gaGVzaXRhdGlvbi4gV2UndmUgZ290IHNvbWV0aGluZyDigJMgYSBzaWduYWwsIGEgcGF0dGVybiwgYSBkYXRhIHBvaW50IOKAkyBhbmQgbm93IHdlIG5lZWQgdG8gaWRlbnRpZnkgdGhlIG9yaWdpbi4gVGhpcyBpc24ndCBhYm91dCBzcGVjdWxhdGlvbiBvciB0aGVvcmV0aWNhbCBmcmFtZXdvcmtzIGF0IHRoaXMganVuY3R1cmU7IGl04oCZcyBhYm91dCBlc3RhYmxpc2hpbmcgdGhlIHJvb3QgY2F1c2UuIE15IGV4cGVydGlzZSBsaWVzIGluIGVmZmljaWVudGx5IGFuZCBtZXRob2RpY2FsbHkgZGlzc2VjdGluZyB0aGVzZSBraW5kcyBvZiBzaXR1YXRpb25zLiBUaGlzIHVzdWFsbHkgaW52b2x2ZXMgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtcyBpbnZvbHZlZCwga25vd2luZyB0aGUgdHlwaWNhbCBwcm90b2NvbHMgYW5kIGV4cGVjdGVkIGJlaGF2aW9yLiBJdCBjb3VsZCBtZWFuIGRpZ2dpbmcgaW50byBsb2dzLCBjcm9zcy1yZWZlcmVuY2luZyBkYXRhc2V0cywgYW5hbHl6aW5nIGNvbW11bmljYXRpb24gcGF0dGVybnMsIG9yIGVtcGxveWluZyBzb21lIHNwZWNpYWxpemVkIHRvb2xzIHRvIG1hcCBkZXBlbmRlbmNpZXMgYW5kIHRyYWNlIGFjdGl2aXR5LiBJbiBlc3NlbmNlLCBteSBmb2N1cyBzaGlmdHMgdG8gdGhlIHdobyBvciB3aGF0IGluaXRpYXRlZCB0aGlzIGV2ZW50IGFuZCBob3cgdG8gZ2V0IHRoYXQgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDA0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0MzozMS4xMjMyODAyMzZaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTQ0NjgxMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfcHZfY3JlYXRlX2NwdVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjQ0Nz1zdGF0aWMgaW50IGt2bV9zMzkwX2NwdXNfdG9fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDYwLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnZjcHUtXFx1MDAzZW11dGV4KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjQ2MTpcXHRcXHRyID0ga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdSh2Y3B1LCByYywgcnJjKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQ2Mi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZjcHUtXFx1MDAzZW11dGV4KTtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zNzA1PXN0YXRpYyBpbnQga3ZtX3MzOTBfdmNwdV9zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzc4Mi1cXHRpZiAoa3ZtX3MzOTBfcHZfaXNfcHJvdGVjdGVkKHZjcHUtXFx1MDAzZWt2bSkpIHtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6Mzc4MzpcXHRcXHRyYyA9IGt2bV9zMzkwX3B2X2NyZWF0ZV9jcHUodmNwdSwgXFx1MDAyNnV2cmMsIFxcdTAwMjZ1dnJyYyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM3ODQtXFx0XFx0aWYgKHJjKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTMwNT1pbnQga3ZtX3MzOTBfcHZfZGVzdHJveV9jcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgKnJjLCB1MTYgKnJyYyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjMwNjppbnQga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtMzA3LWludCBrdm1fczM5MF9wdl9zZXRfYXNpZGUoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYyk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3B2LmM9MjY1PWludCBrdm1fczM5MF9wdl9kZXN0cm95X2NwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiAqcmMsIHUxNiAqcnJjKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wdi5jLTI4My1cXG5hcmNoL3MzOTAva3ZtL3B2LmM6Mjg0OmludCBrdm1fczM5MF9wdl9jcmVhdGVfY3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2ICpyYywgdTE2ICpycmMpXFxuYXJjaC9zMzkwL2t2bS9wdi5jLTI4NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQzOjMzLjQ3Nzc1NzExOFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjQ1ODg0MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIEtWTS9zMzkwIENQVSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgczM5MCBhcmNoaXRlY3R1cmUgaGFuZGxlcyB2aXJ0dWFsIENQVSBjcmVhdGlvbiB3aXRoaW4gS1ZNLiBTcGVjaWZpY2FsbHksIGBrdm1fczM5MF9wdl9jcmVhdGVfY3B1YCBpcyB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QgaGVyZSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjYWxsIHBhdGhzLiBJIHNlZSB0aGF0IGl0J3MgY2FsbGVkIGZyb20gdHdvIGtleSBhcmVhczogYGt2bV9zMzkwX2NwdXNfdG9fcHZgIGFuZCBga3ZtX3MzOTBfdmNwdV9zZXR1cGAuIFRoaXMgc3VnZ2VzdHMgdGhhdCBga3ZtX3MzOTBfcHZfY3JlYXRlX2NwdWAgaXMgbGlrZWx5IHRoZSBjb3JlIHJvdXRpbmUgdGhhdCBhY3R1YWxseSBzZXRzIHVwIHRoZSBwYXJhdmlydHVhbGl6ZWQgQ1BVIHN0YXRlLlxuXG5Ob3csIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB0aGUgKndoeSogYW5kICpob3cqIGJlaGluZCB0aGlzIENQVSBjcmVhdGlvbiwgSSBzaG91bGQgaW52ZXN0aWdhdGUgYSBsaXR0bGUgZnVydGhlciB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGhhbmRsZWQsIGFuZCBob3cgdGhlIHZpcnR1YWwgbWFjaGluZSByZWNlaXZlcyBpbmZvcm1hdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgYmVjYXVzZSB0aGF0IGNhbiBnaXZlIHVzZWZ1bCBpbnNpZ2h0cy4gTGV0J3Mgc2VlIGhvdyBga3ZtX3MzOTBfaGFuZGxlX2IyYCBhbmQgYGt2bV9zMzkwX2hhbmRsZV9iOWAgdGllIGludG8gdGhlIHdob2xlIHBpY3R1cmUuIFRoZXkgYXJlIGxpa2VseSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgaW50ZXJydXB0cyBhbmQgcmVsYXRlZCBldmVudHMsIGFuZCB0aGVpciBpbnRlcmFjdGlvbiB3aXRoIENQVSBjcmVhdGlvbiBzaG91bGQgc2hlZCBsaWdodCBvbiB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBmbG93LiBUaGlzIHdpbGwgaG9wZWZ1bGx5IHNob3cgaG93IHRoZSBDUFUgaXMgc2V0IHVwIHRvIHJlY2VpdmUgdGhlIGludGVycnVwdHMsIGhhbmRsZSBwYWdlIGZhdWx0cyBldGMuIGluIHRoZSBwYXJhdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2OTc2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDM6MzguNzIzNjQ0OTQ4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzMxNzgyNzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8bG9uZ3xzdGF0aWMpLioga3ZtX3MzOTBfaGFuZGxlX2IyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD00MzI9aW50IGt2bV9zMzkwX2hhbmRsZV9hYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaDo0MzM6aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC00MzQtaW50IGt2bV9zMzkwX2hhbmRsZV9lMyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wcml2LmM9ODY3PXN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtOTU4LVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jOjk1OTppbnQga3ZtX3MzOTBfaGFuZGxlX2IyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy05NjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0Mzo0Mi4wNTU0MzYyMjNaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzNDY3NDEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBleHByZXNzZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6XG5cbioqSWRlbnRpZnlpbmcgdGhlIFNvdXJjZSoqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIG9yaWdpbiBvZiB0aGlzLiBUaGF0IG1lYW5zIHBpbnBvaW50aW5nIGl0cyBjYWxsZXIsIHRoZSBlbnRpdHkgb3IgcHJvY2VzcyB0aGF0IGluaXRpYXRlZCB0aGlzIHBhcnRpY3VsYXIgc2VxdWVuY2Ugb3IgYWN0aW9uLiBUaGlzIGlzbid0IGp1c3QgYWJvdXQgaWRlbnRpZnlpbmcgYSBwcm9jZXNzIElEOyBJIG5lZWQgdGhlIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gc3Vycm91bmRpbmcgdGhlIGNhbGwsIHRoZSBtZXRob2RzIHVzZWQsIGFuZCB0aGUgbGlrZWx5IG1vdGl2ZXMgYmVoaW5kIGl0LiBUaGUgZGVwdGggb2YgYW5hbHlzaXMgd2lsbCBkZXBlbmQgb24gdGhlIHNlbnNpdGl2aXR5IG9mIHRoZSBzaXR1YXRpb24sIG9mIGNvdXJzZSwgYnV0IHRoZSBjb3JlIHRhc2sgcmVtYWlucyB0aGUgc2FtZTogKmZpbmQgdGhlIHNvdXJjZSouIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY2x1ZXM/IExvZ3M/IE1ldGFkYXRhPyBOZXR3b3JrIHRyYWZmaWM/IEknbGwgbmVlZCB0byBzaWZ0IHRocm91Z2ggYWxsIGF2YWlsYWJsZSBkYXRhIHRvIHRyYWNlIHRoaXMgYmFjayB0byBpdHMgcG9pbnQgb2Ygb3JpZ2luLiBVbmRlcnN0YW5kaW5nIHRoZSBcIndob1wiIGlzIHRoZSBmaXJzdCBjcml0aWNhbCBzdGVwIHRvIHVuZGVyc3RhbmRpbmcgdGhlIFwid2h5XCIgYW5kLCB1bHRpbWF0ZWx5LCB0aGUgXCJob3dcIi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2OTIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQzOjQ2LjM5MDExMzg1NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwNDY1NTkyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9oYW5kbGVfYjJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYz0xMDc9c3RhdGljIGludCBoYW5kbGVfaW5zdHJ1Y3Rpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYy0xMjUtXFx0Y2FzZSAweGIyOlxcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM6MTI2OlxcdFxcdHJldHVybiBrdm1fczM5MF9oYW5kbGVfYjIodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYy0xMjctXFx0Y2FzZSAweGI2Olxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTQzMj1pbnQga3ZtX3MzOTBfaGFuZGxlX2FhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjQzMzppbnQga3ZtX3MzOTBfaGFuZGxlX2IyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTQzNC1pbnQga3ZtX3MzOTBfaGFuZGxlX2UzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz04Njc9c3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy05NTgtXFxuYXJjaC9zMzkwL2t2bS9wcml2LmM6OTU5OmludCBrdm1fczM5MF9oYW5kbGVfYjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTk2MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQzOjQ4LjY5NDc3NjI5N1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTcyMTc1MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnN0cnVjdGlvbiBJbnRlcmNlcHQgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB3ZSdyZSBoYW5kbGluZyBpbnN0cnVjdGlvbiBpbnRlcmNlcHRzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyB3aG9sZSBwcm9jZXNzLCBhbmQgaXQgbG9va3MgbGlrZSBgaGFuZGxlX2luc3RydWN0aW9uYCBpcyB0aGUga2V5LiBUaGF0J3MgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbi4gTXkgaW5zdGluY3QgaXMgdGVsbGluZyBtZSB0byBnbyBhbmQgY2hlY2sgYGt2bV9zMzkwX2hhbmRsZV9iOWAgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgSSBoYXZlIHNlZW4gYSBsb3Qgb2YgYWN0aXZpdHkuIExldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODMxMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQzOjUyLjY2Njk1NDcxN1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQyOTE5NDU4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9zMzkwX2hhbmRsZV9iOVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NDM2PWludCBrdm1fczM5MF9oYW5kbGVfMDEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NDM3OmludCBrdm1fczM5MF9oYW5kbGVfYjkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtNDM4LWludCBrdm1fczM5MF9oYW5kbGVfbHBzdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wcml2LmM9MTIxNz1zdGF0aWMgaW50IGhhbmRsZV9lc3NhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTEyODMtXFxuYXJjaC9zMzkwL2t2bS9wcml2LmM6MTI4NDppbnQga3ZtX3MzOTBfaGFuZGxlX2I5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0xMjg1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDM6NTYuMDk2MTU1NzYxWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzU0NDMwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgZXhwcmVzc2VkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIGFuIGV4cGVydCB1c2VyOlxuXG4qKklkZW50aWZ5aW5nIHRoZSBTb3VyY2UqKlxuXG5BbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmlnaW4gb2YgdGhpcy4gVGhhdCBtZWFucyBwaW5wb2ludGluZyBpdHMgY2FsbGVyLCB0aGUgZW50aXR5IG9yIHByb2Nlc3MgdGhhdCBpbml0aWF0ZWQgdGhpcyBwYXJ0aWN1bGFyIHNlcXVlbmNlIG9yIGFjdGlvbi4gVGhpcyBpc24ndCBqdXN0IGFib3V0IGlkZW50aWZ5aW5nIGEgcHJvY2VzcyBJRDsgSSBuZWVkIHRoZSBjb250ZXh0dWFsIGluZm9ybWF0aW9uIHN1cnJvdW5kaW5nIHRoZSBjYWxsLCB0aGUgbWV0aG9kcyB1c2VkLCBhbmQgdGhlIGxpa2VseSBtb3RpdmVzIGJlaGluZCBpdC4gVGhlIGRlcHRoIG9mIGFuYWx5c2lzIHdpbGwgZGVwZW5kIG9uIHRoZSBzZW5zaXRpdml0eSBvZiB0aGUgc2l0dWF0aW9uLCBvZiBjb3Vyc2UsIGJ1dCB0aGUgY29yZSB0YXNrIHJlbWFpbnMgdGhlIHNhbWU6ICpmaW5kIHRoZSBzb3VyY2UqLiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGNsdWVzPyBMb2dzPyBNZXRhZGF0YT8gTmV0d29yayB0cmFmZmljPyBJJ2xsIG5lZWQgdG8gc2lmdCB0aHJvdWdoIGFsbCBhdmFpbGFibGUgZGF0YSB0byB0cmFjZSB0aGlzIGJhY2sgdG8gaXRzIHBvaW50IG9mIG9yaWdpbi4gVW5kZXJzdGFuZGluZyB0aGUgXCJ3aG9cIiBpcyB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcCB0byB1bmRlcnN0YW5kaW5nIHRoZSBcIndoeVwiIGFuZCwgdWx0aW1hdGVseSwgdGhlIFwiaG93XCIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4Nzg5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0NDowMS4xMzE2MDEyMDVaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjMxODI5MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfaGFuZGxlX2I5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM9MTA3PXN0YXRpYyBpbnQgaGFuZGxlX2luc3RydWN0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMTMxLVxcdGNhc2UgMHhiOTpcXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jOjEzMjpcXHRcXHRyZXR1cm4ga3ZtX3MzOTBfaGFuZGxlX2I5KHZjcHUpO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMTMzLVxcdGNhc2UgMHhlMzpcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD00MzY9aW50IGt2bV9zMzkwX2hhbmRsZV8wMShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaDo0Mzc6aW50IGt2bV9zMzkwX2hhbmRsZV9iOShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC00MzgtaW50IGt2bV9zMzkwX2hhbmRsZV9scHN3KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz0xMjE3PXN0YXRpYyBpbnQgaGFuZGxlX2Vzc2Eoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtMTI4My1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYzoxMjg0OmludCBrdm1fczM5MF9oYW5kbGVfYjkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTEyODUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0NDowMy4zOTQ3ODk4ODZaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjYyMjMyNTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIEVudHJ5IFBvaW50cyBmb3IgT3B0aW1pemF0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIHN0YXJ0IG9wdGltaXppbmcgdGhpcyBLVk0gY29kZS4gYGhhbmRsZV9pbnN0cnVjdGlvbmAgaXMgZGVmaW5pdGVseSBhIGtleSBmdW5jdGlvbiwgYSBob3QgcGF0aC4gVGhhdCdzIHVzdWFsbHkgdGhlIGZpcnN0IHBsYWNlIHlvdSBsb29rLiBCdXQsIGluc3RlYWQgb2YgZ29pbmcgc3RyYWlnaHQgZm9yIHRoYXQgZnVuY3Rpb24sIEkgc2hvdWxkIHpvb20gaW4gb24gYGt2bV9zMzkwX2hhbmRsZV9iMmAgYW5kIGBrdm1fczM5MF9oYW5kbGVfYjlgLiBUaG9zZSBzZWVtIGxpa2UgbW9yZSBtYW5hZ2VhYmxlIGVudHJ5IHBvaW50cy4gSSBzaG91bGQgYWxzbyBjb25zaWRlciBga3ZtX2FyY2hfdm1faW9jdGxgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgYXMgaW5pdGlhbCBwb2ludHMgb2YgaW50ZXJlc3Qgc2luY2UgdGhleSBhcmUgdG9wLWxldmVsLlxuXG5Mb29raW5nIGRlZXBlciwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBjbGVhcmx5IGEgaG90IHBhdGgsIHNvIHRoYXQncyBzb21ldGhpbmcgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gYGt2bV9hcmNoX3ZjcHVfY3JlYXRlYCBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZWdpbi4gVGhlbiB0aGVyZSBpcyBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLCB0aGF0IHNlZW1zIGdvb2QgYXMgd2VsbC5cblxuSSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgdGhhdCBJJ20gbm90IG1pc3NpbmcgYW55IGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zLiBJIGtub3cgYENPTkZJR19LVk1gIGlzIGZ1bmRhbWVudGFsLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG92ZXJsb29rIGFueXRoaW5nIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gcGVyZm9ybWFuY2UgdHVuaW5nLiBJIGFsc28gc2hvdWxkIGNoZWNrIG9uIFBWIChQcm90ZWN0ZWQgVmlydHVhbGl6YXRpb24pIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgc3BlY2lmaWMgY29uZmlnIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk0MTMsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDQ6MTAuMDE3MTE5MzU1WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjY2Njk1NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZz0xNj1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xNy1cXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MTg6Y29uZmlnIEtWTVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMwLVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzozMTpjb25maWcgS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSU1xcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMi1cXHRib29sIFxcXCJNYWludGFpbiBjb3VudGVycyBmb3IgQ09QMCBhY2Nlc3Nlc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI2OmNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjctXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yOC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mjk6Y29uZmlnIEtWTV9CT09LM1NfMzJfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMC1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzMtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM0OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzUtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozODpjb25maWcgS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQzLVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDQtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQ1OmNvbmZpZyBLVk1fQk9PSzNTXzMyXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ2LVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfMzIgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9CT09LM1NfNjRcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjMtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc182NCBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTc4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo3OTpjb25maWcgS1ZNX0JPT0szU182NF9IVlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy04MC1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBQT1dFUjcgYW5kIGxhdGVyIHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTk5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9CT09LM1NfNjRfUFJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTAxLVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCB3aXRob3V0IHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTI2OmNvbmZpZyBLVk1fQk9PSzNTX0hWX0VYSVRfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNy1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyOC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTI5OmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A5X1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMzAtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgdGltaW5nIGZvciB0aGUgUDkgZW50cnkgcG9pbnRcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDhfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0My1cXHRib29sIFxcXCJEZXRhaWxlZCB0aW1pbmcgZm9yIGh5cGVydmlzb3IgcmVhbC1tb2RlIGNvZGUgKGZvciBQT1dFUjgpXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1Ni1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTU3OmNvbmZpZyBLVk1fQk9PSzNTX0hWX05FU1RFRF9QTVVfV09SS0FST1VORFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiTmVzdGVkIEwwIGhvc3Qgd29ya2Fyb3VuZCBmb3IgTDEgS1ZNIGhvc3QgUE1VIGhhbmRsaW5nIGJ1Z1xcXCIgaWYgRVhQRVJUXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTcxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE1VXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiSHlwZXJ2aXNvciBQZXJmIGV2ZW50cyBmb3IgS1ZNIEJvb2szcy1IVlxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODMtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4NDpjb25maWcgS1ZNX0JPT0tFX0hWXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4NS1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4Ni1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg3OmNvbmZpZyBLVk1fRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg4LVxcdGJvb2wgXFxcIkRldGFpbGVkIGV4aXQgdGltaW5nXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5Ny1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTk4OmNvbmZpZyBLVk1fRTUwMFYyXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5OS1cXHRib29sIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwdjIgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTItXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxMzpjb25maWcgS1ZNX0U1MDBNQ1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTQtXFx0Ym9vbCBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwME1DL0U1NTAwL0U2NTAwIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9NUElDXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIzMC1cXHRib29sIFxcXCJLVk0gaW4ta2VybmVsIE1QSUMgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0MC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjQxOmNvbmZpZyBLVk1fWElDU1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDItXFx0Ym9vbCBcXFwiS1ZNIGluLWtlcm5lbCBYSUNTIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTAtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI1MTpjb25maWcgS1ZNX1hJVkVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUyLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZz0yMj1zb3VyY2UgXFxcImFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvbWljcm93YXR0L0tjb25maWdcXFwiXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTIzLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZzoyNDpjb25maWcgS1ZNX0dVRVNUXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIktWTSBHdWVzdCBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTE4LVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVxcdGRlZl90cmlzdGF0ZSB5XFxuLS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjQ3OmNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cXHRib29sIFxcXCJVc2Vyc3BhY2UgY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzXFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz04MjY9c291cmNlIFxcXCJhcmNoL3g4Ni94ZW4vS2NvbmZpZ1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnLTgyNy1cXG5hcmNoL3g4Ni9LY29uZmlnOjgyODpjb25maWcgS1ZNX0dVRVNUXFxuYXJjaC94ODYvS2NvbmZpZy04MjktXFx0Ym9vbCBcXFwiS1ZNIEd1ZXN0IHN1cHBvcnQgKGluY2x1ZGluZyBrdm1jbG9jaylcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy0zLVxcbnZpcnQva3ZtL0tjb25maWc6NDpjb25maWcgS1ZNX0NPTU1PTlxcbnZpcnQva3ZtL0tjb25maWctNS0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz0zOT1jb25maWcgTkVFRF9LVk1fRElSVFlfUklOR19XSVRIX0JJVE1BUFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy00Mi1cXG52aXJ0L2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fTU1JT1xcbnZpcnQva3ZtL0tjb25maWctNDQtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTQ1LVxcbnZpcnQva3ZtL0tjb25maWc6NDY6Y29uZmlnIEtWTV9BU1lOQ19QRlxcbnZpcnQva3ZtL0tjb25maWctNDctICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNDktIyBUb2dnbGUgdG8gc3dpdGNoIGJldHdlZW4gZGlyZWN0IG5vdGlmaWNhdGlvbiBhbmQgYmF0Y2ggam9iXFxudmlydC9rdm0vS2NvbmZpZzo1MDpjb25maWcgS1ZNX0FTWU5DX1BGX1NZTkNcXG52aXJ0L2t2bS9LY29uZmlnLTUxLSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTU5PWNvbmZpZyBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTYxLVxcbnZpcnQva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9WRklPXFxudmlydC9rdm0vS2NvbmZpZy02My0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz02NT1jb25maWcgSEFWRV9LVk1fSU5WQUxJRF9XQUtFVVBTXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTY3LVxcbnZpcnQva3ZtL0tjb25maWc6Njg6Y29uZmlnIEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxcbnZpcnQva3ZtL0tjb25maWctNjktICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTcwLVxcbnZpcnQva3ZtL0tjb25maWc6NzE6Y29uZmlnIEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcXG52aXJ0L2t2bS9LY29uZmlnLTcyLSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy03My1cXG52aXJ0L2t2bS9LY29uZmlnOjc0OmNvbmZpZyBLVk1fQ09NUEFUXFxudmlydC9rdm0vS2NvbmZpZy03NS0gICAgICAgZGVmX2Jvb2wgeVxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz05MT1jb25maWcgSEFWRV9LVk1fUE1fTk9USUZJRVJcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctOTMtXFxudmlydC9rdm0vS2NvbmZpZzo5NDpjb25maWcgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcXG52aXJ0L2t2bS9LY29uZmlnLTk1LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy05Ni1cXG52aXJ0L2t2bS9LY29uZmlnOjk3OmNvbmZpZyBLVk1fRUxJREVfVExCX0ZMVVNIX0lGX1lPVU5HXFxudmlydC9rdm0vS2NvbmZpZy05OC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctOTktXFxudmlydC9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcXG52aXJ0L2t2bS9LY29uZmlnLTEwMS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctMTAyLVxcbnZpcnQva3ZtL0tjb25maWc6MTAzOmNvbmZpZyBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xcbnZpcnQva3ZtL0tjb25maWctMTA0LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy0xMDUtXFxudmlydC9rdm0vS2NvbmZpZzoxMDY6Y29uZmlnIEtWTV9HVUVTVF9NRU1GRFxcbnZpcnQva3ZtL0tjb25maWctMTA3LSAgICAgICBzZWxlY3QgWEFSUkFZX01VTFRJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ0OjEyLjI4MzgyNTA2NVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDIyNjA3MjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIEtWTSBDb25maWd1cmF0aW9uIGZvciBzMzkwKipcblxuQWxyaWdodCwgc28gd2UncmUgd29ya2luZyB3aXRoIHMzOTAgYW5kIEtWTS4gRmlyc3QgdGhpbmdzIGZpcnN0LCBLVk0gb24gdGhpcyBhcmNoaXRlY3R1cmUgaXMgZ29pbmcgdG8gYmUgZW5hYmxlZCB2aWEgYENPTkZJR19LVk1gLCB0aGF0J3MgdGhlIHN0YW5kYXJkLiBCdXQsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGlzbid0IHNvbWV0aGluZyBtb3JlIHNwZWNpZmljIGZvciBwYXJhdmlydHVhbGl6YXRpb24gd2l0aGluIHRoZSBLVk0gc2V0dXAgZm9yIHRoaXMgcGxhdGZvcm0uXG5cblRoZSBsb2dpY2FsIHBsYWNlIHRvIGxvb2sgZm9yIHRob3NlIHNwZWNpZmljcyB3b3VsZCBiZSB0aGUgYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBwYXJhdmlydHVhbGl6YXRpb24gdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2UgYENPTkZJR19LVk1gIHNldHRpbmcuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MTgyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDQ6MTYuNzA2NDM1ODQ5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBLVk0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbiAgIDY6XFx0XFxuICAgNzpcXHRtZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXFxuICAgODpcXHRcXHRkZWZfYm9vbCB5XFxuICAgOTpcXHRcXHRwcm9tcHQgXFxcIktWTVxcXCJcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW4gb3RoZXJcXG4gIDEyOlxcdFxcdCAgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXFxuICAxMzpcXHRcXHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZCBkaXNhYmxlZC5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgVklSVFVBTElaQVRJT05cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIEtWTVxcbiAgMjA6XFx0XFx0ZGVmX3RyaXN0YXRlIHlcXG4gIDIxOlxcdFxcdHByb21wdCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4gIDIzOlxcdFxcdHNlbGVjdCBLVk1fQVNZTkNfUEZcXG4gIDI0OlxcdFxcdHNlbGVjdCBLVk1fQVNZTkNfUEZfU1lOQ1xcbiAgMjU6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDI2OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuICAyNzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcXG4gIDI4OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcXG4gIDI5OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9OT19QT0xMXFxuICAzMDpcXHRcXHRzZWxlY3QgS1ZNX1ZGSU9cXG4gIDMxOlxcdFxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiAgMzI6XFx0XFx0c2VsZWN0IEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcXG4gIDMzOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIFN1cHBvcnQgaG9zdGluZyBwYXJhdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmcgdGhlIFNJRVxcbiAgMzY6XFx0XFx0ICB2aXJ0dWFsaXphdGlvbiBjYXBhYmlsaXR5IG9uIHRoZSBtYWluZnJhbWUuIFRoaXMgc2hvdWxkIHdvcmtcXG4gIDM3OlxcdFxcdCAgb24gYW55IDY0Yml0IG1hY2hpbmUuXFxuICAzODpcXHRcXG4gIDM5OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdGhyb3VnaFxcbiAgNDA6XFx0XFx0ICBhIGNoYXJhY3RlciBkZXZpY2Ugbm9kZSBuYW1lZCAvZGV2L2t2bS5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDQzOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQga3ZtLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxcbiAgNDg6XFx0XFx0Ym9vbCBcXFwiVXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1xcXCJcXG4gIDQ5OlxcdFxcdGRlcGVuZHMgb24gS1ZNXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIEFsbG93IENBUF9TWVNfQURNSU4gdXNlcnMgdG8gY3JlYXRlIEtWTSB2aXJ0dWFsIG1hY2hpbmVzIHRoYXQgYXJlXFxuICA1MjpcXHRcXHQgIGNvbnRyb2xsZWQgYnkgdXNlcnNwYWNlLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1NTpcXHRcXG4gIDU2OlxcdGVuZGlmICMgVklSVFVBTElaQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDQ6MTYuNzA2NTQwOTA5WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODg0NTc5NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgczM5MCBQViBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgUFYgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBGaXJzdCB0aG91Z2h0OiB0aGVyZSBpc24ndCBhIGRlZGljYXRlZCBvbmUgaW4gdGhlIGBhcmNoL3MzOTAva3ZtL0tjb25maWdgIGZpbGUuIEhtbSwgdGhhdCdzIHVudXN1YWwuIFBlcmhhcHMgaXQncyBoYW5kbGVkIGRpZmZlcmVudGx5IGhlcmUuIFdhaXQgYSBzZWNvbmQsIGNvdWxkIFBWIGJlIGluZGlyZWN0bHkgZW5hYmxlZCB0aHJvdWdoIGBDT05GSUdfS1ZNX1MzOTBfVUNPTlRST0xgPyBObywgbm8sIHRoYXQncyBmb3IgdXNlciBjb250cm9sIGFuZCBpc24ndCB0aGUgc2FtZS4gSSBuZWVkIHRvIGJlIG1vcmUgdGhvcm91Z2guIExldCBtZSBjaGVjayB0aGUgYnJvYWRlciBgYXJjaC9zMzkwL0tjb25maWdgIGZpbGUgdG8gc2VlIGlmIHRoZXJlJ3MgYSBtb3JlIGdlbmVyYWwgczM5MCBQVi1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhpZGluZyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUxNzcsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ0OjIxLjM5NTAwMzc4NloiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY2MDQzMzAxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcuKlBWXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjM5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9kZXZsaW5rLXRyYXAucnN0PTEyNj1iZSBhZGRlZCB0byB0aGUgZm9sbG93aW5nIHRhYmxlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvZGV2bGluay10cmFwLnJzdC0xNDAtICAgICAtIFRyYXBzIGluY29taW5nIHBhY2tldHMgdGhhdCB0aGUgZGV2aWNlIGRlY2lkZWQgdG8gZHJvcCBpbiBjYXNlIG9mIFZMQU5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9kZXZsaW5rLXRyYXAucnN0OjE0MTogICAgICAgdGFnIG1pc21hdGNoOiBUaGUgaW5ncmVzcyBicmlkZ2UgcG9ydCBpcyBub3QgY29uZmlndXJlZCB3aXRoIGEgUFZJRCBhbmRcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9kZXZsaW5rLXRyYXAucnN0LTE0Mi0gICAgICAgdGhlIHBhY2tldCBpcyB1bnRhZ2dlZCBvciBwcmlvLXRhZ2dlZFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdmxhbi5yc3Q9MTY9b3V0c2lkZSBvZiBpdC5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHZsYW4ucnN0LTIxLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHZsYW4ucnN0OjIyOkluIG9yZGVyIHRvIGJ1aWxkIHRoZSBkcml2ZXIsIHBsZWFzZSBzZWxlY3QgdGhlIGNvbmZpZyBpdGVtIENPTkZJR19JUFZMQU4uXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdmxhbi5yc3QtMjMtVGhlIGRyaXZlciBjYW4gYmUgYnVpbHQgaW50byB0aGUga2VybmVsIChDT05GSUdfSVBWTEFOPXkpIG9yIGFzIGEgbW9kdWxlXFxuLS1cXG5hcmNoL0tjb25maWc9MTA2NT1jb25maWcgSEFWRV9JUlFfVElNRV9BQ0NPVU5USU5HXFxuLS1cXG5hcmNoL0tjb25maWctMTA3MC1cXG5hcmNoL0tjb25maWc6MTA3MTpjb25maWcgSEFWRV9QVl9TVEVBTF9DTE9DS19HRU5cXG5hcmNoL0tjb25maWctMTA3Mi1cXHRib29sXFxuLS1cXG5hcmNoL2FybS9LY29uZmlnLmRlYnVnPTE0MTM9Y29uZmlnIERFQlVHX1MzQzY0WFhfVUFSVFxcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zy0xNDE1LVxcbmFyY2gvYXJtL0tjb25maWcuZGVidWc6MTQxNjpjb25maWcgREVCVUdfUzVQVjIxMF9VQVJUXFxuYXJjaC9hcm0vS2NvbmZpZy5kZWJ1Zy0xNDE3LVxcdGJvb2xcXG4tLVxcbmFyY2gvYXJtL21hY2gtczVwdjIxMC9LY29uZmlnLTctXFxuYXJjaC9hcm0vbWFjaC1zNXB2MjEwL0tjb25maWc6ODpjb25maWcgQVJDSF9TNVBWMjEwXFxuYXJjaC9hcm0vbWFjaC1zNXB2MjEwL0tjb25maWctOS1cXHRib29sIFxcXCJTYW1zdW5nIFM1UFYyMTAvUzVQQzExMFxcXCJcXG4tLVxcbmFyY2gvYXJtL21hY2gtczVwdjIxMC9LY29uZmlnPTIxPWlmIEFSQ0hfUzVQVjIxMFxcbmFyY2gvYXJtL21hY2gtczVwdjIxMC9LY29uZmlnLTIyLVxcbmFyY2gvYXJtL21hY2gtczVwdjIxMC9LY29uZmlnOjIzOmNvbmZpZyBDUFVfUzVQVjIxMFxcbmFyY2gvYXJtL21hY2gtczVwdjIxMC9LY29uZmlnLTI0LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gvYXJtL21tL0tjb25maWc9NjYzPWNvbmZpZyBBUk1fTFBBRVxcbi0tXFxuYXJjaC9hcm0vbW0vS2NvbmZpZy02NzYtXFxuYXJjaC9hcm0vbW0vS2NvbmZpZzo2Nzc6Y29uZmlnIEFSTV9QVl9GSVhVUFxcbmFyY2gvYXJtL21tL0tjb25maWctNjc4LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wdnIuaD0xNT1zdHJ1Y3QgcHZyX3Mge1xcbi0tXFxuYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3B2ci5oLTc2LVxcbmFyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wdnIuaDo3NzovKiBJQ2FjaGUgY29uZmlnIFBWUiBtYXNrcyAqL1xcbmFyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wdnIuaC03OC0jZGVmaW5lIFBWUjRfVVNFX0lDQUNIRV9NQVNLXFx0XFx0MHg4MDAwMDAwMCAvKiBJQ1UgKi9cXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wdnIuaC04NS1cXG5hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vcHZyLmg6ODY6LyogRENhY2hlIGNvbmZpZyBQVlIgbWFza3MgKi9cXG5hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vcHZyLmgtODctI2RlZmluZSBQVlI1X1VTRV9EQ0FDSEVfTUFTS1xcdFxcdDB4ODAwMDAwMDAgLyogRENVICovXFxuLS1cXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYz0zNzU9c3RhdGljIGludCBfX2N2bXhfaGVscGVyX3BvcnRfc2V0dXBfaXBkKGludCBpcGRfcG9ydClcXG4tLVxcbmFyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL2V4ZWN1dGl2ZS9jdm14LWhlbHBlci5jLTM4OC1cXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozODk6XFx0dGFnX2NvbmZpZy5zLmlwNl9zcmNfZmxhZyA9IENWTVhfSEVMUEVSX0lOUFVUX1RBR19JUFY2X1NSQ19JUDtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTA6XFx0dGFnX2NvbmZpZy5zLmlwNl9kc3RfZmxhZyA9IENWTVhfSEVMUEVSX0lOUFVUX1RBR19JUFY2X0RTVF9JUDtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTE6XFx0dGFnX2NvbmZpZy5zLmlwNl9zcHJ0X2ZsYWcgPSBDVk1YX0hFTFBFUl9JTlBVVF9UQUdfSVBWNl9TUkNfUE9SVDtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTI6XFx0dGFnX2NvbmZpZy5zLmlwNl9kcHJ0X2ZsYWcgPSBDVk1YX0hFTFBFUl9JTlBVVF9UQUdfSVBWNl9EU1RfUE9SVDtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTM6XFx0dGFnX2NvbmZpZy5zLmlwNl9ueHRoX2ZsYWcgPSBDVk1YX0hFTFBFUl9JTlBVVF9UQUdfSVBWNl9ORVhUX0hFQURFUjtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTQ6XFx0dGFnX2NvbmZpZy5zLmlwNF9zcmNfZmxhZyA9IENWTVhfSEVMUEVSX0lOUFVUX1RBR19JUFY0X1NSQ19JUDtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTU6XFx0dGFnX2NvbmZpZy5zLmlwNF9kc3RfZmxhZyA9IENWTVhfSEVMUEVSX0lOUFVUX1RBR19JUFY0X0RTVF9JUDtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTY6XFx0dGFnX2NvbmZpZy5zLmlwNF9zcHJ0X2ZsYWcgPSBDVk1YX0hFTFBFUl9JTlBVVF9UQUdfSVBWNF9TUkNfUE9SVDtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTc6XFx0dGFnX2NvbmZpZy5zLmlwNF9kcHJ0X2ZsYWcgPSBDVk1YX0hFTFBFUl9JTlBVVF9UQUdfSVBWNF9EU1RfUE9SVDtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYzozOTg6XFx0dGFnX2NvbmZpZy5zLmlwNF9wY3RsX2ZsYWcgPSBDVk1YX0hFTFBFUl9JTlBVVF9UQUdfSVBWNF9QUk9UT0NPTDtcXG5hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvY3ZteC1oZWxwZXIuYy0zOTktXFx0dGFnX2NvbmZpZy5zLmluY19wcnRfZmxhZyA9IENWTVhfSEVMUEVSX0lOUFVUX1RBR19JTlBVVF9QT1JUO1xcbi0tXFxuYXJjaC9zaC9kcml2ZXJzL2RtYS9LY29uZmlnPTQ1PWNvbmZpZyBTSF9ETUFCUkdcXG4tLVxcbmFyY2gvc2gvZHJpdmVycy9kbWEvS2NvbmZpZy01Mi1cXG5hcmNoL3NoL2RyaXZlcnMvZG1hL0tjb25maWc6NTM6Y29uZmlnIFBWUjJfRE1BXFxuYXJjaC9zaC9kcml2ZXJzL2RtYS9LY29uZmlnLTU0LVxcdHRyaXN0YXRlIFxcXCJQb3dlclZSIDIgRE1BQyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz04NDI9Y29uZmlnIEFSQ0hfQ1BVSURMRV9IQUxUUE9MTFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy04NDctXFxuYXJjaC94ODYvS2NvbmZpZzo4NDg6Y29uZmlnIFBWSFxcbmFyY2gveDg2L0tjb25maWctODQ5LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHJ1bm5pbmcgUFZIIGd1ZXN0c1xcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWcuY3B1ZmVhdHVyZXM9MTc3PWNvbmZpZyBYODZfRElTQUJMRURfRkVBVFVSRV9TR1hcXG4tLVxcbmFyY2gveDg2L0tjb25maWcuY3B1ZmVhdHVyZXMtMTgwLVxcbmFyY2gveDg2L0tjb25maWcuY3B1ZmVhdHVyZXM6MTgxOmNvbmZpZyBYODZfRElTQUJMRURfRkVBVFVSRV9YRU5QVlxcbmFyY2gveDg2L0tjb25maWcuY3B1ZmVhdHVyZXMtMTgyLVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0zMjkwPWludCBrdm1fZ3Vlc3RfdGltZV91cGRhdGUoc3RydWN0IGt2bV92Y3B1ICp2KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTM0MDMtXFx0ICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjM0MDQ6XFx0aWYgKGthLVxcdTAwM2V4ZW4uaHZtX2NvbmZpZy5mbGFncyBcXHUwMDI2IEtWTV9YRU5fSFZNX0NPTkZJR19QVkNMT0NLX1RTQ19VTlNUQUJMRSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQwNS1cXHRcXHRodl9jbG9jay5mbGFncyBcXHUwMDI2PSB+UFZDTE9DS19UU0NfU1RBQkxFX0JJVDtcXG4tLVxcbmFyY2gveDg2L3hlbi9LY29uZmlnPTY9Y29uZmlnIFhFTlxcbi0tXFxuYXJjaC94ODYveGVuL0tjb25maWctMTktXFxuYXJjaC94ODYveGVuL0tjb25maWc6MjA6Y29uZmlnIFhFTl9QVlxcbmFyY2gveDg2L3hlbi9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIlhlbiBQViBndWVzdCBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYveGVuL0tjb25maWc9MzI9Y29uZmlnIFhFTl81MTJHQlxcbi0tXFxuYXJjaC94ODYveGVuL0tjb25maWctNDQtXFxuYXJjaC94ODYveGVuL0tjb25maWc6NDU6Y29uZmlnIFhFTl9QVl9TTVBcXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy00Ni1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy00OC1cXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzo0OTpjb25maWcgWEVOX1BWX0RPTTBcXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy01MC1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy01Mi1cXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzo1Mzpjb25maWcgWEVOX1BWSFZNXFxuYXJjaC94ODYveGVuL0tjb25maWctNTQtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxuYXJjaC94ODYveGVuL0tjb25maWctNTYtXFxuYXJjaC94ODYveGVuL0tjb25maWc6NTc6Y29uZmlnIFhFTl9QVkhWTV9TTVBcXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy01OC1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy02MC1cXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzo2MTpjb25maWcgWEVOX1BWSFZNX0dVRVNUXFxuYXJjaC94ODYveGVuL0tjb25maWctNjItXFx0Ym9vbCBcXFwiWGVuIFBWSFZNIGd1ZXN0IHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZy02Ny1cXG5hcmNoL3g4Ni94ZW4vS2NvbmZpZzo2ODpjb25maWcgWEVOX1BWSFxcbmFyY2gveDg2L3hlbi9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIlhlbiBQVkggZ3Vlc3Qgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L3hlbi9LY29uZmlnPTc1PWNvbmZpZyBYRU5fRE9NMFxcbi0tXFxuYXJjaC94ODYveGVuL0tjb25maWctODMtXFxuYXJjaC94ODYveGVuL0tjb25maWc6ODQ6Y29uZmlnIFhFTl9QVl9NU1JfU0FGRVxcbmFyY2gveDg2L3hlbi9LY29uZmlnLTg1LVxcdGJvb2wgXFxcIkFsd2F5cyB1c2Ugc2FmZSBNU1IgYWNjZXNzZXMgaW4gUFYgZ3Vlc3RzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvc2Ftc3VuZy9LY29uZmlnPTE3PWNvbmZpZyBTM0M2NFhYX0NPTU1PTl9DTEtcXG4tLVxcbmRyaXZlcnMvY2xrL3NhbXN1bmcvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL2Nsay9zYW1zdW5nL0tjb25maWc6MjQ6Y29uZmlnIFM1UFYyMTBfQ09NTU9OX0NMS1xcbmRyaXZlcnMvY2xrL3NhbXN1bmcvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJTYW1zdW5nIFM1UHYyMTAgY2xvY2sgY29udHJvbGxlciBzdXBwb3J0XFxcIiBpZiBDT01QSUxFX1RFU1RcXG4tLVxcbmRyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLmFybT0xNzU9Y29uZmlnIEFSTV9TM0M2NFhYX0NQVUZSRVFcXG4tLVxcbmRyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLmFybS0xODMtXFxuZHJpdmVycy9jcHVmcmVxL0tjb25maWcuYXJtOjE4NDpjb25maWcgQVJNX1M1UFYyMTBfQ1BVRlJFUVxcbmRyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLmFybS0xODUtXFx0Ym9vbCBcXFwiU2Ftc3VuZyBTNVBWMjEwIGFuZCBTNVBDMTEwXFxcIlxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF82eHh4L2FkZl82eHh4X2h3X2RhdGEuYz02NDQ9c3RhdGljIGludCBzZXRfdmNfY29uZmlnKHN0cnVjdCBhZGZfYWNjZWxfZGV2ICphY2NlbF9kZXYpXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jLTY1NC1cXHQgKi9cXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jOjY1NTpcXHRwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgQURGX0dFTjZfUFZDMENUTF9PRkZTRVQsIFxcdTAwMjZ2YWx1ZSk7XFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF82eHh4L2FkZl82eHh4X2h3X2RhdGEuYy02NTYtXFx0RklFTERfTU9ESUZZKEFERl9HRU42X1BWQzBDVExfVENWQ01BUF9NQVNLLCBcXHUwMDI2dmFsdWUsIEFERl9HRU42X1BWQzBDVExfVENWQ01BUF9ERUZBVUxUKTtcXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jOjY1NzpcXHRlcnIgPSBwY2lfd3JpdGVfY29uZmlnX2R3b3JkKHBkZXYsIEFERl9HRU42X1BWQzBDVExfT0ZGU0VULCB2YWx1ZSk7XFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF82eHh4L2FkZl82eHh4X2h3X2RhdGEuYy02NTgtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF82eHh4L2FkZl82eHh4X2h3X2RhdGEuYy02NjMtXFx0LyogUmVhZCBQVkMxQ1RMIHRoZW4gd3JpdGUgbWFza2VkIHZhbHVlcyAqL1xcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfNnh4eC9hZGZfNnh4eF9od19kYXRhLmM6NjY0OlxcdHBjaV9yZWFkX2NvbmZpZ19kd29yZChwZGV2LCBBREZfR0VONl9QVkMxQ1RMX09GRlNFVCwgXFx1MDAyNnZhbHVlKTtcXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jLTY2NS1cXHRGSUVMRF9NT0RJRlkoQURGX0dFTjZfUFZDMUNUTF9UQ1ZDTUFQX01BU0ssIFxcdTAwMjZ2YWx1ZSwgQURGX0dFTjZfUFZDMUNUTF9UQ1ZDTUFQX0RFRkFVTFQpO1xcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfNnh4eC9hZGZfNnh4eF9od19kYXRhLmMtNjY2LVxcdEZJRUxEX01PRElGWShBREZfR0VONl9QVkMxQ1RMX1ZDRU5fTUFTSywgXFx1MDAyNnZhbHVlLCBBREZfR0VONl9QVkMxQ1RMX1ZDRU5fT04pO1xcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfNnh4eC9hZGZfNnh4eF9od19kYXRhLmM6NjY3OlxcdGVyciA9IHBjaV93cml0ZV9jb25maWdfZHdvcmQocGRldiwgQURGX0dFTjZfUFZDMUNUTF9PRkZTRVQsIHZhbHVlKTtcXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0XzZ4eHgvYWRmXzZ4eHhfaHdfZGF0YS5jLTY2OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9ncGliL0tjb25maWc9MjAxPWNvbmZpZyBHUElCX1BDTUNJQVxcbi0tXFxuZHJpdmVycy9ncGliL0tjb25maWctMjA3LVxcbmRyaXZlcnMvZ3BpYi9LY29uZmlnOjIwODpjb25maWcgR1BJQl9MUFZPXFxuZHJpdmVycy9ncGliL0tjb25maWctMjA5LSAgICAgICB0cmlzdGF0ZSBcXFwiTFBWTyBESVkgVVNCIEdQSUJcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2lteC9LY29uZmlnPTM2PWNvbmZpZyBEUk1fSU1YOE1QX0hETUlfUEFJXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2lteC9LY29uZmlnLTQ1LVxcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaW14L0tjb25maWc6NDY6Y29uZmlnIERSTV9JTVg4TVBfSERNSV9QVklcXG5kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2lteC9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgaS5NWDhNUCBIRE1JIFBWSSBicmlkZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvdmx2X2RzaV9wbGwuYz00ODY9aW50IGJ4dF9kc2lfcGxsX2NvbXB1dGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Zsdl9kc2lfcGxsLmMtNTMyLVxcdGlmIChkaXNwbGF5LVxcdTAwM2VwbGF0Zm9ybS5icm94dG9uIFxcdTAwMjZcXHUwMDI2IGRzaV9yYXRpbyBcXHUwMDNjPSA1MClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Zsdl9kc2lfcGxsLmM6NTMzOlxcdFxcdGNvbmZpZy1cXHUwMDNlZHNpX3BsbC5jdHJsIHw9IEJYVF9EU0lfUExMX1BWRF9SQVRJT18xO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvdmx2X2RzaV9wbGwuYy01MzQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX2RldmljZS5jPTQxNz1wdnJfZ3B1aWRfZGVjb2RlX3JlZyhjb25zdCBzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2Rldiwgc3RydWN0IHB2cl9ncHVfaWQgKmdwdV9pZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfZGV2aWNlLmMtNDMyLVxcdFxcdHUzMiBjb3JlX2lkID0gcHZyX2NyX3JlYWQzMihwdnJfZGV2LCBST0dVRV9DUl9DT1JFX0lEKTtcXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX2RldmljZS5jOjQzMzpcXHRcXHR1MTYgY29yZV9pZF9jb25maWcgPSBQVlJfQ1JfRklFTERfR0VUKGNvcmVfaWQsIENPUkVfSURfQ09ORklHKTtcXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX2RldmljZS5jLTQzNC1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfVk1XQVJFX1BWUkRNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVk13YXJlIFBhcmF2aXJ0dWFsaXplZCBSRE1BIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2hkcHZyL0tjb25maWctMi1cXG5kcml2ZXJzL21lZGlhL3VzYi9oZHB2ci9LY29uZmlnOjM6Y29uZmlnIFZJREVPX0hEUFZSXFxuZHJpdmVycy9tZWRpYS91c2IvaGRwdnIvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJIYXVwcGF1Z2UgSEQgUFZSIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9wdnJ1c2IyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL21lZGlhL3VzYi9wdnJ1c2IyL0tjb25maWc6Mjpjb25maWcgVklERU9fUFZSVVNCMlxcbmRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJIYXVwcGF1Z2UgV2luVFYtUFZSIFVTQjIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL21lZGlhL3VzYi9wdnJ1c2IyL0tjb25maWc6MjA6Y29uZmlnIFZJREVPX1BWUlVTQjJfU1lTRlNcXG5kcml2ZXJzL21lZGlhL3VzYi9wdnJ1c2IyL0tjb25maWctMjEtXFx0Ym9vbCBcXFwicHZydXNiMiBzeXNmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvcHZydXNiMi9LY29uZmlnLTM1LVxcbmRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvS2NvbmZpZzozNjpjb25maWcgVklERU9fUFZSVVNCMl9EVkJcXG5kcml2ZXJzL21lZGlhL3VzYi9wdnJ1c2IyL0tjb25maWctMzctXFx0Ym9vbCBcXFwicHZydXNiMiBBVFNDL0RWQiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvcHZydXNiMi9LY29uZmlnLTU2LVxcbmRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvS2NvbmZpZzo1Nzpjb25maWcgVklERU9fUFZSVVNCMl9ERUJVR0lGQ1xcbmRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvS2NvbmZpZy01OC1cXHRib29sIFxcXCJwdnJ1c2IyIGRlYnVnIGludGVyZmFjZVxcXCJcXG4tLVxcbmRyaXZlcnMvbWlzYy9wdnBhbmljL0tjb25maWctNy1cXG5kcml2ZXJzL21pc2MvcHZwYW5pYy9LY29uZmlnOjg6Y29uZmlnIFBWUEFOSUNcXG5kcml2ZXJzL21pc2MvcHZwYW5pYy9LY29uZmlnLTktXFx0Ym9vbCBcXFwicHZwYW5pYyBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbWlzYy9wdnBhbmljL0tjb25maWctMTQtXFxuZHJpdmVycy9taXNjL3B2cGFuaWMvS2NvbmZpZzoxNTpjb25maWcgUFZQQU5JQ19NTUlPXFxuZHJpdmVycy9taXNjL3B2cGFuaWMvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwicHZwYW5pYyBNTUlPIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9taXNjL3B2cGFuaWMvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL21pc2MvcHZwYW5pYy9LY29uZmlnOjIxOmNvbmZpZyBQVlBBTklDX1BDSVxcbmRyaXZlcnMvbWlzYy9wdnBhbmljL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcInB2cGFuaWMgUENJIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNzk9Y29uZmlnIE1BQ1ZUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTkyLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTkzOmNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTQtXFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk4LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk5OmNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMTUtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMTY6Y29uZmlnIElQVlRBUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjE3LVxcdHRyaXN0YXRlIFxcXCJJUC1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjAwMj1tdDc1MzBfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwMzEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwMzI6XFx0XFx0LyogT25seSBjb25maWd1cmUgUFZJRCBpZiBWTEFOIGZpbHRlcmluZyBpcyBlbmFibGVkICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwMzMtXFx0XFx0aWYgKGRzYV9wb3J0X2lzX3ZsYW5fZmlsdGVyaW5nKGRzYV90b19wb3J0KGRzLCBwb3J0KSkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYz0xMzYzPXZzYzczeHhfdmxhbl9jaGFuZ2VfcHZpZChzdHJ1Y3QgdnNjNzN4eCAqdnNjLCBpbnQgcG9ydCwgdTE2IHZpZCwgYm9vbCBzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy0xMzg3LSAqIFVwZGF0ZSB0aGUgUFZJRCBvZiBhIHBvcnQgc28gdGhhdCBpdCBmb2xsb3dzIGVpdGhlciB0aGUgYnJpZGdlIFBWSURcXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYzoxMzg4OiAqIGNvbmZpZ3VyYXRpb24sIHdoZW4gdGhlIGJyaWRnZSBpcyBjdXJyZW50bHkgVkxBTi1hd2FyZSwgb3IgdGhlIFBWSURcXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy0xMzg5LSAqIGZyb20gdGFnXzgwMjFxLCB3aGVuIHRoZSBwb3J0IGlzIHN0YW5kYWxvbmUgb3IgdW5kZXIgYSBWTEFOLXVuYXdhcmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9MTU5MD1zdGF0aWMgY29uc3Qgc3RydWN0IGljZV9yc3NfaGFzaF9jZmcgZGVmYXVsdF9yc3NfY2Znc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0xNjM1LVxcdFxcdElDRV9IQVNIX1NDVFBfSVBWNiwgSUNFX1JTU19PVVRFUl9IRUFERVJTLCBmYWxzZX0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoxNjM2OlxcdC8qIGNvbmZpZ3VyZSBSU1MgZm9yIElQU0VDIEVTUCBTUEkgd2l0aCBpbnB1dCBzZXQgTUFDX0lQVjRfU1BJICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0xNjM3LVxcdHtJQ0VfRkxPV19TRUdfSERSX0VTUCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX252ZV92eGxhbi5jPTEzMj1tbHhzd19zcF9udmVfdnhsYW5fdWxfcHJvdG9fc2lwX2NvbmZpZyhjb25zdCBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9udmVfdnhsYW4uYy0xMzYtXFx0Y2FzZSBBRl9JTkVUOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX252ZV92eGxhbi5jOjEzNzpcXHRcXHRjb25maWctXFx1MDAzZXVsX3Byb3RvID0gTUxYU1dfU1BfTDNfUFJPVE9fSVBWNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9udmVfdnhsYW4uYy0xMzgtXFx0XFx0Y29uZmlnLVxcdTAwM2V1bF9zaXAuYWRkcjQgPSBjZmctXFx1MDAzZXNhZGRyLnNpbi5zaW5fYWRkci5zX2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9udmVfdnhsYW4uYy0xNDAtXFx0Y2FzZSBBRl9JTkVUNjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9udmVfdnhsYW4uYzoxNDE6XFx0XFx0Y29uZmlnLVxcdTAwM2V1bF9wcm90byA9IE1MWFNXX1NQX0wzX1BST1RPX0lQVjY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fbnZlX3Z4bGFuLmMtMTQyLVxcdFxcdGNvbmZpZy1cXHUwMDNldWxfc2lwLmFkZHI2ID0gY2ZnLVxcdTAwM2VzYWRkci5zaW42LnNpbjZfYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3BwZS9wcGVfY29uZmlnLmM9MTg1OD1zdGF0aWMgaW50IHBwZV9yc3NfaGFzaF9pbml0KHN0cnVjdCBwcGVfZGV2aWNlICpwcGVfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcHBlL3BwZV9jb25maWcuYy0xODkwLVxcdC8qIENvbmZpZ3VyZSBSU1Mgc2VlZCBjb25maWdzIGZvciBJUHY0IHBhY2tldC4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9wcGUvcHBlX2NvbmZpZy5jOjE4OTE6XFx0cmV0ID0gcHBlX3Jzc19oYXNoX2NvbmZpZ19zZXQocHBlX2RldiwgUFBFX1JTU19IQVNIX01PREVfSVBWNCwgaGFzaF9jZmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3BwZS9wcGVfY29uZmlnLmMtMTg5Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcHBlL3BwZV9jb25maWcuYy0xOTAwLVxcdC8qIENvbmZpZ3VyZSBSU1Mgc2VlZCBjb25maWdzIGZvciBJUHY2IHBhY2tldC4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9wcGUvcHBlX2NvbmZpZy5jOjE5MDE6XFx0cmV0dXJuIHBwZV9yc3NfaGFzaF9jb25maWdfc2V0KHBwZV9kZXYsIFBQRV9SU1NfSEFTSF9NT0RFX0lQVjYsIGhhc2hfY2ZnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9wcGUvcHBlX2NvbmZpZy5jLTE5MDItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2FuL2hkbGNfZnIuYy0xNi1cXG5kcml2ZXJzL25ldC93YW4vaGRsY19mci5jOjE3OiAoYWN0aXZlKSAgICAtXFx1MDAzZSAwIHdoZW4gXFxcImlmY29uZmlnIFBWQyBkb3duXFxcIiBvciBcXFwibGluayB1bnJlbGlhYmxlXFxcIiBvciBcXFwiUFZDIGNyZWF0ZVxcXCJcXG5kcml2ZXJzL25ldC93YW4vaGRsY19mci5jLTE4LVxcdCAgICAgLVxcdTAwM2UgMSB3aGVuIFxcXCJQVkMgdXBcXFwiIGFuZCAoZXhpc3QsbmV3KSA9IDEsMFxcbi0tXFxuZHJpdmVycy9uZXQvd2FuL2hkbGNfZnIuYz00NTY9c3RhdGljIHZvaWQgZnJfbG1pX3NlbmQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGZ1bGxyZXApXFxuLS1cXG5kcml2ZXJzL25ldC93YW4vaGRsY19mci5jLTUxMy1cXG5kcml2ZXJzL25ldC93YW4vaGRsY19mci5jOjUxNDpcXHRcXHRcXHQvKiBpZmNvbmZpZyBQVkMgdXAgKi9cXG5kcml2ZXJzL25ldC93YW4vaGRsY19mci5jLTUxNS1cXHRcXHRcXHRpZiAocHZjLVxcdTAwM2VvcGVuX2NvdW50IFxcdTAwMjZcXHUwMDI2ICFwdmMtXFx1MDAzZXN0YXRlLmFjdGl2ZSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9waHkvc2Ftc3VuZy9LY29uZmlnPTY1PWNvbmZpZyBQSFlfRVhZTk9TNTI1MF9VU0IyXFxuLS1cXG5kcml2ZXJzL3BoeS9zYW1zdW5nL0tjb25maWctNjktXFxuZHJpdmVycy9waHkvc2Ftc3VuZy9LY29uZmlnOjcwOmNvbmZpZyBQSFlfUzVQVjIxMF9VU0IyXFxuZHJpdmVycy9waHkvc2Ftc3VuZy9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFM1UFYyMTBcXFwiXFxuLS1cXG5kcml2ZXJzL3BpbmN0cmwvdmlzY29udGkvS2NvbmZpZz0yPWNvbmZpZyBQSU5DVFJMX1ZJU0NPTlRJXFxuLS1cXG5kcml2ZXJzL3BpbmN0cmwvdmlzY29udGkvS2NvbmZpZy04LVxcbmRyaXZlcnMvcGluY3RybC92aXNjb250aS9LY29uZmlnOjk6Y29uZmlnIFBJTkNUUkxfVE1QVjc3MDBcXG5kcml2ZXJzL3BpbmN0cmwvdmlzY29udGkvS2NvbmZpZy0xMC1cXHRib29sIFxcXCJUb3NoaWJhIFZpc2NvbnRpIFRNUFY3NzAwIHNlcmllcyBwaW5jdHJsIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvcmVndWxhdG9yL0tjb25maWc9MTA5MT1jb25maWcgUkVHVUxBVE9SX1BGVVpFMTAwXFxuLS1cXG5kcml2ZXJzL3JlZ3VsYXRvci9LY29uZmlnLTEwOTgtXFxuZHJpdmVycy9yZWd1bGF0b3IvS2NvbmZpZzoxMDk5OmNvbmZpZyBSRUdVTEFUT1JfUFY4ODA2MFxcbmRyaXZlcnMvcmVndWxhdG9yL0tjb25maWctMTEwMC1cXHR0cmlzdGF0ZSBcXFwiUG93ZXJ2ZW50dXJlIFNlbWljb25kdWN0b3IgUFY4ODA2MCByZWd1bGF0b3JcXFwiXFxuLS1cXG5kcml2ZXJzL3JlZ3VsYXRvci9LY29uZmlnLTExMDYtXFxuZHJpdmVycy9yZWd1bGF0b3IvS2NvbmZpZzoxMTA3OmNvbmZpZyBSRUdVTEFUT1JfUFY4ODA4MFxcbmRyaXZlcnMvcmVndWxhdG9yL0tjb25maWctMTEwOC1cXHR0cmlzdGF0ZSBcXFwiUG93ZXJ2ZW50dXJlIFNlbWljb25kdWN0b3IgUFY4ODA4MCByZWd1bGF0b3JcXFwiXFxuLS1cXG5kcml2ZXJzL3JlZ3VsYXRvci9LY29uZmlnLTExMTMtXFxuZHJpdmVycy9yZWd1bGF0b3IvS2NvbmZpZzoxMTE0OmNvbmZpZyBSRUdVTEFUT1JfUFY4ODA5MFxcbmRyaXZlcnMvcmVndWxhdG9yL0tjb25maWctMTExNS1cXHR0cmlzdGF0ZSBcXFwiUG93ZXJ2ZW50dXJlIFNlbWljb25kdWN0b3IgUFY4ODA5MCByZWd1bGF0b3JcXFwiXFxuLS1cXG5kcml2ZXJzL3JlZ3VsYXRvci9wdjg4MDgwLXJlZ3VsYXRvci5jPTM2Mj1zdGF0aWMgaW50IHB2ODgwODBfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuLS1cXG5kcml2ZXJzL3JlZ3VsYXRvci9wdjg4MDgwLXJlZ3VsYXRvci5jLTUwMi1cXHRpZiAoaW5pdF9kYXRhKVxcbmRyaXZlcnMvcmVndWxhdG9yL3B2ODgwODAtcmVndWxhdG9yLmM6NTAzOlxcdFxcdGNvbmZpZy5pbml0X2RhdGEgPSBcXHUwMDI2aW5pdF9kYXRhW1BWODgwODBfSURfSFZCVUNLXTtcXG5kcml2ZXJzL3JlZ3VsYXRvci9wdjg4MDgwLXJlZ3VsYXRvci5jLTUwNC1cXG5kcml2ZXJzL3JlZ3VsYXRvci9wdjg4MDgwLXJlZ3VsYXRvci5jOjUwNTpcXHRjb25maWcuZHJpdmVyX2RhdGEgPSAodm9pZCAqKVxcdTAwMjZwdjg4MDgwX3JlZ3VsYXRvcl9pbmZvW1BWODgwODBfSURfSFZCVUNLXTtcXG5kcml2ZXJzL3JlZ3VsYXRvci9wdjg4MDgwLXJlZ3VsYXRvci5jLTUwNi1cXHRjaGlwLVxcdTAwM2VyZGV2W1BWODgwODBfSURfSFZCVUNLXSA9IGRldm1fcmVndWxhdG9yX3JlZ2lzdGVyKGNoaXAtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvc2NzaS9LY29uZmlnPTU1Mz1jb25maWcgU0NTSV9NWVJTXFxuLS1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy01NjgtXFxuZHJpdmVycy9zY3NpL0tjb25maWc6NTY5OmNvbmZpZyBWTVdBUkVfUFZTQ1NJXFxuZHJpdmVycy9zY3NpL0tjb25maWctNTcwLVxcdHRyaXN0YXRlIFxcXCJWTXdhcmUgUFZTQ1NJIGRyaXZlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2RlZi5oPTg1Nj1zdGF0aWMgaW5saW5lIGludCBpc19pcHY0X2VuYWJsZWQoc3RydWN0IHNjc2lfcWxhX2hvc3QgKmhhKVxcbmRyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9kZWYuaC04NTcte1xcbmRyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9kZWYuaDo4NTg6XFx0cmV0dXJuICgoaGEtXFx1MDAzZWlwX2NvbmZpZy5pcHY0X29wdGlvbnMgXFx1MDAyNiBJUE9QVF9JUFY0X1BST1RPQ09MX0VOQUJMRSkgIT0gMCk7XFxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2RlZi5oLTg1OS19XFxuLS1cXG5kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfb3MuYz0yMDAxPXN0YXRpYyB2b2lkIHFsYTR4eHhfY3JlYXRlX2lmYWNlcyhzdHJ1Y3Qgc2NzaV9xbGFfaG9zdCAqaGEpXFxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmMtMjAwMi17XFxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmM6MjAwMzpcXHRpZiAoaGEtXFx1MDAzZWlwX2NvbmZpZy5pcHY0X29wdGlvbnMgXFx1MDAyNiBJUE9QVF9JUFY0X1BST1RPQ09MX0VOQUJMRSlcXG5kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfb3MuYy0yMDA0LVxcdFxcdHFsYTR4eHhfY3JlYXRlX2lwdjRfaWZhY2UoaGEpO1xcbmRyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jLTIwMDUtXFxuZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmM6MjAwNjpcXHRpZiAoaGEtXFx1MDAzZWlwX2NvbmZpZy5pcHY2X29wdGlvbnMgXFx1MDAyNiBJUFY2X09QVF9JUFY2X1BST1RPQ09MX0VOQUJMRSlcXG5kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfb3MuYy0yMDA3LVxcdFxcdHFsYTR4eHhfY3JlYXRlX2lwdjZfaWZhY2UoaGEpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Ztd19wdnNjc2kuYz0xMjk4PXN0YXRpYyB1MzIgcHZzY3NpX2dldF9tYXhfdGFyZ2V0cyhzdHJ1Y3QgcHZzY3NpX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL3Njc2kvdm13X3B2c2NzaS5jLTEzMTYtXFx0LyogRmV0Y2ggY29uZmlnIGluZm8gZnJvbSB0aGUgZGV2aWNlLiAqL1xcbmRyaXZlcnMvc2NzaS92bXdfcHZzY3NpLmM6MTMxNzpcXHRjbWQuY29uZmlnUGFnZUFkZHJlc3MgPSAoKHU2NClQVlNDU0lfQ09ORklHX0NPTlRST0xMRVJfQUREUkVTUykgXFx1MDAzY1xcdTAwM2MgMzI7XFxuZHJpdmVycy9zY3NpL3Ztd19wdnNjc2kuYzoxMzE4OlxcdGNtZC5jb25maWdQYWdlTnVtID0gUFZTQ1NJX0NPTkZJR19QQUdFX0NPTlRST0xMRVI7XFxuZHJpdmVycy9zY3NpL3Ztd19wdnNjc2kuYy0xMzE5LVxcdGNtZC5jbXBBZGRyID0gY29uZmlnUGFnZVBBO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU3Nz1jb25maWcgRkJfWFZSMTAwMFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU4Ni1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTg3OmNvbmZpZyBGQl9QVlIyXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU4OC1cXHR0cmlzdGF0ZSBcXFwiTkVDIFBvd2VyVlIgMiBkaXNwbGF5IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3hlbi9LY29uZmlnPTIwOD1jb25maWcgWEVOX1BDSURFVl9CQUNLRU5EXFxuLS1cXG5kcml2ZXJzL3hlbi9LY29uZmlnLTIzMS1cXG5kcml2ZXJzL3hlbi9LY29uZmlnOjIzMjpjb25maWcgWEVOX1BWQ0FMTFNfRlJPTlRFTkRcXG5kcml2ZXJzL3hlbi9LY29uZmlnLTIzMy1cXHR0cmlzdGF0ZSBcXFwiWEVOIFBWIENhbGxzIGZyb250ZW5kIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMveGVuL0tjb25maWctMjQxLVxcbmRyaXZlcnMveGVuL0tjb25maWc6MjQyOmNvbmZpZyBYRU5fUFZDQUxMU19CQUNLRU5EXFxuZHJpdmVycy94ZW4vS2NvbmZpZy0yNDMtXFx0dHJpc3RhdGUgXFxcIlhFTiBQViBDYWxscyBiYWNrZW5kIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMveGVuL0tjb25maWc9Mjk4PWNvbmZpZyBYRU5fTUNFX0xPR1xcbi0tXFxuZHJpdmVycy94ZW4vS2NvbmZpZy0zMDQtXFxuZHJpdmVycy94ZW4vS2NvbmZpZzozMDU6Y29uZmlnIFhFTl9IQVZFX1BWTU1VXFxuZHJpdmVycy94ZW4vS2NvbmZpZy0zMDYtXFx0Ym9vbFxcbi0tXFxubmV0LzZsb3dwYW4vS2NvbmZpZz00MD1jb25maWcgNkxPV1BBTl9OSENfSE9QXFxuLS1cXG5uZXQvNmxvd3Bhbi9LY29uZmlnLTQ2LVxcbm5ldC82bG93cGFuL0tjb25maWc6NDc6Y29uZmlnIDZMT1dQQU5fTkhDX0lQVjZcXG5uZXQvNmxvd3Bhbi9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJJUHY2IEhlYWRlciBTdXBwb3J0XFxcIlxcbi0tXFxubmV0LzZsb3dwYW4vS2NvbmZpZz03Nz1jb25maWcgNkxPV1BBTl9HSENfVURQXFxuLS1cXG5uZXQvNmxvd3Bhbi9LY29uZmlnLTgxLVxcbm5ldC82bG93cGFuL0tjb25maWc6ODI6Y29uZmlnIDZMT1dQQU5fR0hDX0lDTVBWNlxcbm5ldC82bG93cGFuL0tjb25maWctODMtXFx0dHJpc3RhdGUgXFxcIkdIQyBJQ01QdjYgU3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9kc2EvdGFnX2RzYS5jLTgxLSAqICAgICBvbiB0cmFuc21pdCBieSB0aGUgQ1BVIHRvIGRlZmVyIHRoZSBmb3J3YXJkaW5nIGRlY2lzaW9uIHRvIHRoZVxcbm5ldC9kc2EvdGFnX2RzYS5jOjgyOiAqICAgICBoYXJkd2FyZSwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29uZmlnIG9mIFBWVC9WVFUvQVRVXFxubmV0L2RzYS90YWdfZHNhLmMtODMtICogICAgIGV0Yy4gU291cmNlIGFkZHJlc3MgbGVhcm5pbmcgdGFrZXMgcGxhY2VzIGlmIGVuYWJsZWQgb24gdGhlXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTI2OD1jb25maWcgU1lOX0NPT0tJRVNcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzAzLVxcbm5ldC9pcHY0L0tjb25maWc6MzA0OmNvbmZpZyBORVRfSVBWVElcXG5uZXQvaXB2NC9LY29uZmlnLTMwNS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCAoc2VjdXJlKSBJUDogdHVubmVsaW5nXFxcIlxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9Nj1tZW51IFxcXCJJUDogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb25cXFwiXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy04LVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjk6Y29uZmlnIE5GX0RFRlJBR19JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTAtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTE0PWNvbmZpZyBJUF9ORl9JUFRBQkxFU19MRUdBQ1lcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTIzLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjI0OmNvbmZpZyBORl9TT0NLRVRfSVBWNFxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTI1LVxcdHRyaXN0YXRlIFxcXCJJUHY0IHNvY2tldCBsb29rdXAgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTI5LVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjMwOmNvbmZpZyBORl9UUFJPWFlfSVBWNFxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTMxLVxcdHRyaXN0YXRlIFxcXCJJUHY0IHRwcm94eSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9MzM9aWYgTkZfVEFCTEVTXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMzQtXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MzU6Y29uZmlnIE5GX1RBQkxFU19JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiSVB2NCBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTQwPWlmIE5GX1RBQkxFU19JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDEtXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6NDI6Y29uZmlnIE5GVF9SRUpFQ1RfSVBWNFxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTQzLVxcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDYtXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6NDc6Y29uZmlnIE5GVF9EVVBfSVBWNFxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJJUHY0IG5mX3RhYmxlcyBwYWNrZXQgZHVwbGljYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTUzLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjU0OmNvbmZpZyBORlRfRklCX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy01NS1cXHRzZWxlY3QgTkZUX0ZJQlxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9NzA9ZW5kaWYgIyBORl9UQUJMRVNcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy03MS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo3Mjpjb25maWcgTkZfRFVQX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy03My1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIElQdjQgcGFja2V0IGR1cGxpY2F0aW9uIHRvIGFsdGVybmF0ZSBkZXN0aW5hdGlvblxcXCJcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTc5PWNvbmZpZyBORl9MT0dfQVJQXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy04Ni1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo4Nzpjb25maWcgTkZfTE9HX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy04OC1cXHR0cmlzdGF0ZSBcXFwiSVB2NCBwYWNrZXQgbG9nZ2luZ1xcXCJcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTk0LVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjk1OmNvbmZpZyBORl9SRUpFQ1RfSVBWNFxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTk2LVxcdHRyaXN0YXRlIFxcXCJJUHY0IHBhY2tldCByZWplY3Rpb25cXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTUtXFxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctNy1cXHRib29sIFxcXCJUaGUgSVB2NiBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjAtXFxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxcbm5ldC9pcHY2L0tjb25maWctMjItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzgtXFxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbm5ldC9pcHY2L0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXFxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTE5LVxcbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxcbm5ldC9pcHY2L0tjb25maWctMTIxLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxcbm5ldC9pcHY2L0tjb25maWctMTUxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTYxLVxcbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxcbm5ldC9pcHY2L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTc2LVxcbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxcbm5ldC9pcHY2L0tjb25maWctMTk3LVxcdGJvb2xcXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMDktXFxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXFxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEdSRSB0dW5uZWxcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1VcXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjMzLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjQyLVxcbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNDQtXFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjU2LVxcbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxcbm5ldC9pcHY2L0tjb25maWctMjU4LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCByb3V0aW5nXFxcIlxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ0OjI0LjA1NTQ0MTczM1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDgwMTYyODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEtleSBLVk0vczM5MCBGdW5jdGlvbnMqKlxuXG5SaWdodCwgYENPTkZJR19LVk1gIGlzIGRlZmluaXRlbHkgdGhlIHJlbGV2YW50IHN0YXJ0aW5nIHBvaW50LCBzbyBJIGNhbiBjb25maXJtIHRoYXQuIE5vdywgbGV0J3MgYnJlYWsgZG93biB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdGhhdCBhcmUgY3JpdGljYWwgZm9yIG15IGN1cnJlbnQgaW52ZXN0aWdhdGlvbi4gVGhlIHByaW1hcnkgb25lcyBJIHNob3VsZCBmb2N1cyBvbiwgYmFzZWQgb24gdGhpcywgYXJlOlxuXG4qICAgYGt2bV9zMzkwX2tleW9wYCwgYW5kIHRoYXQncyBhY2Nlc3NlZCB0aHJvdWdoIGBrdm1fYXJjaF92bV9pb2N0bGAuXG4qICAgYGt2bV9zMzkwX3ZtX3NldF9taWdyYXRpb25gIOKAkyBhbHNvIHRocm91Z2ggYGt2bV9hcmNoX3ZtX2lvY3RsYCwgb2YgY291cnNlLlxuKiAgIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWBcbiogICBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gXG4qICAgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgXG4qICAgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYFxuKiAgIGBrdm1fczM5MF9oYW5kbGVfYjJgXG4qICAgYGt2bV9zMzkwX2hhbmRsZV9iOWBcblxuSGFuZyBvbiBhIG1vbWVudC4uLiBJIHNlZSB0aGF0IGBrdm1fczM5MF9wdl9kZXN0cm95X2NwdWAgYW5kIGBrdm1fczM5MF9wdl9jcmVhdGVfY3B1YCBhcmUgY2FsbGVkIGludGVybmFsbHkgZnJvbSBga3ZtX3MzOTBfY3B1c19mcm9tX3B2YCBhbmQgYGt2bV9zMzkwX2NwdXNfdG9fcHZgLiBUaGF0J3MgaW1wb3J0YW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdHJhY2UgYmFjayB0byB0aGUgZW50cnkgcG9pbnRzIG9mICp0aG9zZSogZnVuY3Rpb25zIHRvbywgc28gSSB1bmRlcnN0YW5kIGhvdyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIFBWcy4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NjA2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ0OjMwLjEzNTYwNjg2NloiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxNzg3MzIzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9jcHVzX2Zyb21fcHZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTIzNDg9c3RhdGljIGludCBrdm1fczM5MF9zZXRfY21tYV9iaXRzKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yMzkzLS8qKlxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyMzk0OiAqIGt2bV9zMzkwX2NwdXNfZnJvbV9wdiAtIENvbnZlcnQgYWxsIHByb3RlY3RlZCB2Q1BVcyBpbiBhIHByb3RlY3RlZCBWTSB0b1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yMzk1LSAqIG5vbiBwcm90ZWN0ZWQuXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQwNS0gKi9cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjQwNjppbnQga3ZtX3MzOTBfY3B1c19mcm9tX3B2KHN0cnVjdCBrdm0gKmt2bSwgdTE2ICpyYywgdTE2ICpycmMpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI0MDcte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI0NDc9c3RhdGljIGludCBrdm1fczM5MF9jcHVzX3RvX3B2KHN0cnVjdCBrdm0gKmt2bSwgdTE2ICpyYywgdTE2ICpycmMpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjQ2Ni1cXHRpZiAocilcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjQ2NzpcXHRcXHRrdm1fczM5MF9jcHVzX2Zyb21fcHYoa3ZtLCBcXHUwMDI2ZHVtbXksIFxcdTAwMjZkdW1teSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI0NjgtXFx0cmV0dXJuIHI7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjU4MD1zdGF0aWMgaW50IGt2bV9zMzkwX2hhbmRsZV9wdihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fcHZfY21kICpjbWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjYyNi1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjYyNzpcXHRcXHRyID0ga3ZtX3MzOTBfY3B1c19mcm9tX3B2KGt2bSwgXFx1MDAyNmNtZC1cXHUwMDNlcmMsIFxcdTAwMjZjbWQtXFx1MDAzZXJyYyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI2MjgtXFx0XFx0LypcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNjUxLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNjUyOlxcdFxcdHIgPSBrdm1fczM5MF9jcHVzX2Zyb21fcHYoa3ZtLCBcXHUwMDI2Y21kLVxcdTAwM2VyYywgXFx1MDAyNmNtZC1cXHUwMDNlcnJjKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjY1My1cXHRcXHQvKlxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTQ2OT1fX3U2NCBrdm1fczM5MF9nZXRfY3B1X3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjQ3MDppbnQga3ZtX3MzOTBfY3B1c19mcm9tX3B2KHN0cnVjdCBrdm0gKmt2bSwgdTE2ICpyYywgdTE2ICpycmMpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC00NzEtaW50IF9fa3ZtX3MzOTBfbXByb3RlY3RfbWFueShzdHJ1Y3QgZ21hcCAqZ21hcCwgZ3BhX3QgZ3BhLCB1OCBucGFnZXMsIHVuc2lnbmVkIGludCBwcm90LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wdi5jPTY4NT1zdGF0aWMgdm9pZCBrdm1fczM5MF9wdl9tbXVfbm90aWZpZXJfcmVsZWFzZShzdHJ1Y3QgbW11X25vdGlmaWVyICpzdWJzY3JpcHRpb24sXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3B2LmMtNjk4LVxcdCAqL1xcbmFyY2gvczM5MC9rdm0vcHYuYzo2OTk6XFx0ciA9IGt2bV9zMzkwX2NwdXNfZnJvbV9wdihrdm0sIFxcdTAwMjZkdW1teSwgXFx1MDAyNmR1bW15KTtcXG5hcmNoL3MzOTAva3ZtL3B2LmMtNzAwLVxcdGlmICghciBcXHUwMDI2XFx1MDAyNiBpc19kZXN0cm95X2Zhc3RfYXZhaWxhYmxlKCkgXFx1MDAyNlxcdTAwMjYga3ZtX3MzOTBfcHZfZ2V0X2hhbmRsZShrdm0pKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0NDozMi41NTM0ODYwNDRaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI0MTgyNDc4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQViBDb21tYW5kIEhhbmRsZXIqKlxuXG5SaWdodCwgYGt2bV9zMzkwX2hhbmRsZV9wdmAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBwbGFjZSBleGVjdXRpb24gaGl0cyBmb3IgYW55IHBhcmF2aXJ0dWFsaXplZCAoUFYpIGNvbW1hbmQgd2l0aGluIHRoZSBLVk0vczM5MCBjb250ZXh0LiBTbywgYW55dGhpbmcgdGhhdCdzIGdvaW5nIHRvIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaG9zdCBhcmNoaXRlY3R1cmUgdGhyb3VnaCBQViBtZWNoYW5pc21z4oCmIHRoaXMgaXMgd2hlcmUgaXQgYWxsIGJlZ2lucy4gSXQncyB0aGUgZ2F0ZWtlZXBlciwgZXNzZW50aWFsbHkuXG5cbk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzIG5hdHVyYWxseTogd2hhdCBjb21lcyAqYWZ0ZXIqIHRoYXQ/IFdoZXJlIGRvZXMgaXQgZ28/IFRoZSBsb2dpY2FsIGZvbGxvdy11cCwgdGhlbiwgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGZ1bmN0aW9uIGBrdm1fczM5MF9jcHVzX3RvX3B2YC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBsb29rIHRvIHVuZGVyc3RhbmQgdGhlIGltbWVkaWF0ZSBjb250cm9sIGZsb3cuIFdoYXQgYWN0aW9ucyBpcyBpdCB0YWtpbmcgb24gdGhlIENQVSBzaWRlPyBUaGF0J3MgdGhlIG5leHQgc3RlcCBpbiB0cmFjaW5nIHRoaXMgZmxvdy4gSSBleHBlY3QgYGt2bV9zMzkwX2NwdXNfdG9fcHZgIHRvIG1hbmFnZSB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gbG9naWNhbCBDUFVzIGFuZCB0aGUgUFYgbWVjaGFuaXNtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzMzOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ0OjM3Ljc5NTMxNDIwNVoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3NjYyOTI2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9jcHVzX3RvX3B2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yNDA2PWludCBrdm1fczM5MF9jcHVzX2Zyb21fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDM2LS8qKlxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNDM3OiAqIGt2bV9zMzkwX2NwdXNfdG9fcHYgLSBDb252ZXJ0IGFsbCBub24tcHJvdGVjdGVkIHZDUFVzIGluIGEgcHJvdGVjdGVkIFZNXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI0MzgtICogdG8gcHJvdGVjdGVkLlxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI0NDYtICovXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjI0NDc6c3RhdGljIGludCBrdm1fczM5MF9jcHVzX3RvX3B2KHN0cnVjdCBrdm0gKmt2bSwgdTE2ICpyYywgdTE2ICpycmMpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI0NDgte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI1ODA9c3RhdGljIGludCBrdm1fczM5MF9oYW5kbGVfcHYoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3B2X2NtZCAqY21kKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI2MTMtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjI2MTQ6XFx0XFx0ciA9IGt2bV9zMzkwX2NwdXNfdG9fcHYoa3ZtLCBcXHUwMDI2Y21kLVxcdTAwM2VyYywgXFx1MDAyNmNtZC1cXHUwMDNlcnJjKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjYxNS1cXHRcXHRpZiAocilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDQ6NDAuMDcxOTUxMDcyWiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwNDM0Mjg5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gS1ZNL3MzOTAgU3BlY2lmaWNzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgS1ZNL3MzOTAgY29kZSwgYW5kIGBrdm1fczM5MF9oYW5kbGVfcHZgIGlzIHRoZSBlbnRyeSBwb2ludCwgdGhlIG1haW4gZm9jdXMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gSW5pdGlhbGx5LCBJIGlkZW50aWZpZWQgYGt2bV9hcmNoX3ZtX2lvY3RsYCwgYGt2bV9hcmNoX3ZjcHVfY3JlYXRlYCwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLCBga3ZtX3MzOTBfaGFuZGxlX2IyYCwgYGt2bV9zMzkwX2hhbmRsZV9iOWAsIGFuZCBvZiBjb3Vyc2UsIGBrdm1fczM5MF9oYW5kbGVfcHZgLlxuXG5CdXQgd2FpdCwgdGhlIGluc3RydWN0aW9ucyBhcmUgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIHRvIHByZXZlbnQgYmlhc2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBzcGVjaWZpYyBoYW5kbGVycyB3aXRoaW4gdGhvc2UgYnJvYWRlciBmdW5jdGlvbnMuICBMZXQncyByZWZpbmUgdGhpcy5cblxuRm9yIGBrdm1fYXJjaF92bV9pb2N0bGAsIEknbGwgc3BlY2lmaWNhbGx5IGZvY3VzIG9uOiBga3ZtX3MzOTBfdm1fc2V0X2F0dHJgICh3aGljaCBmdXJ0aGVyIGNhbGxzIGBrdm1fczM5MF92bV9zZXRfbWlncmF0aW9uYCksIGBrdm1fczM5MF9oYW5kbGVfcHZgICh0aGlzIGlzIGltcG9ydGFudCksIGBrdm1fczM5MF9zZXRfY21tYV9iaXRzYCwgYGt2bV9zMzkwX2dldF9jbW1hX2JpdHNgLCBga3ZtX3MzOTBfc2V0X3NrZXlzYCwgYW5kIGBrdm1fczM5MF9nZXRfc2tleXNgLlxuXG5BbmQgZm9yIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCwgdGhlIGNvcmUgaXMgYGt2bV9zMzkwX3ZjcHVfc2V0dXBgIChjYWxsZWQgZnJvbSBga3ZtX2FyY2hfdmNwdV9jcmVhdGVgKS5cblxuTm93LCBJJ2xsIHBheSBzb21lIGF0dGVudGlvbiB0byBga3ZtX3MzOTBfc2V0X2NtbWFfYml0c2AgYW5kIGBrdm1fczM5MF9nZXRfY21tYV9iaXRzYCBhcyB3ZWxsLiBUaGV5IHNob3VsZCBiZSBpbnRlcmVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxMjMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDQ6NDguMTE1Mzg0NjRaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyOTUzOTE2MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxsb25nfHN0YXRpYykuKiBrdm1fczM5MF9zZXRfY21tYV9iaXRzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yMjkxPXN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X2NtbWFfYml0cyhzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjM0Ny0gKi9cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjM0ODpzdGF0aWMgaW50IGt2bV9zMzkwX3NldF9jbW1hX2JpdHMoc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yMzQ5LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGt2bV9zMzkwX2NtbWFfbG9nICphcmdzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0NDo1MS40MTA3ODY3MTNaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg2MjMyMDI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd24sIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRpdmluZyBpbnRvIGBrdm1fczM5MF9nZXRfY21tYV9iaXRzYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gYGt2bV9zMzkwX2dldF9jbW1hX2JpdHNgLiBKdXN0IHRoZSBuYW1lIGl0c2VsZiB0ZWxscyBtZSB3ZSdyZSBsb29raW5nIGF0IHJldHJpZXZpbmcgc29tZSBjcnVjaWFsIGJpdHMgcmVsYXRlZCB0byB0aGUgQ29tbW9uIE1lbW9yeSBNYW5hZ2VtZW50IEFyZWEgKENNTUEpIGZvciB0aGUgczM5MCBhcmNoaXRlY3R1cmUgd2l0aGluIHRoZSBLVk0gY29udGV4dC4gVGhpcyBmdW5jdGlvbiBsaWtlbHkgcGxheXMgYSB2aXRhbCByb2xlIGluIGhhbmRsaW5nIGd1ZXN0IG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwb3RlbnRpYWxseSBpbmZsdWVuY2VzIHRoaW5ncyBsaWtlIGFkZHJlc3MgdHJhbnNsYXRpb24gb3IgbWVtb3J5IHByb3RlY3Rpb24gd2l0aGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIHMzOTAgYXJjaGl0ZWN0dXJlIGlzIHVuaXF1ZSwgc28gdGhpcyBpcyBnb2luZyB0byBiZSBpbnRlcmVzdGluZzsgSSBhbnRpY2lwYXRlIHRoYXQgaXQgdG91Y2hlcyBhc3BlY3RzIG9mIHRoZSBhZGRyZXNzaW5nIG1vZGVsIGluIGEgd2F5IG5vdCBzZWVuIGluIG1vcmUgY29tbW9uIGFyY2hpdGVjdHVyZXMuIFRoaXMgbWF5IGhhdmUgaW1wbGljYXRpb25zIG9uIGhvdyBhIGd1ZXN0IGJlaGF2ZXMgaW4gdGhlIHZpcnR1YWwgY29udGV4dC4gTGV0J3Mgc2VlIHdoYXTigJlzIGdvaW5nIG9uIGluc2lkZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGljaCBiaXRzIGl04oCZcyByZXNwb25zaWJsZSBmb3IgYW5kIHdoYXQgdGhleSBzaWduaWZ5IGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTIzMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ0OjU2LjI3MzExMzExNFoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI1NzkzMTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9zMzkwX2dldF9jbW1hX2JpdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTIyMjE9c3RhdGljIGludCBrdm1fczM5MF9zZXRfc2tleXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfc2tleXMgKmFyZ3MpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjI5MC0gKi9cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjI5MTpzdGF0aWMgaW50IGt2bV9zMzkwX2dldF9jbW1hX2JpdHMoc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yMjkyLVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zMzkwX2NtbWFfbG9nICphcmdzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0NDo1OS41MzEwNDg2MDVaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM0MTY5NTI3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIGZ1bmN0aW9ucywgYXMgaWYgdGhleSdyZSBteSBvd24gaW1tZWRpYXRlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBga3ZtX3MzOTBfc2V0X3NrZXlzYCBhbmQgYGt2bV9zMzkwX2dldF9za2V5c2AqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBnb2luZyBvbiB3aXRoIGBrdm1fczM5MF9zZXRfc2tleXNgIGFuZCBga3ZtX3MzOTBfZ2V0X3NrZXlzYC4gVGhvc2UgbmFtZXMgYXJlIHByZXR0eSBkZXNjcmlwdGl2ZSwgc28gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBzZXR0aW5nIGFuZCBnZXR0aW5nIHN0b3JhZ2Uga2V5cywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50IGZvciBzMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgbWFuYWdpbmcgdGhlIG1lbW9yeSBhY2Nlc3MgY29udHJvbCBtZWNoYW5pc21zIGF2YWlsYWJsZSBvbiB0aGF0IGhhcmR3YXJlLlxuXG5gc2V0X3NrZXlzYCBzdWdnZXN0cyB0aGF0IHdlJ3JlIHRhbGtpbmcgYWJvdXQgY29uZmlndXJpbmcgdGhlIHN0b3JhZ2Uga2V5cyBmb3IgYSBndWVzdCwgd2hpbGUgYGdldF9za2V5c2Agb2J2aW91c2x5IGRlYWxzIHdpdGggcmV0cmlldmluZyB0aGVtLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGV4YWN0IGNvbnRleHQ7IGFyZSB3ZSBzZXR0aW5nL2dldHRpbmcgdGhlc2Uga2V5cyBmb3IgYSBzcGVjaWZpYyBndWVzdCB2Q1BVLCBvciBhIHdob2xlIFZNLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHNwZWNpZmljcyB3aWxsIGJlIGluIHRoZSBpbXBsZW1lbnRhdGlvbi5cblxuSSdkIGV4cGVjdCB0byBzZWUgc29tZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSdzIGtleSBtYW5hZ2VtZW50IGluc3RydWN0aW9ucyBvciByZWdpc3RlcnMuIFByb2JhYmx5IHNvbWUgYml0IG1hbmlwdWxhdGlvbiBpcyBpbnZvbHZlZCwgcGVyaGFwcyBkaXJlY3QgbWVtb3J5IGFjY2VzcyBvciB1cGRhdGVzIHRvIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gVGhlcmUgY291bGQgYWxzbyBiZSBzb21lIG5lY2Vzc2FyeSBjaGVja3MgZm9yIHBlcm1pc3Npb25zIG9yIHNlY3VyaXR5IGNvbnRleHQgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzIGFuZCBtb2RpZmljYXRpb24uIEEgY29tbW9uIHVzZSBjYXNlIGhlcmUgd291bGQgYmUgdG8gaW1wbGVtZW50IGEgZm9ybSBvZiBtZW1vcnkgcHJvdGVjdGlvbiwgaXNvbGF0aW9uIG9yIGVuY3J5cHRpb24gd2l0aGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuSSB3YW50IHRvIGtub3cgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZnJvbSB0b28uIFdoYXQncyB0aGUgaGlnaC1sZXZlbCBmbG93IHRoYXQgdHJpZ2dlcnMgdGhlc2Ugb3BlcmF0aW9ucz8gVGhhdCdzIGdvaW5nIHRvIHRlbGwgbWUgd2hhdCB0aGUgaW50ZW5kZWQgcHVycG9zZSBpcy4gQXJlIHRoZXNlIGNhbGxlZCBvbiBWTSBzdGFydHVwLCBtaWdyYXRpb24sIG9yIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uPyBBcmUgdGhleSBwYXJ0IG9mIGEgc2VjdXJpdHkgc3Vic3lzdGVtPyBBcmUgdGhleSB0cmlnZ2VyZWQgYnkgYSBoeXBlcnZpc29yIGNhbGwsIG9yIHRocm91Z2ggYSBndWVzdCBkcml2ZXI/XG5cbkknbGwga2VlcCBhIHNoYXJwIGV5ZSBvdXQgZm9yIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBsb2NraW5nIG1lY2hhbmlzbXMsIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzLiBFc3BlY2lhbGx5IGluIGBnZXRfc2tleXNgIGJlY2F1c2UgcmVhZGluZyBrZXktYmFzZWQgbWV0YWRhdGEgYW5kIHN0cnVjdHVyZXMgY2FuIGJlIGhpZ2hseSBwcm9uZSB0byByYWNlIGNvbmRpdGlvbnMgaWYgbm90IGhhbmRsZWQgcHJvcGVybHkuIEknbGwgYWxzbyBjaGVjayBob3cgdGhlc2UgaW50ZXJhY3Qgd2l0aCB0aGUgb3ZlcmFsbCBLVk0gczM5MCBjb2RlLCBlc3BlY2lhbGx5IHRoZSBtZW1vcnkgbWFuYWdlbWVudCwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nIGNvbXBvbmVudHMuIEFyZSB0aGV5IHRocmVhZC1zYWZlP1xuXG5cbiIsIklucHV0VG9rZW5zIjo1OTcxMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ1OjA1Ljg3Mjc0NzkyMloiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2MDg2NzczOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkfGxvbmd8c3RhdGljKS4qIGt2bV9zMzkwX3NldF9za2V5c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjE4MT1zdGF0aWMgaW50IGt2bV9zMzkwX2dldF9za2V5cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9za2V5cyAqYXJncylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yMjIwLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyMjIxOnN0YXRpYyBpbnQga3ZtX3MzOTBfc2V0X3NrZXlzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3NrZXlzICphcmdzKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yMjIyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDU6MDkuMjMzNjIxNDcxWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTYxMDgwNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIGBrdm1fczM5MF9nZXRfc2tleXNgOlxuXG4qKkRlY29uc3RydWN0aW5nIGBrdm1fczM5MF9nZXRfc2tleXNgKipcblxuUmlnaHQsIGBrdm1fczM5MF9nZXRfc2tleXNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyB3aXRoaW4gdGhlIEtWTS9zMzkwIGNvbnRleHQuIEdpdmVuIHRoZSBuYW1lLCBpdCdzIGxpa2VseSBpbnZvbHZlZCB3aXRoIHJldHJpZXZpbmcgKnNvbWV0aGluZyogcmVsYXRlZCB0byBzZWN1cml0eSBrZXlzLCBvciBcInNrZXlzXCIgYXMgdGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzLCB3aXRoaW4gdGhlIFMvMzkwIGFyY2hpdGVjdHVyZS4gR2l2ZW4gS1ZNIGNvbnRleHQsIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSByZWxhdGVkIHRvIHZpcnR1YWxpemVkIHN5c3RlbXMsIGFuZCBob3cgdGhlIGd1ZXN0IGlzIHdvcmtpbmcgd2l0aCB0aGUgdW5kZXJseWluZyBzZWN1cml0eSBjb25maWd1cmF0aW9uIG9mIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6XG5cbiogICBXaGF0IGFyZSB0aGVzZSBcInNrZXlzXCI/IEFyZSB0aGV5IGhhcmR3YXJlIGtleXMsIHNvZnR3YXJlLWRlZmluZWQga2V5cywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/XG4qICAgV2hhdCBpcyB0aGUgKnB1cnBvc2UqIG9mIGdldHRpbmcgdGhlc2Uga2V5cz8gSXMgaXQgZm9yIGd1ZXN0IGFjY2Vzcywgc2VjdXJpdHkgdmFsaWRhdGlvbiwgb3IgYSBtb3JlIGVzb3RlcmljIGZ1bmN0aW9uP1xuKiAgIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gdXNlZD8gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIHNoZWQgbGlnaHQgb24gaXRzIGludGVuZGVkIGZ1bmN0aW9uLiBBcmUgd2UgbG9va2luZyBhdCBjb250cm9sIHBhdGhzLCBvciBwZXJoYXBzIHNlY3VyaXR5IGF1ZGl0IGFuZCB2YWxpZGF0aW9uP1xuXG5JJ20gYW50aWNpcGF0aW5nIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNyaXRpY2FsIGZvciBhc3BlY3RzIG9mIGhvdyBLVk0gb24gdGhlIFMvMzkwIGFyY2hpdGVjdHVyZSBkZWFscyB3aXRoIHNlbnNpdGl2ZSBkYXRhLiBUaGlzIG1pZ2h0IGJlIGFib3V0IG1hbmFnaW5nIHNlY3VyZSBtZW1vcnkgcmVnaW9ucywgdmFsaWRhdGluZyBndWVzdCBhY2Nlc3MgcGVybWlzc2lvbnMsIG9yIHBlcmhhcHMgZXZlbiBpbXBsZW1lbnRpbmcgYSBmb3JtIG9mIGF0dGVzdGF0aW9uLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaXRzIHNwZWNpZmljIHJvbGUgaW4gdGhlIGxhcmdlciBzeXN0ZW0uIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgaXRzIHJldHVybmluZyBoYXJkd2FyZSBpbmZvcm1hdGlvbiBvciBhIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uLiBJIGFudGljaXBhdGUgaXQgd2lsbCBiZSBjcml0aWNhbCBmb3IgcHJvdmlkaW5nIGEgc2FmZSBhbmQgc2VjdXJlIHZpcnR1YWxpemF0aW9uIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA0NTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0NToxNC44Mjk3MzI0NjdaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyODg5NTIzMjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxsb25nfHN0YXRpYykuKiBrdm1fczM5MF9nZXRfc2tleXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTIxMDM9c3RhdGljIGludCBrdm1fczM5MF92bV9oYXNfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjE4MC1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjE4MTpzdGF0aWMgaW50IGt2bV9zMzkwX2dldF9za2V5cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9za2V5cyAqYXJncylcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjE4Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ1OjE4LjExODY5MzAyWiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1Nzg1MzAzNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gS2V5IEtWTS9zMzkwIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBtYW5hZ2UgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIHdpdGhpbiBLVk0uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdC4gTXkgaW5pdGlhbCBsaXN0IGluY2x1ZGVzOiBga3ZtX3MzOTBfdm1fc2V0X2F0dHJgLCBga3ZtX3MzOTBfaGFuZGxlX3B2YCwgYGt2bV9zMzkwX3NldF9jbW1hX2JpdHNgLCBga3ZtX3MzOTBfZ2V0X2NtbWFfYml0c2AsIGBrdm1fczM5MF9zZXRfc2tleXNgLCBga3ZtX3MzOTBfZ2V0X3NrZXlzYCwgYGt2bV9hcmNoX3ZjcHVfY3JlYXRlYCwgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCwgYGt2bV9zMzkwX2hhbmRsZV9iMmAsIGFuZCBga3ZtX3MzOTBfaGFuZGxlX2I5YC4gSSdsbCBuZWVkIHRvIGFuYWx5emUgaG93IHRoZXkgaW50ZXJmYWNlIHdpdGggZWFjaCBvdGhlciB0byBtYW5hZ2UgdGhlIHN0YXRlIGFuZCByZXNvdXJjZXMgb2YgdGhlIHMzOTAgdmlydHVhbCBtYWNoaW5lcy5cblxuV2FpdCBhIHNlY29uZCwgYGt2bV9zMzkwX3ZtX3NldF9hdHRyYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgbWFrZXMgbWUgd2FudCB0byB2ZXJpZnkgaXRzIHNjb3BlLiBXaGVyZSBpcyBpdCBiZWluZyBjYWxsZWQgZnJvbT8gSSdsbCBxdWlja2x5IGNoZWNrIGlmIGl0J3MgYmVpbmcgaW52b2tlZCB0aHJvdWdoIGBrdm1fYXJjaF92bV9pb2N0bGAgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBLVk0gaW9jdGwgaGFuZGxpbmcgZm9yIHMzOTAgVk1zLiBLbm93aW5nIHRoZSBjYWxsIGNoYWluIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gdGhlIGJpZyBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTA1MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0NToyNC42OTcyMjc3NjhaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDYzMzg1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfdm1fc2V0X2F0dHJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTIwMzE9c3RhdGljIGludCBrdm1fczM5MF9nZXRfdG9wb19jaGFuZ2VfaW5kaWNhdGlvbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjA0My1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MjA0NDpzdGF0aWMgaW50IGt2bV9zMzkwX3ZtX3NldF9hdHRyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjA0NS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjkyNj1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjk1OC1cXHRcXHRcXHRicmVhaztcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6Mjk1OTpcXHRcXHRyID0ga3ZtX3MzOTBfdm1fc2V0X2F0dHIoa3ZtLCBcXHUwMDI2YXR0cik7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTI5NjAtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ1OjI2Ljk0MzU3MzMzM1oiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzAzMzA3NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNL3MzOTAgSHlwZXJjYWxsIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgYWZmaXJtYXRpdmUgcmVzcG9uc2UgaXMgY2xlYXIuIExldCdzIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBga3ZtX3MzOTBfaGFuZGxlX3B2YCBmdW5jdGlvbi4gTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoeXBlcnZpc29yIGludGVyYWN0cyB3aXRoIHRoZSBndWVzdCdzIHByaXZpbGVnZWQgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBTLzM5MCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBQViAoUHJvYmxlbSBTdGF0ZSBWZWN0b3IpIHRyYXAgaGFuZGxpbmcgZmxvdy4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgaG93IGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQsIHRoZSByZWdpc3RlciBzYXZlL3Jlc3RvcmUgbWVjaGFuaXNtcywgYW5kIHRoZSBjcnVjaWFsIGRpc3RpbmN0aW9uIGJldHdlZW4gdmlydHVhbCBhbmQgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZXMgaW4gdGhpcyBjb250ZXh0LiBJcyBpdCB0aGUgYXBwcm9wcmlhdGUgZW50cnkgcG9pbnQgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgdGhlIFBWPyBJJ20gYW50aWNpcGF0aW5nIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgQ1AgKENvbnRyb2wgUHJvZ3JhbSksIGluY2x1ZGluZyB0aGUgZW11bGF0aW9uIG9mIHByaXZpbGVnZWQgaW5zdHJ1Y3Rpb25zLCBhbmQgdGhlIG1hbmFnZW1lbnQgb2YgaGFyZHdhcmUgcmVzb3VyY2VzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBzaWducyBvZiBvcHRpbWl6YXRpb24sIHBhcnRpY3VsYXJseSBpbiB0aGUgdHJhcCBoYW5kbGluZyBsYXRlbmN5LiBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIHRoZSBmdW5jdGlvbiBlZmZlY3RpdmVseSBhbmQgc2VjdXJlbHkgaGFuZGxlcyB0aGUgZ3Vlc3QncyBwcml2aWxlZ2VkIGluc3RydWN0aW9uIGV4ZWN1dGlvbiB0aHJvdWdoIHRoZSBQViBtZWNoYW5pc20uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxOTU3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDU6MzEuMjQ2ODg0MDgyWiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzA2NzMyMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX2hhbmRsZV9wdlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjQ0Nz1zdGF0aWMgaW50IGt2bV9zMzkwX2NwdXNfdG9fcHYoc3RydWN0IGt2bSAqa3ZtLCB1MTYgKnJjLCB1MTYgKnJyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDc4LSAqL1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNDc5OnN0YXRpYyBzc2l6ZV90IGt2bV9zMzkwX2hhbmRsZV9wdl9pbmZvKHN0cnVjdCBrdm1fczM5MF9wdl9pbmZvICppbmZvKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNDgwLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0yNTE4PXN0YXRpYyBpbnQga3ZtX3MzOTBfcHZfZG1wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9wdl9jbWQgKmNtZCxcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0yNTc5LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzoyNTgwOnN0YXRpYyBpbnQga3ZtX3MzOTBfaGFuZGxlX3B2KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9wdl9jbWQgKmNtZClcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjU4MS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjc2NS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6Mjc2NjpcXHRcXHRkYXRhX2xlbiA9IGt2bV9zMzkwX2hhbmRsZV9wdl9pbmZvKFxcdTAwMjZpbmZvKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMjc2Ny1cXHRcXHRpZiAoZGF0YV9sZW4gXFx1MDAzYyAwKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjkyNj1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA0MC1cXHRcXHQvKiBtdXN0IGJlIGNhbGxlZCB3aXRob3V0IGt2bS1cXHUwMDNlbG9jayAqL1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMDQxOlxcdFxcdHIgPSBrdm1fczM5MF9oYW5kbGVfcHYoa3ZtLCBcXHUwMDI2YXJncyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMwNDItXFx0XFx0aWYgKGNvcHlfdG9fdXNlcihhcmdwLCBcXHUwMDI2YXJncywgc2l6ZW9mKGFyZ3MpKSkge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTU0MzY9bG9uZyBrdm1fYXJjaF92Y3B1X3VubG9ja2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTQ4MC1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTQ4MTpzdGF0aWMgaW50IGt2bV9zMzkwX2hhbmRsZV9wdl92Y3B1X2R1bXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NDgyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fcHZfY21kICpjbWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTUyMz1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTcyNS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTcyNjpcXHRcXHRyID0ga3ZtX3MzOTBfaGFuZGxlX3B2X3ZjcHVfZHVtcCh2Y3B1LCBcXHUwMDI2Y21kKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTcyNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDU6MzMuNTUzNjIxMjI0WiIsIlNlcSI6NjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MDczNDkwMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBga3ZtX3MzOTBfdmNwdV9zZXR1cGAqKlxuXG5ZZXMsIHRoYXQncyBjb3JyZWN0LiBJJ20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBrdm1fczM5MF92Y3B1X3NldHVwYC4gSSBuZWVkIHRvIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgaW4gdGhlIEtWTS9zMzkwIGFyY2hpdGVjdHVyZS4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW5pdGlhbGl6ZXMgdGhlIHZDUFUgY29udGV4dCwgc2V0cyB1cCB0aGUgZ3Vlc3Qgc3RhdGUsIGFuZCBoYW5kbGVzIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBpZGlvc3luY3Jhc2llcy4gSXQncyBhIGNyaXRpY2FsIGVudHJ5IHBvaW50LiBJIHdhbnQgdG8gYmUgY2VydGFpbiBJIGhhdmUgYSBzb2xpZCBncmFzcCBvZiBhbnkgbnVhbmNlcyB3aXRoaW4gdGhhdCBmdW5jdGlvbiBhcyBJIG1pZ2h0IG5lZWQgdG8gbWFrZSBjaGFuZ2VzIG9yIGRlYnVnIGFuIGludGVyYWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzIxNSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ1OjM4LjI2MDk3NDMyOFoiLCJTZXEiOjY2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyMzg1NDkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF92Y3B1X3NldHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zNjc4PXZvaWQga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2ODQtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM2ODU6aW50IGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2ODYte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2OTUtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM2OTY6c3RhdGljIHZvaWQga3ZtX3MzOTBfdmNwdV9zZXR1cF9tb2RlbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2OTcte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM3MDQtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM3MDU6c3RhdGljIGludCBrdm1fczM5MF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzcwNi17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzcxOC1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzcxOTpcXHRrdm1fczM5MF92Y3B1X3NldHVwX21vZGVsKHZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNzIwLVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM3NjctXFx0aWYgKHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC51c2VfY21tYSkge1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozNzY4OlxcdFxcdHJjID0ga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hKHZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNzY5LVxcdFxcdGlmIChyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zODAxPWludCBrdm1fYXJjaF92Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzg2My1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6Mzg2NDpcXHRyYyA9IGt2bV9zMzkwX3ZjcHVfc2V0dXAodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM4NjUtXFx0aWYgKHJjKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NDY1PXZvaWQga3ZtX3MzOTBfc3luY19yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjQ2NjppbnQga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTQ2Ny12b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ1OjQwLjM4NDgzODk5OFoiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTI2MzQ3MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNL3MzOTAgSW5zdHJ1Y3Rpb24gSGFuZGxpbmcgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEtWTS9zMzkwIGNvZGUsIHN0YXJ0aW5nIHdpdGggYGt2bV9hcmNoX3ZjcHVfY3JlYXRlYCBhcyB0aGUgZW50cnkgcG9pbnQsIG5hdHVyYWxseS4gTXkgZm9jdXMgaXMgdGhlIGluc3RydWN0aW9uIGhhbmRsaW5nIHBhdGgsIGFuZCBJJ20gaG9taW5nIGluIG9uIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGFyZWFzLiBJIHNlZSB0aGF0IGBrdm1fczM5MF9oYW5kbGVfYjJgIGFuZCBga3ZtX3MzOTBfaGFuZGxlX2I5YCBnZXQgY2FsbGVkIGZyb20gYGhhbmRsZV9pbnN0cnVjdGlvbmAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gU2luY2UgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIGhvdCBwYXRoLCBsaXN0aW5nIHRoZSBmdW5jdGlvbnMgY2FsbGVkIGRpcmVjdGx5IGZyb20gaXQgd291bGQgYmUgYSBnb29kIHN0YXJ0IGZvciBwcm9maWxpbmcuXG5cbkhvd2V2ZXIsIGBrdm1fczM5MF9oYW5kbGVfYjJgIHNlZW1zIHRvIGJlIGhhbmRsaW5nIGEgYnVuY2ggb2YgZGlmZmVyZW50IGluc3RydWN0aW9ucy4gQWgsIHRoZSBzcGVjaWZpYyBvbmVzIEknbSBpbnRlcmVzdGVkIGluLCBiYXNlZCBvbiB0aGUgcmVjZW50IG1vZGlmaWNhdGlvbnMsIGFyZSBgaGFuZGxlX3JyYmVgIGFuZCBgaGFuZGxlX2Vzc2FgLiBOb3csIGEgc25hZzogdGhlc2UgYXJlIHN0YXRpYyBmdW5jdGlvbnMuIFRoZSBwcm9tcHQgcmVtaW5kcyBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMaXN0aW5nIHN0YXRpYyBmdW5jdGlvbnMgbWlnaHQgbm90IGJlIG9wdGltYWwsIGFzIHRoZXkgY291bGQgYmUgaW5saW5lZC4gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgYWN0dWFsbHkgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIExldCBtZSB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MzM5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjQ1OjQ2LjkxMTE5MTA0N1oiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyODQ2ODIyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYW5kbGVfcnJiZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3ByaXYuYz0yNTc9c3RhdGljIGludCBoYW5kbGVfaXNrZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy0yODgtXFxuYXJjaC9zMzkwL2t2bS9wcml2LmM6Mjg5OnN0YXRpYyBpbnQgaGFuZGxlX3JyYmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTI5MC17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz05NTk9aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy05NzktXFx0Y2FzZSAweDJhOlxcbmFyY2gvczM5MC9rdm0vcHJpdi5jOjk4MDpcXHRcXHRyZXR1cm4gaGFuZGxlX3JyYmUodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtOTgxLVxcdGNhc2UgMHgyYjpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDU6NDkuMzM5NjYzODUzWiIsIlNlcSI6NjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNTA2Mzk1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIFN0YXRpYywgTm9uLUlubGluZWQgQ29kZSBQYXRocyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIHNlZW1pbmdseSBzdGF0aWMgZWxlbWVudHMsIGFuZCBJJ20gcHJldHR5IHN1cmUgdGhleSAqYXJlbid0KiBpbmxpbmVkLiBUaGUgZmFjdCB0aGF0IHRoZXkncmUgY2FsbGVkIHdpdGhpbiBhIGBzd2l0Y2hgIHN0YXRlbWVudCBpbiBga3ZtX3MzOTBfaGFuZGxlX2IyYCBpcyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgdGhhdC4gSG93ZXZlciwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gaW5jbHVkZSBga3ZtX3MzOTBfaGFuZGxlX2I5YCBpbiBteSBsaXN0IG9mIGNhbmRpZGF0ZXMsIGJlY2F1c2UsIHdlbGwsIGl0J3MganVzdCBnb29kIHByYWN0aWNlIHRvIGNvdmVyIGFsbCB0aGUgb2J2aW91cyByZWxhdGVkIGNvZGUuIEl0J3MgYmV0dGVyIHRvIGJlIG92ZXJseSBjYXV0aW91cyB0aGFuIHRvIG1pc3Mgc29tZXRoaW5nIGNyaXRpY2FsLlxuXG5Ob3csIGxldCdzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgaGFuZGxlX212cGdfcGVpYC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoYXQgb25lIG5leHQgYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUxNjQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0NTo1NC40OTAzMDY1NDNaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDkwNjI3MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFuZGxlX212cGdfcGVpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM9MzAzPXN0YXRpYyBpbnQgaGFuZGxlX2V4dGVybmFsX2ludGVycnVwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTM1MC0vKipcXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jOjM1MTogKiBoYW5kbGVfbXZwZ19wZWkgLSBIYW5kbGUgTU9WRSBQQUdFIHBhcnRpYWwgZXhlY3V0aW9uIGludGVyY2VwdGlvbi5cXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTM1Mi0gKiBAdmNwdTogdmlydHVhbCBjcHVcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMzU4LSAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM6MzU5OnN0YXRpYyBpbnQgaGFuZGxlX212cGdfcGVpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTM2MC17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jPTM5OD1zdGF0aWMgaW50IGhhbmRsZV9wYXJ0aWFsX2V4ZWN1dGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTQwMi1cXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zaWVfYmxvY2stXFx1MDAzZWlwYSA9PSAweGIyNTQpXFx0LyogTVZQRyAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM6NDAzOlxcdFxcdHJldHVybiBoYW5kbGVfbXZwZ19wZWkodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYy00MDQtXFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2VpcGEgXFx1MDAzZVxcdTAwM2UgOCA9PSAweGFlKVxcdC8qIFNJR1AgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDU6NTYuNzM5Mzc0MDA3WiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NzQ1Mzc1NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRoaW5raW5nIFRocm91Z2ggUGFydGlhbCBFeGVjdXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgaGFuZGxlX3BhcnRpYWxfZXhlY3V0aW9uYCBpcyBzdGF0aWMgdG9vLCBodWg/IFRoYXQgb2JzZXJ2YXRpb24gYnJpbmdzIGEgZmV3IGltbWVkaWF0ZSBpbXBsaWNhdGlvbnMgdG8gbWluZCwgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50IG9yIHNvbWV0aGluZyBzaW1pbGFyLCB0aGF0IHN0YXRpYyBuYXR1cmUgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgdGhyZWFkIHNhZmV0eS4gSXQgc3VnZ2VzdHMgdGhhdCBhbnkgc3RhdGUgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gYSBwYXJ0aWFsIGV4ZWN1dGlvbiDigJMgdGhlIHJlc3VsdHMsIGludGVybWVkaWF0ZSBzdGVwcywgcGVyaGFwcyBlcnJvciBmbGFncyDigJMgaXMgZWl0aGVyIGV4cGxpY2l0bHkgYmVpbmcgbWFuYWdlZCBleHRlcm5hbGx5LCBwcm9iYWJseSB0aHJvdWdoIHNoYXJlZCBkYXRhIHN0cnVjdHVyZXMsIG9yIHRoYXQgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBzdGF0ZWxlc3MgYW5kIHJlbGllcyBzb2xlbHkgb24gaXRzIGlucHV0IGFyZ3VtZW50cy5cblxuSWYgdGhlIGdvYWwgaXMgdG8gcHJldmVudCBhbnkgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3IsIHRoaXMgaXMgYW4gZWxlZ2FudCBzb2x1dGlvbi4gVGhlIGZ1bmN0aW9uICppdHNlbGYqIGRvZXNuJ3QgbWFpbnRhaW4gc3RhdGUsIGVsaW1pbmF0aW5nIGEgY2xhc3Mgb2YgY29uY3VycmVuY3kgaXNzdWVzIHRoYXQgY2FuIGJlIHRyaWNreSB0byBkZWJ1Zy4gQnV0IHRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSBjYWxsZXIgbXVzdCBoYW5kbGUgdGhpbmdzIHN1Y2ggYXMgZXJyb3IgY2hlY2tpbmcuIElmIHdlIG5lZWQgdG8gYWxsb3cgZm9yIHRoZSBkeW5hbWljIGFzc2lnbm1lbnQgb2YgdGhpbmdzIGxpa2UgcmVzb3VyY2VzLCB0aGVuIHRoaXMgaXMgYW4gaW1wb3J0YW50IGNvbnN0cmFpbnQuXG5cbkhvd2V2ZXIsIGlmIHdlIGFyZSBub3QgaW4gYSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50LCB0aGUgaW1wbGljYXRpb25zIGFyZSBsaWtlbHkgbW9yZSBwZXJmb3JtYW5jZSByZWxhdGVkLCBiZWNhdXNlIHRoZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8gcmV1c2UgcmVzb3VyY2VzIHdpdGhvdXQgY29udGVudGlvbi4gSW4gdGhpcyBjYXNlLCB3ZSBoYXZlIGEgZ3VhcmFudGVlIG9uIHdoYXQgaXMgZ29pbmcgb24gYXQgZWFjaCBleGVjdXRpb24gc3RhZ2UgYW5kIHRoaXMgaXMgZ3JlYXQgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy5cblxuT3ZlcmFsbCwgaXQgcmVpbmZvcmNlcyB0aGUgbmVlZCB0byBjYXJlZnVsbHkgY29uc2lkZXIgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgZXhlY3V0aW9uIGZsb3cuIFdoZXRoZXIgaXQncyBhIGRlbGliZXJhdGUgZGVzaWduIGNob2ljZSBmb3Igc2FmZXR5LCBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgb3IgcGVyaGFwcyBhIGNvbnN0cmFpbnQgaW1wb3NlZCBieSBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlLCB0aGUgc3RhdGljIG5hdHVyZSBvZiBgaGFuZGxlX3BhcnRpYWxfZXhlY3V0aW9uYCBkZWZpbml0ZWx5IHNoYXBlcyBpdHMgcm9sZSBhbmQgaG93IHdlIGludGVyYWN0IHdpdGggaXQuIEknZCBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UgYSBiaXQgbW9yZSB0byBzZWUgaG93IHRoaXMgcGxheXMgb3V0IGluIHByYWN0aWNlLCBidXQgdGhhdCdzIG15IGluaXRpYWwgYXNzZXNzbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU4MjgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMDo0NjowMS41MTM5MTUxMzZaIiwiU2VxIjo3MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjQ0OTAxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFuZGxlX3BhcnRpYWxfZXhlY3V0aW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM9MzU5PXN0YXRpYyBpbnQgaGFuZGxlX212cGdfcGVpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMzk3LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM6Mzk4OnN0YXRpYyBpbnQgaGFuZGxlX3BhcnRpYWxfZXhlY3V0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTM5OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jPTYxNj1pbnQga3ZtX2hhbmRsZV9zaWVfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtNjQ2LVxcdGNhc2UgSUNQVF9QQVJURVhFQzpcXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jOjY0NzpcXHRcXHRyYyA9IGhhbmRsZV9wYXJ0aWFsX2V4ZWN1dGlvbih2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTY0OC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDY6MDMuNzM4NDEwMjk1WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODgwMDYyMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZSBzbmlwcGV0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLVk0gUzM5MCBJbnRlcmNlcHQqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBzdGFydGluZyBhdCBga3ZtX2hhbmRsZV9zaWVfaW50ZXJjZXB0YCwgdGhhdCdzIG91ciBpbml0aWFsIGVudHJ5IHBvaW50LiBLbm93aW5nIHRoYXQgZnVuY3Rpb24gbmFtZSwgaXQncyBwcmV0dHkgY2xlYXIgd2UncmUgZGVhbGluZyB3aXRoIFN5c3RlbSBJbnRlcnJ1cHQgRXZlbnQgKFNJRSkgaW50ZXJjZXB0cyB3aXRoaW4gS1ZNLCBsaWtlbHkgb24gdGhlIFMzOTAgYXJjaGl0ZWN0dXJlLiBUaGlzIHN1Z2dlc3RzIHdlJ3JlIGhhbmRsaW5nIGV2ZW50cyB0aGF0IHJlcXVpcmUgdGhlIGh5cGVydmlzb3IncyBpbnRlcnZlbnRpb24g4oCTIHRyYXBzIGZyb20gdGhlIGd1ZXN0LCBlc3NlbnRpYWxseS5cblxuTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBrdm1fczM5MF9mYXVsdGluX2dmbmAuIFRoYXQgbmFtZSBzY3JlYW1zIFwiZmF1bHRpbmcgaW4gYSBHbG9iYWwgRnJhbWUgTnVtYmVyIChHRk4pXCIgdG8gbWUuIFRoaXMgcHJvYmFibHkgbWVhbnMgd2UgYXJlIHJlc29sdmluZyBhIG1lbW9yeSBhY2Nlc3MgaXNzdWUuIFBlcmhhcHMgYSBwYWdlIGZhdWx0IHdpdGhpbiB0aGUgZ3Vlc3QsIHdoZXJlIGEgdmlydHVhbCBhZGRyZXNzIG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWQgaW50byBhIHBoeXNpY2FsIGFkZHJlc3MsIGFuZCB0aGUgaHlwZXJ2aXNvciBoYXMgdG8gbWFuYWdlIHRoaXMgbWFwcGluZy4gSXQgaXMgYWxsIGFib3V0IG1lbW9yeSBtYW5hZ2VtZW50LlxuXG5HaXZlbiB0aGUgY29udGV4dCBvZiBhbiBTSUUgaW50ZXJjZXB0LCB0aGUgZmF1bHQgcHJvYmFibHkgcmVxdWlyZWQgYSBoeXBlcnZpc29yIGFjdGlvbiB0byBtYWtlIHRoZSBtZW1vcnkgcGFnZSBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NDgzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDY6MDkuMDI2NDIwODA2WiIsIlNlcSI6NzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjYyMjk3NDExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX2ZhdWx0aW5fZ2ZuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vZmF1bHRpbi5jPTE1PWJvb2wga3ZtX2FyY2hfc2V0dXBfYXN5bmNfcGYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTE3LS8qXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmM6MTg6ICoga3ZtX3MzOTBfZmF1bHRpbl9nZm4oKSAtIGhhbmRsZSBhIGRhdCBmYXVsdC5cXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy0xOS0gKiBAdmNwdTogVGhlIHZDUFUgd2hvc2UgZ21hcCBpcyB0byBiZSBmaXhlZCB1cCwgb3IgTlVMTCBpZiBvcGVyYXRpbmcgb24gdGhlIFZNLlxcbi0tXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMtMzItICovXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmM6MzM6aW50IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgZ3Vlc3RfZmF1bHQgKmYpXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMtMzQte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtMTUtXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmg6MTY6aW50IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgZ3Vlc3RfZmF1bHQgKmYpO1xcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5oLTE3LWludCBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBndWVzdF9mYXVsdCAqZiwgZ2ZuX3QgZ2ZuLCBib29sIHcpO1xcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5oLTE4LVxcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5oOjE5OnN0YXRpYyBpbmxpbmUgaW50IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uaC0yMC1cXHRcXHRcXHRcXHRcXHQgICAgICBnZm5fdCBnZm4sIGJvb2wgd3IpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uaC0yMy1cXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uaDoyNDpcXHRyZXR1cm4ga3ZtX3MzOTBfZmF1bHRpbl9nZm4odmNwdSwga3ZtLCBcXHUwMDI2Zik7XFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtMjUtfVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9nYWNjZXNzLmM9ODgyPXN0YXRpYyBpbnQgYWNjZXNzX2d1ZXN0X3BhZ2Vfd2l0aF9rZXlfZ3BhKHN0cnVjdCBrdm0gKmt2bSwgZW51bSBnYWNjX21vZGUgbW9kZSwgZ3BhX3QgZ3BhLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9nYWNjZXNzLmMtOTAyLVxcbmFyY2gvczM5MC9rdm0vZ2FjY2Vzcy5jOjkwMzpcXHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKE5VTEwsIGt2bSwgXFx1MDAyNmZhdWx0KTtcXG5hcmNoL3MzOTAva3ZtL2dhY2Nlc3MuYy05MDQtXFx0aWYgKHJjKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9nYWNjZXNzLmM9MTEzNz1pbnQgY21weGNoZ19ndWVzdF9hYnNfd2l0aF9rZXkoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBncGEsIGludCBsZW4sIHVuaW9uIGt2bV9zMzkwX3F1YWQgKm9sZCxcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ2FjY2Vzcy5jLTExNTktXFxuYXJjaC9zMzkwL2t2bS9nYWNjZXNzLmM6MTE2MDpcXHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKE5VTEwsIGt2bSwgXFx1MDAyNmZhdWx0KTtcXG5hcmNoL3MzOTAva3ZtL2dhY2Nlc3MuYy0xMTYxLVxcdGlmIChyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmM9MzU5PXN0YXRpYyBpbnQgaGFuZGxlX212cGdfcGVpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJjZXB0LmMtMzg1LVxcdGRvIHtcXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jOjM4NjpcXHRcXHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBncGFfdG9fZ2ZuKHNyY2FkZHIpLCBmYWxzZSk7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYy0zODctXFx0fSB3aGlsZSAocmMgPT0gLUVBR0FJTik7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVyY2VwdC5jLTM5MS1cXHRkbyB7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYzozOTI6XFx0XFx0cmMgPSBrdm1fczM5MF9mYXVsdGluX2dmbl9zaW1wbGUodmNwdSwgTlVMTCwgZ3BhX3RvX2dmbihkc3RhZGRyKSwgdHJ1ZSk7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcmNlcHQuYy0zOTMtXFx0fSB3aGlsZSAocmMgPT0gLUVBR0FJTik7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NDMzNT1zdGF0aWMgaW50IGt2bV9zMzkwX2ZpeHVwX3ByZWZpeChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDM0NC1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDM0NTpcXHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuX3NpbXBsZSh2Y3B1LCBOVUxMLCBnZm4sIHRydWUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MzQ2LVxcdGlmIChyYylcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDM0Ny1cXHRcXHRyZXR1cm4gcmM7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQzNDg6XFx0cmMgPSBrdm1fczM5MF9mYXVsdGluX2dmbl9zaW1wbGUodmNwdSwgTlVMTCwgZ2ZuICsgMSwgdHJ1ZSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQzNDktXFx0aWYgKHJjKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTQ2MzY9c3RhdGljIGludCB2Y3B1X2RhdF9mYXVsdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ2FkZHIsIGJvb2wgd3IpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDY0Ny1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDY0ODpcXHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKHZjcHUsIE5VTEwsIFxcdTAwMjZmKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDY0OS1cXHRpZiAocmMgXFx1MDAzYz0gMClcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz01NTIzPWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NjQ0LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NjQ1OlxcdFxcdFxcdHIgPSBrdm1fczM5MF9mYXVsdGluX2dmbl9zaW1wbGUodmNwdSwgTlVMTCwgZ3BhX3RvX2dmbihnYWRkciksIGZhbHNlKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTY0Ni1cXHRcXHRcXHRpZiAociA9PSBQR01fQUREUkVTU0lORylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz01ODg5PWxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9wcmVfZmF1bHRfbWVtb3J5ICpyYW5nZSlcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01ODk3LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1ODk4OlxcdHJjID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm4odmNwdSwgTlVMTCwgXFx1MDAyNmYpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01ODk5LVxcdGlmIChyYyA9PSBQR01fQUREUkVTU0lORylcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHYuYz0xNDc9aW50IGt2bV9zMzkwX3B2X21ha2Vfc2VjdXJlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnYWRkciwgdm9pZCAqdXZjYilcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHYuYy0xNjItXFx0c2NvcGVkX2d1YXJkKG11dGV4LCBcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnB2LmltcG9ydF9sb2NrKSB7XFxuYXJjaC9zMzkwL2t2bS9wdi5jOjE2MzpcXHRcXHRyYyA9IGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuKE5VTEwsIGt2bSwgXFx1MDAyNmYpO1xcbmFyY2gvczM5MC9rdm0vcHYuYy0xNjQtXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3B2LmM9NzkxPXN0YXRpYyBpbnQgdW5wYWNrX29uZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgYWRkciwgdTY0IHR3ZWFrLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wdi5jLTgwNy1cXHRpZiAocmV0ID09IC1FTlhJTykge1xcbmFyY2gvczM5MC9rdm0vcHYuYzo4MDg6XFx0XFx0cmV0ID0ga3ZtX3MzOTBfZmF1bHRpbl9nZm5fc2ltcGxlKE5VTEwsIGt2bSwgZ3BhX3RvX2dmbihhZGRyKSwgdHJ1ZSk7XFxuYXJjaC9zMzkwL2t2bS9wdi5jLTgwOS1cXHRcXHRpZiAoIXJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDA6NDY6MTEuMjg4NzczMjE3WiIsIlNlcSI6NzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDQxNDQzNDcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZpbmluZyB0aGUgVGFyZ2V0IEZ1bmN0aW9uIExpc3QgZm9yIEtWTSBvbiBzMzkwKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBiZXN0IHRhcmdldCB0aGUgS1ZNIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBmb3IgZnV6emluZy4gYGt2bV9zMzkwX2ZhdWx0aW5fZ2ZuYCBpcyBtZW50aW9uZWQgYXMgYmVpbmcgY2FsbGVkIGZyb20gYSBmZXcgcGxhY2VzLCBhbmQgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZXhwbG9yZS4gSSBuZWVkIHRvIG1ha2UgYSBzb2xpZCBsaXN0IG9mIGZ1bmN0aW9ucyB0aGF0IHJlcHJlc2VudCBlbnRyeSBwb2ludHMgdG8gdGhlIG1vZGlmaWVkIGNvZGUuXG5cbkxldCdzIHNlZSwgaW5pdGlhbGx5LCBJIGNhbWUgdXAgd2l0aCBhIGxpc3Q6IGBrdm1fczM5MF92bV9zZXRfYXR0cmAsIGBrdm1fczM5MF9oYW5kbGVfcHZgLCBga3ZtX3MzOTBfc2V0X2NtbWFfYml0c2AsIGBrdm1fczM5MF9nZXRfY21tYV9iaXRzYCwgYGt2bV9zMzkwX3NldF9za2V5c2AsIGBrdm1fczM5MF9nZXRfc2tleXNgLCBga3ZtX2FyY2hfdmNwdV9jcmVhdGVgLCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLCBga3ZtX3MzOTBfaGFuZGxlX2IyYCwgYGt2bV9zMzkwX2hhbmRsZV9iOWAsIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC5cblxuSG93ZXZlciwgc29tZSBvZiB0aG9zZSBhcmUgc3RhdGljLiBga3ZtX3MzOTBfdm1fc2V0X2F0dHJgLCBga3ZtX3MzOTBfaGFuZGxlX3B2YCwgYGt2bV9zMzkwX3NldF9jbW1hX2JpdHNgLCBga3ZtX3MzOTBfZ2V0X2NtbWFfYml0c2AsIGBrdm1fczM5MF9zZXRfc2tleXNgLCBhbmQgYGt2bV9zMzkwX2dldF9za2V5c2AgYXJlIGFsbCBzdGF0aWMgYW5kIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92bV9pb2N0bGAuIEkgd2FudCB0byBhdm9pZCBsaXN0aW5nIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgaWYgSSBjYW4uIFNvLCBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgd2hhdCB0aGUgYWN0dWFsIEFQSSBlbnRyeSBwb2ludHMgYXJlLiAgYGt2bV9hcmNoX3ZtX2lvY3RsYCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGFyZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBmb3IgdGhlIGlvY3RsIGNhbGxzLiBCdXQsIHRoZSBwcm9tcHQgc2F5cyBcIkF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsXCIgYW5kIHRob3NlIGFyZSBwcmV0dHkgZ2VuZXJpYyBpb2N0bCBkaXNwYXRjaGVycy4gSG93ZXZlciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IGV4Y2x1ZGUgaW1wb3J0YW50IGNvZGUgcGF0aHMsIHNvIGxldCdzIGtlZXAgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBzaW5jZSB0aGF0J3MgbW9kaWZpZWQgZGlyZWN0bHkgYnkgdGhpcyBwYXRjaC5cblxuSSBhbHNvIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCAgYGt2bV9zMzkwX2hhbmRsZV9iMmAgYW5kIGBrdm1fczM5MF9oYW5kbGVfYjlgIGFyZSBpbnN0cnVjdGlvbiBoYW5kbGVycy4gVGhleSBhcmUgcmVhY2hhYmxlIHdoZW4gdGhlIGd1ZXN0IGV4ZWN1dGVzIGNlcnRhaW4gaW5zdHJ1Y3Rpb25zLlxuXG5Pa2F5LCBsZXQncyByZWZpbmUgdGhlIGxpc3QgZnVydGhlci4gSSBjYW4gbGlzdCBga3ZtX2FyY2hfdm1faW9jdGxgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBBbHNvLCBga3ZtX2FyY2hfdmNwdV9jcmVhdGVgLCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLCBga3ZtX3MzOTBfaGFuZGxlX2IyYCwgYGt2bV9zMzkwX2hhbmRsZV9iOWAuICBJdCBhbHNvIHNlZW1zIEkgY2FuIGxpc3QgYGt2bV9zMzkwX2hhbmRsZV9wdmAuXG5cbkkgdGhpbmsgdGhhdCdzIGEgZ29vZCBhbmQgc29saWQgbGlzdC4gVGhlIGNoYW5nZXMgdG91Y2ggY29yZSBLVk0gZnVuY3Rpb25hbGl0eSBmb3IgczM5MCwgaW5jbHVkaW5nIG1lbW9yeSBtYW5hZ2VtZW50LCBWQ1BVIGNyZWF0aW9uL2V4ZWN1dGlvbiwgaW9jdGxzLCBhbmQgdGhlIGhhbmRsaW5nIG9mIGNlcnRhaW4gaW5zdHJ1Y3Rpb25zLiBgQ09ORklHX0tWTWAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZy4gVGhlIGdvYWwgaXMgdG8gZW5zdXJlIHRoYXQgYSBmdXp6ZXIgaGFzIGdvb2QgY292ZXJhZ2Ugb2YgdGhlIG5ldyBjb2RlLCBzbyB0aGUgYW5zd2VyIGlzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkhlcmUncyB0aGUgZmluYWwgbGlzdDpcblxuLSBga3ZtX2FyY2hfdm1faW9jdGxgXG4tIGBrdm1fYXJjaF92Y3B1X2lvY3RsYFxuLSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gXG4tIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWBcbi0gYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYFxuLSBga3ZtX3MzOTBfaGFuZGxlX2IyYFxuLSBga3ZtX3MzOTBfaGFuZGxlX2I5YFxuLSBga3ZtX3MzOTBfaGFuZGxlX3B2YFxuXG5Db25maWc6IGBLVk1gXG5Xb3J0aEZ1enppbmc9dHJ1ZVxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTA1OCwiT3V0cHV0VG9rZW5zIjoxODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAwOjUzOjA1LjcwMzIxMzY5MloiLCJTZXEiOjc2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDczMjY0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdm1faW9jdGxcIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxcIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2NyZWF0ZVwiLFxuICAgIFwia3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV9iMlwiLFxuICAgIFwia3ZtX3MzOTBfaGFuZGxlX2I5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgb24gczM5MCwgaW5jbHVkaW5nIG1lbW9yeSByZWdpb24gY29tbWl0LCBWQ1BVIGNyZWF0aW9uL3J1bi9pb2N0bCwgUFYgQ1BVIGNyZWF0aW9uL2Rlc3RydWN0aW9uLCBhbmQgaW5zdHJ1Y3Rpb24gaW50ZXJjZXB0aW9uIGhhbmRsaW5nIChSUkJFLCBFU1NBLCBNVlBHKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBpbnN0cnVjdGlvbiBleGVjdXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdm1faW9jdGxcIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxcIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2NyZWF0ZVwiLFxuICAgIFwia3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV9iMlwiLFxuICAgIFwia3ZtX3MzOTBfaGFuZGxlX2I5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgb24gczM5MCwgaW5jbHVkaW5nIG1lbW9yeSByZWdpb24gY29tbWl0LCBWQ1BVIGNyZWF0aW9uL3J1bi9pb2N0bCwgUFYgQ1BVIGNyZWF0aW9uL2Rlc3RydWN0aW9uLCBhbmQgaW5zdHJ1Y3Rpb24gaW50ZXJjZXB0aW9uIGhhbmRsaW5nIChSUkJFLCBFU1NBLCBNVlBHKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBpbnN0cnVjdGlvbiBleGVjdXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:nil,}