Name: series-workflowcnvmv Phase: Succeeded StartedAt: 2026-07-03 04:01:11 +0000 UTC FinishedAt: 2026-07-03 08:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[0] Phase: Succeeded StartedAt: 2026-07-03 04:01:11 +0000 UTC FinishedAt: 2026-07-03 04:13:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 04:01:11 +0000 UTC FinishedAt: 2026-07-03 04:13:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "66bb952b449eac53dffb341108251d632767fd2d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "66bb952b449eac53dffb341108251d632767fd2d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "99a7905e-dff7-4dbe-a8b6-a7c92a2c0746" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "__check_buffer_access", "check_tp_buffer_access", "check_buffer_access" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mgd2hlbiBjaGVja2luZyBidWZmZXIgYWNjZXNzIGluIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgY29tcG9uZW50IChCUEYgdmVyaWZpZXIpIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmMxOGQzOGU4MTljNTI2MTBmMDVlMjlmMDRiOGUyZGIzZDJiODYyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMDQ6MDk6NDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCAyMWEzNjVkNDM2YTU5NS4uNDIxY2ExMThmY2JmZTYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTUzMjYsMTQgJiM0Mzs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLVx0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuJiM0MztcdFx0XHRcdCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSxcbiYjNDM7XHRcdFx0XHQgdTMyICphY2Nlc3NfZW5kKVxuIHtcbiYjNDM7XHRzNjQgc3RhcnQsIHZhcl9vZmY7XG4mIzQzO1xuIFx0aWYgKG9mZiBcdTAwM2MgMCkge1xuIFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxcblwmIzM0OyxcbiBcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiYjNDM7XG4gXHRpZiAoIXRudW1faXNfY29uc3QocmVnLVx1MDAzZXZhcl9vZmYpKSB7XG4gXHRcdGNoYXIgdG5fYnVmWzQ4XTtcbiBcbkBAIC01MzQ0LDYgJiM0Mzs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuJiM0MztcdHZhcl9vZmYgPSAoczY0KXJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlO1xuJiM0MztcdGlmIChjaGVja19hZGRfb3ZlcmZsb3codmFyX29mZiwgKHM2NClvZmYsIFx1MDAyNnN0YXJ0KSkge1xuJiM0MztcdFx0dmVyYm9zZShlbnYsXG4mIzQzO1x0XHRcdFwmIzM0OyVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4mIzQzO1x0XHRyZXR1cm4gLUVBQ0NFUztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChzdGFydCBcdTAwM2MgMCkge1xuJiM0MztcdFx0dmVyYm9zZShlbnYsXG4mIzQzO1x0XHRcdFwmIzM0OyVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4mIzQzO1x0XHRyZXR1cm4gLUVBQ0NFUztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChzdGFydCBcdTAwM2UgVTMyX01BWCB8fCBzaXplIFx1MDAzYyAwIHx8XG4mIzQzO1x0ICAgIGNoZWNrX2FkZF9vdmVyZmxvdygodTMyKXN0YXJ0LCAodTMyKXNpemUsIGFjY2Vzc19lbmQpKSB7XG4mIzQzO1x0XHR2ZXJib3NlKGVudixcbiYjNDM7XHRcdFx0XCYjMzQ7JXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWxsZCwgc2l6ZT0lZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cmVnX2FyZ19uYW1lKGVudiwgYXJnbm8pLCBidWZfaW5mbywgc3RhcnQsIHNpemUpO1xuJiM0MztcdFx0cmV0dXJuIC1FQUNDRVM7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC01MzUxLDEzICYjNDM7NTM3OCwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbiBcdFx0XHRcdCAgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXG4ge1xuJiM0MztcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFwmIzM0O3RyYWNlcG9pbnRcJiMzNDssIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7XG4mIzQzO1x0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCYjMzQ7dHJhY2Vwb2ludFwmIzM0OywgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxuJiM0MztcdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSAmIzQzOyBvZmYgJiM0Mzsgc2l6ZSxcbiYjNDM7XHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLFxuIFx0XHRcdFx0XHQgICAgZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtNTM3MCwxMyAmIzQzOzUzOTksMTUgQEAgc3RhdGljIGludCBjaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0ICAgICAgIHUzMiAqbWF4X2FjY2VzcylcbiB7XG4gXHRjb25zdCBjaGFyICpidWZfaW5mbyA9IHR5cGVfaXNfcmRvbmx5X21lbShyZWctXHUwMDNldHlwZSkgPyBcJiMzNDtyZG9ubHlcJiMzNDsgOiBcJiMzNDtyZHdyXCYjMzQ7O1xuJiM0MztcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuJiM0MztcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXG4mIzQzO1x0XHRcdFx0ICAgIFx1MDAyNmFjY2Vzc19lbmQpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdCptYXhfYWNjZXNzID0gbWF4KHJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlICYjNDM7IG9mZiAmIzQzOyBzaXplLCAqbWF4X2FjY2Vzcyk7XG4mIzQzO1x0Km1heF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgKm1heF9hY2Nlc3MpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xuaW5kZXggMTRhMDE3MmUyMTQxZTguLjQwNTVhNjQ0M2JjMjBhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcbkBAIC00Nyw0ICYjNDM7NDcsMjAgQEAgbDBfJT06XHQvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1xcXG4gXHQ6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0O3Jhd190cmFjZXBvaW50LndcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7cmF3X3RyYWNlcG9pbnRfd3JpdGFibGU6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXRcJiMzNDspXG4mIzQzO19fZmFpbHVyZVxuJiM0MztfX21zZyhcJiMzNDtpbnZhbGlkIG5lZ2F0aXZlIHRyYWNlcG9pbnQgYnVmZmVyIG9mZnNldFwmIzM0OylcbiYjNDM7X19uYWtlZCB2b2lkIHRyYWNlcG9pbnRfd3JpdGFibGVfcmVqZWN0X25lZ2F0aXZlX2NvbnN0X29mZnNldCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDtcdFx0XHRcdFx0XFxcbiYjNDM7XHRyNiA9ICoodTY0ICopKHIxICYjNDM7IDApO1x0XHRcdFx0XFxcbiYjNDM7XHRyNiAmIzQzOz0gLTg7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cjAgPSAqKHU2NCAqKShyNiAmIzQzOyAwKTtcdFx0XHRcdFxcXG4mIzQzO1x0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcJiMzNDtcdDpcbiYjNDM7XHQ6XG4mIzQzO1x0OiBfX2Nsb2JiZXJfYWxsKTtcbiYjNDM7fVxuJiM0MztcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mgd2hlbiBjaGVja2luZyBidWZmZXIgYWNjZXNzIGluIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgY29tcG9uZW50IChCUEYgdmVyaWZpZXIpIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2YzE4ZDM4ZTgxOWM1MjYxMGYwNWUyOWYwNGI4ZTJkYjNkMmI4NjI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAwNDowOTo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAyMWEzNjVkNDM2YTU5NS4uNDIxY2ExMThmY2JmZTYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTUzMjYsMTQgJiM0Mzs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkJCSBjb25zdCBjaGFyICpidWZfaW5mbywKIAkJCQkgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywKLQkJCQkgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpCiYjNDM7CQkJCSBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSwKJiM0MzsJCQkJIHUzMiAqYWNjZXNzX2VuZCkKIHsKJiM0MzsJczY0IHN0YXJ0LCB2YXJfb2ZmOwomIzQzOwogCWlmIChvZmYgJmx0OyAwKSB7CiAJCXZlcmJvc2UoZW52LAogCQkJJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxuJiMzNDssCiAJCQlyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpOwogCQlyZXR1cm4gLUVBQ0NFUzsKIAl9CiYjNDM7CiAJaWYgKCF0bnVtX2lzX2NvbnN0KHJlZy0mZ3Q7dmFyX29mZikpIHsKIAkJY2hhciB0bl9idWZbNDhdOwogCkBAIC01MzQ0LDYgJiM0Mzs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCXJldHVybiAtRUFDQ0VTOwogCX0KIAomIzQzOwl2YXJfb2ZmID0gKHM2NClyZWctJmd0O3Zhcl9vZmYudmFsdWU7CiYjNDM7CWlmIChjaGVja19hZGRfb3ZlcmZsb3codmFyX29mZiwgKHM2NClvZmYsICZhbXA7c3RhcnQpKSB7CiYjNDM7CQl2ZXJib3NlKGVudiwKJiM0MzsJCQkmIzM0OyVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcbiYjMzQ7LAomIzQzOwkJCXJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoc3RhcnQgJmx0OyAwKSB7CiYjNDM7CQl2ZXJib3NlKGVudiwKJiM0MzsJCQkmIzM0OyVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcbiYjMzQ7LAomIzQzOwkJCXJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoc3RhcnQgJmd0OyBVMzJfTUFYIHx8IHNpemUgJmx0OyAwIHx8CiYjNDM7CSAgICBjaGVja19hZGRfb3ZlcmZsb3coKHUzMilzdGFydCwgKHUzMilzaXplLCBhY2Nlc3NfZW5kKSkgewomIzQzOwkJdmVyYm9zZShlbnYsCiYjNDM7CQkJJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lbGxkLCBzaXplPSVkXG4mIzM0OywKJiM0MzsJCQlyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBzdGFydCwgc2l6ZSk7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwogCXJldHVybiAwOwogfQogCkBAIC01MzUxLDEzICYjNDM7NTM3OCwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCQkgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsCiAJCQkJICBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSkKIHsKJiM0MzsJdTMyIGFjY2Vzc19lbmQ7CiAJaW50IGVycjsKIAotCWVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsICYjMzQ7dHJhY2Vwb2ludCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUpOwomIzQzOwllcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCAmIzM0O3RyYWNlcG9pbnQmIzM0OywgcmVnLCBhcmdubywgb2ZmLCBzaXplLAomIzQzOwkJCQkgICAgJmFtcDthY2Nlc3NfZW5kKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JZW52LSZndDtwcm9nLSZndDthdXgtJmd0O21heF90cF9hY2Nlc3MgPSBtYXgocmVnLSZndDt2YXJfb2ZmLnZhbHVlICYjNDM7IG9mZiAmIzQzOyBzaXplLAomIzQzOwllbnYtJmd0O3Byb2ctJmd0O2F1eC0mZ3Q7bWF4X3RwX2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLAogCQkJCQkgICAgZW52LSZndDtwcm9nLSZndDthdXgtJmd0O21heF90cF9hY2Nlc3MpOwogCiAJcmV0dXJuIDA7CkBAIC01MzcwLDEzICYjNDM7NTM5OSwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCSAgICAgICB1MzIgKm1heF9hY2Nlc3MpCiB7CiAJY29uc3QgY2hhciAqYnVmX2luZm8gPSB0eXBlX2lzX3Jkb25seV9tZW0ocmVnLSZndDt0eXBlKSA/ICYjMzQ7cmRvbmx5JiMzNDsgOiAmIzM0O3Jkd3ImIzM0OzsKJiM0MzsJdTMyIGFjY2Vzc19lbmQ7CiAJaW50IGVycjsKIAotCWVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpOwomIzQzOwllcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplLAomIzQzOwkJCQkgICAgJmFtcDthY2Nlc3NfZW5kKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JKm1heF9hY2Nlc3MgPSBtYXgocmVnLSZndDt2YXJfb2ZmLnZhbHVlICYjNDM7IG9mZiAmIzQzOyBzaXplLCAqbWF4X2FjY2Vzcyk7CiYjNDM7CSptYXhfYWNjZXNzID0gbWF4KGFjY2Vzc19lbmQsICptYXhfYWNjZXNzKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jCmluZGV4IDE0YTAxNzJlMjE0MWU4Li40MDU1YTY0NDNiYzIwYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYwpAQCAtNDcsNCAmIzQzOzQ3LDIwIEBAIGwwXyU9OgkvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1wKIAk6IF9fY2xvYmJlcl9hbGwpOwogfQogCiYjNDM7U0VDKCYjMzQ7cmF3X3RyYWNlcG9pbnQudyYjMzQ7KQomIzQzO19fZGVzY3JpcHRpb24oJiMzNDtyYXdfdHJhY2Vwb2ludF93cml0YWJsZTogcmVqZWN0IG5lZ2F0aXZlIGNvbnN0IG9mZnNldCYjMzQ7KQomIzQzO19fZmFpbHVyZQomIzQzO19fbXNnKCYjMzQ7aW52YWxpZCBuZWdhdGl2ZSB0cmFjZXBvaW50IGJ1ZmZlciBvZmZzZXQmIzM0OykKJiM0MztfX25ha2VkIHZvaWQgdHJhY2Vwb2ludF93cml0YWJsZV9yZWplY3RfbmVnYXRpdmVfY29uc3Rfb2Zmc2V0KHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKCYjMzQ7CQkJCQlcCiYjNDM7CXI2ID0gKih1NjQgKikocjEgJiM0MzsgMCk7CQkJCVwKJiM0MzsJcjYgJiM0Mzs9IC04OwkJCQkJXAomIzQzOwlyMCA9ICoodTY0ICopKHI2ICYjNDM7IDApOwkJCQlcCiYjNDM7CWV4aXQ7CQkJCQkJXAomIzQzOyYjMzQ7CToKJiM0MzsJOgomIzQzOwk6IF9fY2xvYmJlcl9hbGwpOwomIzQzO30KJiM0MzsKIGNoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3MAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSXQmIzM5O3MgZ290IGEgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2UgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY2AuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhleSYjMzk7cmUgbW9kaWZ5aW5nIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgb2Zmc2V0cyBhbmQgb3ZlcmZsb3dzIOKAkyBjcml0aWNhbCBmb3IgZW5zdXJpbmcgQlBGIHByb2dyYW1zIGRvbiYjMzk7dCB3cmVhayBoYXZvYyBvbiBtZW1vcnkuCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIHVwZGF0ZXMgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgdG8gY29ycmVjdGx5IHVzZSB0aGUgbmV3IGBhY2Nlc3NfZW5kYCBvdXRwdXQgb2YgdGhlIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhlIEJQRiB2ZXJpZmllciBpcyBhICpjb3JlKiBjb21wb25lbnQgb2YgdGhlIGtlcm5lbCwgYW5kIGV2ZW4gc3VidGxlIGNoYW5nZXMgY2FuIGhhdmUgZmFyLXJlYWNoaW5nIGNvbnNlcXVlbmNlcywgZXNwZWNpYWxseSBpbiBob3cgaXQgaGFuZGxlcyBtZW1vcnkgYWNjZXNzLiBHaXZlbiBpdHMgaW1wb3J0YW5jZSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBmdXp6ZXIgY292ZXJhZ2UgaXMgKmVzc2VudGlhbCouIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgcmVhbGx5IG5lZWRzIHRvIGJlIGhpdCBoYXJkIHdpdGggZnV6emluZy4KCk15IG5leHQgaW1tZWRpYXRlIHRhc2sgaXMgZmlndXJpbmcgb3V0IHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTaW5jZSB0aGlzIGludm9sdmVzIHRoZSBCUEYgdmVyaWZpZXIsIG15IGRlZmF1bHQgYXNzdW1wdGlvbiBpcyB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIHdpbGwgYmUgdGhlIGtleS4gSG93ZXZlciwgaXQmIzM5O3MgYWx3YXlzIHdpc2UgdG8gYmUgdGhvcm91Z2guCgpUbyBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZywgSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBmb3Igb2NjdXJyZW5jZXMgb2YgZWl0aGVyIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIG9yIGBjaGVja190cF9idWZmZXJfYWNjZXNzYC4gVGhhdCBzaG91bGQgcXVpY2tseSB1bmNvdmVyIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG92ZXJsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fY2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI3LVx0XHRcdFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Mzc3PXN0YXRpYyBpbnQgY2hlY2tfdHBfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzODQ6XHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcJiMzNDt0cmFjZXBvaW50XCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4NS1cdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM5NT1zdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwNC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NDA1Olx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA2LVx0XHRcdFx0ICAgIFx1MDAyNmFjY2Vzc19lbmQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIG1vZGlmaWNhdGlvbnMuCgoqKkFuYWx5emluZyB0aGUgQnVmZmVyIEFjY2VzcyBGdW5jdGlvbnMqKgoKQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIG9uIHRocmVlIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHk6IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIENsZWFybHksIHRoZXNlIGFyZSBhbGwgaW52b2x2ZWQgaW4gY29udHJvbGxpbmcgYW5kIHZlcmlmeWluZyBhY2Nlc3MgdG8gc29tZSBzb3J0IG9mIGJ1ZmZlciB3aXRoaW4gdGhlIHN5c3RlbSwgbGlrZWx5IHJlbGF0ZWQgdG8gZUJQRi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29udGV4dCBvZiB3aGVyZSB0aGVzZSBhcmUgdXNlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBkaWZmZXJlbnRpYXRpb24gYmV0d2VlbiB0aGVtIG1pZ2h0IGJlIGJhc2VkIG9uIGZhY3RvcnMgbGlrZToKCiogICAqKlVuZGVybHlpbmcgVGFyZ2V0OioqIFRoZSB1c2Ugb2YgYHRwYCBpbiBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgbGlrZWx5IG1lYW5zIGl0JiMzOTtzIHNwZWNpZmljIHRvIHRyYWNlcG9pbnQgZGF0YSBzdHJ1Y3R1cmVzLiBgX19jaGVja19idWZmZXJfYWNjZXNzYCBtaWdodCBzdWdnZXN0IGEgbW9yZSBpbnRlcm5hbCwgbG93LWxldmVsIHZhcmlhbnQuIGBjaGVja19idWZmZXJfYWNjZXNzYCBpcyBsaWtlbHkgYSBtb3JlIGdlbmVyYWwtcHVycG9zZSByb3V0aW5lLgoqICAgKipTZWN1cml0eSBDb250ZXh0OioqIFRoZXJlIGNvdWxkIGJlIGRpZmZlcmVudCBzZWN1cml0eSBsZXZlbHMgb3IgYWNjZXNzIHJ1bGVzIGF0IHBsYXkuIFBlcmhhcHMgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AgaXMgZm9yIGhpZ2hseSBwcml2aWxlZ2VkIGNvZGUgb3IgZm9yIGludGVybmFsIGtlcm5lbCBzdHJ1Y3R1cmVzLCB3aGlsZSBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgaXMgZm9yIHVzZXItc3BhY2UgcHJvZ3JhbXMgd2l0aCBzb21lIGxldmVsIG9mIHRydXN0LgoqICAgKipWZXJpZmljYXRpb24gU3RyYXRlZ3k6KiogRWFjaCBmdW5jdGlvbiBtaWdodCBlbXBsb3kgZGlmZmVyZW50IGFjY2VzcyBjb250cm9sIG1lY2hhbmlzbXMuIFdlIG1pZ2h0IHNlZSB0aGluZ3MgbGlrZSByYW5nZSBjaGVja3MsIHBlcm1pc3Npb24gY2hlY2tzLCBvciBzaXplIGxpbWl0YXRpb25zIGVuZm9yY2VkLgoKR2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlIHRvIEJQRiwgYSBwcmltYXJ5IGNvbmNlcm4gd2lsbCBiZSBwcmV2ZW50aW5nIGJ1ZmZlciBvdmVyZmxvd3MsIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhbmQgZ2VuZXJhbGx5IGVuc3VyaW5nIHRoZSBpbnRlZ3JpdHkgYW5kIHNhZmV0eSBvZiB0aGUga2VybmVsLiBUaGlzIGlzIGVzcGVjaWFsbHkgY3JpdGljYWwgc2luY2UgQlBGIGFsbG93cyB1bnRydXN0ZWQgY29kZSB0byBydW4gd2l0aGluIHRoZSBrZXJuZWwuCgpOb3csIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqYWN0dWFsbHkqIGNoYW5naW5nLCBJIG5lZWQgdG8gbG9vayBhdCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgaW5mbHVlbmNlZCBvciBuZWVkZWQgZm9yIHRoZXNlIGFjY2VzcyBjaGVja3M/IEFyZSB0aGVzZSBuZXcgZmVhdHVyZXMgYmVpbmcgYWRkZWQsIG9yIGV4aXN0aW5nIGFjY2VzcyBzdHJhdGVnaWVzIGJlaW5nIG1vZGlmaWVkPyBBcmUgdGhlcmUgYW55IGNvbmZpZyBvcHRpb25zIHRoYXQgaW5mbHVlbmNlIHRoZSB3YXkgdGhlc2UgZnVuY3Rpb25zIGJlaGF2ZSwgc3VjaCBhcyBkaWZmZXJlbnQgbGV2ZWxzIG9mIGJ1ZmZlciBzaXplIHZhbGlkYXRpb24gb3IgbW9yZSBzdHJpbmdlbnQgY2hlY2tzIGVuYWJsZWQ/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb250ZXh0LCBhbmQgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczoqKiBBcmUgdGhlc2UgY2hhbmdlcyBjb250aW5nZW50IG9uIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IChlLmcuLCBgQ09ORklHX0JQRl9KSVRgLCBgQ09ORklHX0JQRl9FVkVOVFNgLCBvciBvdGhlciByZWxhdGVkIHNldHRpbmdzKS4KKiAgICoqUGVyZm9ybWFuY2UgVHJhZGVvZmZzOioqIElmIHRoZXJlIGFyZSBuZXcgYnVmZmVyIGFjY2VzcyBjaGVja3MsIGFyZSB0aGVyZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnM/IEFyZSB0aGVyZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYWRqdXN0IHRoZSBzdHJpY3RuZXNzIG9mIHRoZSBjaGVja3MgdG8gYmFsYW5jZSBzZWN1cml0eSBhbmQgc3BlZWQ/CiogICAqKlNlY3VyaXR5IExldmVsczoqKiBBcmUgdGhlcmUgbmV3IG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBkZWdyZWUgb2Ygc2VjdXJpdHk/IEFyZSB3ZSBub3cgYWJsZSB0byB0aWdodGVuIHRoZSBjb250cm9scz8KKiAgICoqQ29tcGF0aWJpbGl0eSBJc3N1ZXM6KiogQ291bGQgdGhlc2UgbW9kaWZpY2F0aW9ucyBicmVhayBleGlzdGluZyBlQlBGIHByb2dyYW1zIG9yIHJlcXVpcmUgcmVjb21waWxhdGlvbj8gSWYgc28sIHdoYXQgYXJlIHRoZSBjb21wYXRpYmlsaXR5IG9wdGlvbnM/CgpCYXNpY2FsbHksIEkgbmVlZCB0aGUgY29udGV4dCBwcm92aWRlZCBieSBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBmdWxseSBncmFzcCB0aGUgc2NvcGUgYW5kIGltcGFjdCBvZiB0aGVzZSBidWZmZXIgYWNjZXNzIGZ1bmN0aW9uIG1vZGlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIFRyYWNlcG9pbnQgQnVmZmVyIEFjY2VzcyoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgcHJpbWFyeSB0aGluZyB0byBjb25zaWRlciBoZXJlIGlzIGRlZmluaXRlbHkgdGhlIGBCUEZfU1lTQ0FMTGAgbWVjaGFuaXNtLiBUaGF0JiMzOTtzIHRoZSBjb3JlLiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoOyBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZS4gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gU28sIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY2hlY2ssIGFuZCBJIG1lYW4gKnJlYWxseSogY2hlY2ssIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBzZXR0aW5ncywgZm9yIGBjaGVja190cF9idWZmZXJfYWNjZXNzYC4gR290dGEgYmUgbWV0aWN1bG91cywgZXNwZWNpYWxseSB3aXRoIHNvbWV0aGluZyB0aGF0IHRvdWNoZXMgbWVtb3J5IGFjY2Vzcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja190cF9idWZmZXJfYWNjZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01MzI2PXN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM3NzpzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzc4LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MTAxPXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMDktXHR9IGVsc2UgaWYgKHJlZy1cdTAwM2V0eXBlID09IFBUUl9UT19UUF9CVUZGRVIpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2MzEwOlx0XHRlcnIgPSBjaGVja190cF9idWZmZXJfYWNjZXNzKGVudiwgcmVnLCBhcmdubywgb2ZmLCBzaXplKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzExLVx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgdCA9PSBCUEZfUkVBRCBcdTAwMjZcdTAwMjYgdmFsdWVfcmVnbm8gXHUwMDNlPSAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEJ1ZmZlciBBY2Nlc3MgRnVuY3Rpb24qKgoKSG1tLCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuLi4gbGV0JiMzOTtzIHNlZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgaW1wbGljYXRpb25zLiBJcyB0aGlzIGFib3V0IHZlcmlmeWluZyByZWFkL3dyaXRlIHBlcm1pc3Npb25zPyBBcmUgd2UgZGVhbGluZyB3aXRoIGJvdW5kcyBjaGVja2luZyBvbiBwb2ludGVycywgb3IgcGVyaGFwcyBhY2Nlc3MgY29udHJvbCB3aXRoaW4gYSBzaGFyZWQgbWVtb3J5IHJlZ2lvbj8gSSBuZWVkIG1vcmUgY29udGV4dCB0byBiZSBzdXJlLCBidXQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBsaWtlbHkgcGxheXMgYSBjcml0aWNhbCByb2xlIGluIHByZXZlbnRpbmcgdnVsbmVyYWJpbGl0aWVzLgoKSSYjMzk7bSBwcm9iYWJseSBnb2luZyB0byBuZWVkIHRvIGxvb2sgaW50byBpdHMgaW1wbGVtZW50YXRpb24gdG8gc2VlIGlmIGl0JiMzOTtzIGhhbmRsaW5nIGNvcm5lciBjYXNlcyBncmFjZWZ1bGx5LCBzcGVjaWZpY2FsbHk6CgoqICAgKipJbnRlZ2VyIG92ZXJmbG93OioqIENvdWxkIHRoZXJlIGJlIGFuIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBieXBhc3NlcyBpbnRlbmRlZCBjaGVja3MgZm9yIGJ1ZmZlciBzaXplLgoqICAgKipSYWNlIGNvbmRpdGlvbnM6KiogSWYgd2UgYXJlIGluIGEgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudCwgaG93IGlzIHRoaXMgaGFuZGxlZCB0byBwcmV2ZW50IGNvcnJ1cHRpb24/CiogICAqKk9mZi1ieS1vbmUgZXJyb3JzOioqIENvdWxkIHRoZXJlIGJlIHN1YnRsZSBpbmRleGluZyBwcm9ibGVtcz8KKiAgICoqU2VjdXJpdHkgQ29udGV4dDoqKiBEb2VzIHRoaXMgZnVuY3Rpb24gY29uc2lkZXIgdGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGFjY2Vzc2luZyBwcm9jZXNzIG9yIHRocmVhZD8KClRoZXNlIGFyZSBhbGwgc3RhbmRhcmQgY29uc2lkZXJhdGlvbnMsIGJ1dCB3aXRob3V0IGtub3dpbmcgdGhlIHNwZWNpZmljcyBvZiB0aGlzIGZ1bmN0aW9uLCBJIGNhbiYjMzk7dCBiZWdpbiB0byBhc3Nlc3MgaXRzIGVmZmVjdGl2ZW5lc3MuIFRoZSBuYW1lIHN1Z2dlc3RzIGEgZ29vZCBmb3VuZGF0aW9uIGZvciByb2J1c3QgY29kZSwgYnV0IEkgbmVlZCB0byBzZWUgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbi4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gQXJlIHRoZXJlIGFueSBvdGhlciBhY2Nlc3MgY29udHJvbHMgaW4gcGxhY2UsIG9yIGlzIHRoaXMgdGhlIHByaW1hcnkgcHJvdGVjdGlvbj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI3LVx0XHRcdFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Mzc3PXN0YXRpYyBpbnQgY2hlY2tfdHBfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzODQ6XHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcJiMzNDt0cmFjZXBvaW50XCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4NS1cdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM5NC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzk1OnN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzOTYtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTQwNTpcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwNi1cdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjEwMT1zdGF0aWMgaW50IGNoZWNrX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzM1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjYzMzY6XHRcdGVyciA9IGNoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCBvZmYsIHNpemUsIGZhbHNlLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzctXHRcdFx0XHRcdCAgbWF4X2FjY2Vzcyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY3NjQ9c3RhdGljIGludCBjaGVja19oZWxwZXJfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODEyLVx0XHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgxMzpcdFx0cmV0dXJuIGNoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCAwLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MTQtXHRcdFx0XHRcdCAgIGFjY2Vzc19zaXplLCB6ZXJvX3NpemVfYWxsb3dlZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM3OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCUEYgVmVyaWZpZXIgRnVuY3Rpb25hbGl0eSBmb3IgUmF3IFRyYWNlcG9pbnQgV3JpdGUgQWNjZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBjaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIFRoZXNlIGFyZSBhbGwgY3J1Y2lhbCBwYXJ0cyBvZiB0aGUgQlBGIHZlcmlmaWVyLCBvYnZpb3VzbHkuIFRoZXkgZ2V0IGNhbGxlZCBkdXJpbmcgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzIG9mIGEgQlBGIHByb2dyYW0g4oCTIG1ha2luZyBzdXJlIGV2ZXJ5dGhpbmcgaXMgc2FmZSBhbmQgc291bmQgYmVmb3JlIGl0IHJ1bnMuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgdGhlIGNvbmZpZ3VyYXRpb24sIHByaW1hcmlseSBkcml2ZW4gYnkgYEJQRl9TWVNDQUxMYCwgdGhhdCYjMzk7cyB0aGUgbWFpbiBwb2ludC4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zPyBFc3BlY2lhbGx5IHJlbGF0ZWQgdG8gd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLiBUaGUgdGVzdCBjYXNlIEkmIzM5O20gcmV2aWV3aW5nIGxldmVyYWdlcyBgcmF3X3RyYWNlcG9pbnQud2AsIHNvIEkgbmVlZCB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBsaW5rZWQgdG8gd3JpdGUgYWNjZXNzIHdpdGhpbiByYXcgdHJhY2Vwb2ludHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbiB0aGlzIGNhc2UsIHJlbGF0aW5nIHRvIHdyaXRhYmxlIHJhdyB0cmFjZXBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9FVkVOVFMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTQtXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NzQKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJiMzOTttIHRyeWluZyB0byBvcHRpbWl6ZSB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gdGhlIGN1cnJlbnQgZGlyZWN0aW9uIHNlZW1zIHNvdW5kLiBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYEJQRl9FVkVOVFNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyBhbmQgaW5zdHJ1bWVudGF0aW9uLiBOb3csIEkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfRVZFTlRTYCwgZW5zdXJpbmcgdGhlcmUgYXJlIG5vIHVuaW50ZW5kZWQgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcy4gVGhlIGdvYWwgaXMgYSBsZWFuLCBlZmZpY2llbnQgY29uZmlndXJhdGlvbiwgc28gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJwbGF5IG9mIHRoZXNlIGZlYXR1cmVzIGlzIGNyaXRpY2FsLgoKUmVnYXJkaW5nIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGxvb2sgdG8gYmU6IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIFRoZXNlIHN5bWJvbHMgYXJlIG9idmlvdXNseSBpbXBvcnRhbnQgYW5kIHJlbGF0ZSB0byBtZW1vcnkgYWNjZXNzIGNoZWNrcy4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoZW0gY2xvc2VseSB0byB1bmRlcnN0YW5kIGhvdyBgQlBGX0VWRU5UU2AgYW5kIGBCUEZfU1lTQ0FMTGAgbWlnaHQgaW5mbHVlbmNlIHRoZWlyIGJlaGF2aW9yIG9yIHRyaWdnZXIgYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLiBBcmUgdGhlcmUgYW55IGV4aXN0aW5nIGJ1ZyByZXBvcnRzPyBBbnkga25vd24gaW50ZXJhY3Rpb25zIGluIHNpbWlsYXIgY29uZmlndXJhdGlvbnM/CgpGaW5hbGx5LCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgaWYgdGhlcmUgYXJlICpvdGhlciogcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYWxzbyBpbXBhY3QgcGVyZm9ybWFuY2Ugb3IgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIGEgaG9saXN0aWMgdmlldyB0byBlbnN1cmUgdGhhdCBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IGNydWNpYWwgcGFyYW1ldGVycyBvciBpbnRlcmFjdGlvbnMgdGhhdCBjb3VsZCBjb250cmlidXRlIHRvLCBvciBkZXRyYWN0IGZyb20sIHRoZSBvdmVyYWxsIGRlc2lnbiBnb2Fscy4gSXQmIzM5O3MgYSBjb21wcmVoZW5zaXZlIGFwcHJvYWNoIHRoYXQmIzM5O3MgbmVlZGVkIGhlcmUsIGFzIGFsd2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmF3X3RyYWNlcG9pbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkyNyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9icGYvZHJnbi5yc3Q9MzU9TGlzdCBCUEYgcHJvZ3JhbXMgKGZ1bGwgbmFtZXMgYXJlIG9idGFpbmVkIGZyb20gQlRGKTo6XG4tLVxuRG9jdW1lbnRhdGlvbi9icGYvZHJnbi5yc3QtMzktICAgICAgNDYzMjogQlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS19BRERSICAgdHdfaXB0X2JpbmRcbkRvY3VtZW50YXRpb24vYnBmL2RyZ24ucnN0OjQwOiAgICAgNDk0NjQ6IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQgICAgIHJhd190cmFjZXBvaW50X19zY2hlZF9wcm9jZXNzX2V4aXRcbkRvY3VtZW50YXRpb24vYnBmL2RyZ24ucnN0LTQxLVxuLS1cbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdD0xOD1kZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gdGhlIGZvb3Rub3Rlcy5cbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQ1LSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE0Njp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cmFjZXBvaW50LncmIzQzO2BgICAgICAgICAgICAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0Ny0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0Mztcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQ5LSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE1MDp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cmFjZXBvaW50JiM0MztgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE1MS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0Mztcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMjQ4LS4uIFsjbHNtXSBUaGUgYGBsc21gYCBhdHRhY2htZW50IGZvcm1hdCBpcyBgYGxzbVsuc10vXHUwMDNjaG9va1x1MDAzZWBgLlxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjI0OTouLiBbI3Jhd3RwXSBUaGUgYGByYXdfdHBgYCBhdHRhY2ggZm9ybWF0IGlzIGBgcmF3X3RyYWNlcG9pbnRbLnddL1x1MDAzY3RyYWNlcG9pbnRcdTAwM2VgYC5cbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0yNTAtLi4gWyN0Y19sZWdhY3ldIFRoZSBgYHRjYGAsIGBgY2xhc3NpZmllcmBgIGFuZCBgYGFjdGlvbmBgIGF0dGFjaCB0eXBlcyBhcmUgZGVwcmVjYXRlZCwgdXNlXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD00Mz1CUEZfUFJPR19UWVBFKEJQRl9QUk9HX1RZUEVfUEVSRl9FVkVOVCwgcGVyZl9ldmVudCxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNDQtXHQgICAgICBzdHJ1Y3QgYnBmX3BlcmZfZXZlbnRfZGF0YSwgc3RydWN0IGJwZl9wZXJmX2V2ZW50X2RhdGFfa2VybilcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDU6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5ULCByYXdfdHJhY2Vwb2ludCxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDY6XHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDc6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCByYXdfdHJhY2Vwb2ludF93cml0YWJsZSxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDg6XHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNDktQlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1RSQUNJTkcsIHRyYWNpbmcsXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD0xMzc9QlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9SSEFTSCwgcmh0YWJfbWFwX29wcylcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaDoxMzk6QlBGX0xJTktfVFlQRShCUEZfTElOS19UWVBFX1JBV19UUkFDRVBPSU5ULCByYXdfdHJhY2Vwb2ludClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTQwLUJQRl9MSU5LX1RZUEUoQlBGX0xJTktfVFlQRV9UUkFDSU5HLCB0cmFjaW5nKVxuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9NzgwPWludCBicGZfcHJvYmVfdW5yZWdpc3RlcihzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cCwgc3RydWN0IGJwZl9yYXdfdHBfbGluayAqbGluayk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc4MS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzgyOnN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJhY2Vwb2ludChjb25zdCBjaGFyICpuYW1lKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzgzOnZvaWQgYnBmX3B1dF9yYXdfdHJhY2Vwb2ludChzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cCk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc4NC1pbnQgYnBmX2dldF9wZXJmX2V2ZW50X2luZm8oY29uc3Qgc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB1MzIgKnByb2dfaWQsXG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD04MjA9c3RhdGljIGlubGluZSBpbnQgYnBmX3Byb2JlX3VucmVnaXN0ZXIoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHAsIHN0cnVjdCBicGZfcmF3X3RwX2xpbmsgKmxpbmspXG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04MjMtfVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4MjQ6c3RhdGljIGlubGluZSBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJwZl9nZXRfcmF3X3RyYWNlcG9pbnQoY29uc3QgY2hhciAqbmFtZSlcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODI1LXtcbi0tXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTgyNy19XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjgyODpzdGF0aWMgaW5saW5lIHZvaWQgYnBmX3B1dF9yYXdfdHJhY2Vwb2ludChzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cClcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODI5LXtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9MTUyNz11bmlvbiBicGZfYXR0ciB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE3NzMtXHRcdF9fYWxpZ25lZF91NjRcdGNvb2tpZTtcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxNzc0Olx0fSByYXdfdHJhY2Vwb2ludDtcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNzc1LVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC00MjkyLSAqIFx0XHRUaGlzIGhlbHBlciBpcyBzaW1pbGFyIHRvICoqYnBmX3BlcmZfZXZlbnRfb3V0cHV0KipcXCAoKSBidXRcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDo0MjkzOiAqIFx0XHRyZXN0cmljdGVkIHRvIHJhd190cmFjZXBvaW50IGJwZiBwcm9ncmFtcy5cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC00Mjk0LSAqIFx0UmV0dXJuXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQ0NDAtICpcdFx0VGhpcyBoZWxwZXIgaXMgc2ltaWxhciB0byAqKmJwZl9wZXJmX2V2ZW50b3V0cHV0KipcXCAoKSBidXRcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDo0NDQxOiAqXHRcdHJlc3RyaWN0ZWQgdG8gcmF3X3RyYWNlcG9pbnQgYnBmIHByb2dyYW1zLlxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQ0NDItICpcdFJldHVyblxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD02NzYzPXN0cnVjdCBicGZfbGlua19pbmZvIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjc3Mi1cdFx0XHRfX3U2NCBjb29raWU7XG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Njc3MzpcdFx0fSByYXdfdHJhY2Vwb2ludDtcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC02Nzc0LVx0XHRzdHJ1Y3Qge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD03MzA5PXN0cnVjdCBicGZfY2dyb3VwX2Rldl9jdHgge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC03MzE1LVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjczMTY6c3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzIHtcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC03MzE3LVx0X191NjQgYXJnc1swXTtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTYyMTY9c3RhdGljIGludCBidGZfdmFsaWRhdGVfcHJvZ19jdHhfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi9idGYuYy02MjgzLVx0XHRcdGlmIChfX2J0Zl90eXBlX2lzX3N0cnVjdCh0KSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvYnRmLmM6NjI4NDpcdFx0XHQgICAgc3RyY21wKHRuYW1lLCBcJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfYXJnc1wmIzM0OykgPT0gMClcbmtlcm5lbC9icGYvYnRmLmMtNjI4NS1cdFx0XHRcdHJldHVybiAwO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTM2ODk9c3RhdGljIGludCBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc4My1cdCAqIC0gaWYgdGd0X3Byb2cgPT0gTlVMTCB3aGVuIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZCB1c2luZyB0aGUgb2xkXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozNzg0Olx0ICogICByYXdfdHJhY2Vwb2ludF9vcGVuIEFQSSwgYW5kIHdlIG5lZWQgYSB0YXJnZXQgZnJvbSBwcm9nLVx1MDAzZWF1eFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc4NS1cdCAqXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzkwOD1zdGF0aWMgdm9pZCBicGZfcmF3X3RwX2xpbmtfcmVsZWFzZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzkxMy1cdGJwZl9wcm9iZV91bnJlZ2lzdGVyKHJhd190cC1cdTAwM2VidHAsIHJhd190cCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozOTE0Olx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChyYXdfdHAtXHUwMDNlYnRwKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5MTUtfVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTM5NTc9c3RhdGljIGludCBicGZfcmF3X3RwX2xpbmtfZmlsbF9saW5rX2luZm8oY29uc3Qgc3RydWN0IGJwZl9saW5rICpsaW5rLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NjEtXHRcdGNvbnRhaW5lcl9vZihsaW5rLCBzdHJ1Y3QgYnBmX3Jhd190cF9saW5rLCBsaW5rKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5NjI6XHRjaGFyIF9fdXNlciAqdWJ1ZiA9IHU2NF90b191c2VyX3B0cihpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LnRwX25hbWUpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMzk2My1cdGNvbnN0IGNoYXIgKnRwX25hbWUgPSByYXdfdHBfbGluay1cdTAwM2VidHAtXHUwMDNldHAtXHUwMDNlbmFtZTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5NjQ6XHR1MzIgdWxlbiA9IGluZm8tXHUwMDNlcmF3X3RyYWNlcG9pbnQudHBfbmFtZV9sZW47XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zOTY1LVx0c2l6ZV90IHRwX2xlbiA9IHN0cmxlbih0cF9uYW1lKTtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zOTY5LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mzk3MDpcdGluZm8tXHUwMDNlcmF3X3RyYWNlcG9pbnQudHBfbmFtZV9sZW4gPSB0cF9sZW4gJiM0MzsgMTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5NzE6XHRpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZSA9IHJhd190cF9saW5rLVx1MDAzZWNvb2tpZTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NzItXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDM1Mj1zdGF0aWMgaW50IGJwZl9yYXdfdHBfbGlua19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzODgtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0Mzg5Olx0YnRwID0gYnBmX2dldF9yYXdfdHJhY2Vwb2ludCh0cF9uYW1lKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzOTAtXHRpZiAoIWJ0cClcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzkzLVx0aWYgKHByb2ctXHUwMDNlc2xlZXBhYmxlIFx1MDAyNlx1MDAyNiAhdHJhY2Vwb2ludF9pc19mYXVsdGFibGUoYnRwLVx1MDAzZXRwKSkge1xua2VybmVsL2JwZi9zeXNjYWxsLmM6NDM5NDpcdFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM5NS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQyMy1vdXRfcHV0X2J0cDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0MjQ6XHRicGZfcHV0X3Jhd190cmFjZXBvaW50KGJ0cCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDI1LVx0cmV0dXJuIGVycjtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDI3LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQyODojZGVmaW5lIEJQRl9SQVdfVFJBQ0VQT0lOVF9PUEVOX0xBU1RfRklFTEQgcmF3X3RyYWNlcG9pbnQuY29va2llXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDI5LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQzMDpzdGF0aWMgaW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQzMS17XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQzOS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0NDA6XHRwcm9nID0gYnBmX3Byb2dfZ2V0KGF0dHItXHUwMDNlcmF3X3RyYWNlcG9pbnQucHJvZ19mZCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQxLVx0aWYgKElTX0VSUihwcm9nKSlcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQzLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQ0NDpcdHRwX25hbWUgPSB1NjRfdG9fdXNlcl9wdHIoYXR0ci1cdTAwM2VyYXdfdHJhY2Vwb2ludC5uYW1lKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0NDU6XHRjb29raWUgPSBhdHRyLVx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQ0NDYtXHRmZCA9IGJwZl9yYXdfdHBfbGlua19hdHRhY2gocHJvZywgdHBfbmFtZSwgY29va2llLCBwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKTtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02MzU0PXN0YXRpYyBpbnQgX19zeXNfYnBmKGVudW0gYnBmX2NtZCBjbWQsIGJwZnB0cl90IHVhdHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02NDU5LVx0Y2FzZSBCUEZfUkFXX1RSQUNFUE9JTlRfT1BFTjpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY0NjA6XHRcdGVyciA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFx1MDAyNmF0dHIpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtNjQ2MS1cdFx0YnJlYWs7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4ODk1PWludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA2Ni1cdFx0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwNjc6XHRcdGJ0cCA9IGJwZl9nZXRfcmF3X3RyYWNlcG9pbnQodG5hbWUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDY4LVx0XHRpZiAoIWJ0cClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNzItXHRcdFx0XHR0bmFtZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwNzM6XHRcdFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDc0LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA3Ny1cdFx0XHRcdFx0dHJhY2Vfc3ltYm9sKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTA3ODpcdFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDc5LVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz01NT1zdGF0aWMgREVGSU5FX01VVEVYKGJwZl9tb2R1bGVfbXV0ZXgpO1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTU2LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjU3OnN0YXRpYyBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJwZl9nZXRfcmF3X3RyYWNlcG9pbnRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtNTgte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy03OC0jZWxzZVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjc5OnN0YXRpYyBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJwZl9nZXRfcmF3X3RyYWNlcG9pbnRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtODAte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xNjIwPXN0YXRpYyB2b2lkIHB1dF9icGZfcmF3X3RwX3JlZ3Modm9pZClcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTYyNC1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjI1OkJQRl9DQUxMXzUoYnBmX3BlcmZfZXZlbnRfb3V0cHV0X3Jhd190cCwgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzICosIGFyZ3MsXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTYyNi1cdCAgIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBmbGFncywgdm9pZCAqLCBkYXRhLCB1NjQsIHNpemUpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE2NTQ9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfeGRwX2dldF9idWZmX2xlbl90cmFjZV9wcm90bztcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjU1LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2NTY6QlBGX0NBTExfMyhicGZfZ2V0X3N0YWNraWRfcmF3X3RwLCBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MgKiwgYXJncyxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjU3LVx0ICAgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB1NjQsIGZsYWdzKVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xNjczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvX3Jhd190cCA9IHtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY4MS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjgyOkJQRl9DQUxMXzQoYnBmX2dldF9zdGFja19yYXdfdHAsIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncyAqLCBhcmdzLFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2ODMtXHQgICB2b2lkICosIGJ1ZiwgdTMyLCBzaXplLCB1NjQsIGZsYWdzKVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xODE2PWludCBfX3dlYWsgYnBmX3Byb2dfdGVzdF9ydW5fdHJhY2luZyhzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4MjItXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTgyMzpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyByYXdfdHJhY2Vwb2ludF92ZXJpZmllcl9vcHMgPSB7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTgyNC1cdC5nZXRfZnVuY19wcm90byAgPSByYXdfdHBfcHJvZ19mdW5jX3Byb3RvLFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODI3LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4Mjg6Y29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyByYXdfdHJhY2Vwb2ludF9wcm9nX29wcyA9IHtcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODI5LSNpZmRlZiBDT05GSUdfTkVUXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE4NDM9c3RhdGljIGJvb2wgcmF3X3RwX3dyaXRhYmxlX3Byb2dfaXNfdmFsaWRfYWNjZXNzKGludCBvZmYsIGludCBzaXplLFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODU1LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4NTY6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfdmVyaWZpZXJfb3BzID0ge1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NTctXHQuZ2V0X2Z1bmNfcHJvdG8gID0gcmF3X3RwX3Byb2dfZnVuY19wcm90byxcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2MC1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODYxOmNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfcHJvZ19vcHMgPSB7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2Mi19O1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0yMDgwPWV4dGVybiBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgX19zdG9wX19icGZfcmF3X3RwW107XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjA4MS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoyMDgyOnN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJhY2Vwb2ludChjb25zdCBjaGFyICpuYW1lKVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwODMte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yMDkwLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjIwOTE6XHRyZXR1cm4gYnBmX2dldF9yYXdfdHJhY2Vwb2ludF9tb2R1bGUobmFtZSk7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjA5Mi19XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjA5My1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoyMDk0OnZvaWQgYnBmX3B1dF9yYXdfdHJhY2Vwb2ludChzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cClcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yMDk1LXtcbi0tXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcGVyZi5yc3Q9MzI9YnBmdG9vbCBwZXJmIHsgc2hvdyB8IGxpc3QgfVxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXBlcmYucnN0OjMzOiAgICBMaXN0IGFsbCByYXdfdHJhY2Vwb2ludCwgdHJhY2Vwb2ludCwga3Byb2JlIGF0dGFjaG1lbnQgaW4gdGhlIHN5c3RlbS5cbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdC0zNC1cbi0tXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcGVyZi5yc3QtMzYtICAgIGZvbGxvd2VkIGJ5IGJwZiBwcm9ncmFtIGlkLCBhdHRhY2htZW50IGluZm9ybWF0aW9uLCBhbmQgYXR0YWNobWVudCBwb2ludC5cbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdDozNzogICAgVGhlIGF0dGFjaG1lbnQgcG9pbnQgZm9yIHJhd190cmFjZXBvaW50L3RyYWNlcG9pbnQgaXMgdGhlIHRyYWNlIHByb2JlIG5hbWUuXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcGVyZi5yc3QtMzgtICAgIFRoZSBhdHRhY2htZW50IHBvaW50IGZvciBrW3JldF1wcm9iZSBpcyBlaXRoZXIgc3ltYm9sIG5hbWUgYW5kIG9mZnNldCwgb3IgYVxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wcm9nLnJzdD0yNz1QUk9HIENPTU1BTkRTXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTQ2LXwgICAgICoqc29ja2V0KiogfCAqKmtwcm9iZSoqIHwgKiprcmV0cHJvYmUqKiB8ICoqY2xhc3NpZmllcioqIHwgKiphY3Rpb24qKiB8XG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q6NDc6fCAgICAgKip0cmFjZXBvaW50KiogfCAqKnJhd190cmFjZXBvaW50KiogfCAqKnhkcCoqIHwgKipwZXJmX2V2ZW50KiogfCAqKmNncm91cC9za2IqKiB8XG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3QtNDgtfCAgICAgKipjZ3JvdXAvc29jayoqIHwgKipjZ3JvdXAvZGV2KiogfCAqKmx3dF9pbioqIHwgKipsd3Rfb3V0KiogfCAqKmx3dF94bWl0KiogfFxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL2Jhc2gtY29tcGxldGlvbi9icGZ0b29sPTI1Nj1fYnBmdG9vbCgpXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvYmFzaC1jb21wbGV0aW9uL2JwZnRvb2wtNDkwLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3JldHByb2JlIGNsYXNzaWZpZXIgZmxvd19kaXNzZWN0b3IgXFxcbnRvb2xzL2JwZi9icGZ0b29sL2Jhc2gtY29tcGxldGlvbi9icGZ0b29sOjQ5MTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiB0cmFjZXBvaW50IHJhd190cmFjZXBvaW50IFxcXG50b29scy9icGYvYnBmdG9vbC9iYXNoLWNvbXBsZXRpb24vYnBmdG9vbC00OTItICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZHAgcGVyZl9ldmVudCBjZ3JvdXAvc2tiIGNncm91cC9zb2NrIFxcXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmM9NTYyPXN0YXRpYyB2b2lkIGNvZGVnZW5fYXR0YWNoX2RldGFjaChzdHJ1Y3QgYnBmX29iamVjdCAqb2JqLCBjb25zdCBjaGFyICpvYmpfbmFtZSlcbi0tXG50b29scy9icGYvYnBmdG9vbC9nZW4uYy01ODAtXHRcdFx0dHBfbmFtZSA9IHN0cmNocihicGZfcHJvZ3JhbV9fc2VjdGlvbl9uYW1lKHByb2cpLCAmIzM5Oy8mIzM5OykgJiM0MzsgMTtcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jOjU4MTpcdFx0XHRwcmludGYoXCYjMzQ7XFx0aW50IGZkID0gc2tlbF9yYXdfdHJhY2Vwb2ludF9vcGVuKFxcXCYjMzQ7JXNcXFwmIzM0OywgcHJvZ19mZCk7XFxuXCYjMzQ7LCB0cF9uYW1lKTtcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jLTU4Mi1cdFx0XHRicmVhaztcbi0tXG50b29scy9icGYvYnBmdG9vbC9nZW4uYy01ODctXHRcdFx0ZWxzZVxudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmM6NTg4Olx0XHRcdFx0cHJpbnRmKFwmIzM0O1xcdGludCBmZCA9IHNrZWxfcmF3X3RyYWNlcG9pbnRfb3BlbihOVUxMLCBwcm9nX2ZkKTtcXG5cJiMzNDspO1xudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmMtNTg5LVx0XHRcdGJyZWFrO1xuLS1cbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYz01MTc9c3RhdGljIGludCBzaG93X2xpbmtfY2xvc2VfanNvbihpbnQgZmQsIHN0cnVjdCBicGZfbGlua19pbmZvICppbmZvKVxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYy01MjktXHRcdGpzb253X3N0cmluZ19maWVsZChqc29uX3d0ciwgXCYjMzQ7dHBfbmFtZVwmIzM0OyxcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo1MzA6XHRcdFx0XHQgICB1NjRfdG9fcHRyKGluZm8tXHUwMDNlcmF3X3RyYWNlcG9pbnQudHBfbmFtZSkpO1xudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjUzMTpcdFx0anNvbndfdWludF9maWVsZChqc29uX3d0ciwgXCYjMzQ7Y29va2llXCYjMzQ7LCBpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZSk7XG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtNTMyLVx0XHRicmVhaztcbi0tXG50b29scy9icGYvYnBmdG9vbC9saW5rLmM9OTE4PXN0YXRpYyBpbnQgc2hvd19saW5rX2Nsb3NlX3BsYWluKGludCBmZCwgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8pXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jLTkyOC1cdFx0cHJpbnRmKFwmIzM0O1xcblxcdHRwICYjMzk7JXMmIzM5OyAgXCYjMzQ7LFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjkyOTpcdFx0ICAgICAgIChjb25zdCBjaGFyICopdTY0X3RvX3B0cihpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LnRwX25hbWUpKTtcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo5MzA6XHRcdGlmIChpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZSlcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo5MzE6XHRcdFx0cHJpbnRmKFwmIzM0O2Nvb2tpZSAlbGx1ICBcJiMzNDssIGluZm8tXHUwMDNlcmF3X3RyYWNlcG9pbnQuY29va2llKTtcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYy05MzItXHRcdGJyZWFrO1xuLS1cbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYz0xMDI5PXN0YXRpYyBpbnQgZG9fc2hvd19saW5rKGludCBmZClcbi0tXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtMTA1MC1cdGlmIChpbmZvLnR5cGUgPT0gQlBGX0xJTktfVFlQRV9SQVdfVFJBQ0VQT0lOVCBcdTAwMjZcdTAwMjZcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzoxMDUxOlx0ICAgICFpbmZvLnJhd190cmFjZXBvaW50LnRwX25hbWUpIHtcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzoxMDUyOlx0XHRpbmZvLnJhd190cmFjZXBvaW50LnRwX25hbWUgPSBwdHJfdG9fdTY0KFx1MDAyNmJ1Zik7XG50b29scy9icGYvYnBmdG9vbC9saW5rLmM6MTA1MzpcdFx0aW5mby5yYXdfdHJhY2Vwb2ludC50cF9uYW1lX2xlbiA9IHNpemVvZihidWYpO1xudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jLTEwNTQtXHRcdGdvdG8gYWdhaW47XG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jPTY1PXN0YXRpYyB2b2lkIHByaW50X3BlcmZfanNvbihpbnQgcGlkLCBpbnQgZmQsIF9fdTMyIHByb2dfaWQsIF9fdTMyIGZkX3R5cGUsXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jLTczLVx0Y2FzZSBCUEZfRkRfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYzo3NDpcdFx0anNvbndfc3RyaW5nX2ZpZWxkKGpzb25fd3RyLCBcJiMzNDtmZF90eXBlXCYjMzQ7LCBcJiMzNDtyYXdfdHJhY2Vwb2ludFwmIzM0Oyk7XG50b29scy9icGYvYnBmdG9vbC9wZXJmLmMtNzUtXHRcdGpzb253X3N0cmluZ19maWVsZChqc29uX3d0ciwgXCYjMzQ7dHJhY2Vwb2ludFwmIzM0OywgYnVmKTtcbi0tXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmM9MTE1PXN0YXRpYyB2b2lkIHByaW50X3BlcmZfcGxhaW4oaW50IHBpZCwgaW50IGZkLCBfX3UzMiBwcm9nX2lkLCBfX3UzMiBmZF90eXBlLFxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYy0xMjAtXHRjYXNlIEJQRl9GRF9UWVBFX1JBV19UUkFDRVBPSU5UOlxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jOjEyMTpcdFx0cHJpbnRmKFwmIzM0O3Jhd190cmFjZXBvaW50ICAlc1xcblwmIzM0OywgYnVmKTtcbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYy0xMjItXHRcdGJyZWFrO1xuLS1cbnRvb2xzL2JwZi9icGZ0b29sL3Byb2cuYz0yNTQyPXN0YXRpYyBpbnQgZG9faGVscChpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jLTI1NzQtXHRcdFwmIzM0OyAgICAgICBUWVBFIDo9IHsgc29ja2V0IHwga3Byb2JlIHwga3JldHByb2JlIHwgY2xhc3NpZmllciB8IGFjdGlvbiB8XFxuXCYjMzQ7XG50b29scy9icGYvYnBmdG9vbC9wcm9nLmM6MjU3NTpcdFx0XCYjMzQ7ICAgICAgICAgICAgICAgICB0cmFjZXBvaW50IHwgcmF3X3RyYWNlcG9pbnQgfCB4ZHAgfCBwZXJmX2V2ZW50IHwgY2dyb3VwL3NrYiB8XFxuXCYjMzQ7XG50b29scy9icGYvYnBmdG9vbC9wcm9nLmMtMjU3Ni1cdFx0XCYjMzQ7ICAgICAgICAgICAgICAgICBjZ3JvdXAvc29jayB8IGNncm91cC9kZXYgfCBsd3RfaW4gfCBsd3Rfb3V0IHwgbHd0X3htaXQgfFxcblwmIzM0O1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTc3My1cdFx0X19hbGlnbmVkX3U2NFx0Y29va2llO1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjE3NzQ6XHR9IHJhd190cmFjZXBvaW50O1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE3NzUtXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQyOTItICogXHRcdFRoaXMgaGVscGVyIGlzIHNpbWlsYXIgdG8gKipicGZfcGVyZl9ldmVudF9vdXRwdXQqKlxcICgpIGJ1dFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjQyOTM6ICogXHRcdHJlc3RyaWN0ZWQgdG8gcmF3X3RyYWNlcG9pbnQgYnBmIHByb2dyYW1zLlxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQyOTQtICogXHRSZXR1cm5cbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNDQ0MC0gKlx0XHRUaGlzIGhlbHBlciBpcyBzaW1pbGFyIHRvICoqYnBmX3BlcmZfZXZlbnRvdXRwdXQqKlxcICgpIGJ1dFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjQ0NDE6ICpcdFx0cmVzdHJpY3RlZCB0byByYXdfdHJhY2Vwb2ludCBicGYgcHJvZ3JhbXMuXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNDQ0Mi0gKlx0UmV0dXJuXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTY3NjM9c3RydWN0IGJwZl9saW5rX2luZm8ge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC02NzcyLVx0XHRcdF9fdTY0IGNvb2tpZTtcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo2NzczOlx0XHR9IHJhd190cmFjZXBvaW50O1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTY3NzQtXHRcdHN0cnVjdCB7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTczMDk9c3RydWN0IGJwZl9jZ3JvdXBfZGV2X2N0eCB7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTczMTUtXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NzMxNjpzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3Mge1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTczMTctXHRfX3U2NCBhcmdzWzBdO1xuLS1cbnRvb2xzL2xpYi9icGYvYnBmLmM9NzgyPWludCBicGZfbGlua19jcmVhdGUoaW50IHByb2dfZmQsIGludCB0YXJnZXRfZmQsXG4tLVxudG9vbHMvbGliL2JwZi9icGYuYy05ODUtXHRjYXNlIEJQRl9NT0RJRllfUkVUVVJOOlxudG9vbHMvbGliL2JwZi9icGYuYzo5ODY6XHRcdHJldHVybiBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihOVUxMLCBwcm9nX2ZkKTtcbnRvb2xzL2xpYi9icGYvYnBmLmMtOTg3LVx0ZGVmYXVsdDpcbi0tXG50b29scy9saWIvYnBmL2JwZi5jPTEyODg9aW50IGJwZl9saW5rX2dldF9pbmZvX2J5X2ZkKGludCBsaW5rX2ZkLCBzdHJ1Y3QgYnBmX2xpbmtfaW5mbyAqaW5mbywgX191MzIgKmluZm9fbGVuKVxuLS1cbnRvb2xzL2xpYi9icGYvYnBmLmMtMTI5Mi1cbnRvb2xzL2xpYi9icGYvYnBmLmM6MTI5MzppbnQgYnBmX3Jhd190cmFjZXBvaW50X29wZW5fb3B0cyhpbnQgcHJvZ19mZCwgc3RydWN0IGJwZl9yYXdfdHBfb3B0cyAqb3B0cylcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTI5NC17XG50b29scy9saWIvYnBmL2JwZi5jOjEyOTU6XHRjb25zdCBzaXplX3QgYXR0cl9zeiA9IG9mZnNldG9mZW5kKHVuaW9uIGJwZl9hdHRyLCByYXdfdHJhY2Vwb2ludCk7XG50b29scy9saWIvYnBmL2JwZi5jLTEyOTYtXHR1bmlvbiBicGZfYXR0ciBhdHRyO1xuLS1cbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMwMi1cdG1lbXNldChcdTAwMjZhdHRyLCAwLCBhdHRyX3N6KTtcbnRvb2xzL2xpYi9icGYvYnBmLmM6MTMwMzpcdGF0dHIucmF3X3RyYWNlcG9pbnQucHJvZ19mZCA9IHByb2dfZmQ7XG50b29scy9saWIvYnBmL2JwZi5jOjEzMDQ6XHRhdHRyLnJhd190cmFjZXBvaW50Lm5hbWUgPSBwdHJfdG9fdTY0KE9QVFNfR0VUKG9wdHMsIHRwX25hbWUsIE5VTEwpKTtcbnRvb2xzL2xpYi9icGYvYnBmLmM6MTMwNTpcdGF0dHIucmF3X3RyYWNlcG9pbnQuY29va2llID0gT1BUU19HRVQob3B0cywgY29va2llLCAwKTtcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMwNi1cbi0tXG50b29scy9saWIvYnBmL2JwZi5jLTEzMTAtXG50b29scy9saWIvYnBmL2JwZi5jOjEzMTE6aW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwcm9nX2ZkKVxudG9vbHMvbGliL2JwZi9icGYuYy0xMzEyLXtcbi0tXG50b29scy9saWIvYnBmL2JwZi5jLTEzMTQtXG50b29scy9saWIvYnBmL2JwZi5jOjEzMTU6XHRyZXR1cm4gYnBmX3Jhd190cmFjZXBvaW50X29wZW5fb3B0cyhwcm9nX2ZkLCBcdTAwMjZvcHRzKTtcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMxNi19XG4tLVxudG9vbHMvbGliL2JwZi9icGYuaD02NjE9c3RydWN0IGJwZl9yYXdfdHBfb3B0cyB7XG4tLVxudG9vbHMvbGliL2JwZi9icGYuaC02NjgtXG50b29scy9saWIvYnBmL2JwZi5oOjY2OTpMSUJCUEZfQVBJIGludCBicGZfcmF3X3RyYWNlcG9pbnRfb3Blbl9vcHRzKGludCBwcm9nX2ZkLCBzdHJ1Y3QgYnBmX3Jhd190cF9vcHRzICpvcHRzKTtcbnRvb2xzL2xpYi9icGYvYnBmLmg6NjcwOkxJQkJQRl9BUEkgaW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwcm9nX2ZkKTtcbnRvb2xzL2xpYi9icGYvYnBmLmgtNjcxLUxJQkJQRl9BUEkgaW50IGJwZl90YXNrX2ZkX3F1ZXJ5KGludCBwaWQsIGludCBmZCwgX191MzIgZmxhZ3MsIGNoYXIgKmJ1Zixcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTE0ND1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGxpbmtfdHlwZV9uYW1lW10gPSB7XG50b29scy9saWIvYnBmL2xpYmJwZi5jLTE0NS1cdFtCUEZfTElOS19UWVBFX1VOU1BFQ11cdFx0XHQ9IFwmIzM0O3Vuc3BlY1wmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTQ2Olx0W0JQRl9MSU5LX1RZUEVfUkFXX1RSQUNFUE9JTlRdXHRcdD0gXCYjMzQ7cmF3X3RyYWNlcG9pbnRcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTE0Ny1cdFtCUEZfTElOS19UWVBFX1RSQUNJTkddXHRcdFx0PSBcJiMzNDt0cmFjaW5nXCYjMzQ7LFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MjAyPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcHJvZ190eXBlX25hbWVbXSA9IHtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIxOS1cdFtCUEZfUFJPR19UWVBFX1NLX01TR11cdFx0XHQ9IFwmIzM0O3NrX21zZ1wmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MjIwOlx0W0JQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRdXHRcdD0gXCYjMzQ7cmF3X3RyYWNlcG9pbnRcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIyMS1cdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLX0FERFJdXHQ9IFwmIzM0O2Nncm91cF9zb2NrX2FkZHJcJiMzNDssXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXHRbQlBGX1BST0dfVFlQRV9DR1JPVVBfU1lTQ1RMXVx0XHQ9IFwmIzM0O2Nncm91cF9zeXNjdGxcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcdFtCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFXVx0PSBcJiMzNDtyYXdfdHJhY2Vwb2ludF93cml0YWJsZVwmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI4LVx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXHRcdD0gXCYjMzQ7Y2dyb3VwX3NvY2tvcHRcJiMzNDssXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTEzPXN0YXRpYyBzdHJ1Y3Qge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzEzMC1cdHsgQlBGX1BST0dfVFlQRV9QRVJGX0VWRU5ULCAgICAgICAgICAgICAgXCYjMzQ7YnBmX3BlcmZfZXZlbnRfZGF0YVwmIzM0OyB9LFxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MTMxOlx0eyBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5ULCAgICAgICAgICBcJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfYXJnc1wmIzM0OyB9LFxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MTMyOlx0eyBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBcJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfYXJnc1wmIzM0OyB9LFxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MTMzLVx0eyBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVCwgICAgICAgICAgICAgICBcJiMzNDtfX3NrX2J1ZmZcJiMzNDsgfSxcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTEwMDc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3NlY19kZWYgc2VjdGlvbl9kZWZzW10gPSB7XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMDExMS1cdFNFQ19ERUYoXCYjMzQ7dHAucyYjNDM7XCYjMzQ7LFx0XHRUUkFDRVBPSU5ULCAwLCBTRUNfU0xFRVBBQkxFLCBhdHRhY2hfdHApLFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMDExMjpcdFNFQ19ERUYoXCYjMzQ7cmF3X3RyYWNlcG9pbnQmIzQzO1wmIzM0OyxcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEwMTEzLVx0U0VDX0RFRihcJiMzNDtyYXdfdHAmIzQzO1wmIzM0OyxcdFx0UkFXX1RSQUNFUE9JTlQsIDAsIFNFQ19OT05FLCBhdHRhY2hfcmF3X3RwKSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTAxMTQ6XHRTRUNfREVGKFwmIzM0O3Jhd190cmFjZXBvaW50LnMmIzQzO1wmIzM0OyxcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfU0xFRVBBQkxFLCBhdHRhY2hfcmF3X3RwKSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTAxMTUtXHRTRUNfREVGKFwmIzM0O3Jhd190cC5zJiM0MztcJiMzNDssXHRcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfU0xFRVBBQkxFLCBhdHRhY2hfcmF3X3RwKSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTAxMTY6XHRTRUNfREVGKFwmIzM0O3Jhd190cmFjZXBvaW50LncmIzQzO1wmIzM0OyxcdFJBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEwMTE3LVx0U0VDX0RFRihcJiMzNDtyYXdfdHAudyYjNDM7XCYjMzQ7LFx0XHRSQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgMCwgU0VDX05PTkUsIGF0dGFjaF9yYXdfdHApLFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTM1OTY9c3RydWN0IGJwZl9saW5rICpcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM1OTc6YnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludF9vcHRzKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM1OTgtXHRcdFx0XHRcdGNvbnN0IGNoYXIgKnRwX25hbWUsXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNTk5Olx0XHRcdFx0XHRzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X29wdHMgKm9wdHMpXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjAwLXtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjA0LVxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzYwNTpcdGlmICghT1BUU19WQUxJRChvcHRzLCBicGZfcmF3X3RyYWNlcG9pbnRfb3B0cykpXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjA2LVx0XHRyZXR1cm4gbGliYnBmX2Vycl9wdHIoLUVJTlZBTCk7XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzYyMC1cdHJhd19vcHRzLmNvb2tpZSA9IE9QVFNfR0VUKG9wdHMsIGNvb2tpZSwgMCk7XG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjIxOlx0cGZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW5fb3B0cyhwcm9nX2ZkLCBcdTAwMjZyYXdfb3B0cyk7XG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjIyLVx0aWYgKHBmZCBcdTAwM2MgMCkge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzItXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjMzOnN0cnVjdCBicGZfbGluayAqYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjM0LVx0XHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICp0cF9uYW1lKVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzYzNS17XG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjM2Olx0cmV0dXJuIGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnRfb3B0cyhwcm9nLCB0cF9uYW1lLCBOVUxMKTtcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzctfVxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTM2Mzk9c3RhdGljIGludCBhdHRhY2hfcmF3X3RwKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgbG9uZyBjb29raWUsIHN0cnVjdCBicGZfbGluayAqKmxpbmspXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzY0Mi1cdFx0XCYjMzQ7cmF3X3RwXCYjMzQ7LFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzY0MzpcdFx0XCYjMzQ7cmF3X3RyYWNlcG9pbnRcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjQ0LVx0XHRcJiMzNDtyYXdfdHAud1wmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM2NDU6XHRcdFwmIzM0O3Jhd190cmFjZXBvaW50LndcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjQ2LVx0XHRcJiMzNDtyYXdfdHAuc1wmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM2NDc6XHRcdFwmIzM0O3Jhd190cmFjZXBvaW50LnNcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjQ4LVx0fTtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjYwLVxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzY2MTpcdCpsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChwcm9nLCBtYXRjaCk7XG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjYyLVx0cmV0dXJuIGxpYmJwZl9nZXRfZXJyb3IoKmxpbmspO1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTM4ODQ9c3RydWN0IGJwZl9saW5rICpicGZfcHJvZ3JhbV9fYXR0YWNoX2ZyZXBsYWNlKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzOTEzLVx0fSBlbHNlIHtcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM5MTQ6XHRcdC8qIG5vIHRhcmdldCwgc28gdXNlIHJhd190cmFjZXBvaW50X29wZW4gZm9yIGNvbXBhdGliaWxpdHlcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM5MTUtXHRcdCAqIHdpdGggb2xkIGtlcm5lbHNcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5oPTg1Mz1icGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlcG9pbnRfb3B0cyhjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuaC04NTctXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg1ODpzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X29wdHMge1xudG9vbHMvbGliL2JwZi9saWJicGYuaC04NTktXHRzaXplX3Qgc3o7IC8qIHNpemUgb2YgdGhpcyBzdHJ1Y3QgZm9yIGZvcndhcmQvYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODYyLX07XG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg2MzojZGVmaW5lIGJwZl9yYXdfdHJhY2Vwb2ludF9vcHRzX19sYXN0X2ZpZWxkIGNvb2tpZVxudG9vbHMvbGliL2JwZi9saWJicGYuaC04NjQtXG50b29scy9saWIvYnBmL2xpYmJwZi5oPTg2NT1MSUJCUEZfQVBJIHN0cnVjdCBicGZfbGluayAqXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg2NjpicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODY3LVx0XHRcdFx0ICAgY29uc3QgY2hhciAqdHBfbmFtZSk7XG50b29scy9saWIvYnBmL2xpYmJwZi5oPTg2OD1MSUJCUEZfQVBJIHN0cnVjdCBicGZfbGluayAqXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg2OTpicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50X29wdHMoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxudG9vbHMvbGliL2JwZi9saWJicGYuaC04NzAtXHRcdFx0XHRcdGNvbnN0IGNoYXIgKnRwX25hbWUsXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg3MTpcdFx0XHRcdFx0c3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9vcHRzICpvcHRzKTtcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODcyLVxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcD0xPUxJQkJQRl8wLjAuMSB7XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTUxLVx0XHRicGZfcHJvZ19saW5mb19fbGZpbmQ7XG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NTI6XHRcdGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuO1xudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTUzLVx0XHRicGZfdGFza19mZF9xdWVyeTtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA9ODg9TElCQlBGXzAuMC40IHtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXAtOTItXHRcdGJwZl9wcm9ncmFtX19hdHRhY2hfcGVyZl9ldmVudDtcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcDo5MzpcdFx0YnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludDtcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcC05NC1cdFx0YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZXBvaW50O1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcD00MTE9TElCQlBGXzEuNC4wIHtcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcC00MTItXHRnbG9iYWw6XG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NDEzOlx0XHRicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50X29wdHM7XG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NDE0Olx0XHRicGZfcmF3X3RyYWNlcG9pbnRfb3Blbl9vcHRzO1xudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTQxNS1cdFx0YnBmX3Rva2VuX2NyZWF0ZTtcbi0tXG50b29scy9saWIvYnBmL3NrZWxfaW50ZXJuYWwuaD0yODY9c3RhdGljIGlubGluZSBpbnQgc2tlbF9tYXBfZ2V0X2ZkX2J5X2lkKF9fdTMyIGlkKVxuLS1cbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTI5Ni1cbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oOjI5NzpzdGF0aWMgaW5saW5lIGludCBza2VsX3Jhd190cmFjZXBvaW50X29wZW4oY29uc3QgY2hhciAqbmFtZSwgaW50IHByb2dfZmQpXG50b29scy9saWIvYnBmL3NrZWxfaW50ZXJuYWwuaC0yOTgte1xudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg6Mjk5Olx0Y29uc3Qgc2l6ZV90IGF0dHJfc3ogPSBvZmZzZXRvZmVuZCh1bmlvbiBicGZfYXR0ciwgcmF3X3RyYWNlcG9pbnQucHJvZ19mZCk7XG50b29scy9saWIvYnBmL3NrZWxfaW50ZXJuYWwuaC0zMDAtXHR1bmlvbiBicGZfYXR0ciBhdHRyO1xuLS1cbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTMwMi1cdG1lbXNldChcdTAwMjZhdHRyLCAwLCBhdHRyX3N6KTtcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oOjMwMzpcdGF0dHIucmF3X3RyYWNlcG9pbnQubmFtZSA9IChsb25nKSBuYW1lO1xudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg6MzA0Olx0YXR0ci5yYXdfdHJhY2Vwb2ludC5wcm9nX2ZkID0gcHJvZ19mZDtcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTMwNS1cbi0tXG50b29scy9wZXJmL3V0aWwvYnBmX2Z0cmFjZS5jPTIyPWludCBwZXJmX2Z0cmFjZV9fbGF0ZW5jeV9wcmVwYXJlX2JwZihzdHJ1Y3QgcGVyZl9mdHJhY2UgKmZ0cmFjZSlcbi0tXG50b29scy9wZXJmL3V0aWwvYnBmX2Z0cmFjZS5jLTEyOS1cbnRvb2xzL3BlcmYvdXRpbC9icGZfZnRyYWNlLmM6MTMwOlx0XHRza2VsLVx1MDAzZWxpbmtzLmV2ZW50X2JlZ2luID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmV2ZW50X2JlZ2luLFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYy0xMzEtXHRcdFx0XHRcdFx0XHRcdFx0ICAgICBldmVudC1cdTAwM2VuYW1lKTtcbi0tXG50b29scy9wZXJmL3V0aWwvYnBmX2Z0cmFjZS5jLTEzOS1cbnRvb2xzL3BlcmYvdXRpbC9icGZfZnRyYWNlLmM6MTQwOlx0XHRza2VsLVx1MDAzZWxpbmtzLmV2ZW50X2VuZCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQoc2tlbC1cdTAwM2Vwcm9ncy5ldmVudF9lbmQsXG50b29scy9wZXJmL3V0aWwvYnBmX2Z0cmFjZS5jLTE0MS1cdFx0XHRcdFx0XHRcdFx0XHQgICAgIGV2ZW50LVx1MDAzZW5hbWUpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYz02MTU9c3RhdGljIHZvaWQgdHBfYnRmX3N1YnRlc3Qoc3RydWN0IHRlc3RfYnBmX2Nvb2tpZSAqc2tlbClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNjMyLVx0cmF3X3RwX29wdHMuY29va2llID0gY29va2llID0gMHgxMTAwMDAwMDAwMDAwMEw7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NjMzOlx0bGlua19mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXHUwMDI2cmF3X3RwX29wdHMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jOjYzNDpcdGlmICghQVNTRVJUX0dFKGxpbmtfZmQsIDAsIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHNcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTYzNS1cdFx0Z290byBjbGVhbnVwO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYz02Nzc9c3RhdGljIGludCB2ZXJpZnlfcmF3X3RwX2xpbmtfaW5mbyhpbnQgZmQsIHU2NCBjb29raWUpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTY5MC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYzo2OTE6XHRBU1NFUlRfRVEoaW5mby5yYXdfdHJhY2Vwb2ludC5jb29raWUsIGNvb2tpZSwgXCYjMzQ7cmF3X3RwX2Nvb2tpZVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNjkyLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYz02OTY9c3RhdGljIHZvaWQgcmF3X3RwX3N1YnRlc3Qoc3RydWN0IHRlc3RfYnBmX2Nvb2tpZSAqc2tlbClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNzAxLVx0TElCQlBGX09QVFMoYnBmX3Jhd190cF9vcHRzLCByYXdfdHBfb3B0cyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NzAyOlx0TElCQlBGX09QVFMoYnBmX3Jhd190cmFjZXBvaW50X29wdHMsIG9wdHMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTcwMy1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNzExLVx0cmF3X3RwX29wdHMuY29va2llID0gY29va2llID0gMHg1NTAwMDAwMDAwMDAwMEw7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NzEyOlx0bGlua19mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXHUwMDI2cmF3X3RwX29wdHMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jOjcxMzpcdGlmICghQVNTRVJUX0dFKGxpbmtfZmQsIDAsIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHNcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTcxNC1cdFx0Z290byBjbGVhbnVwO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mzg4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIFJhdyBUcmFjZXBvaW50IFRlc3QqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgdGVzdCwgYW5kIGl0JiMzOTtzIHVzaW5nIGBTRUMoJiMzNDtyYXdfdHJhY2Vwb2ludC53JiMzNDspYC4gUmlnaHQsIHRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHByb2dyYW0gdHlwZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgb3IgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byByYXcgdHJhY2Vwb2ludHMgYW5kIHdyaXRhYmxlIHByb2dyYW1zLiBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHNldHRpbmdzIG9yIHBhcmFtZXRlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBwYXJ0aWN1bGFyIHNldHVwLiBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGFjcm9zcyBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgb3IgcG90ZW50aWFsIGxpbWl0YXRpb25zLiBJdCYjMzk7cyBhIGtleSBmaXJzdCBzdGVwLCBzbyBJJiMzOTtsbCBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdD0xOD1kZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gdGhlIGZvb3Rub3Rlcy5cbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQzLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE0NDp8IGBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWBgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cC53JiM0MztgYCBbI3Jhd3RwXV8gICAgICAgICAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0NS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0Mztcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTQ1PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQsXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ2LVx0ICAgICAgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzLCB1NjQpXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ3OkJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUsXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ4LVx0ICAgICAgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzLCB1NjQpXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEzMj11bmlvbiBicGZfaXRlcl9saW5rX2luZm8ge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODYtICpcdFx0KipCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UKiosXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Mzg3OiAqXHRcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSoqXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg4LSAqXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEwNjI9ZW51bSBicGZfcHJvZ190eXBlIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4Ni1cdEJQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTCxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDg3Olx0QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDg4LVx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVCxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTYyMTY9c3RhdGljIGludCBidGZfdmFsaWRhdGVfcHJvZ19jdHhfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi9idGYuYy02MjczLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxua2VybmVsL2JwZi9idGYuYzo2Mjc0Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxua2VybmVsL2JwZi9idGYuYy02Mjc1LVx0XHQvKiBhbGxvdyB1NjQqIGFzIGN0eCAqL1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI4NzE9c3RhdGljIGJvb2wgaXNfcGVyZm1vbl9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHByb2dfdHlwZSlcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yODc3LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mjg3ODpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzktXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM3OC1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzNzk6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzgwLVx0XHRpZiAoc3RybmNweV9mcm9tX3VzZXIoYnVmLCB1c2VyX3RwX25hbWUsIHNpemVvZihidWYpIC0gMSkgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3NzI2PXN0YXRpYyBib29sIGlzX3RyYWNpbmdfcHJvZ190eXBlKGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzczMi1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzczMzpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzczNC1cdFx0cmV0dXJuIHRydWU7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEzMj11bmlvbiBicGZfaXRlcl9saW5rX2luZm8ge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODYtICpcdFx0KipCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UKiosXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Mzg3OiAqXHRcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSoqXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg4LSAqXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEwNjI9ZW51bSBicGZfcHJvZ190eXBlIHtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4Ni1cdEJQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTCxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDg3Olx0QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDg4LVx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVCxcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTIwMj1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHByb2dfdHlwZV9uYW1lW10gPSB7XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXHRbQlBGX1BST0dfVFlQRV9DR1JPVVBfU1lTQ1RMXVx0XHQ9IFwmIzM0O2Nncm91cF9zeXNjdGxcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcdFtCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFXVx0PSBcJiMzNDtyYXdfdHJhY2Vwb2ludF93cml0YWJsZVwmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI4LVx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXHRcdD0gXCYjMzQ7Y2dyb3VwX3NvY2tvcHRcJiMzNDssXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTEzPXN0YXRpYyBzdHJ1Y3Qge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzEzMS1cdHsgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgICAgICAgICAgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X2FyZ3NcJiMzNDsgfSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6NzEzMjpcdHsgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X2FyZ3NcJiMzNDsgfSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzEzMy1cdHsgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1QsICAgICAgICAgICAgICAgXCYjMzQ7X19za19idWZmXCYjMzQ7IH0sXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTUzPXN0YXRpYyBib29sIG5lZWRfZnVuY19hcmdfdHlwZV9maXh1cChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcyMDgtXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XG50b29scy9saWIvYnBmL2xpYmJwZi5jOjcyMDk6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcyMTAtXHRcdC8qIGFsbG93IHU2NCogYXMgY3R4ICovXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM9MTAzPXN0YXRpYyBpbnQgcHJvYmVfcHJvZ19sb2FkKGVudW0gYnBmX3Byb2dfdHlwZSBwcm9nX3R5cGUsXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMTc3LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM6MTc4Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMTc5LVx0Y2FzZSBCUEZfUFJPR19UWVBFX0xXVF9TRUc2TE9DQUw6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jPTc9dm9pZCB0ZXN0X3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMtMjctXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmM6Mjg6XHRicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFwmIzM0O0dQTCB2MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuYy0yOS1cdFx0XHQgICAgICAgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYz04PXZvaWQgc2VyaWFsX3Rlc3RfcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYzoyNzpcdGludCBicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFwmIzM0O0dQTCB2MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jLTI4LVx0XHRcdFx0ICAgdHJhY2VfcHJvZ3JhbSwgQVJSQVlfU0laRSh0cmFjZV9wcm9ncmFtKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwODMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIEJQRl9FVkVOVFMgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0VWRU5UU2AuIFRoZSBpbnRlcmVzdGluZyBvbmUgaGVyZSBpcyBgQlBGX0VWRU5UU2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmN5IGdyYXBoIGZvciBgQlBGX0VWRU5UU2AuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIEJQRiBlY29zeXN0ZW0sIHNvIHVuZGVyc3RhbmRpbmcgd2hhdCBpdCBsZWFucyBvbiBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkga25vdyB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFuZCBrZXJuZWwgZmVhdHVyZXMgYXJlIG5lZWRlZCBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3QgYSBwcmVsaW1pbmFyeSBhc3Nlc3NtZW50LiBJIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgdGhlIG1vc3QgZGlyZWN0IHBhdGguIEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgYnVpbHQgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0VWRU5UUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZz04Mzk9Y29uZmlnIEVQUk9CRV9FVkVOVFNcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4NTM6Y29uZmlnIEJQRl9FVkVOVFNcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNzAKCQkJCQkJCW91dHB1dDogMTI4CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqTXkgQlBGIEltcGxlbWVudGF0aW9uIFN0cmF0ZWd5KioKClJpZ2h0LCBpdCBzZWVtcyB3ZSYjMzk7cmUgb24gdGhlIHJpZ2h0IHRyYWNrLiBGcm9tIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgSSBjYW4gY29uZmlybSB0aGF0IGZvY3VzaW5nIG91ciBlZmZvcnRzIG9uIHRoZSBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0VWRU5UU2AgYXNwZWN0cyB3aWxsIGJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgc3BlY2lmaWMgdGFzay4gV2Ugd2FudCB0byBiZSBlZmZpY2llbnQgYW5kIHBpbnBvaW50IHdoZXJlIHdlIG5lZWQgdG8gbWFrZSBjaGFuZ2VzLgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aG9zZSBrZXkgc3ltYm9sIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgdG8gY29uZmlybSB0aGUgY29kZSB3aWxsIGZ1bmN0aW9uIGFzIGludGVuZGVkLgoKSSBxdWlja2x5IGNoZWNrZWQgdGhlIGxpc3QgYW5kIGNvbmZpcm1lZCB0aGF0IHdoaWxlIGBjaGVja19tYXhfc3RhY2tfZGVwdGhgIGlzbiYjMzk7dCBpbXBhY3RlZCwgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGFyZSBhbGwgbW9kaWZpZWQsIGFzIGV4cGVjdGVkLgoKSSB3aWxsIHByb2NlZWQgdG8gc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fY2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja190cF9idWZmZXJfYWNjZXNzJiMzNDssCiAgICAmIzM0O2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgaGFuZGxlIG5lZ2F0aXZlIG9mZnNldHMgYW5kIG92ZXJmbG93cyB3aGVuIGNoZWNraW5nIGJ1ZmZlciBhY2Nlc3MgaW4gQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBjb21wb25lbnQgKEJQRiB2ZXJpZmllcikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mgd2hlbiBjaGVja2luZyBidWZmZXIgYWNjZXNzIGluIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgY29tcG9uZW50IChCUEYgdmVyaWZpZXIpIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MDk6NDIuMTc5MjY5NTY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2ODM1NTIxNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19jaGVja19idWZmZXJfYWNjZXNzXCIsXG4gICAgXCJjaGVja190cF9idWZmZXJfYWNjZXNzXCIsXG4gICAgXCJjaGVja19idWZmZXJfYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgaGFuZGxlIG5lZ2F0aXZlIG9mZnNldHMgYW5kIG92ZXJmbG93cyB3aGVuIGNoZWNraW5nIGJ1ZmZlciBhY2Nlc3MgaW4gQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBjb21wb25lbnQgKEJQRiB2ZXJpZmllcikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjA5OjQyLjE3OTI3NDYxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk5NzgwNDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmMxOGQzOGU4MTljNTI2MTBmMDVlMjlmMDRiOGUyZGIzZDJiODYyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDA0OjA5OjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDIxYTM2NWQ0MzZhNTk1Li40MjFjYTExOGZjYmZlNiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtNTMyNiwxNCArNTMyNiwxOCBAQCBzdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbiBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqYnVmX2luZm8sXFxuIFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi1cXHRcXHRcXHRcXHQgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXFxuK1xcdFxcdFxcdFxcdCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSxcXG4rXFx0XFx0XFx0XFx0IHUzMiAqYWNjZXNzX2VuZClcXG4ge1xcbitcXHRzNjQgc3RhcnQsIHZhcl9vZmY7XFxuK1xcbiBcXHRpZiAob2ZmIFxcdTAwM2MgMCkge1xcbiBcXHRcXHR2ZXJib3NlKGVudixcXG4gXFx0XFx0XFx0XFxcIiVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVkLCBzaXplPSVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xcbiBcXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4gXFx0fVxcbitcXG4gXFx0aWYgKCF0bnVtX2lzX2NvbnN0KHJlZy1cXHUwMDNldmFyX29mZikpIHtcXG4gXFx0XFx0Y2hhciB0bl9idWZbNDhdO1xcbiBcXG5AQCAtNTM0NCw2ICs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbiBcXHR9XFxuIFxcbitcXHR2YXJfb2ZmID0gKHM2NClyZWctXFx1MDAzZXZhcl9vZmYudmFsdWU7XFxuK1xcdGlmIChjaGVja19hZGRfb3ZlcmZsb3codmFyX29mZiwgKHM2NClvZmYsIFxcdTAwMjZzdGFydCkpIHtcXG4rXFx0XFx0dmVyYm9zZShlbnYsXFxuK1xcdFxcdFxcdFxcXCIlcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgdmFyX29mZj0lbGxkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHZhcl9vZmYpO1xcbitcXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHN0YXJ0IFxcdTAwM2MgMCkge1xcbitcXHRcXHR2ZXJib3NlKGVudixcXG4rXFx0XFx0XFx0XFxcIiVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XFxuK1xcdFxcdHJldHVybiAtRUFDQ0VTO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoc3RhcnQgXFx1MDAzZSBVMzJfTUFYIHx8IHNpemUgXFx1MDAzYyAwIHx8XFxuK1xcdCAgICBjaGVja19hZGRfb3ZlcmZsb3coKHUzMilzdGFydCwgKHUzMilzaXplLCBhY2Nlc3NfZW5kKSkge1xcbitcXHRcXHR2ZXJib3NlKGVudixcXG4rXFx0XFx0XFx0XFxcIiVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVsbGQsIHNpemU9JWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIHN0YXJ0LCBzaXplKTtcXG4rXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC01MzUxLDEzICs1Mzc4LDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfdHBfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuIFxcdFxcdFxcdFxcdCAgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXFxuIHtcXG4rXFx0dTMyIGFjY2Vzc19lbmQ7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcXFwidHJhY2Vwb2ludFxcXCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7XFxuK1xcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFxcXCJ0cmFjZXBvaW50XFxcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxcbitcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0ZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgocmVnLVxcdTAwM2V2YXJfb2ZmLnZhbHVlICsgb2ZmICsgc2l6ZSxcXG4rXFx0ZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VtYXhfdHBfYWNjZXNzKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbkBAIC01MzcwLDEzICs1Mzk5LDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHQgICAgICAgdTMyICptYXhfYWNjZXNzKVxcbiB7XFxuIFxcdGNvbnN0IGNoYXIgKmJ1Zl9pbmZvID0gdHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cXHUwMDNldHlwZSkgPyBcXFwicmRvbmx5XFxcIiA6IFxcXCJyZHdyXFxcIjtcXG4rXFx0dTMyIGFjY2Vzc19lbmQ7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplKTtcXG4rXFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcXG4rXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZhY2Nlc3NfZW5kKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdCptYXhfYWNjZXNzID0gbWF4KHJlZy1cXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsICptYXhfYWNjZXNzKTtcXG4rXFx0Km1heF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgKm1heF9hY2Nlc3MpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXFxuaW5kZXggMTRhMDE3MmUyMTQxZTguLjQwNTVhNjQ0M2JjMjBhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xcbkBAIC00Nyw0ICs0NywyMCBAQCBsMF8lPTpcXHQvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1xcXFxcXG4gXFx0OiBfX2Nsb2JiZXJfYWxsKTtcXG4gfVxcbiBcXG4rU0VDKFxcXCJyYXdfdHJhY2Vwb2ludC53XFxcIilcXG4rX19kZXNjcmlwdGlvbihcXFwicmF3X3RyYWNlcG9pbnRfd3JpdGFibGU6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXRcXFwiKVxcbitfX2ZhaWx1cmVcXG4rX19tc2coXFxcImludmFsaWQgbmVnYXRpdmUgdHJhY2Vwb2ludCBidWZmZXIgb2Zmc2V0XFxcIilcXG4rX19uYWtlZCB2b2lkIHRyYWNlcG9pbnRfd3JpdGFibGVfcmVqZWN0X25lZ2F0aXZlX2NvbnN0X29mZnNldCh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxcIlxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjYgPSAqKHU2NCAqKShyMSArIDApO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjYgKz0gLTg7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMCA9ICoodTY0ICopKHI2ICsgMCk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRleGl0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFxcIlxcdDpcXG4rXFx0OlxcbitcXHQ6IF9fY2xvYmJlcl9hbGwpO1xcbit9XFxuK1xcbiBjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MDk6NDIuNDc5ODI3NzQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTY1MzQ5NTQ1NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgb2Zmc2V0cyBhbmQgb3ZlcmZsb3dzIHdoZW4gY2hlY2tpbmcgYnVmZmVyIGFjY2VzcyBpbiBCUEYgcHJvZ3JhbXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIGNvbXBvbmVudCAoQlBGIHZlcmlmaWVyKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YzE4ZDM4ZTgxOWM1MjYxMGYwNWUyOWYwNGI4ZTJkYjNkMmI4NjI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwNDowOTo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMjFhMzY1ZDQzNmE1OTUuLjQyMWNhMTE4ZmNiZmU2IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01MzI2LDE0ICs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLVx0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuK1x0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplLFxuK1x0XHRcdFx0IHUzMiAqYWNjZXNzX2VuZClcbiB7XG4rXHRzNjQgc3RhcnQsIHZhcl9vZmY7XG4rXG4gXHRpZiAob2ZmIFx1MDAzYyAwKSB7XG4gXHRcdHZlcmJvc2UoZW52LFxuIFx0XHRcdFwiJXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWQsIHNpemU9JWRcXG5cIixcbiBcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbitcbiBcdGlmICghdG51bV9pc19jb25zdChyZWctXHUwMDNldmFyX29mZikpIHtcbiBcdFx0Y2hhciB0bl9idWZbNDhdO1xuIFxuQEAgLTUzNDQsNiArNTM0OCwyOSBAQCBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiBcbitcdHZhcl9vZmYgPSAoczY0KXJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlO1xuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyh2YXJfb2ZmLCAoczY0KW9mZiwgXHUwMDI2c3RhcnQpKSB7XG4rXHRcdHZlcmJvc2UoZW52LFxuK1x0XHRcdFwiJXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWQsIHZhcl9vZmY9JWxsZFxcblwiLFxuK1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuK1x0aWYgKHN0YXJ0IFx1MDAzYyAwKSB7XG4rXHRcdHZlcmJvc2UoZW52LFxuK1x0XHRcdFwiJXMgaW52YWxpZCBuZWdhdGl2ZSAlcyBidWZmZXIgb2Zmc2V0OiBvZmY9JWQsIHZhcl9vZmY9JWxsZFxcblwiLFxuK1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuK1x0aWYgKHN0YXJ0IFx1MDAzZSBVMzJfTUFYIHx8IHNpemUgXHUwMDNjIDAgfHxcbitcdCAgICBjaGVja19hZGRfb3ZlcmZsb3coKHUzMilzdGFydCwgKHUzMilzaXplLCBhY2Nlc3NfZW5kKSkge1xuK1x0XHR2ZXJib3NlKGVudixcbitcdFx0XHRcIiVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVsbGQsIHNpemU9JWRcXG5cIixcbitcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBzdGFydCwgc2l6ZSk7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTUzNTEsMTMgKzUzNzgsMTUgQEAgc3RhdGljIGludCBjaGVja190cF9idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4gXHRcdFx0XHQgIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuIHtcbitcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFwidHJhY2Vwb2ludFwiLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuK1x0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCJ0cmFjZXBvaW50XCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcbitcdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsXG4rXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLFxuIFx0XHRcdFx0XHQgICAgZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtNTM3MCwxMyArNTM5OSwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHQgICAgICAgdTMyICptYXhfYWNjZXNzKVxuIHtcbiBcdGNvbnN0IGNoYXIgKmJ1Zl9pbmZvID0gdHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cdTAwM2V0eXBlKSA/IFwicmRvbmx5XCIgOiBcInJkd3JcIjtcbitcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuK1x0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcbitcdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHQqbWF4X2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsICptYXhfYWNjZXNzKTtcbitcdCptYXhfYWNjZXNzID0gbWF4KGFjY2Vzc19lbmQsICptYXhfYWNjZXNzKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcbmluZGV4IDE0YTAxNzJlMjE0MWU4Li40MDU1YTY0NDNiYzIwYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXG5AQCAtNDcsNCArNDcsMjAgQEAgbDBfJT06XHQvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1xcXG4gXHQ6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbitTRUMoXCJyYXdfdHJhY2Vwb2ludC53XCIpXG4rX19kZXNjcmlwdGlvbihcInJhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgbmVnYXRpdmUgY29uc3Qgb2Zmc2V0XCIpXG4rX19mYWlsdXJlXG4rX19tc2coXCJpbnZhbGlkIG5lZ2F0aXZlIHRyYWNlcG9pbnQgYnVmZmVyIG9mZnNldFwiKVxuK19fbmFrZWQgdm9pZCB0cmFjZXBvaW50X3dyaXRhYmxlX3JlamVjdF9uZWdhdGl2ZV9jb25zdF9vZmZzZXQodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFwiXHRcdFx0XHRcdFxcXG4rXHRyNiA9ICoodTY0ICopKHIxICsgMCk7XHRcdFx0XHRcXFxuK1x0cjYgKz0gLTg7XHRcdFx0XHRcdFxcXG4rXHRyMCA9ICoodTY0ICopKHI2ICsgMCk7XHRcdFx0XHRcXFxuK1x0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuK1wiXHQ6XG4rXHQ6XG4rXHQ6IF9fY2xvYmJlcl9hbGwpO1xuK31cbitcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNDowOTo0Mi40Nzk4MjkxMTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzA0NzkzNjA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEl0J3MgZ290IGEgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2UgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY2AuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhleSdyZSBtb2RpZnlpbmcgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mg4oCTIGNyaXRpY2FsIGZvciBlbnN1cmluZyBCUEYgcHJvZ3JhbXMgZG9uJ3Qgd3JlYWsgaGF2b2Mgb24gbWVtb3J5LlxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIHVwZGF0ZXMgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgdG8gY29ycmVjdGx5IHVzZSB0aGUgbmV3IGBhY2Nlc3NfZW5kYCBvdXRwdXQgb2YgdGhlIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhlIEJQRiB2ZXJpZmllciBpcyBhICpjb3JlKiBjb21wb25lbnQgb2YgdGhlIGtlcm5lbCwgYW5kIGV2ZW4gc3VidGxlIGNoYW5nZXMgY2FuIGhhdmUgZmFyLXJlYWNoaW5nIGNvbnNlcXVlbmNlcywgZXNwZWNpYWxseSBpbiBob3cgaXQgaGFuZGxlcyBtZW1vcnkgYWNjZXNzLiBHaXZlbiBpdHMgaW1wb3J0YW5jZSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBmdXp6ZXIgY292ZXJhZ2UgaXMgKmVzc2VudGlhbCouIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgcmVhbGx5IG5lZWRzIHRvIGJlIGhpdCBoYXJkIHdpdGggZnV6emluZy5cblxuTXkgbmV4dCBpbW1lZGlhdGUgdGFzayBpcyBmaWd1cmluZyBvdXQgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFNpbmNlIHRoaXMgaW52b2x2ZXMgdGhlIEJQRiB2ZXJpZmllciwgbXkgZGVmYXVsdCBhc3N1bXB0aW9uIGlzIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgd2lsbCBiZSB0aGUga2V5LiBIb3dldmVyLCBpdCdzIGFsd2F5cyB3aXNlIHRvIGJlIHRob3JvdWdoLlxuXG5UbyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIG9jY3VycmVuY2VzIG9mIGVpdGhlciBgX19jaGVja19idWZmZXJfYWNjZXNzYCBvciBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AuIFRoYXQgc2hvdWxkIHF1aWNrbHkgdW5jb3ZlciBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBtaWdodCBiZSBvdmVybG9va2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjA5OjU5LjUyNzc2NzAyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYyMzU5OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fY2hlY2tfYnVmZmVyX2FjY2Vzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMjUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqYnVmX2luZm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0OlxcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFxcXCJ0cmFjZXBvaW50XFxcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzg1LVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2YWNjZXNzX2VuZCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM5NT1zdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA0LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NDA1OlxcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDYtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZhY2Nlc3NfZW5kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTA6MDEuNDkwMTMyMDIzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU5OTU3NTE0NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIG1vZGlmaWNhdGlvbnMuXG5cbioqQW5hbHl6aW5nIHRoZSBCdWZmZXIgQWNjZXNzIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiB0aHJlZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5OiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBDbGVhcmx5LCB0aGVzZSBhcmUgYWxsIGludm9sdmVkIGluIGNvbnRyb2xsaW5nIGFuZCB2ZXJpZnlpbmcgYWNjZXNzIHRvIHNvbWUgc29ydCBvZiBidWZmZXIgd2l0aGluIHRoZSBzeXN0ZW0sIGxpa2VseSByZWxhdGVkIHRvIGVCUEYuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29udGV4dCBvZiB3aGVyZSB0aGVzZSBhcmUgdXNlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBkaWZmZXJlbnRpYXRpb24gYmV0d2VlbiB0aGVtIG1pZ2h0IGJlIGJhc2VkIG9uIGZhY3RvcnMgbGlrZTpcblxuKiAgICoqVW5kZXJseWluZyBUYXJnZXQ6KiogVGhlIHVzZSBvZiBgdHBgIGluIGBjaGVja190cF9idWZmZXJfYWNjZXNzYCBsaWtlbHkgbWVhbnMgaXQncyBzcGVjaWZpYyB0byB0cmFjZXBvaW50IGRhdGEgc3RydWN0dXJlcy4gYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AgbWlnaHQgc3VnZ2VzdCBhIG1vcmUgaW50ZXJuYWwsIGxvdy1sZXZlbCB2YXJpYW50LiBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgaXMgbGlrZWx5IGEgbW9yZSBnZW5lcmFsLXB1cnBvc2Ugcm91dGluZS5cbiogICAqKlNlY3VyaXR5IENvbnRleHQ6KiogVGhlcmUgY291bGQgYmUgZGlmZmVyZW50IHNlY3VyaXR5IGxldmVscyBvciBhY2Nlc3MgcnVsZXMgYXQgcGxheS4gUGVyaGFwcyBgX19jaGVja19idWZmZXJfYWNjZXNzYCBpcyBmb3IgaGlnaGx5IHByaXZpbGVnZWQgY29kZSBvciBmb3IgaW50ZXJuYWwga2VybmVsIHN0cnVjdHVyZXMsIHdoaWxlIGBjaGVja19idWZmZXJfYWNjZXNzYCBpcyBmb3IgdXNlci1zcGFjZSBwcm9ncmFtcyB3aXRoIHNvbWUgbGV2ZWwgb2YgdHJ1c3QuXG4qICAgKipWZXJpZmljYXRpb24gU3RyYXRlZ3k6KiogRWFjaCBmdW5jdGlvbiBtaWdodCBlbXBsb3kgZGlmZmVyZW50IGFjY2VzcyBjb250cm9sIG1lY2hhbmlzbXMuIFdlIG1pZ2h0IHNlZSB0aGluZ3MgbGlrZSByYW5nZSBjaGVja3MsIHBlcm1pc3Npb24gY2hlY2tzLCBvciBzaXplIGxpbWl0YXRpb25zIGVuZm9yY2VkLlxuXG5HaXZlbiB0aGF0IHRoZXNlIGZ1bmN0aW9ucyByZWxhdGUgdG8gQlBGLCBhIHByaW1hcnkgY29uY2VybiB3aWxsIGJlIHByZXZlbnRpbmcgYnVmZmVyIG92ZXJmbG93cywgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFuZCBnZW5lcmFsbHkgZW5zdXJpbmcgdGhlIGludGVncml0eSBhbmQgc2FmZXR5IG9mIHRoZSBrZXJuZWwuIFRoaXMgaXMgZXNwZWNpYWxseSBjcml0aWNhbCBzaW5jZSBCUEYgYWxsb3dzIHVudHJ1c3RlZCBjb2RlIHRvIHJ1biB3aXRoaW4gdGhlIGtlcm5lbC5cblxuTm93LCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUbyB1bmRlcnN0YW5kIHdoYXQncyAqYWN0dWFsbHkqIGNoYW5naW5nLCBJIG5lZWQgdG8gbG9vayBhdCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgaW5mbHVlbmNlZCBvciBuZWVkZWQgZm9yIHRoZXNlIGFjY2VzcyBjaGVja3M/IEFyZSB0aGVzZSBuZXcgZmVhdHVyZXMgYmVpbmcgYWRkZWQsIG9yIGV4aXN0aW5nIGFjY2VzcyBzdHJhdGVnaWVzIGJlaW5nIG1vZGlmaWVkPyBBcmUgdGhlcmUgYW55IGNvbmZpZyBvcHRpb25zIHRoYXQgaW5mbHVlbmNlIHRoZSB3YXkgdGhlc2UgZnVuY3Rpb25zIGJlaGF2ZSwgc3VjaCBhcyBkaWZmZXJlbnQgbGV2ZWxzIG9mIGJ1ZmZlciBzaXplIHZhbGlkYXRpb24gb3IgbW9yZSBzdHJpbmdlbnQgY2hlY2tzIGVuYWJsZWQ/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGNvbnRleHQsIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczoqKiBBcmUgdGhlc2UgY2hhbmdlcyBjb250aW5nZW50IG9uIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IChlLmcuLCBgQ09ORklHX0JQRl9KSVRgLCBgQ09ORklHX0JQRl9FVkVOVFNgLCBvciBvdGhlciByZWxhdGVkIHNldHRpbmdzKS5cbiogICAqKlBlcmZvcm1hbmNlIFRyYWRlb2ZmczoqKiBJZiB0aGVyZSBhcmUgbmV3IGJ1ZmZlciBhY2Nlc3MgY2hlY2tzLCBhcmUgdGhlcmUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zPyBBcmUgdGhlcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGFkanVzdCB0aGUgc3RyaWN0bmVzcyBvZiB0aGUgY2hlY2tzIHRvIGJhbGFuY2Ugc2VjdXJpdHkgYW5kIHNwZWVkP1xuKiAgICoqU2VjdXJpdHkgTGV2ZWxzOioqIEFyZSB0aGVyZSBuZXcgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGRlZ3JlZSBvZiBzZWN1cml0eT8gQXJlIHdlIG5vdyBhYmxlIHRvIHRpZ2h0ZW4gdGhlIGNvbnRyb2xzP1xuKiAgICoqQ29tcGF0aWJpbGl0eSBJc3N1ZXM6KiogQ291bGQgdGhlc2UgbW9kaWZpY2F0aW9ucyBicmVhayBleGlzdGluZyBlQlBGIHByb2dyYW1zIG9yIHJlcXVpcmUgcmVjb21waWxhdGlvbj8gSWYgc28sIHdoYXQgYXJlIHRoZSBjb21wYXRpYmlsaXR5IG9wdGlvbnM/XG5cbkJhc2ljYWxseSwgSSBuZWVkIHRoZSBjb250ZXh0IHByb3ZpZGVkIGJ5IGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoZXNlIGJ1ZmZlciBhY2Nlc3MgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEwNCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEwOjE3LjQ4NTg4NTgwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgxNDE0NDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEwOjE5LjQ2NzMwNTg4M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MDgzNTg3OTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBUcmFjZXBvaW50IEJ1ZmZlciBBY2Nlc3MqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSBwcmltYXJ5IHRoaW5nIHRvIGNvbnNpZGVyIGhlcmUgaXMgZGVmaW5pdGVseSB0aGUgYEJQRl9TWVNDQUxMYCBtZWNoYW5pc20uIFRoYXQncyB0aGUgY29yZS4gQnV0IEkgbmVlZCB0byBiZSB0aG9yb3VnaDsgSSBjYW4ndCBqdXN0IGFzc3VtZS4gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gU28sIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY2hlY2ssIGFuZCBJIG1lYW4gKnJlYWxseSogY2hlY2ssIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBzZXR0aW5ncywgZm9yIGBjaGVja190cF9idWZmZXJfYWNjZXNzYC4gR290dGEgYmUgbWV0aWN1bG91cywgZXNwZWNpYWxseSB3aXRoIHNvbWV0aGluZyB0aGF0IHRvdWNoZXMgbWVtb3J5IGFjY2Vzcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEgZGV0YWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODg4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTA6NDYuNTUwODk1NzQ4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTA4MDk0ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTMyNj1zdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzYtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzNzc6c3RhdGljIGludCBjaGVja190cF9idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzgtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTYxMDE9c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzA5LVxcdH0gZWxzZSBpZiAocmVnLVxcdTAwM2V0eXBlID09IFBUUl9UT19UUF9CVUZGRVIpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjMxMDpcXHRcXHRlcnIgPSBjaGVja190cF9idWZmZXJfYWNjZXNzKGVudiwgcmVnLCBhcmdubywgb2ZmLCBzaXplKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjMxMS1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiB0ID09IEJQRl9SRUFEIFxcdTAwMjZcXHUwMDI2IHZhbHVlX3JlZ25vIFxcdTAwM2U9IDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEwOjQ4LjQwMTcxMzIxOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NTk4MzI0MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEJ1ZmZlciBBY2Nlc3MgRnVuY3Rpb24qKlxuXG5IbW0sIGBjaGVja19idWZmZXJfYWNjZXNzYC4uLiBsZXQncyBzZWUuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhYm91dCB2ZXJpZnlpbmcgcmVhZC93cml0ZSBwZXJtaXNzaW9ucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBib3VuZHMgY2hlY2tpbmcgb24gcG9pbnRlcnMsIG9yIHBlcmhhcHMgYWNjZXNzIGNvbnRyb2wgd2l0aGluIGEgc2hhcmVkIG1lbW9yeSByZWdpb24/IEkgbmVlZCBtb3JlIGNvbnRleHQgdG8gYmUgc3VyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gbGlrZWx5IHBsYXlzIGEgY3JpdGljYWwgcm9sZSBpbiBwcmV2ZW50aW5nIHZ1bG5lcmFiaWxpdGllcy5cblxuSSdtIHByb2JhYmx5IGdvaW5nIHRvIG5lZWQgdG8gbG9vayBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQncyBoYW5kbGluZyBjb3JuZXIgY2FzZXMgZ3JhY2VmdWxseSwgc3BlY2lmaWNhbGx5OlxuXG4qICAgKipJbnRlZ2VyIG92ZXJmbG93OioqIENvdWxkIHRoZXJlIGJlIGFuIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBieXBhc3NlcyBpbnRlbmRlZCBjaGVja3MgZm9yIGJ1ZmZlciBzaXplLlxuKiAgICoqUmFjZSBjb25kaXRpb25zOioqIElmIHdlIGFyZSBpbiBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQsIGhvdyBpcyB0aGlzIGhhbmRsZWQgdG8gcHJldmVudCBjb3JydXB0aW9uP1xuKiAgICoqT2ZmLWJ5LW9uZSBlcnJvcnM6KiogQ291bGQgdGhlcmUgYmUgc3VidGxlIGluZGV4aW5nIHByb2JsZW1zP1xuKiAgICoqU2VjdXJpdHkgQ29udGV4dDoqKiBEb2VzIHRoaXMgZnVuY3Rpb24gY29uc2lkZXIgdGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGFjY2Vzc2luZyBwcm9jZXNzIG9yIHRocmVhZD9cblxuVGhlc2UgYXJlIGFsbCBzdGFuZGFyZCBjb25zaWRlcmF0aW9ucywgYnV0IHdpdGhvdXQga25vd2luZyB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgZnVuY3Rpb24sIEkgY2FuJ3QgYmVnaW4gdG8gYXNzZXNzIGl0cyBlZmZlY3RpdmVuZXNzLiBUaGUgbmFtZSBzdWdnZXN0cyBhIGdvb2QgZm91bmRhdGlvbiBmb3Igcm9idXN0IGNvZGUsIGJ1dCBJIG5lZWQgdG8gc2VlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHdoZXJlIGl0J3MgY2FsbGVkIGFuZCBob3cgaXQncyB1c2VkLiBBcmUgdGhlcmUgYW55IG90aGVyIGFjY2VzcyBjb250cm9scyBpbiBwbGFjZSwgb3IgaXMgdGhpcyB0aGUgcHJpbWFyeSBwcm90ZWN0aW9uP1xuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzg3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTE6MTQuMDAwMDM5MTA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzk5NTYwMjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTUyNzI9c3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzI2OnN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMjctXFx0XFx0XFx0XFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTUzNzc9c3RhdGljIGludCBjaGVja190cF9idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM4NDpcXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcXFwidHJhY2Vwb2ludFxcXCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4NS1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzOTQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzOTU6c3RhdGljIGludCBjaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzOTYtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwNC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTQwNTpcXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA2LVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2YWNjZXNzX2VuZCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjEwMT1zdGF0aWMgaW50IGNoZWNrX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjYzMzY6XFx0XFx0ZXJyID0gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgZmFsc2UsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzctXFx0XFx0XFx0XFx0XFx0ICBtYXhfYWNjZXNzKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NzY0PXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODEyLVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgxMzpcXHRcXHRyZXR1cm4gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIDAsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MTQtXFx0XFx0XFx0XFx0XFx0ICAgYWNjZXNzX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNDoxMToxNS43OTk2MjQxM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTAxMjAzODkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIFZlcmlmaWVyIEZ1bmN0aW9uYWxpdHkgZm9yIFJhdyBUcmFjZXBvaW50IFdyaXRlIEFjY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgX19jaGVja19idWZmZXJfYWNjZXNzYC4gVGhlc2UgYXJlIGFsbCBjcnVjaWFsIHBhcnRzIG9mIHRoZSBCUEYgdmVyaWZpZXIsIG9idmlvdXNseS4gVGhleSBnZXQgY2FsbGVkIGR1cmluZyB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3Mgb2YgYSBCUEYgcHJvZ3JhbSDigJMgbWFraW5nIHN1cmUgZXZlcnl0aGluZyBpcyBzYWZlIGFuZCBzb3VuZCBiZWZvcmUgaXQgcnVucy5cblxuTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIHRoZSBjb25maWd1cmF0aW9uLCBwcmltYXJpbHkgZHJpdmVuIGJ5IGBCUEZfU1lTQ0FMTGAsIHRoYXQncyB0aGUgbWFpbiBwb2ludC4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zPyBFc3BlY2lhbGx5IHJlbGF0ZWQgdG8gd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLiBUaGUgdGVzdCBjYXNlIEknbSByZXZpZXdpbmcgbGV2ZXJhZ2VzIGByYXdfdHJhY2Vwb2ludC53YCwgc28gSSBuZWVkIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGxpbmtlZCB0byB3cml0ZSBhY2Nlc3Mgd2l0aGluIHJhdyB0cmFjZXBvaW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgaXMgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHRoaXMgY2FzZSwgcmVsYXRpbmcgdG8gd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzc5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTI6MDAuODExNjY0ODM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTM4NTk5NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfRVZFTlRTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEyOjAzLjM1MDI3MTE1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODM3Nzc3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJ20gdHJ5aW5nIHRvIG9wdGltaXplIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb246XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gdGhlIGN1cnJlbnQgZGlyZWN0aW9uIHNlZW1zIHNvdW5kLiBJJ20gZ29pbmcgdG8gaW5jbHVkZSBgQlBGX0VWRU5UU2AuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHRyYWNpbmcgYW5kIGluc3RydW1lbnRhdGlvbi4gTm93LCBJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0VWRU5UU2AsIGVuc3VyaW5nIHRoZXJlIGFyZSBubyB1bmludGVuZGVkIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMuIFRoZSBnb2FsIGlzIGEgbGVhbiwgZWZmaWNpZW50IGNvbmZpZ3VyYXRpb24sIHNvIHVuZGVyc3RhbmRpbmcgdGhlIGludGVycGxheSBvZiB0aGVzZSBmZWF0dXJlcyBpcyBjcml0aWNhbC5cblxuUmVnYXJkaW5nIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGxvb2sgdG8gYmU6IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIFRoZXNlIHN5bWJvbHMgYXJlIG9idmlvdXNseSBpbXBvcnRhbnQgYW5kIHJlbGF0ZSB0byBtZW1vcnkgYWNjZXNzIGNoZWNrcy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlbSBjbG9zZWx5IHRvIHVuZGVyc3RhbmQgaG93IGBCUEZfRVZFTlRTYCBhbmQgYEJQRl9TWVNDQUxMYCBtaWdodCBpbmZsdWVuY2UgdGhlaXIgYmVoYXZpb3Igb3IgdHJpZ2dlciBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEFyZSB0aGVyZSBhbnkgZXhpc3RpbmcgYnVnIHJlcG9ydHM/IEFueSBrbm93biBpbnRlcmFjdGlvbnMgaW4gc2ltaWxhciBjb25maWd1cmF0aW9ucz9cblxuRmluYWxseSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIGlmIHRoZXJlIGFyZSAqb3RoZXIqIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGFsc28gaW1wYWN0IHBlcmZvcm1hbmNlIG9yIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCBhIGhvbGlzdGljIHZpZXcgdG8gZW5zdXJlIHRoYXQgSSBoYXZlbid0IG92ZXJsb29rZWQgYW55IGNydWNpYWwgcGFyYW1ldGVycyBvciBpbnRlcmFjdGlvbnMgdGhhdCBjb3VsZCBjb250cmlidXRlIHRvLCBvciBkZXRyYWN0IGZyb20sIHRoZSBvdmVyYWxsIGRlc2lnbiBnb2Fscy4gSXQncyBhIGNvbXByZWhlbnNpdmUgYXBwcm9hY2ggdGhhdCdzIG5lZWRlZCBoZXJlLCBhcyBhbHdheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NzQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNDoxMjowNi45MzQwNjI2MDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjcxMDc4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3X3RyYWNlcG9pbnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MjcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYnBmL2RyZ24ucnN0PTM1PUxpc3QgQlBGIHByb2dyYW1zIChmdWxsIG5hbWVzIGFyZSBvYnRhaW5lZCBmcm9tIEJURik6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvZHJnbi5yc3QtMzktICAgICAgNDYzMjogQlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS19BRERSICAgdHdfaXB0X2JpbmRcXG5Eb2N1bWVudGF0aW9uL2JwZi9kcmduLnJzdDo0MDogICAgIDQ5NDY0OiBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UICAgICByYXdfdHJhY2Vwb2ludF9fc2NoZWRfcHJvY2Vzc19leGl0XFxuRG9jdW1lbnRhdGlvbi9icGYvZHJnbi5yc3QtNDEtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3Q9MTg9ZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHRoZSBmb290bm90ZXMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQ1LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLStcXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3Q6MTQ2OnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgcmF3X3RyYWNlcG9pbnQudytgYCAgICAgICAgICAgIHwgICAgICAgICAgIHxcXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQ3LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLStcXG4tLVxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xNDktKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tK1xcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoxNTA6fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGByYXdfdHJhY2Vwb2ludCtgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgfFxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xNTEtKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tK1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTI0OC0uLiBbI2xzbV0gVGhlIGBgbHNtYGAgYXR0YWNobWVudCBmb3JtYXQgaXMgYGBsc21bLnNdL1xcdTAwM2Nob29rXFx1MDAzZWBgLlxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoyNDk6Li4gWyNyYXd0cF0gVGhlIGBgcmF3X3RwYGAgYXR0YWNoIGZvcm1hdCBpcyBgYHJhd190cmFjZXBvaW50Wy53XS9cXHUwMDNjdHJhY2Vwb2ludFxcdTAwM2VgYC5cXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMjUwLS4uIFsjdGNfbGVnYWN5XSBUaGUgYGB0Y2BgLCBgYGNsYXNzaWZpZXJgYCBhbmQgYGBhY3Rpb25gYCBhdHRhY2ggdHlwZXMgYXJlIGRlcHJlY2F0ZWQsIHVzZVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD00Mz1CUEZfUFJPR19UWVBFKEJQRl9QUk9HX1RZUEVfUEVSRl9FVkVOVCwgcGVyZl9ldmVudCxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ0LVxcdCAgICAgIHN0cnVjdCBicGZfcGVyZl9ldmVudF9kYXRhLCBzdHJ1Y3QgYnBmX3BlcmZfZXZlbnRfZGF0YV9rZXJuKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDU6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5ULCByYXdfdHJhY2Vwb2ludCxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ2OlxcdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDc6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCByYXdfdHJhY2Vwb2ludF93cml0YWJsZSxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ4OlxcdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNDktQlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1RSQUNJTkcsIHRyYWNpbmcsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTEzNz1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JIQVNILCByaHRhYl9tYXBfb3BzKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6MTM5OkJQRl9MSU5LX1RZUEUoQlBGX0xJTktfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQpXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xNDAtQlBGX0xJTktfVFlQRShCUEZfTElOS19UWVBFX1RSQUNJTkcsIHRyYWNpbmcpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc4MD1pbnQgYnBmX3Byb2JlX3VucmVnaXN0ZXIoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHAsIHN0cnVjdCBicGZfcmF3X3RwX2xpbmsgKmxpbmspO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzgxLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzgyOnN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJhY2Vwb2ludChjb25zdCBjaGFyICpuYW1lKTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc4Mzp2b2lkIGJwZl9wdXRfcmF3X3RyYWNlcG9pbnQoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHApO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzg0LWludCBicGZfZ2V0X3BlcmZfZXZlbnRfaW5mbyhjb25zdCBzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHUzMiAqcHJvZ19pZCxcXG4tLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9ODIwPXN0YXRpYyBpbmxpbmUgaW50IGJwZl9wcm9iZV91bnJlZ2lzdGVyKHN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnRwLCBzdHJ1Y3QgYnBmX3Jhd190cF9saW5rICpsaW5rKVxcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04MjMtfVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6ODI0OnN0YXRpYyBpbmxpbmUgc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpicGZfZ2V0X3Jhd190cmFjZXBvaW50KGNvbnN0IGNoYXIgKm5hbWUpXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04MjUte1xcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04MjctfVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6ODI4OnN0YXRpYyBpbmxpbmUgdm9pZCBicGZfcHV0X3Jhd190cmFjZXBvaW50KHN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnRwKVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODI5LXtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNzczLVxcdFxcdF9fYWxpZ25lZF91NjRcXHRjb29raWU7XFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjE3NzQ6XFx0fSByYXdfdHJhY2Vwb2ludDtcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTc3NS1cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC00MjkyLSAqIFxcdFxcdFRoaXMgaGVscGVyIGlzIHNpbWlsYXIgdG8gKipicGZfcGVyZl9ldmVudF9vdXRwdXQqKlxcXFwgKCkgYnV0XFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjQyOTM6ICogXFx0XFx0cmVzdHJpY3RlZCB0byByYXdfdHJhY2Vwb2ludCBicGYgcHJvZ3JhbXMuXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQyOTQtICogXFx0UmV0dXJuXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNDQ0MC0gKlxcdFxcdFRoaXMgaGVscGVyIGlzIHNpbWlsYXIgdG8gKipicGZfcGVyZl9ldmVudG91dHB1dCoqXFxcXCAoKSBidXRcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NDQ0MTogKlxcdFxcdHJlc3RyaWN0ZWQgdG8gcmF3X3RyYWNlcG9pbnQgYnBmIHByb2dyYW1zLlxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC00NDQyLSAqXFx0UmV0dXJuXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9Njc2Mz1zdHJ1Y3QgYnBmX2xpbmtfaW5mbyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjc3Mi1cXHRcXHRcXHRfX3U2NCBjb29raWU7XFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjY3NzM6XFx0XFx0fSByYXdfdHJhY2Vwb2ludDtcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjc3NC1cXHRcXHRzdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTczMDk9c3RydWN0IGJwZl9jZ3JvdXBfZGV2X2N0eCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNzMxNS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NzMxNjpzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3Mge1xcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC03MzE3LVxcdF9fdTY0IGFyZ3NbMF07XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTYyMTY9c3RhdGljIGludCBidGZfdmFsaWRhdGVfcHJvZ19jdHhfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTYyODMtXFx0XFx0XFx0aWYgKF9fYnRmX3R5cGVfaXNfc3RydWN0KHQpIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9idGYuYzo2Mjg0OlxcdFxcdFxcdCAgICBzdHJjbXAodG5hbWUsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfYXJnc1xcXCIpID09IDApXFxua2VybmVsL2JwZi9idGYuYy02Mjg1LVxcdFxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzY4OT1zdGF0aWMgaW50IGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM3ODMtXFx0ICogLSBpZiB0Z3RfcHJvZyA9PSBOVUxMIHdoZW4gdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkIHVzaW5nIHRoZSBvbGRcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozNzg0OlxcdCAqICAgcmF3X3RyYWNlcG9pbnRfb3BlbiBBUEksIGFuZCB3ZSBuZWVkIGEgdGFyZ2V0IGZyb20gcHJvZy1cXHUwMDNlYXV4XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc4NS1cXHQgKlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzkwOD1zdGF0aWMgdm9pZCBicGZfcmF3X3RwX2xpbmtfcmVsZWFzZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zOTEzLVxcdGJwZl9wcm9iZV91bnJlZ2lzdGVyKHJhd190cC1cXHUwMDNlYnRwLCByYXdfdHApO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5MTQ6XFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChyYXdfdHAtXFx1MDAzZWJ0cCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzkxNS19XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0zOTU3PXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2ZpbGxfbGlua19pbmZvKGNvbnN0IHN0cnVjdCBicGZfbGluayAqbGluayxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NjEtXFx0XFx0Y29udGFpbmVyX29mKGxpbmssIHN0cnVjdCBicGZfcmF3X3RwX2xpbmssIGxpbmspO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5NjI6XFx0Y2hhciBfX3VzZXIgKnVidWYgPSB1NjRfdG9fdXNlcl9wdHIoaW5mby1cXHUwMDNlcmF3X3RyYWNlcG9pbnQudHBfbmFtZSk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzk2My1cXHRjb25zdCBjaGFyICp0cF9uYW1lID0gcmF3X3RwX2xpbmstXFx1MDAzZWJ0cC1cXHUwMDNldHAtXFx1MDAzZW5hbWU7XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mzk2NDpcXHR1MzIgdWxlbiA9IGluZm8tXFx1MDAzZXJhd190cmFjZXBvaW50LnRwX25hbWVfbGVuO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NjUtXFx0c2l6ZV90IHRwX2xlbiA9IHN0cmxlbih0cF9uYW1lKTtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NjktXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mzk3MDpcXHRpbmZvLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC50cF9uYW1lX2xlbiA9IHRwX2xlbiArIDE7XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mzk3MTpcXHRpbmZvLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC5jb29raWUgPSByYXdfdHBfbGluay1cXHUwMDNlY29va2llO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NzItXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00Mzg4LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzODk6XFx0YnRwID0gYnBmX2dldF9yYXdfdHJhY2Vwb2ludCh0cF9uYW1lKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzkwLVxcdGlmICghYnRwKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM5My1cXHRpZiAocHJvZy1cXHUwMDNlc2xlZXBhYmxlIFxcdTAwMjZcXHUwMDI2ICF0cmFjZXBvaW50X2lzX2ZhdWx0YWJsZShidHAtXFx1MDAzZXRwKSkge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzOTQ6XFx0XFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzOTUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDIzLW91dF9wdXRfYnRwOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0MjQ6XFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQ0MjUtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQ0MjctXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQyODojZGVmaW5lIEJQRl9SQVdfVFJBQ0VQT0lOVF9PUEVOX0xBU1RfRklFTEQgcmF3X3RyYWNlcG9pbnQuY29va2llXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQyOS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0NDMwOnN0YXRpYyBpbnQgYnBmX3Jhd190cmFjZXBvaW50X29wZW4oY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQzMS17XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDM5LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0NDA6XFx0cHJvZyA9IGJwZl9wcm9nX2dldChhdHRyLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC5wcm9nX2ZkKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQxLVxcdGlmIChJU19FUlIocHJvZykpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQzLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0NDQ6XFx0dHBfbmFtZSA9IHU2NF90b191c2VyX3B0cihhdHRyLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC5uYW1lKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0NDQ1OlxcdGNvb2tpZSA9IGF0dHItXFx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQ2LVxcdGZkID0gYnBmX3Jhd190cF9saW5rX2F0dGFjaChwcm9nLCB0cF9uYW1lLCBjb29raWUsIHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKTtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTYzNTQ9c3RhdGljIGludCBfX3N5c19icGYoZW51bSBicGZfY21kIGNtZCwgYnBmcHRyX3QgdWF0dHIsIHVuc2lnbmVkIGludCBzaXplLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjQ1OS1cXHRjYXNlIEJQRl9SQVdfVFJBQ0VQT0lOVF9PUEVOOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY0NjA6XFx0XFx0ZXJyID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oXFx1MDAyNmF0dHIpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY0NjEtXFx0XFx0YnJlYWs7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4OTU9aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNjYtXFx0XFx0ICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDY3OlxcdFxcdGJ0cCA9IGJwZl9nZXRfcmF3X3RyYWNlcG9pbnQodG5hbWUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA2OC1cXHRcXHRpZiAoIWJ0cClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA3Mi1cXHRcXHRcXHRcXHR0bmFtZSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDczOlxcdFxcdFxcdGJwZl9wdXRfcmF3X3RyYWNlcG9pbnQoYnRwKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNzQtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNzctXFx0XFx0XFx0XFx0XFx0dHJhY2Vfc3ltYm9sKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwNzg6XFx0XFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA3OS1cXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz01NT1zdGF0aWMgREVGSU5FX01VVEVYKGJwZl9tb2R1bGVfbXV0ZXgpO1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy01Ni1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6NTc6c3RhdGljIHN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJhY2Vwb2ludF9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSlcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtNTgte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTc4LSNlbHNlXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjc5OnN0YXRpYyBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJwZl9nZXRfcmF3X3RyYWNlcG9pbnRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTgwLXtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xNjIwPXN0YXRpYyB2b2lkIHB1dF9icGZfcmF3X3RwX3JlZ3Modm9pZClcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjI0LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjI1OkJQRl9DQUxMXzUoYnBmX3BlcmZfZXZlbnRfb3V0cHV0X3Jhd190cCwgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzICosIGFyZ3MsXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2MjYtXFx0ICAgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB1NjQsIGZsYWdzLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSlcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xNjU0PWV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3hkcF9nZXRfYnVmZl9sZW5fdHJhY2VfcHJvdG87XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2NTUtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2NTY6QlBGX0NBTExfMyhicGZfZ2V0X3N0YWNraWRfcmF3X3RwLCBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MgKiwgYXJncyxcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY1Ny1cXHQgICBzdHJ1Y3QgYnBmX21hcCAqLCBtYXAsIHU2NCwgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MTY3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tpZF9wcm90b19yYXdfdHAgPSB7XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY4MS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTY4MjpCUEZfQ0FMTF80KGJwZl9nZXRfc3RhY2tfcmF3X3RwLCBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MgKiwgYXJncyxcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY4My1cXHQgICB2b2lkICosIGJ1ZiwgdTMyLCBzaXplLCB1NjQsIGZsYWdzKVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE4MTY9aW50IF9fd2VhayBicGZfcHJvZ190ZXN0X3J1bl90cmFjaW5nKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODIyLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODIzOmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIHJhd190cmFjZXBvaW50X3ZlcmlmaWVyX29wcyA9IHtcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTgyNC1cXHQuZ2V0X2Z1bmNfcHJvdG8gID0gcmF3X3RwX3Byb2dfZnVuY19wcm90byxcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODI3LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODI4OmNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgcmF3X3RyYWNlcG9pbnRfcHJvZ19vcHMgPSB7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4MjktI2lmZGVmIENPTkZJR19ORVRcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xODQzPXN0YXRpYyBib29sIHJhd190cF93cml0YWJsZV9wcm9nX2lzX3ZhbGlkX2FjY2VzcyhpbnQgb2ZmLCBpbnQgc2l6ZSxcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODU1LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODU2OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIHJhd190cmFjZXBvaW50X3dyaXRhYmxlX3ZlcmlmaWVyX29wcyA9IHtcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg1Ny1cXHQuZ2V0X2Z1bmNfcHJvdG8gID0gcmF3X3RwX3Byb2dfZnVuY19wcm90byxcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODYwLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODYxOmNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfcHJvZ19vcHMgPSB7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NjItfTtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0yMDgwPWV4dGVybiBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgX19zdG9wX19icGZfcmF3X3RwW107XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwODEtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjIwODI6c3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpicGZfZ2V0X3Jhd190cmFjZXBvaW50KGNvbnN0IGNoYXIgKm5hbWUpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwODMte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwOTAtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjIwOTE6XFx0cmV0dXJuIGJwZl9nZXRfcmF3X3RyYWNlcG9pbnRfbW9kdWxlKG5hbWUpO1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yMDkyLX1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjA5My1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MjA5NDp2b2lkIGJwZl9wdXRfcmF3X3RyYWNlcG9pbnQoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHApXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwOTUte1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXBlcmYucnN0PTMyPWJwZnRvb2wgcGVyZiB7IHNob3cgfCBsaXN0IH1cXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcGVyZi5yc3Q6MzM6ICAgIExpc3QgYWxsIHJhd190cmFjZXBvaW50LCB0cmFjZXBvaW50LCBrcHJvYmUgYXR0YWNobWVudCBpbiB0aGUgc3lzdGVtLlxcbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdC0zNC1cXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdC0zNi0gICAgZm9sbG93ZWQgYnkgYnBmIHByb2dyYW0gaWQsIGF0dGFjaG1lbnQgaW5mb3JtYXRpb24sIGFuZCBhdHRhY2htZW50IHBvaW50LlxcbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdDozNzogICAgVGhlIGF0dGFjaG1lbnQgcG9pbnQgZm9yIHJhd190cmFjZXBvaW50L3RyYWNlcG9pbnQgaXMgdGhlIHRyYWNlIHByb2JlIG5hbWUuXFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXBlcmYucnN0LTM4LSAgICBUaGUgYXR0YWNobWVudCBwb2ludCBmb3Iga1tyZXRdcHJvYmUgaXMgZWl0aGVyIHN5bWJvbCBuYW1lIGFuZCBvZmZzZXQsIG9yIGFcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wcm9nLnJzdD0yNz1QUk9HIENPTU1BTkRTXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3QtNDYtfCAgICAgKipzb2NrZXQqKiB8ICoqa3Byb2JlKiogfCAqKmtyZXRwcm9iZSoqIHwgKipjbGFzc2lmaWVyKiogfCAqKmFjdGlvbioqIHxcXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q6NDc6fCAgICAgKip0cmFjZXBvaW50KiogfCAqKnJhd190cmFjZXBvaW50KiogfCAqKnhkcCoqIHwgKipwZXJmX2V2ZW50KiogfCAqKmNncm91cC9za2IqKiB8XFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTQ4LXwgICAgICoqY2dyb3VwL3NvY2sqKiB8ICoqY2dyb3VwL2RldioqIHwgKipsd3RfaW4qKiB8ICoqbHd0X291dCoqIHwgKipsd3RfeG1pdCoqIHxcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL2Jhc2gtY29tcGxldGlvbi9icGZ0b29sPTI1Nj1fYnBmdG9vbCgpXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9iYXNoLWNvbXBsZXRpb24vYnBmdG9vbC00OTAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcmV0cHJvYmUgY2xhc3NpZmllciBmbG93X2Rpc3NlY3RvciBcXFxcXFxudG9vbHMvYnBmL2JwZnRvb2wvYmFzaC1jb21wbGV0aW9uL2JwZnRvb2w6NDkxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uIHRyYWNlcG9pbnQgcmF3X3RyYWNlcG9pbnQgXFxcXFxcbnRvb2xzL2JwZi9icGZ0b29sL2Jhc2gtY29tcGxldGlvbi9icGZ0b29sLTQ5Mi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkcCBwZXJmX2V2ZW50IGNncm91cC9za2IgY2dyb3VwL3NvY2sgXFxcXFxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmM9NTYyPXN0YXRpYyB2b2lkIGNvZGVnZW5fYXR0YWNoX2RldGFjaChzdHJ1Y3QgYnBmX29iamVjdCAqb2JqLCBjb25zdCBjaGFyICpvYmpfbmFtZSlcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jLTU4MC1cXHRcXHRcXHR0cF9uYW1lID0gc3RyY2hyKGJwZl9wcm9ncmFtX19zZWN0aW9uX25hbWUocHJvZyksICcvJykgKyAxO1xcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jOjU4MTpcXHRcXHRcXHRwcmludGYoXFxcIlxcXFx0aW50IGZkID0gc2tlbF9yYXdfdHJhY2Vwb2ludF9vcGVuKFxcXFxcXFwiJXNcXFxcXFxcIiwgcHJvZ19mZCk7XFxcXG5cXFwiLCB0cF9uYW1lKTtcXG50b29scy9icGYvYnBmdG9vbC9nZW4uYy01ODItXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9nZW4uYy01ODctXFx0XFx0XFx0ZWxzZVxcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jOjU4ODpcXHRcXHRcXHRcXHRwcmludGYoXFxcIlxcXFx0aW50IGZkID0gc2tlbF9yYXdfdHJhY2Vwb2ludF9vcGVuKE5VTEwsIHByb2dfZmQpO1xcXFxuXFxcIik7XFxudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmMtNTg5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jPTUxNz1zdGF0aWMgaW50IHNob3dfbGlua19jbG9zZV9qc29uKGludCBmZCwgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8pXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtNTI5LVxcdFxcdGpzb253X3N0cmluZ19maWVsZChqc29uX3d0ciwgXFxcInRwX25hbWVcXFwiLFxcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo1MzA6XFx0XFx0XFx0XFx0ICAgdTY0X3RvX3B0cihpbmZvLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC50cF9uYW1lKSk7XFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjUzMTpcXHRcXHRqc29ud191aW50X2ZpZWxkKGpzb25fd3RyLCBcXFwiY29va2llXFxcIiwgaW5mby1cXHUwMDNlcmF3X3RyYWNlcG9pbnQuY29va2llKTtcXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtNTMyLVxcdFxcdGJyZWFrO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jPTkxOD1zdGF0aWMgaW50IHNob3dfbGlua19jbG9zZV9wbGFpbihpbnQgZmQsIHN0cnVjdCBicGZfbGlua19pbmZvICppbmZvKVxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jLTkyOC1cXHRcXHRwcmludGYoXFxcIlxcXFxuXFxcXHR0cCAnJXMnICBcXFwiLFxcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo5Mjk6XFx0XFx0ICAgICAgIChjb25zdCBjaGFyICopdTY0X3RvX3B0cihpbmZvLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC50cF9uYW1lKSk7XFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjkzMDpcXHRcXHRpZiAoaW5mby1cXHUwMDNlcmF3X3RyYWNlcG9pbnQuY29va2llKVxcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo5MzE6XFx0XFx0XFx0cHJpbnRmKFxcXCJjb29raWUgJWxsdSAgXFxcIiwgaW5mby1cXHUwMDNlcmF3X3RyYWNlcG9pbnQuY29va2llKTtcXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtOTMyLVxcdFxcdGJyZWFrO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jPTEwMjk9c3RhdGljIGludCBkb19zaG93X2xpbmsoaW50IGZkKVxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jLTEwNTAtXFx0aWYgKGluZm8udHlwZSA9PSBCUEZfTElOS19UWVBFX1JBV19UUkFDRVBPSU5UIFxcdTAwMjZcXHUwMDI2XFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjEwNTE6XFx0ICAgICFpbmZvLnJhd190cmFjZXBvaW50LnRwX25hbWUpIHtcXG50b29scy9icGYvYnBmdG9vbC9saW5rLmM6MTA1MjpcXHRcXHRpbmZvLnJhd190cmFjZXBvaW50LnRwX25hbWUgPSBwdHJfdG9fdTY0KFxcdTAwMjZidWYpO1xcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzoxMDUzOlxcdFxcdGluZm8ucmF3X3RyYWNlcG9pbnQudHBfbmFtZV9sZW4gPSBzaXplb2YoYnVmKTtcXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtMTA1NC1cXHRcXHRnb3RvIGFnYWluO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jPTY1PXN0YXRpYyB2b2lkIHByaW50X3BlcmZfanNvbihpbnQgcGlkLCBpbnQgZmQsIF9fdTMyIHByb2dfaWQsIF9fdTMyIGZkX3R5cGUsXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmMtNzMtXFx0Y2FzZSBCUEZfRkRfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmM6NzQ6XFx0XFx0anNvbndfc3RyaW5nX2ZpZWxkKGpzb25fd3RyLCBcXFwiZmRfdHlwZVxcXCIsIFxcXCJyYXdfdHJhY2Vwb2ludFxcXCIpO1xcbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYy03NS1cXHRcXHRqc29ud19zdHJpbmdfZmllbGQoanNvbl93dHIsIFxcXCJ0cmFjZXBvaW50XFxcIiwgYnVmKTtcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYz0xMTU9c3RhdGljIHZvaWQgcHJpbnRfcGVyZl9wbGFpbihpbnQgcGlkLCBpbnQgZmQsIF9fdTMyIHByb2dfaWQsIF9fdTMyIGZkX3R5cGUsXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmMtMTIwLVxcdGNhc2UgQlBGX0ZEX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jOjEyMTpcXHRcXHRwcmludGYoXFxcInJhd190cmFjZXBvaW50ICAlc1xcXFxuXFxcIiwgYnVmKTtcXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmMtMTIyLVxcdFxcdGJyZWFrO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jPTI1NDI9c3RhdGljIGludCBkb19oZWxwKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL3Byb2cuYy0yNTc0LVxcdFxcdFxcXCIgICAgICAgVFlQRSA6PSB7IHNvY2tldCB8IGtwcm9iZSB8IGtyZXRwcm9iZSB8IGNsYXNzaWZpZXIgfCBhY3Rpb24gfFxcXFxuXFxcIlxcbnRvb2xzL2JwZi9icGZ0b29sL3Byb2cuYzoyNTc1OlxcdFxcdFxcXCIgICAgICAgICAgICAgICAgIHRyYWNlcG9pbnQgfCByYXdfdHJhY2Vwb2ludCB8IHhkcCB8IHBlcmZfZXZlbnQgfCBjZ3JvdXAvc2tiIHxcXFxcblxcXCJcXG50b29scy9icGYvYnBmdG9vbC9wcm9nLmMtMjU3Ni1cXHRcXHRcXFwiICAgICAgICAgICAgICAgICBjZ3JvdXAvc29jayB8IGNncm91cC9kZXYgfCBsd3RfaW4gfCBsd3Rfb3V0IHwgbHd0X3htaXQgfFxcXFxuXFxcIlxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTE1Mjc9dW5pb24gYnBmX2F0dHIge1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE3NzMtXFx0XFx0X19hbGlnbmVkX3U2NFxcdGNvb2tpZTtcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTc3NDpcXHR9IHJhd190cmFjZXBvaW50O1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNzc1LVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQyOTItICogXFx0XFx0VGhpcyBoZWxwZXIgaXMgc2ltaWxhciB0byAqKmJwZl9wZXJmX2V2ZW50X291dHB1dCoqXFxcXCAoKSBidXRcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NDI5MzogKiBcXHRcXHRyZXN0cmljdGVkIHRvIHJhd190cmFjZXBvaW50IGJwZiBwcm9ncmFtcy5cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNDI5NC0gKiBcXHRSZXR1cm5cXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC00NDQwLSAqXFx0XFx0VGhpcyBoZWxwZXIgaXMgc2ltaWxhciB0byAqKmJwZl9wZXJmX2V2ZW50b3V0cHV0KipcXFxcICgpIGJ1dFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo0NDQxOiAqXFx0XFx0cmVzdHJpY3RlZCB0byByYXdfdHJhY2Vwb2ludCBicGYgcHJvZ3JhbXMuXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQ0NDItICpcXHRSZXR1cm5cXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD02NzYzPXN0cnVjdCBicGZfbGlua19pbmZvIHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC02NzcyLVxcdFxcdFxcdF9fdTY0IGNvb2tpZTtcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Njc3MzpcXHRcXHR9IHJhd190cmFjZXBvaW50O1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC02Nzc0LVxcdFxcdHN0cnVjdCB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9NzMwOT1zdHJ1Y3QgYnBmX2Nncm91cF9kZXZfY3R4IHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC03MzE1LVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo3MzE2OnN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncyB7XFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTczMTctXFx0X191NjQgYXJnc1swXTtcXG4tLVxcbnRvb2xzL2xpYi9icGYvYnBmLmM9NzgyPWludCBicGZfbGlua19jcmVhdGUoaW50IHByb2dfZmQsIGludCB0YXJnZXRfZmQsXFxuLS1cXG50b29scy9saWIvYnBmL2JwZi5jLTk4NS1cXHRjYXNlIEJQRl9NT0RJRllfUkVUVVJOOlxcbnRvb2xzL2xpYi9icGYvYnBmLmM6OTg2OlxcdFxcdHJldHVybiBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihOVUxMLCBwcm9nX2ZkKTtcXG50b29scy9saWIvYnBmL2JwZi5jLTk4Ny1cXHRkZWZhdWx0Olxcbi0tXFxudG9vbHMvbGliL2JwZi9icGYuYz0xMjg4PWludCBicGZfbGlua19nZXRfaW5mb19ieV9mZChpbnQgbGlua19mZCwgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8sIF9fdTMyICppbmZvX2xlbilcXG4tLVxcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTI5Mi1cXG50b29scy9saWIvYnBmL2JwZi5jOjEyOTM6aW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMoaW50IHByb2dfZmQsIHN0cnVjdCBicGZfcmF3X3RwX29wdHMgKm9wdHMpXFxudG9vbHMvbGliL2JwZi9icGYuYy0xMjk0LXtcXG50b29scy9saWIvYnBmL2JwZi5jOjEyOTU6XFx0Y29uc3Qgc2l6ZV90IGF0dHJfc3ogPSBvZmZzZXRvZmVuZCh1bmlvbiBicGZfYXR0ciwgcmF3X3RyYWNlcG9pbnQpO1xcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTI5Ni1cXHR1bmlvbiBicGZfYXR0ciBhdHRyO1xcbi0tXFxudG9vbHMvbGliL2JwZi9icGYuYy0xMzAyLVxcdG1lbXNldChcXHUwMDI2YXR0ciwgMCwgYXR0cl9zeik7XFxudG9vbHMvbGliL2JwZi9icGYuYzoxMzAzOlxcdGF0dHIucmF3X3RyYWNlcG9pbnQucHJvZ19mZCA9IHByb2dfZmQ7XFxudG9vbHMvbGliL2JwZi9icGYuYzoxMzA0OlxcdGF0dHIucmF3X3RyYWNlcG9pbnQubmFtZSA9IHB0cl90b191NjQoT1BUU19HRVQob3B0cywgdHBfbmFtZSwgTlVMTCkpO1xcbnRvb2xzL2xpYi9icGYvYnBmLmM6MTMwNTpcXHRhdHRyLnJhd190cmFjZXBvaW50LmNvb2tpZSA9IE9QVFNfR0VUKG9wdHMsIGNvb2tpZSwgMCk7XFxudG9vbHMvbGliL2JwZi9icGYuYy0xMzA2LVxcbi0tXFxudG9vbHMvbGliL2JwZi9icGYuYy0xMzEwLVxcbnRvb2xzL2xpYi9icGYvYnBmLmM6MTMxMTppbnQgYnBmX3Jhd190cmFjZXBvaW50X29wZW4oY29uc3QgY2hhciAqbmFtZSwgaW50IHByb2dfZmQpXFxudG9vbHMvbGliL2JwZi9icGYuYy0xMzEyLXtcXG4tLVxcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMxNC1cXG50b29scy9saWIvYnBmL2JwZi5jOjEzMTU6XFx0cmV0dXJuIGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXFx1MDAyNm9wdHMpO1xcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMxNi19XFxuLS1cXG50b29scy9saWIvYnBmL2JwZi5oPTY2MT1zdHJ1Y3QgYnBmX3Jhd190cF9vcHRzIHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvYnBmLmgtNjY4LVxcbnRvb2xzL2xpYi9icGYvYnBmLmg6NjY5OkxJQkJQRl9BUEkgaW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMoaW50IHByb2dfZmQsIHN0cnVjdCBicGZfcmF3X3RwX29wdHMgKm9wdHMpO1xcbnRvb2xzL2xpYi9icGYvYnBmLmg6NjcwOkxJQkJQRl9BUEkgaW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwcm9nX2ZkKTtcXG50b29scy9saWIvYnBmL2JwZi5oLTY3MS1MSUJCUEZfQVBJIGludCBicGZfdGFza19mZF9xdWVyeShpbnQgcGlkLCBpbnQgZmQsIF9fdTMyIGZsYWdzLCBjaGFyICpidWYsXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTE0ND1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGxpbmtfdHlwZV9uYW1lW10gPSB7XFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xNDUtXFx0W0JQRl9MSU5LX1RZUEVfVU5TUEVDXVxcdFxcdFxcdD0gXFxcInVuc3BlY1xcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxNDY6XFx0W0JQRl9MSU5LX1RZUEVfUkFXX1RSQUNFUE9JTlRdXFx0XFx0PSBcXFwicmF3X3RyYWNlcG9pbnRcXFwiLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTQ3LVxcdFtCUEZfTElOS19UWVBFX1RSQUNJTkddXFx0XFx0XFx0PSBcXFwidHJhY2luZ1xcXCIsXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTIwMj1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHByb2dfdHlwZV9uYW1lW10gPSB7XFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIxOS1cXHRbQlBGX1BST0dfVFlQRV9TS19NU0ddXFx0XFx0XFx0PSBcXFwic2tfbXNnXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyMDpcXHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF1cXHRcXHQ9IFxcXCJyYXdfdHJhY2Vwb2ludFxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjEtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tfQUREUl1cXHQ9IFxcXCJjZ3JvdXBfc29ja19hZGRyXFxcIixcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI2LVxcdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVExdXFx0XFx0PSBcXFwiY2dyb3VwX3N5c2N0bFxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoyMjc6XFx0W0JQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVdXFx0PSBcXFwicmF3X3RyYWNlcG9pbnRfd3JpdGFibGVcXFwiLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI4LVxcdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLT1BUXVxcdFxcdD0gXFxcImNncm91cF9zb2Nrb3B0XFxcIixcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9NzExMz1zdGF0aWMgc3RydWN0IHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzEzMC1cXHR7IEJQRl9QUk9HX1RZUEVfUEVSRl9FVkVOVCwgICAgICAgICAgICAgIFxcXCJicGZfcGVyZl9ldmVudF9kYXRhXFxcIiB9LFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6NzEzMTpcXHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQsICAgICAgICAgIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfYXJnc1xcXCIgfSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjcxMzI6XFx0eyBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBcXFwiYnBmX3Jhd190cmFjZXBvaW50X2FyZ3NcXFwiIH0sXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MTMzLVxcdHsgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1QsICAgICAgICAgICAgICAgXFxcIl9fc2tfYnVmZlxcXCIgfSxcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTAwNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfc2VjX2RlZiBzZWN0aW9uX2RlZnNbXSA9IHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTAxMTEtXFx0U0VDX0RFRihcXFwidHAucytcXFwiLFxcdFxcdFRSQUNFUE9JTlQsIDAsIFNFQ19TTEVFUEFCTEUsIGF0dGFjaF90cCksXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMDExMjpcXHRTRUNfREVGKFxcXCJyYXdfdHJhY2Vwb2ludCtcXFwiLFxcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMDExMy1cXHRTRUNfREVGKFxcXCJyYXdfdHArXFxcIixcXHRcXHRSQVdfVFJBQ0VQT0lOVCwgMCwgU0VDX05PTkUsIGF0dGFjaF9yYXdfdHApLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTAxMTQ6XFx0U0VDX0RFRihcXFwicmF3X3RyYWNlcG9pbnQucytcXFwiLFxcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfU0xFRVBBQkxFLCBhdHRhY2hfcmF3X3RwKSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEwMTE1LVxcdFNFQ19ERUYoXFxcInJhd190cC5zK1xcXCIsXFx0XFx0UkFXX1RSQUNFUE9JTlQsIDAsIFNFQ19TTEVFUEFCTEUsIGF0dGFjaF9yYXdfdHApLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTAxMTY6XFx0U0VDX0RFRihcXFwicmF3X3RyYWNlcG9pbnQudytcXFwiLFxcdFJBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMDExNy1cXHRTRUNfREVGKFxcXCJyYXdfdHAudytcXFwiLFxcdFxcdFJBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTEzNTk2PXN0cnVjdCBicGZfbGluayAqXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzU5NzpicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50X29wdHMoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM1OTgtXFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqdHBfbmFtZSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNTk5OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfb3B0cyAqb3B0cylcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjAwLXtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MDQtXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzYwNTpcXHRpZiAoIU9QVFNfVkFMSUQob3B0cywgYnBmX3Jhd190cmFjZXBvaW50X29wdHMpKVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MDYtXFx0XFx0cmV0dXJuIGxpYmJwZl9lcnJfcHRyKC1FSU5WQUwpO1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzYyMC1cXHRyYXdfb3B0cy5jb29raWUgPSBPUFRTX0dFVChvcHRzLCBjb29raWUsIDApO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM2MjE6XFx0cGZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW5fb3B0cyhwcm9nX2ZkLCBcXHUwMDI2cmF3X29wdHMpO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MjItXFx0aWYgKHBmZCBcXHUwMDNjIDApIHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzItXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzYzMzpzdHJ1Y3QgYnBmX2xpbmsgKmJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKnRwX25hbWUpXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzYzNS17XFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzYzNjpcXHRyZXR1cm4gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludF9vcHRzKHByb2csIHRwX25hbWUsIE5VTEwpO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzctfVxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz0xMzYzOT1zdGF0aWMgaW50IGF0dGFjaF9yYXdfdHAoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBsb25nIGNvb2tpZSwgc3RydWN0IGJwZl9saW5rICoqbGluaylcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2NDItXFx0XFx0XFxcInJhd190cFxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzY0MzpcXHRcXHRcXFwicmF3X3RyYWNlcG9pbnRcXFwiLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2NDQtXFx0XFx0XFxcInJhd190cC53XFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjQ1OlxcdFxcdFxcXCJyYXdfdHJhY2Vwb2ludC53XFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjQ2LVxcdFxcdFxcXCJyYXdfdHAuc1xcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzY0NzpcXHRcXHRcXFwicmF3X3RyYWNlcG9pbnQuc1xcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzY0OC1cXHR9O1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzY2MC1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjYxOlxcdCpsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChwcm9nLCBtYXRjaCk7XFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzY2Mi1cXHRyZXR1cm4gbGliYnBmX2dldF9lcnJvcigqbGluayk7XFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTEzODg0PXN0cnVjdCBicGZfbGluayAqYnBmX3Byb2dyYW1fX2F0dGFjaF9mcmVwbGFjZShjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzOTEzLVxcdH0gZWxzZSB7XFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzkxNDpcXHRcXHQvKiBubyB0YXJnZXQsIHNvIHVzZSByYXdfdHJhY2Vwb2ludF9vcGVuIGZvciBjb21wYXRpYmlsaXR5XFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzkxNS1cXHRcXHQgKiB3aXRoIG9sZCBrZXJuZWxzXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5oPTg1Mz1icGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlcG9pbnRfb3B0cyhjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5oLTg1Ny1cXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg1ODpzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X29wdHMge1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODU5LVxcdHNpemVfdCBzejsgLyogc2l6ZSBvZiB0aGlzIHN0cnVjdCBmb3IgZm9yd2FyZC9iYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5oLTg2Mi19O1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmg6ODYzOiNkZWZpbmUgYnBmX3Jhd190cmFjZXBvaW50X29wdHNfX2xhc3RfZmllbGQgY29va2llXFxudG9vbHMvbGliL2JwZi9saWJicGYuaC04NjQtXFxudG9vbHMvbGliL2JwZi9saWJicGYuaD04NjU9TElCQlBGX0FQSSBzdHJ1Y3QgYnBmX2xpbmsgKlxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmg6ODY2OmJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODY3LVxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKnRwX25hbWUpO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmg9ODY4PUxJQkJQRl9BUEkgc3RydWN0IGJwZl9saW5rICpcXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg2OTpicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50X29wdHMoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODcwLVxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKnRwX25hbWUsXFxudG9vbHMvbGliL2JwZi9saWJicGYuaDo4NzE6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9vcHRzICpvcHRzKTtcXG50b29scy9saWIvYnBmL2xpYmJwZi5oLTg3Mi1cXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcD0xPUxJQkJQRl8wLjAuMSB7XFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXAtNTEtXFx0XFx0YnBmX3Byb2dfbGluZm9fX2xmaW5kO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcDo1MjpcXHRcXHRicGZfcmF3X3RyYWNlcG9pbnRfb3BlbjtcXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXAtNTMtXFx0XFx0YnBmX3Rhc2tfZmRfcXVlcnk7XFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA9ODg9TElCQlBGXzAuMC40IHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcC05Mi1cXHRcXHRicGZfcHJvZ3JhbV9fYXR0YWNoX3BlcmZfZXZlbnQ7XFxudG9vbHMvbGliL2JwZi9saWJicGYubWFwOjkzOlxcdFxcdGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQ7XFxudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTk0LVxcdFxcdGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludDtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcD00MTE9TElCQlBGXzEuNC4wIHtcXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXAtNDEyLVxcdGdsb2JhbDpcXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NDEzOlxcdFxcdGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnRfb3B0cztcXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NDE0OlxcdFxcdGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHM7XFxudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTQxNS1cXHRcXHRicGZfdG9rZW5fY3JlYXRlO1xcbi0tXFxudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg9Mjg2PXN0YXRpYyBpbmxpbmUgaW50IHNrZWxfbWFwX2dldF9mZF9ieV9pZChfX3UzMiBpZClcXG4tLVxcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTI5Ni1cXG50b29scy9saWIvYnBmL3NrZWxfaW50ZXJuYWwuaDoyOTc6c3RhdGljIGlubGluZSBpbnQgc2tlbF9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwcm9nX2ZkKVxcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTI5OC17XFxudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg6Mjk5OlxcdGNvbnN0IHNpemVfdCBhdHRyX3N6ID0gb2Zmc2V0b2ZlbmQodW5pb24gYnBmX2F0dHIsIHJhd190cmFjZXBvaW50LnByb2dfZmQpO1xcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTMwMC1cXHR1bmlvbiBicGZfYXR0ciBhdHRyO1xcbi0tXFxudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmgtMzAyLVxcdG1lbXNldChcXHUwMDI2YXR0ciwgMCwgYXR0cl9zeik7XFxudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg6MzAzOlxcdGF0dHIucmF3X3RyYWNlcG9pbnQubmFtZSA9IChsb25nKSBuYW1lO1xcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oOjMwNDpcXHRhdHRyLnJhd190cmFjZXBvaW50LnByb2dfZmQgPSBwcm9nX2ZkO1xcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTMwNS1cXG4tLVxcbnRvb2xzL3BlcmYvdXRpbC9icGZfZnRyYWNlLmM9MjI9aW50IHBlcmZfZnRyYWNlX19sYXRlbmN5X3ByZXBhcmVfYnBmKHN0cnVjdCBwZXJmX2Z0cmFjZSAqZnRyYWNlKVxcbi0tXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYy0xMjktXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYzoxMzA6XFx0XFx0c2tlbC1cXHUwMDNlbGlua3MuZXZlbnRfYmVnaW4gPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KHNrZWwtXFx1MDAzZXByb2dzLmV2ZW50X2JlZ2luLFxcbnRvb2xzL3BlcmYvdXRpbC9icGZfZnRyYWNlLmMtMTMxLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZXZlbnQtXFx1MDAzZW5hbWUpO1xcbi0tXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYy0xMzktXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYzoxNDA6XFx0XFx0c2tlbC1cXHUwMDNlbGlua3MuZXZlbnRfZW5kID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVxcdTAwM2Vwcm9ncy5ldmVudF9lbmQsXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYy0xNDEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBldmVudC1cXHUwMDNlbmFtZSk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM9NjE1PXN0YXRpYyB2b2lkIHRwX2J0Zl9zdWJ0ZXN0KHN0cnVjdCB0ZXN0X2JwZl9jb29raWUgKnNrZWwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNjMyLVxcdHJhd190cF9vcHRzLmNvb2tpZSA9IGNvb2tpZSA9IDB4MTEwMDAwMDAwMDAwMDBMO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYzo2MzM6XFx0bGlua19mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXFx1MDAyNnJhd190cF9vcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NjM0OlxcdGlmICghQVNTRVJUX0dFKGxpbmtfZmQsIDAsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfb3Blbl9vcHRzXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTYzNS1cXHRcXHRnb3RvIGNsZWFudXA7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM9Njc3PXN0YXRpYyBpbnQgdmVyaWZ5X3Jhd190cF9saW5rX2luZm8oaW50IGZkLCB1NjQgY29va2llKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTY5MC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NjkxOlxcdEFTU0VSVF9FUShpbmZvLnJhd190cmFjZXBvaW50LmNvb2tpZSwgY29va2llLCBcXFwicmF3X3RwX2Nvb2tpZVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYy02OTItXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM9Njk2PXN0YXRpYyB2b2lkIHJhd190cF9zdWJ0ZXN0KHN0cnVjdCB0ZXN0X2JwZl9jb29raWUgKnNrZWwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNzAxLVxcdExJQkJQRl9PUFRTKGJwZl9yYXdfdHBfb3B0cywgcmF3X3RwX29wdHMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYzo3MDI6XFx0TElCQlBGX09QVFMoYnBmX3Jhd190cmFjZXBvaW50X29wdHMsIG9wdHMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYy03MDMtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNzExLVxcdHJhd190cF9vcHRzLmNvb2tpZSA9IGNvb2tpZSA9IDB4NTUwMDAwMDAwMDAwMDBMO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYzo3MTI6XFx0bGlua19mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXFx1MDAyNnJhd190cF9vcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NzEzOlxcdGlmICghQVNTRVJUX0dFKGxpbmtfZmQsIDAsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfb3Blbl9vcHRzXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTcxNC1cXHRcXHRnb3RvIGNsZWFudXA7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEyOjA4LjkwMTE4MDMyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjg4ODc0MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgUmF3IFRyYWNlcG9pbnQgVGVzdCoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgdGVzdCwgYW5kIGl0J3MgdXNpbmcgYFNFQyhcInJhd190cmFjZXBvaW50LndcIilgLiBSaWdodCwgdGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhpcyBwcm9ncmFtIHR5cGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIG9yIGFueSByZWxldmFudCBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gcmF3IHRyYWNlcG9pbnRzIGFuZCB3cml0YWJsZSBwcm9ncmFtcy4gSSdtIGtlZW4gdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHNldHRpbmdzIG9yIHBhcmFtZXRlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBwYXJ0aWN1bGFyIHNldHVwLiBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBhY3Jvc3MgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIG9yIHBvdGVudGlhbCBsaW1pdGF0aW9ucy4gSXQncyBhIGtleSBmaXJzdCBzdGVwLCBzbyBJJ2xsIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mzg4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTI6NTEuNTkwMDU2MDYzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA4MTYyOTczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0PTE4PWRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiB0aGUgZm9vdG5vdGVzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0My0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE0NDp8IGBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWBgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cC53K2BgIFsjcmF3dHBdXyAgICAgICAgICB8ICAgICAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0NS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTQ1PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQsXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00Ni1cXHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ3OkJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUsXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00OC1cXHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMzI9dW5pb24gYnBmX2l0ZXJfbGlua19pbmZvIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODYtICpcXHRcXHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQqKixcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Mzg3OiAqXFx0XFx0KipCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFKipcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg4LSAqXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9MTA2Mj1lbnVtIGJwZl9wcm9nX3R5cGUge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODYtXFx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU1lTQ1RMLFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDg3OlxcdEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODgtXFx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVCxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9NjIxNj1zdGF0aWMgaW50IGJ0Zl92YWxpZGF0ZV9wcm9nX2N0eF90eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtNjI3My1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxua2VybmVsL2JwZi9idGYuYzo2Mjc0OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL2J0Zi5jLTYyNzUtXFx0XFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI4NzE9c3RhdGljIGJvb2wgaXNfcGVyZm1vbl9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHByb2dfdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzctXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjI4Nzg6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00Mzc4LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0Mzc5OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzgwLVxcdFxcdGlmIChzdHJuY3B5X2Zyb21fdXNlcihidWYsIHVzZXJfdHBfbmFtZSwgc2l6ZW9mKGJ1ZikgLSAxKSBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTc3MjY9c3RhdGljIGJvb2wgaXNfdHJhY2luZ19wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MzItXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzczMzpcXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzM0LVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEzMj11bmlvbiBicGZfaXRlcl9saW5rX2luZm8ge1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTM4Ni0gKlxcdFxcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCoqLFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDozODc6ICpcXHRcXHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUqKlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODgtICpcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDYyPWVudW0gYnBmX3Byb2dfdHlwZSB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4Ni1cXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVEwsXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjEwODc6XFx0QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4OC1cXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLT1BULFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz0yMDI9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwcm9nX3R5cGVfbmFtZVtdID0ge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTF1cXHRcXHQ9IFxcXCJjZ3JvdXBfc3lzY3RsXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcXHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRV1cXHQ9IFxcXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZVxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjgtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXFx0XFx0PSBcXFwiY2dyb3VwX3NvY2tvcHRcXFwiLFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTEzPXN0YXRpYyBzdHJ1Y3Qge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MTMxLVxcdHsgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgICAgICAgICAgXFxcImJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzXFxcIiB9LFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6NzEzMjpcXHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfYXJnc1xcXCIgfSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcxMzMtXFx0eyBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVCwgICAgICAgICAgICAgICBcXFwiX19za19idWZmXFxcIiB9LFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTUzPXN0YXRpYyBib29sIG5lZWRfZnVuY19hcmdfdHlwZV9maXh1cChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzIwOC1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MjA5OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcyMTAtXFx0XFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jPTEwMz1zdGF0aWMgaW50IHByb2JlX3Byb2dfbG9hZChlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190eXBlLFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMTc3LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYzoxNzg6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTE3OS1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfTFdUX1NFRzZMT0NBTDpcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuYz03PXZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMtMjctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jOjI4OlxcdGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXFxcIkdQTCB2MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jLTI5LVxcdFxcdFxcdCAgICAgICBwcm9ncmFtLCBBUlJBWV9TSVpFKHByb2dyYW0pLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM9OD12b2lkIHNlcmlhbF90ZXN0X3Jhd190cF93cml0YWJsZV90ZXN0X3J1bih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjYtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM6Mjc6XFx0aW50IGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXFxcIkdQTCB2MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjgtXFx0XFx0XFx0XFx0ICAgdHJhY2VfcHJvZ3JhbSwgQVJSQVlfU0laRSh0cmFjZV9wcm9ncmFtKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTI6NTMuNTk4MjI0NTg3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MDMyMDUwODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEJQRl9FVkVOVFMgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9FVkVOVFNgLiBUaGUgaW50ZXJlc3Rpbmcgb25lIGhlcmUgaXMgYEJQRl9FVkVOVFNgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbWFwIG91dCB0aGUgZGVwZW5kZW5jeSBncmFwaCBmb3IgYEJQRl9FVkVOVFNgLiBJdCdzIGEga2V5IHBhcnQgb2YgdGhlIEJQRiBlY29zeXN0ZW0sIHNvIHVuZGVyc3RhbmRpbmcgd2hhdCBpdCBsZWFucyBvbiBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkga25vdyB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFuZCBrZXJuZWwgZmVhdHVyZXMgYXJlIG5lZWRlZCBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3QgYSBwcmVsaW1pbmFyeSBhc3Nlc3NtZW50LiBJIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgdGhlIG1vc3QgZGlyZWN0IHBhdGguIEkgbmVlZCB0byBlbnN1cmUgaXQncyBidWlsdCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDgzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTM6MTIuNjMwMjc3ODk3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQzOTY1NzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfRVZFTlRTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEzOjE0LjY3NDI1OTkyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTg1MjQ4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqTXkgQlBGIEltcGxlbWVudGF0aW9uIFN0cmF0ZWd5KipcblxuUmlnaHQsIGl0IHNlZW1zIHdlJ3JlIG9uIHRoZSByaWdodCB0cmFjay4gRnJvbSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0sIEkgY2FuIGNvbmZpcm0gdGhhdCBmb2N1c2luZyBvdXIgZWZmb3J0cyBvbiB0aGUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9FVkVOVFNgIGFzcGVjdHMgd2lsbCBiZSBzdWZmaWNpZW50IGZvciB0aGlzIHNwZWNpZmljIHRhc2suIFdlIHdhbnQgdG8gYmUgZWZmaWNpZW50IGFuZCBwaW5wb2ludCB3aGVyZSB3ZSBuZWVkIHRvIG1ha2UgY2hhbmdlcy5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRob3NlIGtleSBzeW1ib2wgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AsIGBjaGVja190cF9idWZmZXJfYWNjZXNzYCwgYW5kIGBjaGVja19idWZmZXJfYWNjZXNzYCB0byBjb25maXJtIHRoZSBjb2RlIHdpbGwgZnVuY3Rpb24gYXMgaW50ZW5kZWQuXG5cbkkgcXVpY2tseSBjaGVja2VkIHRoZSBsaXN0IGFuZCBjb25maXJtZWQgdGhhdCB3aGlsZSBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoYCBpc24ndCBpbXBhY3RlZCwgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGFyZSBhbGwgbW9kaWZpZWQsIGFzIGV4cGVjdGVkLlxuXG5JIHdpbGwgcHJvY2VlZCB0byBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzcwLCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNDoxMzoxOC45MzI3ODY5NzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTk4ODc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgb2Zmc2V0cyBhbmQgb3ZlcmZsb3dzIHdoZW4gY2hlY2tpbmcgYnVmZmVyIGFjY2VzcyBpbiBCUEYgcHJvZ3JhbXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIGNvbXBvbmVudCAoQlBGIHZlcmlmaWVyKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fY2hlY2tfYnVmZmVyX2FjY2Vzc1wiLFxuICAgIFwiY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc1wiLFxuICAgIFwiY2hlY2tfYnVmZmVyX2FjY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mgd2hlbiBjaGVja2luZyBidWZmZXIgYWNjZXNzIGluIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgY29tcG9uZW50IChCUEYgdmVyaWZpZXIpIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 04:01:11 +0000 UTC FinishedAt: 2026-07-03 04:13:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "66bb952b449eac53dffb341108251d632767fd2d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "66bb952b449eac53dffb341108251d632767fd2d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "99a7905e-dff7-4dbe-a8b6-a7c92a2c0746" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "__check_buffer_access", "check_tp_buffer_access", "check_buffer_access" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mgd2hlbiBjaGVja2luZyBidWZmZXIgYWNjZXNzIGluIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgY29tcG9uZW50IChCUEYgdmVyaWZpZXIpIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmMxOGQzOGU4MTljNTI2MTBmMDVlMjlmMDRiOGUyZGIzZDJiODYyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMDQ6MDk6NDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCAyMWEzNjVkNDM2YTU5NS4uNDIxY2ExMThmY2JmZTYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTUzMjYsMTQgJiM0Mzs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLVx0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuJiM0MztcdFx0XHRcdCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSxcbiYjNDM7XHRcdFx0XHQgdTMyICphY2Nlc3NfZW5kKVxuIHtcbiYjNDM7XHRzNjQgc3RhcnQsIHZhcl9vZmY7XG4mIzQzO1xuIFx0aWYgKG9mZiBcdTAwM2MgMCkge1xuIFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxcblwmIzM0OyxcbiBcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiYjNDM7XG4gXHRpZiAoIXRudW1faXNfY29uc3QocmVnLVx1MDAzZXZhcl9vZmYpKSB7XG4gXHRcdGNoYXIgdG5fYnVmWzQ4XTtcbiBcbkBAIC01MzQ0LDYgJiM0Mzs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuJiM0MztcdHZhcl9vZmYgPSAoczY0KXJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlO1xuJiM0MztcdGlmIChjaGVja19hZGRfb3ZlcmZsb3codmFyX29mZiwgKHM2NClvZmYsIFx1MDAyNnN0YXJ0KSkge1xuJiM0MztcdFx0dmVyYm9zZShlbnYsXG4mIzQzO1x0XHRcdFwmIzM0OyVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4mIzQzO1x0XHRyZXR1cm4gLUVBQ0NFUztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChzdGFydCBcdTAwM2MgMCkge1xuJiM0MztcdFx0dmVyYm9zZShlbnYsXG4mIzQzO1x0XHRcdFwmIzM0OyVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4mIzQzO1x0XHRyZXR1cm4gLUVBQ0NFUztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChzdGFydCBcdTAwM2UgVTMyX01BWCB8fCBzaXplIFx1MDAzYyAwIHx8XG4mIzQzO1x0ICAgIGNoZWNrX2FkZF9vdmVyZmxvdygodTMyKXN0YXJ0LCAodTMyKXNpemUsIGFjY2Vzc19lbmQpKSB7XG4mIzQzO1x0XHR2ZXJib3NlKGVudixcbiYjNDM7XHRcdFx0XCYjMzQ7JXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWxsZCwgc2l6ZT0lZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cmVnX2FyZ19uYW1lKGVudiwgYXJnbm8pLCBidWZfaW5mbywgc3RhcnQsIHNpemUpO1xuJiM0MztcdFx0cmV0dXJuIC1FQUNDRVM7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC01MzUxLDEzICYjNDM7NTM3OCwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbiBcdFx0XHRcdCAgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXG4ge1xuJiM0MztcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFwmIzM0O3RyYWNlcG9pbnRcJiMzNDssIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7XG4mIzQzO1x0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCYjMzQ7dHJhY2Vwb2ludFwmIzM0OywgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxuJiM0MztcdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSAmIzQzOyBvZmYgJiM0Mzsgc2l6ZSxcbiYjNDM7XHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLFxuIFx0XHRcdFx0XHQgICAgZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtNTM3MCwxMyAmIzQzOzUzOTksMTUgQEAgc3RhdGljIGludCBjaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0ICAgICAgIHUzMiAqbWF4X2FjY2VzcylcbiB7XG4gXHRjb25zdCBjaGFyICpidWZfaW5mbyA9IHR5cGVfaXNfcmRvbmx5X21lbShyZWctXHUwMDNldHlwZSkgPyBcJiMzNDtyZG9ubHlcJiMzNDsgOiBcJiMzNDtyZHdyXCYjMzQ7O1xuJiM0MztcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuJiM0MztcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXG4mIzQzO1x0XHRcdFx0ICAgIFx1MDAyNmFjY2Vzc19lbmQpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdCptYXhfYWNjZXNzID0gbWF4KHJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlICYjNDM7IG9mZiAmIzQzOyBzaXplLCAqbWF4X2FjY2Vzcyk7XG4mIzQzO1x0Km1heF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgKm1heF9hY2Nlc3MpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xuaW5kZXggMTRhMDE3MmUyMTQxZTguLjQwNTVhNjQ0M2JjMjBhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcbkBAIC00Nyw0ICYjNDM7NDcsMjAgQEAgbDBfJT06XHQvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1xcXG4gXHQ6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0O3Jhd190cmFjZXBvaW50LndcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7cmF3X3RyYWNlcG9pbnRfd3JpdGFibGU6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXRcJiMzNDspXG4mIzQzO19fZmFpbHVyZVxuJiM0MztfX21zZyhcJiMzNDtpbnZhbGlkIG5lZ2F0aXZlIHRyYWNlcG9pbnQgYnVmZmVyIG9mZnNldFwmIzM0OylcbiYjNDM7X19uYWtlZCB2b2lkIHRyYWNlcG9pbnRfd3JpdGFibGVfcmVqZWN0X25lZ2F0aXZlX2NvbnN0X29mZnNldCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDtcdFx0XHRcdFx0XFxcbiYjNDM7XHRyNiA9ICoodTY0ICopKHIxICYjNDM7IDApO1x0XHRcdFx0XFxcbiYjNDM7XHRyNiAmIzQzOz0gLTg7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cjAgPSAqKHU2NCAqKShyNiAmIzQzOyAwKTtcdFx0XHRcdFxcXG4mIzQzO1x0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcJiMzNDtcdDpcbiYjNDM7XHQ6XG4mIzQzO1x0OiBfX2Nsb2JiZXJfYWxsKTtcbiYjNDM7fVxuJiM0MztcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mgd2hlbiBjaGVja2luZyBidWZmZXIgYWNjZXNzIGluIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgY29tcG9uZW50IChCUEYgdmVyaWZpZXIpIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2YzE4ZDM4ZTgxOWM1MjYxMGYwNWUyOWYwNGI4ZTJkYjNkMmI4NjI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAwNDowOTo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAyMWEzNjVkNDM2YTU5NS4uNDIxY2ExMThmY2JmZTYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTUzMjYsMTQgJiM0Mzs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkJCSBjb25zdCBjaGFyICpidWZfaW5mbywKIAkJCQkgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywKLQkJCQkgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpCiYjNDM7CQkJCSBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSwKJiM0MzsJCQkJIHUzMiAqYWNjZXNzX2VuZCkKIHsKJiM0MzsJczY0IHN0YXJ0LCB2YXJfb2ZmOwomIzQzOwogCWlmIChvZmYgJmx0OyAwKSB7CiAJCXZlcmJvc2UoZW52LAogCQkJJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgc2l6ZT0lZFxuJiMzNDssCiAJCQlyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpOwogCQlyZXR1cm4gLUVBQ0NFUzsKIAl9CiYjNDM7CiAJaWYgKCF0bnVtX2lzX2NvbnN0KHJlZy0mZ3Q7dmFyX29mZikpIHsKIAkJY2hhciB0bl9idWZbNDhdOwogCkBAIC01MzQ0LDYgJiM0Mzs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCXJldHVybiAtRUFDQ0VTOwogCX0KIAomIzQzOwl2YXJfb2ZmID0gKHM2NClyZWctJmd0O3Zhcl9vZmYudmFsdWU7CiYjNDM7CWlmIChjaGVja19hZGRfb3ZlcmZsb3codmFyX29mZiwgKHM2NClvZmYsICZhbXA7c3RhcnQpKSB7CiYjNDM7CQl2ZXJib3NlKGVudiwKJiM0MzsJCQkmIzM0OyVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcbiYjMzQ7LAomIzQzOwkJCXJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoc3RhcnQgJmx0OyAwKSB7CiYjNDM7CQl2ZXJib3NlKGVudiwKJiM0MzsJCQkmIzM0OyVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcbiYjMzQ7LAomIzQzOwkJCXJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoc3RhcnQgJmd0OyBVMzJfTUFYIHx8IHNpemUgJmx0OyAwIHx8CiYjNDM7CSAgICBjaGVja19hZGRfb3ZlcmZsb3coKHUzMilzdGFydCwgKHUzMilzaXplLCBhY2Nlc3NfZW5kKSkgewomIzQzOwkJdmVyYm9zZShlbnYsCiYjNDM7CQkJJiMzNDslcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lbGxkLCBzaXplPSVkXG4mIzM0OywKJiM0MzsJCQlyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBzdGFydCwgc2l6ZSk7CiYjNDM7CQlyZXR1cm4gLUVBQ0NFUzsKJiM0MzsJfQomIzQzOwogCXJldHVybiAwOwogfQogCkBAIC01MzUxLDEzICYjNDM7NTM3OCwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCQkgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsCiAJCQkJICBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSkKIHsKJiM0MzsJdTMyIGFjY2Vzc19lbmQ7CiAJaW50IGVycjsKIAotCWVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsICYjMzQ7dHJhY2Vwb2ludCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUpOwomIzQzOwllcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCAmIzM0O3RyYWNlcG9pbnQmIzM0OywgcmVnLCBhcmdubywgb2ZmLCBzaXplLAomIzQzOwkJCQkgICAgJmFtcDthY2Nlc3NfZW5kKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JZW52LSZndDtwcm9nLSZndDthdXgtJmd0O21heF90cF9hY2Nlc3MgPSBtYXgocmVnLSZndDt2YXJfb2ZmLnZhbHVlICYjNDM7IG9mZiAmIzQzOyBzaXplLAomIzQzOwllbnYtJmd0O3Byb2ctJmd0O2F1eC0mZ3Q7bWF4X3RwX2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLAogCQkJCQkgICAgZW52LSZndDtwcm9nLSZndDthdXgtJmd0O21heF90cF9hY2Nlc3MpOwogCiAJcmV0dXJuIDA7CkBAIC01MzcwLDEzICYjNDM7NTM5OSwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCSAgICAgICB1MzIgKm1heF9hY2Nlc3MpCiB7CiAJY29uc3QgY2hhciAqYnVmX2luZm8gPSB0eXBlX2lzX3Jkb25seV9tZW0ocmVnLSZndDt0eXBlKSA/ICYjMzQ7cmRvbmx5JiMzNDsgOiAmIzM0O3Jkd3ImIzM0OzsKJiM0MzsJdTMyIGFjY2Vzc19lbmQ7CiAJaW50IGVycjsKIAotCWVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpOwomIzQzOwllcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplLAomIzQzOwkJCQkgICAgJmFtcDthY2Nlc3NfZW5kKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JKm1heF9hY2Nlc3MgPSBtYXgocmVnLSZndDt2YXJfb2ZmLnZhbHVlICYjNDM7IG9mZiAmIzQzOyBzaXplLCAqbWF4X2FjY2Vzcyk7CiYjNDM7CSptYXhfYWNjZXNzID0gbWF4KGFjY2Vzc19lbmQsICptYXhfYWNjZXNzKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jCmluZGV4IDE0YTAxNzJlMjE0MWU4Li40MDU1YTY0NDNiYzIwYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuYwpAQCAtNDcsNCAmIzQzOzQ3LDIwIEBAIGwwXyU9OgkvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1wKIAk6IF9fY2xvYmJlcl9hbGwpOwogfQogCiYjNDM7U0VDKCYjMzQ7cmF3X3RyYWNlcG9pbnQudyYjMzQ7KQomIzQzO19fZGVzY3JpcHRpb24oJiMzNDtyYXdfdHJhY2Vwb2ludF93cml0YWJsZTogcmVqZWN0IG5lZ2F0aXZlIGNvbnN0IG9mZnNldCYjMzQ7KQomIzQzO19fZmFpbHVyZQomIzQzO19fbXNnKCYjMzQ7aW52YWxpZCBuZWdhdGl2ZSB0cmFjZXBvaW50IGJ1ZmZlciBvZmZzZXQmIzM0OykKJiM0MztfX25ha2VkIHZvaWQgdHJhY2Vwb2ludF93cml0YWJsZV9yZWplY3RfbmVnYXRpdmVfY29uc3Rfb2Zmc2V0KHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUgKCYjMzQ7CQkJCQlcCiYjNDM7CXI2ID0gKih1NjQgKikocjEgJiM0MzsgMCk7CQkJCVwKJiM0MzsJcjYgJiM0Mzs9IC04OwkJCQkJXAomIzQzOwlyMCA9ICoodTY0ICopKHI2ICYjNDM7IDApOwkJCQlcCiYjNDM7CWV4aXQ7CQkJCQkJXAomIzQzOyYjMzQ7CToKJiM0MzsJOgomIzQzOwk6IF9fY2xvYmJlcl9hbGwpOwomIzQzO30KJiM0MzsKIGNoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3MAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSXQmIzM5O3MgZ290IGEgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2UgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY2AuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhleSYjMzk7cmUgbW9kaWZ5aW5nIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgb2Zmc2V0cyBhbmQgb3ZlcmZsb3dzIOKAkyBjcml0aWNhbCBmb3IgZW5zdXJpbmcgQlBGIHByb2dyYW1zIGRvbiYjMzk7dCB3cmVhayBoYXZvYyBvbiBtZW1vcnkuCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIHVwZGF0ZXMgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgdG8gY29ycmVjdGx5IHVzZSB0aGUgbmV3IGBhY2Nlc3NfZW5kYCBvdXRwdXQgb2YgdGhlIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhlIEJQRiB2ZXJpZmllciBpcyBhICpjb3JlKiBjb21wb25lbnQgb2YgdGhlIGtlcm5lbCwgYW5kIGV2ZW4gc3VidGxlIGNoYW5nZXMgY2FuIGhhdmUgZmFyLXJlYWNoaW5nIGNvbnNlcXVlbmNlcywgZXNwZWNpYWxseSBpbiBob3cgaXQgaGFuZGxlcyBtZW1vcnkgYWNjZXNzLiBHaXZlbiBpdHMgaW1wb3J0YW5jZSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBmdXp6ZXIgY292ZXJhZ2UgaXMgKmVzc2VudGlhbCouIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgcmVhbGx5IG5lZWRzIHRvIGJlIGhpdCBoYXJkIHdpdGggZnV6emluZy4KCk15IG5leHQgaW1tZWRpYXRlIHRhc2sgaXMgZmlndXJpbmcgb3V0IHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTaW5jZSB0aGlzIGludm9sdmVzIHRoZSBCUEYgdmVyaWZpZXIsIG15IGRlZmF1bHQgYXNzdW1wdGlvbiBpcyB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIHdpbGwgYmUgdGhlIGtleS4gSG93ZXZlciwgaXQmIzM5O3MgYWx3YXlzIHdpc2UgdG8gYmUgdGhvcm91Z2guCgpUbyBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZywgSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBmb3Igb2NjdXJyZW5jZXMgb2YgZWl0aGVyIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIG9yIGBjaGVja190cF9idWZmZXJfYWNjZXNzYC4gVGhhdCBzaG91bGQgcXVpY2tseSB1bmNvdmVyIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG92ZXJsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fY2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI3LVx0XHRcdFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Mzc3PXN0YXRpYyBpbnQgY2hlY2tfdHBfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzODQ6XHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcJiMzNDt0cmFjZXBvaW50XCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4NS1cdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM5NT1zdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwNC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NDA1Olx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA2LVx0XHRcdFx0ICAgIFx1MDAyNmFjY2Vzc19lbmQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIG1vZGlmaWNhdGlvbnMuCgoqKkFuYWx5emluZyB0aGUgQnVmZmVyIEFjY2VzcyBGdW5jdGlvbnMqKgoKQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIG9uIHRocmVlIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHk6IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIENsZWFybHksIHRoZXNlIGFyZSBhbGwgaW52b2x2ZWQgaW4gY29udHJvbGxpbmcgYW5kIHZlcmlmeWluZyBhY2Nlc3MgdG8gc29tZSBzb3J0IG9mIGJ1ZmZlciB3aXRoaW4gdGhlIHN5c3RlbSwgbGlrZWx5IHJlbGF0ZWQgdG8gZUJQRi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29udGV4dCBvZiB3aGVyZSB0aGVzZSBhcmUgdXNlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBkaWZmZXJlbnRpYXRpb24gYmV0d2VlbiB0aGVtIG1pZ2h0IGJlIGJhc2VkIG9uIGZhY3RvcnMgbGlrZToKCiogICAqKlVuZGVybHlpbmcgVGFyZ2V0OioqIFRoZSB1c2Ugb2YgYHRwYCBpbiBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgbGlrZWx5IG1lYW5zIGl0JiMzOTtzIHNwZWNpZmljIHRvIHRyYWNlcG9pbnQgZGF0YSBzdHJ1Y3R1cmVzLiBgX19jaGVja19idWZmZXJfYWNjZXNzYCBtaWdodCBzdWdnZXN0IGEgbW9yZSBpbnRlcm5hbCwgbG93LWxldmVsIHZhcmlhbnQuIGBjaGVja19idWZmZXJfYWNjZXNzYCBpcyBsaWtlbHkgYSBtb3JlIGdlbmVyYWwtcHVycG9zZSByb3V0aW5lLgoqICAgKipTZWN1cml0eSBDb250ZXh0OioqIFRoZXJlIGNvdWxkIGJlIGRpZmZlcmVudCBzZWN1cml0eSBsZXZlbHMgb3IgYWNjZXNzIHJ1bGVzIGF0IHBsYXkuIFBlcmhhcHMgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AgaXMgZm9yIGhpZ2hseSBwcml2aWxlZ2VkIGNvZGUgb3IgZm9yIGludGVybmFsIGtlcm5lbCBzdHJ1Y3R1cmVzLCB3aGlsZSBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgaXMgZm9yIHVzZXItc3BhY2UgcHJvZ3JhbXMgd2l0aCBzb21lIGxldmVsIG9mIHRydXN0LgoqICAgKipWZXJpZmljYXRpb24gU3RyYXRlZ3k6KiogRWFjaCBmdW5jdGlvbiBtaWdodCBlbXBsb3kgZGlmZmVyZW50IGFjY2VzcyBjb250cm9sIG1lY2hhbmlzbXMuIFdlIG1pZ2h0IHNlZSB0aGluZ3MgbGlrZSByYW5nZSBjaGVja3MsIHBlcm1pc3Npb24gY2hlY2tzLCBvciBzaXplIGxpbWl0YXRpb25zIGVuZm9yY2VkLgoKR2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlIHRvIEJQRiwgYSBwcmltYXJ5IGNvbmNlcm4gd2lsbCBiZSBwcmV2ZW50aW5nIGJ1ZmZlciBvdmVyZmxvd3MsIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhbmQgZ2VuZXJhbGx5IGVuc3VyaW5nIHRoZSBpbnRlZ3JpdHkgYW5kIHNhZmV0eSBvZiB0aGUga2VybmVsLiBUaGlzIGlzIGVzcGVjaWFsbHkgY3JpdGljYWwgc2luY2UgQlBGIGFsbG93cyB1bnRydXN0ZWQgY29kZSB0byBydW4gd2l0aGluIHRoZSBrZXJuZWwuCgpOb3csIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqYWN0dWFsbHkqIGNoYW5naW5nLCBJIG5lZWQgdG8gbG9vayBhdCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgaW5mbHVlbmNlZCBvciBuZWVkZWQgZm9yIHRoZXNlIGFjY2VzcyBjaGVja3M/IEFyZSB0aGVzZSBuZXcgZmVhdHVyZXMgYmVpbmcgYWRkZWQsIG9yIGV4aXN0aW5nIGFjY2VzcyBzdHJhdGVnaWVzIGJlaW5nIG1vZGlmaWVkPyBBcmUgdGhlcmUgYW55IGNvbmZpZyBvcHRpb25zIHRoYXQgaW5mbHVlbmNlIHRoZSB3YXkgdGhlc2UgZnVuY3Rpb25zIGJlaGF2ZSwgc3VjaCBhcyBkaWZmZXJlbnQgbGV2ZWxzIG9mIGJ1ZmZlciBzaXplIHZhbGlkYXRpb24gb3IgbW9yZSBzdHJpbmdlbnQgY2hlY2tzIGVuYWJsZWQ/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb250ZXh0LCBhbmQgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczoqKiBBcmUgdGhlc2UgY2hhbmdlcyBjb250aW5nZW50IG9uIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IChlLmcuLCBgQ09ORklHX0JQRl9KSVRgLCBgQ09ORklHX0JQRl9FVkVOVFNgLCBvciBvdGhlciByZWxhdGVkIHNldHRpbmdzKS4KKiAgICoqUGVyZm9ybWFuY2UgVHJhZGVvZmZzOioqIElmIHRoZXJlIGFyZSBuZXcgYnVmZmVyIGFjY2VzcyBjaGVja3MsIGFyZSB0aGVyZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnM/IEFyZSB0aGVyZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYWRqdXN0IHRoZSBzdHJpY3RuZXNzIG9mIHRoZSBjaGVja3MgdG8gYmFsYW5jZSBzZWN1cml0eSBhbmQgc3BlZWQ/CiogICAqKlNlY3VyaXR5IExldmVsczoqKiBBcmUgdGhlcmUgbmV3IG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBkZWdyZWUgb2Ygc2VjdXJpdHk/IEFyZSB3ZSBub3cgYWJsZSB0byB0aWdodGVuIHRoZSBjb250cm9scz8KKiAgICoqQ29tcGF0aWJpbGl0eSBJc3N1ZXM6KiogQ291bGQgdGhlc2UgbW9kaWZpY2F0aW9ucyBicmVhayBleGlzdGluZyBlQlBGIHByb2dyYW1zIG9yIHJlcXVpcmUgcmVjb21waWxhdGlvbj8gSWYgc28sIHdoYXQgYXJlIHRoZSBjb21wYXRpYmlsaXR5IG9wdGlvbnM/CgpCYXNpY2FsbHksIEkgbmVlZCB0aGUgY29udGV4dCBwcm92aWRlZCBieSBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBmdWxseSBncmFzcCB0aGUgc2NvcGUgYW5kIGltcGFjdCBvZiB0aGVzZSBidWZmZXIgYWNjZXNzIGZ1bmN0aW9uIG1vZGlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIFRyYWNlcG9pbnQgQnVmZmVyIEFjY2VzcyoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgcHJpbWFyeSB0aGluZyB0byBjb25zaWRlciBoZXJlIGlzIGRlZmluaXRlbHkgdGhlIGBCUEZfU1lTQ0FMTGAgbWVjaGFuaXNtLiBUaGF0JiMzOTtzIHRoZSBjb3JlLiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoOyBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZS4gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gU28sIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY2hlY2ssIGFuZCBJIG1lYW4gKnJlYWxseSogY2hlY2ssIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBzZXR0aW5ncywgZm9yIGBjaGVja190cF9idWZmZXJfYWNjZXNzYC4gR290dGEgYmUgbWV0aWN1bG91cywgZXNwZWNpYWxseSB3aXRoIHNvbWV0aGluZyB0aGF0IHRvdWNoZXMgbWVtb3J5IGFjY2Vzcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja190cF9idWZmZXJfYWNjZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01MzI2PXN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM3NzpzdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzc4LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MTAxPXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMDktXHR9IGVsc2UgaWYgKHJlZy1cdTAwM2V0eXBlID09IFBUUl9UT19UUF9CVUZGRVIpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2MzEwOlx0XHRlcnIgPSBjaGVja190cF9idWZmZXJfYWNjZXNzKGVudiwgcmVnLCBhcmdubywgb2ZmLCBzaXplKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzExLVx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgdCA9PSBCUEZfUkVBRCBcdTAwMjZcdTAwMjYgdmFsdWVfcmVnbm8gXHUwMDNlPSAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEJ1ZmZlciBBY2Nlc3MgRnVuY3Rpb24qKgoKSG1tLCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuLi4gbGV0JiMzOTtzIHNlZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgaW1wbGljYXRpb25zLiBJcyB0aGlzIGFib3V0IHZlcmlmeWluZyByZWFkL3dyaXRlIHBlcm1pc3Npb25zPyBBcmUgd2UgZGVhbGluZyB3aXRoIGJvdW5kcyBjaGVja2luZyBvbiBwb2ludGVycywgb3IgcGVyaGFwcyBhY2Nlc3MgY29udHJvbCB3aXRoaW4gYSBzaGFyZWQgbWVtb3J5IHJlZ2lvbj8gSSBuZWVkIG1vcmUgY29udGV4dCB0byBiZSBzdXJlLCBidXQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBsaWtlbHkgcGxheXMgYSBjcml0aWNhbCByb2xlIGluIHByZXZlbnRpbmcgdnVsbmVyYWJpbGl0aWVzLgoKSSYjMzk7bSBwcm9iYWJseSBnb2luZyB0byBuZWVkIHRvIGxvb2sgaW50byBpdHMgaW1wbGVtZW50YXRpb24gdG8gc2VlIGlmIGl0JiMzOTtzIGhhbmRsaW5nIGNvcm5lciBjYXNlcyBncmFjZWZ1bGx5LCBzcGVjaWZpY2FsbHk6CgoqICAgKipJbnRlZ2VyIG92ZXJmbG93OioqIENvdWxkIHRoZXJlIGJlIGFuIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBieXBhc3NlcyBpbnRlbmRlZCBjaGVja3MgZm9yIGJ1ZmZlciBzaXplLgoqICAgKipSYWNlIGNvbmRpdGlvbnM6KiogSWYgd2UgYXJlIGluIGEgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudCwgaG93IGlzIHRoaXMgaGFuZGxlZCB0byBwcmV2ZW50IGNvcnJ1cHRpb24/CiogICAqKk9mZi1ieS1vbmUgZXJyb3JzOioqIENvdWxkIHRoZXJlIGJlIHN1YnRsZSBpbmRleGluZyBwcm9ibGVtcz8KKiAgICoqU2VjdXJpdHkgQ29udGV4dDoqKiBEb2VzIHRoaXMgZnVuY3Rpb24gY29uc2lkZXIgdGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGFjY2Vzc2luZyBwcm9jZXNzIG9yIHRocmVhZD8KClRoZXNlIGFyZSBhbGwgc3RhbmRhcmQgY29uc2lkZXJhdGlvbnMsIGJ1dCB3aXRob3V0IGtub3dpbmcgdGhlIHNwZWNpZmljcyBvZiB0aGlzIGZ1bmN0aW9uLCBJIGNhbiYjMzk7dCBiZWdpbiB0byBhc3Nlc3MgaXRzIGVmZmVjdGl2ZW5lc3MuIFRoZSBuYW1lIHN1Z2dlc3RzIGEgZ29vZCBmb3VuZGF0aW9uIGZvciByb2J1c3QgY29kZSwgYnV0IEkgbmVlZCB0byBzZWUgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbi4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gQXJlIHRoZXJlIGFueSBvdGhlciBhY2Nlc3MgY29udHJvbHMgaW4gcGxhY2UsIG9yIGlzIHRoaXMgdGhlIHByaW1hcnkgcHJvdGVjdGlvbj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI3LVx0XHRcdFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Mzc3PXN0YXRpYyBpbnQgY2hlY2tfdHBfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzODQ6XHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcJiMzNDt0cmFjZXBvaW50XCYjMzQ7LCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4NS1cdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM5NC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzk1OnN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzOTYtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTQwNTpcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwNi1cdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjEwMT1zdGF0aWMgaW50IGNoZWNrX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzM1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjYzMzY6XHRcdGVyciA9IGNoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCBvZmYsIHNpemUsIGZhbHNlLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzctXHRcdFx0XHRcdCAgbWF4X2FjY2Vzcyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY3NjQ9c3RhdGljIGludCBjaGVja19oZWxwZXJfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODEyLVx0XHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgxMzpcdFx0cmV0dXJuIGNoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCAwLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MTQtXHRcdFx0XHRcdCAgIGFjY2Vzc19zaXplLCB6ZXJvX3NpemVfYWxsb3dlZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM3OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCUEYgVmVyaWZpZXIgRnVuY3Rpb25hbGl0eSBmb3IgUmF3IFRyYWNlcG9pbnQgV3JpdGUgQWNjZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBjaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIFRoZXNlIGFyZSBhbGwgY3J1Y2lhbCBwYXJ0cyBvZiB0aGUgQlBGIHZlcmlmaWVyLCBvYnZpb3VzbHkuIFRoZXkgZ2V0IGNhbGxlZCBkdXJpbmcgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzIG9mIGEgQlBGIHByb2dyYW0g4oCTIG1ha2luZyBzdXJlIGV2ZXJ5dGhpbmcgaXMgc2FmZSBhbmQgc291bmQgYmVmb3JlIGl0IHJ1bnMuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgdGhlIGNvbmZpZ3VyYXRpb24sIHByaW1hcmlseSBkcml2ZW4gYnkgYEJQRl9TWVNDQUxMYCwgdGhhdCYjMzk7cyB0aGUgbWFpbiBwb2ludC4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zPyBFc3BlY2lhbGx5IHJlbGF0ZWQgdG8gd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLiBUaGUgdGVzdCBjYXNlIEkmIzM5O20gcmV2aWV3aW5nIGxldmVyYWdlcyBgcmF3X3RyYWNlcG9pbnQud2AsIHNvIEkgbmVlZCB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBsaW5rZWQgdG8gd3JpdGUgYWNjZXNzIHdpdGhpbiByYXcgdHJhY2Vwb2ludHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbiB0aGlzIGNhc2UsIHJlbGF0aW5nIHRvIHdyaXRhYmxlIHJhdyB0cmFjZXBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9FVkVOVFMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTQtXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NzQKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJiMzOTttIHRyeWluZyB0byBvcHRpbWl6ZSB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gdGhlIGN1cnJlbnQgZGlyZWN0aW9uIHNlZW1zIHNvdW5kLiBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYEJQRl9FVkVOVFNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyBhbmQgaW5zdHJ1bWVudGF0aW9uLiBOb3csIEkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfRVZFTlRTYCwgZW5zdXJpbmcgdGhlcmUgYXJlIG5vIHVuaW50ZW5kZWQgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcy4gVGhlIGdvYWwgaXMgYSBsZWFuLCBlZmZpY2llbnQgY29uZmlndXJhdGlvbiwgc28gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJwbGF5IG9mIHRoZXNlIGZlYXR1cmVzIGlzIGNyaXRpY2FsLgoKUmVnYXJkaW5nIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGxvb2sgdG8gYmU6IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIFRoZXNlIHN5bWJvbHMgYXJlIG9idmlvdXNseSBpbXBvcnRhbnQgYW5kIHJlbGF0ZSB0byBtZW1vcnkgYWNjZXNzIGNoZWNrcy4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoZW0gY2xvc2VseSB0byB1bmRlcnN0YW5kIGhvdyBgQlBGX0VWRU5UU2AgYW5kIGBCUEZfU1lTQ0FMTGAgbWlnaHQgaW5mbHVlbmNlIHRoZWlyIGJlaGF2aW9yIG9yIHRyaWdnZXIgYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLiBBcmUgdGhlcmUgYW55IGV4aXN0aW5nIGJ1ZyByZXBvcnRzPyBBbnkga25vd24gaW50ZXJhY3Rpb25zIGluIHNpbWlsYXIgY29uZmlndXJhdGlvbnM/CgpGaW5hbGx5LCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgaWYgdGhlcmUgYXJlICpvdGhlciogcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYWxzbyBpbXBhY3QgcGVyZm9ybWFuY2Ugb3IgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIGEgaG9saXN0aWMgdmlldyB0byBlbnN1cmUgdGhhdCBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IGNydWNpYWwgcGFyYW1ldGVycyBvciBpbnRlcmFjdGlvbnMgdGhhdCBjb3VsZCBjb250cmlidXRlIHRvLCBvciBkZXRyYWN0IGZyb20sIHRoZSBvdmVyYWxsIGRlc2lnbiBnb2Fscy4gSXQmIzM5O3MgYSBjb21wcmVoZW5zaXZlIGFwcHJvYWNoIHRoYXQmIzM5O3MgbmVlZGVkIGhlcmUsIGFzIGFsd2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmF3X3RyYWNlcG9pbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkyNyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9icGYvZHJnbi5yc3Q9MzU9TGlzdCBCUEYgcHJvZ3JhbXMgKGZ1bGwgbmFtZXMgYXJlIG9idGFpbmVkIGZyb20gQlRGKTo6XG4tLVxuRG9jdW1lbnRhdGlvbi9icGYvZHJnbi5yc3QtMzktICAgICAgNDYzMjogQlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS19BRERSICAgdHdfaXB0X2JpbmRcbkRvY3VtZW50YXRpb24vYnBmL2RyZ24ucnN0OjQwOiAgICAgNDk0NjQ6IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQgICAgIHJhd190cmFjZXBvaW50X19zY2hlZF9wcm9jZXNzX2V4aXRcbkRvY3VtZW50YXRpb24vYnBmL2RyZ24ucnN0LTQxLVxuLS1cbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdD0xOD1kZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gdGhlIGZvb3Rub3Rlcy5cbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQ1LSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE0Njp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cmFjZXBvaW50LncmIzQzO2BgICAgICAgICAgICAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0Ny0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0Mztcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQ5LSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE1MDp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cmFjZXBvaW50JiM0MztgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE1MS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0Mztcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMjQ4LS4uIFsjbHNtXSBUaGUgYGBsc21gYCBhdHRhY2htZW50IGZvcm1hdCBpcyBgYGxzbVsuc10vXHUwMDNjaG9va1x1MDAzZWBgLlxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjI0OTouLiBbI3Jhd3RwXSBUaGUgYGByYXdfdHBgYCBhdHRhY2ggZm9ybWF0IGlzIGBgcmF3X3RyYWNlcG9pbnRbLnddL1x1MDAzY3RyYWNlcG9pbnRcdTAwM2VgYC5cbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0yNTAtLi4gWyN0Y19sZWdhY3ldIFRoZSBgYHRjYGAsIGBgY2xhc3NpZmllcmBgIGFuZCBgYGFjdGlvbmBgIGF0dGFjaCB0eXBlcyBhcmUgZGVwcmVjYXRlZCwgdXNlXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD00Mz1CUEZfUFJPR19UWVBFKEJQRl9QUk9HX1RZUEVfUEVSRl9FVkVOVCwgcGVyZl9ldmVudCxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNDQtXHQgICAgICBzdHJ1Y3QgYnBmX3BlcmZfZXZlbnRfZGF0YSwgc3RydWN0IGJwZl9wZXJmX2V2ZW50X2RhdGFfa2VybilcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDU6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5ULCByYXdfdHJhY2Vwb2ludCxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDY6XHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDc6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCByYXdfdHJhY2Vwb2ludF93cml0YWJsZSxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDg6XHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNDktQlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1RSQUNJTkcsIHRyYWNpbmcsXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD0xMzc9QlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9SSEFTSCwgcmh0YWJfbWFwX29wcylcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaDoxMzk6QlBGX0xJTktfVFlQRShCUEZfTElOS19UWVBFX1JBV19UUkFDRVBPSU5ULCByYXdfdHJhY2Vwb2ludClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTQwLUJQRl9MSU5LX1RZUEUoQlBGX0xJTktfVFlQRV9UUkFDSU5HLCB0cmFjaW5nKVxuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9NzgwPWludCBicGZfcHJvYmVfdW5yZWdpc3RlcihzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cCwgc3RydWN0IGJwZl9yYXdfdHBfbGluayAqbGluayk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc4MS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzgyOnN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJhY2Vwb2ludChjb25zdCBjaGFyICpuYW1lKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzgzOnZvaWQgYnBmX3B1dF9yYXdfdHJhY2Vwb2ludChzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cCk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc4NC1pbnQgYnBmX2dldF9wZXJmX2V2ZW50X2luZm8oY29uc3Qgc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB1MzIgKnByb2dfaWQsXG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD04MjA9c3RhdGljIGlubGluZSBpbnQgYnBmX3Byb2JlX3VucmVnaXN0ZXIoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHAsIHN0cnVjdCBicGZfcmF3X3RwX2xpbmsgKmxpbmspXG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04MjMtfVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4MjQ6c3RhdGljIGlubGluZSBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJwZl9nZXRfcmF3X3RyYWNlcG9pbnQoY29uc3QgY2hhciAqbmFtZSlcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODI1LXtcbi0tXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTgyNy19XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjgyODpzdGF0aWMgaW5saW5lIHZvaWQgYnBmX3B1dF9yYXdfdHJhY2Vwb2ludChzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cClcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODI5LXtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9MTUyNz11bmlvbiBicGZfYXR0ciB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE3NzMtXHRcdF9fYWxpZ25lZF91NjRcdGNvb2tpZTtcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxNzc0Olx0fSByYXdfdHJhY2Vwb2ludDtcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNzc1LVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC00MjkyLSAqIFx0XHRUaGlzIGhlbHBlciBpcyBzaW1pbGFyIHRvICoqYnBmX3BlcmZfZXZlbnRfb3V0cHV0KipcXCAoKSBidXRcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDo0MjkzOiAqIFx0XHRyZXN0cmljdGVkIHRvIHJhd190cmFjZXBvaW50IGJwZiBwcm9ncmFtcy5cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC00Mjk0LSAqIFx0UmV0dXJuXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQ0NDAtICpcdFx0VGhpcyBoZWxwZXIgaXMgc2ltaWxhciB0byAqKmJwZl9wZXJmX2V2ZW50b3V0cHV0KipcXCAoKSBidXRcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDo0NDQxOiAqXHRcdHJlc3RyaWN0ZWQgdG8gcmF3X3RyYWNlcG9pbnQgYnBmIHByb2dyYW1zLlxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQ0NDItICpcdFJldHVyblxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD02NzYzPXN0cnVjdCBicGZfbGlua19pbmZvIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjc3Mi1cdFx0XHRfX3U2NCBjb29raWU7XG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Njc3MzpcdFx0fSByYXdfdHJhY2Vwb2ludDtcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC02Nzc0LVx0XHRzdHJ1Y3Qge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD03MzA5PXN0cnVjdCBicGZfY2dyb3VwX2Rldl9jdHgge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC03MzE1LVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjczMTY6c3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzIHtcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC03MzE3LVx0X191NjQgYXJnc1swXTtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTYyMTY9c3RhdGljIGludCBidGZfdmFsaWRhdGVfcHJvZ19jdHhfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi9idGYuYy02MjgzLVx0XHRcdGlmIChfX2J0Zl90eXBlX2lzX3N0cnVjdCh0KSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvYnRmLmM6NjI4NDpcdFx0XHQgICAgc3RyY21wKHRuYW1lLCBcJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfYXJnc1wmIzM0OykgPT0gMClcbmtlcm5lbC9icGYvYnRmLmMtNjI4NS1cdFx0XHRcdHJldHVybiAwO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTM2ODk9c3RhdGljIGludCBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc4My1cdCAqIC0gaWYgdGd0X3Byb2cgPT0gTlVMTCB3aGVuIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZCB1c2luZyB0aGUgb2xkXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozNzg0Olx0ICogICByYXdfdHJhY2Vwb2ludF9vcGVuIEFQSSwgYW5kIHdlIG5lZWQgYSB0YXJnZXQgZnJvbSBwcm9nLVx1MDAzZWF1eFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc4NS1cdCAqXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzkwOD1zdGF0aWMgdm9pZCBicGZfcmF3X3RwX2xpbmtfcmVsZWFzZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzkxMy1cdGJwZl9wcm9iZV91bnJlZ2lzdGVyKHJhd190cC1cdTAwM2VidHAsIHJhd190cCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozOTE0Olx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChyYXdfdHAtXHUwMDNlYnRwKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5MTUtfVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTM5NTc9c3RhdGljIGludCBicGZfcmF3X3RwX2xpbmtfZmlsbF9saW5rX2luZm8oY29uc3Qgc3RydWN0IGJwZl9saW5rICpsaW5rLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NjEtXHRcdGNvbnRhaW5lcl9vZihsaW5rLCBzdHJ1Y3QgYnBmX3Jhd190cF9saW5rLCBsaW5rKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5NjI6XHRjaGFyIF9fdXNlciAqdWJ1ZiA9IHU2NF90b191c2VyX3B0cihpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LnRwX25hbWUpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMzk2My1cdGNvbnN0IGNoYXIgKnRwX25hbWUgPSByYXdfdHBfbGluay1cdTAwM2VidHAtXHUwMDNldHAtXHUwMDNlbmFtZTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5NjQ6XHR1MzIgdWxlbiA9IGluZm8tXHUwMDNlcmF3X3RyYWNlcG9pbnQudHBfbmFtZV9sZW47XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zOTY1LVx0c2l6ZV90IHRwX2xlbiA9IHN0cmxlbih0cF9uYW1lKTtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zOTY5LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mzk3MDpcdGluZm8tXHUwMDNlcmF3X3RyYWNlcG9pbnQudHBfbmFtZV9sZW4gPSB0cF9sZW4gJiM0MzsgMTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5NzE6XHRpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZSA9IHJhd190cF9saW5rLVx1MDAzZWNvb2tpZTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NzItXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDM1Mj1zdGF0aWMgaW50IGJwZl9yYXdfdHBfbGlua19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzODgtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0Mzg5Olx0YnRwID0gYnBmX2dldF9yYXdfdHJhY2Vwb2ludCh0cF9uYW1lKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzOTAtXHRpZiAoIWJ0cClcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzkzLVx0aWYgKHByb2ctXHUwMDNlc2xlZXBhYmxlIFx1MDAyNlx1MDAyNiAhdHJhY2Vwb2ludF9pc19mYXVsdGFibGUoYnRwLVx1MDAzZXRwKSkge1xua2VybmVsL2JwZi9zeXNjYWxsLmM6NDM5NDpcdFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM5NS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQyMy1vdXRfcHV0X2J0cDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0MjQ6XHRicGZfcHV0X3Jhd190cmFjZXBvaW50KGJ0cCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDI1LVx0cmV0dXJuIGVycjtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDI3LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQyODojZGVmaW5lIEJQRl9SQVdfVFJBQ0VQT0lOVF9PUEVOX0xBU1RfRklFTEQgcmF3X3RyYWNlcG9pbnQuY29va2llXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDI5LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQzMDpzdGF0aWMgaW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQzMS17XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQzOS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0NDA6XHRwcm9nID0gYnBmX3Byb2dfZ2V0KGF0dHItXHUwMDNlcmF3X3RyYWNlcG9pbnQucHJvZ19mZCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQxLVx0aWYgKElTX0VSUihwcm9nKSlcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQzLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQ0NDpcdHRwX25hbWUgPSB1NjRfdG9fdXNlcl9wdHIoYXR0ci1cdTAwM2VyYXdfdHJhY2Vwb2ludC5uYW1lKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0NDU6XHRjb29raWUgPSBhdHRyLVx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQ0NDYtXHRmZCA9IGJwZl9yYXdfdHBfbGlua19hdHRhY2gocHJvZywgdHBfbmFtZSwgY29va2llLCBwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKTtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02MzU0PXN0YXRpYyBpbnQgX19zeXNfYnBmKGVudW0gYnBmX2NtZCBjbWQsIGJwZnB0cl90IHVhdHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02NDU5LVx0Y2FzZSBCUEZfUkFXX1RSQUNFUE9JTlRfT1BFTjpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY0NjA6XHRcdGVyciA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKFx1MDAyNmF0dHIpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtNjQ2MS1cdFx0YnJlYWs7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4ODk1PWludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA2Ni1cdFx0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwNjc6XHRcdGJ0cCA9IGJwZl9nZXRfcmF3X3RyYWNlcG9pbnQodG5hbWUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDY4LVx0XHRpZiAoIWJ0cClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNzItXHRcdFx0XHR0bmFtZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwNzM6XHRcdFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDc0LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA3Ny1cdFx0XHRcdFx0dHJhY2Vfc3ltYm9sKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTA3ODpcdFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDc5LVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz01NT1zdGF0aWMgREVGSU5FX01VVEVYKGJwZl9tb2R1bGVfbXV0ZXgpO1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTU2LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjU3OnN0YXRpYyBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJwZl9nZXRfcmF3X3RyYWNlcG9pbnRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtNTgte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy03OC0jZWxzZVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjc5OnN0YXRpYyBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJwZl9nZXRfcmF3X3RyYWNlcG9pbnRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtODAte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xNjIwPXN0YXRpYyB2b2lkIHB1dF9icGZfcmF3X3RwX3JlZ3Modm9pZClcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTYyNC1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjI1OkJQRl9DQUxMXzUoYnBmX3BlcmZfZXZlbnRfb3V0cHV0X3Jhd190cCwgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzICosIGFyZ3MsXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTYyNi1cdCAgIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBmbGFncywgdm9pZCAqLCBkYXRhLCB1NjQsIHNpemUpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE2NTQ9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfeGRwX2dldF9idWZmX2xlbl90cmFjZV9wcm90bztcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjU1LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2NTY6QlBGX0NBTExfMyhicGZfZ2V0X3N0YWNraWRfcmF3X3RwLCBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MgKiwgYXJncyxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjU3LVx0ICAgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB1NjQsIGZsYWdzKVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xNjczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvX3Jhd190cCA9IHtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY4MS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjgyOkJQRl9DQUxMXzQoYnBmX2dldF9zdGFja19yYXdfdHAsIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncyAqLCBhcmdzLFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2ODMtXHQgICB2b2lkICosIGJ1ZiwgdTMyLCBzaXplLCB1NjQsIGZsYWdzKVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xODE2PWludCBfX3dlYWsgYnBmX3Byb2dfdGVzdF9ydW5fdHJhY2luZyhzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4MjItXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTgyMzpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyByYXdfdHJhY2Vwb2ludF92ZXJpZmllcl9vcHMgPSB7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTgyNC1cdC5nZXRfZnVuY19wcm90byAgPSByYXdfdHBfcHJvZ19mdW5jX3Byb3RvLFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODI3LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4Mjg6Y29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyByYXdfdHJhY2Vwb2ludF9wcm9nX29wcyA9IHtcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODI5LSNpZmRlZiBDT05GSUdfTkVUXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE4NDM9c3RhdGljIGJvb2wgcmF3X3RwX3dyaXRhYmxlX3Byb2dfaXNfdmFsaWRfYWNjZXNzKGludCBvZmYsIGludCBzaXplLFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODU1LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE4NTY6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfdmVyaWZpZXJfb3BzID0ge1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NTctXHQuZ2V0X2Z1bmNfcHJvdG8gID0gcmF3X3RwX3Byb2dfZnVuY19wcm90byxcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2MC1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODYxOmNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfcHJvZ19vcHMgPSB7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg2Mi19O1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0yMDgwPWV4dGVybiBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgX19zdG9wX19icGZfcmF3X3RwW107XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjA4MS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoyMDgyOnN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJhY2Vwb2ludChjb25zdCBjaGFyICpuYW1lKVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwODMte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yMDkwLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjIwOTE6XHRyZXR1cm4gYnBmX2dldF9yYXdfdHJhY2Vwb2ludF9tb2R1bGUobmFtZSk7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjA5Mi19XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjA5My1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoyMDk0OnZvaWQgYnBmX3B1dF9yYXdfdHJhY2Vwb2ludChzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJ0cClcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yMDk1LXtcbi0tXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcGVyZi5yc3Q9MzI9YnBmdG9vbCBwZXJmIHsgc2hvdyB8IGxpc3QgfVxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXBlcmYucnN0OjMzOiAgICBMaXN0IGFsbCByYXdfdHJhY2Vwb2ludCwgdHJhY2Vwb2ludCwga3Byb2JlIGF0dGFjaG1lbnQgaW4gdGhlIHN5c3RlbS5cbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdC0zNC1cbi0tXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcGVyZi5yc3QtMzYtICAgIGZvbGxvd2VkIGJ5IGJwZiBwcm9ncmFtIGlkLCBhdHRhY2htZW50IGluZm9ybWF0aW9uLCBhbmQgYXR0YWNobWVudCBwb2ludC5cbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdDozNzogICAgVGhlIGF0dGFjaG1lbnQgcG9pbnQgZm9yIHJhd190cmFjZXBvaW50L3RyYWNlcG9pbnQgaXMgdGhlIHRyYWNlIHByb2JlIG5hbWUuXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcGVyZi5yc3QtMzgtICAgIFRoZSBhdHRhY2htZW50IHBvaW50IGZvciBrW3JldF1wcm9iZSBpcyBlaXRoZXIgc3ltYm9sIG5hbWUgYW5kIG9mZnNldCwgb3IgYVxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wcm9nLnJzdD0yNz1QUk9HIENPTU1BTkRTXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTQ2LXwgICAgICoqc29ja2V0KiogfCAqKmtwcm9iZSoqIHwgKiprcmV0cHJvYmUqKiB8ICoqY2xhc3NpZmllcioqIHwgKiphY3Rpb24qKiB8XG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q6NDc6fCAgICAgKip0cmFjZXBvaW50KiogfCAqKnJhd190cmFjZXBvaW50KiogfCAqKnhkcCoqIHwgKipwZXJmX2V2ZW50KiogfCAqKmNncm91cC9za2IqKiB8XG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3QtNDgtfCAgICAgKipjZ3JvdXAvc29jayoqIHwgKipjZ3JvdXAvZGV2KiogfCAqKmx3dF9pbioqIHwgKipsd3Rfb3V0KiogfCAqKmx3dF94bWl0KiogfFxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL2Jhc2gtY29tcGxldGlvbi9icGZ0b29sPTI1Nj1fYnBmdG9vbCgpXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvYmFzaC1jb21wbGV0aW9uL2JwZnRvb2wtNDkwLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3JldHByb2JlIGNsYXNzaWZpZXIgZmxvd19kaXNzZWN0b3IgXFxcbnRvb2xzL2JwZi9icGZ0b29sL2Jhc2gtY29tcGxldGlvbi9icGZ0b29sOjQ5MTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiB0cmFjZXBvaW50IHJhd190cmFjZXBvaW50IFxcXG50b29scy9icGYvYnBmdG9vbC9iYXNoLWNvbXBsZXRpb24vYnBmdG9vbC00OTItICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZHAgcGVyZl9ldmVudCBjZ3JvdXAvc2tiIGNncm91cC9zb2NrIFxcXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmM9NTYyPXN0YXRpYyB2b2lkIGNvZGVnZW5fYXR0YWNoX2RldGFjaChzdHJ1Y3QgYnBmX29iamVjdCAqb2JqLCBjb25zdCBjaGFyICpvYmpfbmFtZSlcbi0tXG50b29scy9icGYvYnBmdG9vbC9nZW4uYy01ODAtXHRcdFx0dHBfbmFtZSA9IHN0cmNocihicGZfcHJvZ3JhbV9fc2VjdGlvbl9uYW1lKHByb2cpLCAmIzM5Oy8mIzM5OykgJiM0MzsgMTtcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jOjU4MTpcdFx0XHRwcmludGYoXCYjMzQ7XFx0aW50IGZkID0gc2tlbF9yYXdfdHJhY2Vwb2ludF9vcGVuKFxcXCYjMzQ7JXNcXFwmIzM0OywgcHJvZ19mZCk7XFxuXCYjMzQ7LCB0cF9uYW1lKTtcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jLTU4Mi1cdFx0XHRicmVhaztcbi0tXG50b29scy9icGYvYnBmdG9vbC9nZW4uYy01ODctXHRcdFx0ZWxzZVxudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmM6NTg4Olx0XHRcdFx0cHJpbnRmKFwmIzM0O1xcdGludCBmZCA9IHNrZWxfcmF3X3RyYWNlcG9pbnRfb3BlbihOVUxMLCBwcm9nX2ZkKTtcXG5cJiMzNDspO1xudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmMtNTg5LVx0XHRcdGJyZWFrO1xuLS1cbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYz01MTc9c3RhdGljIGludCBzaG93X2xpbmtfY2xvc2VfanNvbihpbnQgZmQsIHN0cnVjdCBicGZfbGlua19pbmZvICppbmZvKVxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYy01MjktXHRcdGpzb253X3N0cmluZ19maWVsZChqc29uX3d0ciwgXCYjMzQ7dHBfbmFtZVwmIzM0OyxcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo1MzA6XHRcdFx0XHQgICB1NjRfdG9fcHRyKGluZm8tXHUwMDNlcmF3X3RyYWNlcG9pbnQudHBfbmFtZSkpO1xudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjUzMTpcdFx0anNvbndfdWludF9maWVsZChqc29uX3d0ciwgXCYjMzQ7Y29va2llXCYjMzQ7LCBpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZSk7XG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtNTMyLVx0XHRicmVhaztcbi0tXG50b29scy9icGYvYnBmdG9vbC9saW5rLmM9OTE4PXN0YXRpYyBpbnQgc2hvd19saW5rX2Nsb3NlX3BsYWluKGludCBmZCwgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8pXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jLTkyOC1cdFx0cHJpbnRmKFwmIzM0O1xcblxcdHRwICYjMzk7JXMmIzM5OyAgXCYjMzQ7LFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjkyOTpcdFx0ICAgICAgIChjb25zdCBjaGFyICopdTY0X3RvX3B0cihpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LnRwX25hbWUpKTtcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo5MzA6XHRcdGlmIChpbmZvLVx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZSlcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo5MzE6XHRcdFx0cHJpbnRmKFwmIzM0O2Nvb2tpZSAlbGx1ICBcJiMzNDssIGluZm8tXHUwMDNlcmF3X3RyYWNlcG9pbnQuY29va2llKTtcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYy05MzItXHRcdGJyZWFrO1xuLS1cbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYz0xMDI5PXN0YXRpYyBpbnQgZG9fc2hvd19saW5rKGludCBmZClcbi0tXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtMTA1MC1cdGlmIChpbmZvLnR5cGUgPT0gQlBGX0xJTktfVFlQRV9SQVdfVFJBQ0VQT0lOVCBcdTAwMjZcdTAwMjZcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzoxMDUxOlx0ICAgICFpbmZvLnJhd190cmFjZXBvaW50LnRwX25hbWUpIHtcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzoxMDUyOlx0XHRpbmZvLnJhd190cmFjZXBvaW50LnRwX25hbWUgPSBwdHJfdG9fdTY0KFx1MDAyNmJ1Zik7XG50b29scy9icGYvYnBmdG9vbC9saW5rLmM6MTA1MzpcdFx0aW5mby5yYXdfdHJhY2Vwb2ludC50cF9uYW1lX2xlbiA9IHNpemVvZihidWYpO1xudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jLTEwNTQtXHRcdGdvdG8gYWdhaW47XG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jPTY1PXN0YXRpYyB2b2lkIHByaW50X3BlcmZfanNvbihpbnQgcGlkLCBpbnQgZmQsIF9fdTMyIHByb2dfaWQsIF9fdTMyIGZkX3R5cGUsXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jLTczLVx0Y2FzZSBCUEZfRkRfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYzo3NDpcdFx0anNvbndfc3RyaW5nX2ZpZWxkKGpzb25fd3RyLCBcJiMzNDtmZF90eXBlXCYjMzQ7LCBcJiMzNDtyYXdfdHJhY2Vwb2ludFwmIzM0Oyk7XG50b29scy9icGYvYnBmdG9vbC9wZXJmLmMtNzUtXHRcdGpzb253X3N0cmluZ19maWVsZChqc29uX3d0ciwgXCYjMzQ7dHJhY2Vwb2ludFwmIzM0OywgYnVmKTtcbi0tXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmM9MTE1PXN0YXRpYyB2b2lkIHByaW50X3BlcmZfcGxhaW4oaW50IHBpZCwgaW50IGZkLCBfX3UzMiBwcm9nX2lkLCBfX3UzMiBmZF90eXBlLFxuLS1cbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYy0xMjAtXHRjYXNlIEJQRl9GRF9UWVBFX1JBV19UUkFDRVBPSU5UOlxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jOjEyMTpcdFx0cHJpbnRmKFwmIzM0O3Jhd190cmFjZXBvaW50ICAlc1xcblwmIzM0OywgYnVmKTtcbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYy0xMjItXHRcdGJyZWFrO1xuLS1cbnRvb2xzL2JwZi9icGZ0b29sL3Byb2cuYz0yNTQyPXN0YXRpYyBpbnQgZG9faGVscChpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4tLVxudG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jLTI1NzQtXHRcdFwmIzM0OyAgICAgICBUWVBFIDo9IHsgc29ja2V0IHwga3Byb2JlIHwga3JldHByb2JlIHwgY2xhc3NpZmllciB8IGFjdGlvbiB8XFxuXCYjMzQ7XG50b29scy9icGYvYnBmdG9vbC9wcm9nLmM6MjU3NTpcdFx0XCYjMzQ7ICAgICAgICAgICAgICAgICB0cmFjZXBvaW50IHwgcmF3X3RyYWNlcG9pbnQgfCB4ZHAgfCBwZXJmX2V2ZW50IHwgY2dyb3VwL3NrYiB8XFxuXCYjMzQ7XG50b29scy9icGYvYnBmdG9vbC9wcm9nLmMtMjU3Ni1cdFx0XCYjMzQ7ICAgICAgICAgICAgICAgICBjZ3JvdXAvc29jayB8IGNncm91cC9kZXYgfCBsd3RfaW4gfCBsd3Rfb3V0IHwgbHd0X3htaXQgfFxcblwmIzM0O1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTc3My1cdFx0X19hbGlnbmVkX3U2NFx0Y29va2llO1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjE3NzQ6XHR9IHJhd190cmFjZXBvaW50O1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE3NzUtXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQyOTItICogXHRcdFRoaXMgaGVscGVyIGlzIHNpbWlsYXIgdG8gKipicGZfcGVyZl9ldmVudF9vdXRwdXQqKlxcICgpIGJ1dFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjQyOTM6ICogXHRcdHJlc3RyaWN0ZWQgdG8gcmF3X3RyYWNlcG9pbnQgYnBmIHByb2dyYW1zLlxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQyOTQtICogXHRSZXR1cm5cbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNDQ0MC0gKlx0XHRUaGlzIGhlbHBlciBpcyBzaW1pbGFyIHRvICoqYnBmX3BlcmZfZXZlbnRvdXRwdXQqKlxcICgpIGJ1dFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjQ0NDE6ICpcdFx0cmVzdHJpY3RlZCB0byByYXdfdHJhY2Vwb2ludCBicGYgcHJvZ3JhbXMuXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNDQ0Mi0gKlx0UmV0dXJuXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTY3NjM9c3RydWN0IGJwZl9saW5rX2luZm8ge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC02NzcyLVx0XHRcdF9fdTY0IGNvb2tpZTtcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo2NzczOlx0XHR9IHJhd190cmFjZXBvaW50O1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTY3NzQtXHRcdHN0cnVjdCB7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTczMDk9c3RydWN0IGJwZl9jZ3JvdXBfZGV2X2N0eCB7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTczMTUtXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NzMxNjpzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3Mge1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTczMTctXHRfX3U2NCBhcmdzWzBdO1xuLS1cbnRvb2xzL2xpYi9icGYvYnBmLmM9NzgyPWludCBicGZfbGlua19jcmVhdGUoaW50IHByb2dfZmQsIGludCB0YXJnZXRfZmQsXG4tLVxudG9vbHMvbGliL2JwZi9icGYuYy05ODUtXHRjYXNlIEJQRl9NT0RJRllfUkVUVVJOOlxudG9vbHMvbGliL2JwZi9icGYuYzo5ODY6XHRcdHJldHVybiBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihOVUxMLCBwcm9nX2ZkKTtcbnRvb2xzL2xpYi9icGYvYnBmLmMtOTg3LVx0ZGVmYXVsdDpcbi0tXG50b29scy9saWIvYnBmL2JwZi5jPTEyODg9aW50IGJwZl9saW5rX2dldF9pbmZvX2J5X2ZkKGludCBsaW5rX2ZkLCBzdHJ1Y3QgYnBmX2xpbmtfaW5mbyAqaW5mbywgX191MzIgKmluZm9fbGVuKVxuLS1cbnRvb2xzL2xpYi9icGYvYnBmLmMtMTI5Mi1cbnRvb2xzL2xpYi9icGYvYnBmLmM6MTI5MzppbnQgYnBmX3Jhd190cmFjZXBvaW50X29wZW5fb3B0cyhpbnQgcHJvZ19mZCwgc3RydWN0IGJwZl9yYXdfdHBfb3B0cyAqb3B0cylcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTI5NC17XG50b29scy9saWIvYnBmL2JwZi5jOjEyOTU6XHRjb25zdCBzaXplX3QgYXR0cl9zeiA9IG9mZnNldG9mZW5kKHVuaW9uIGJwZl9hdHRyLCByYXdfdHJhY2Vwb2ludCk7XG50b29scy9saWIvYnBmL2JwZi5jLTEyOTYtXHR1bmlvbiBicGZfYXR0ciBhdHRyO1xuLS1cbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMwMi1cdG1lbXNldChcdTAwMjZhdHRyLCAwLCBhdHRyX3N6KTtcbnRvb2xzL2xpYi9icGYvYnBmLmM6MTMwMzpcdGF0dHIucmF3X3RyYWNlcG9pbnQucHJvZ19mZCA9IHByb2dfZmQ7XG50b29scy9saWIvYnBmL2JwZi5jOjEzMDQ6XHRhdHRyLnJhd190cmFjZXBvaW50Lm5hbWUgPSBwdHJfdG9fdTY0KE9QVFNfR0VUKG9wdHMsIHRwX25hbWUsIE5VTEwpKTtcbnRvb2xzL2xpYi9icGYvYnBmLmM6MTMwNTpcdGF0dHIucmF3X3RyYWNlcG9pbnQuY29va2llID0gT1BUU19HRVQob3B0cywgY29va2llLCAwKTtcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMwNi1cbi0tXG50b29scy9saWIvYnBmL2JwZi5jLTEzMTAtXG50b29scy9saWIvYnBmL2JwZi5jOjEzMTE6aW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwcm9nX2ZkKVxudG9vbHMvbGliL2JwZi9icGYuYy0xMzEyLXtcbi0tXG50b29scy9saWIvYnBmL2JwZi5jLTEzMTQtXG50b29scy9saWIvYnBmL2JwZi5jOjEzMTU6XHRyZXR1cm4gYnBmX3Jhd190cmFjZXBvaW50X29wZW5fb3B0cyhwcm9nX2ZkLCBcdTAwMjZvcHRzKTtcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMxNi19XG4tLVxudG9vbHMvbGliL2JwZi9icGYuaD02NjE9c3RydWN0IGJwZl9yYXdfdHBfb3B0cyB7XG4tLVxudG9vbHMvbGliL2JwZi9icGYuaC02NjgtXG50b29scy9saWIvYnBmL2JwZi5oOjY2OTpMSUJCUEZfQVBJIGludCBicGZfcmF3X3RyYWNlcG9pbnRfb3Blbl9vcHRzKGludCBwcm9nX2ZkLCBzdHJ1Y3QgYnBmX3Jhd190cF9vcHRzICpvcHRzKTtcbnRvb2xzL2xpYi9icGYvYnBmLmg6NjcwOkxJQkJQRl9BUEkgaW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwcm9nX2ZkKTtcbnRvb2xzL2xpYi9icGYvYnBmLmgtNjcxLUxJQkJQRl9BUEkgaW50IGJwZl90YXNrX2ZkX3F1ZXJ5KGludCBwaWQsIGludCBmZCwgX191MzIgZmxhZ3MsIGNoYXIgKmJ1Zixcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTE0ND1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGxpbmtfdHlwZV9uYW1lW10gPSB7XG50b29scy9saWIvYnBmL2xpYmJwZi5jLTE0NS1cdFtCUEZfTElOS19UWVBFX1VOU1BFQ11cdFx0XHQ9IFwmIzM0O3Vuc3BlY1wmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTQ2Olx0W0JQRl9MSU5LX1RZUEVfUkFXX1RSQUNFUE9JTlRdXHRcdD0gXCYjMzQ7cmF3X3RyYWNlcG9pbnRcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTE0Ny1cdFtCUEZfTElOS19UWVBFX1RSQUNJTkddXHRcdFx0PSBcJiMzNDt0cmFjaW5nXCYjMzQ7LFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MjAyPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcHJvZ190eXBlX25hbWVbXSA9IHtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIxOS1cdFtCUEZfUFJPR19UWVBFX1NLX01TR11cdFx0XHQ9IFwmIzM0O3NrX21zZ1wmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MjIwOlx0W0JQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRdXHRcdD0gXCYjMzQ7cmF3X3RyYWNlcG9pbnRcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIyMS1cdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLX0FERFJdXHQ9IFwmIzM0O2Nncm91cF9zb2NrX2FkZHJcJiMzNDssXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXHRbQlBGX1BST0dfVFlQRV9DR1JPVVBfU1lTQ1RMXVx0XHQ9IFwmIzM0O2Nncm91cF9zeXNjdGxcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcdFtCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFXVx0PSBcJiMzNDtyYXdfdHJhY2Vwb2ludF93cml0YWJsZVwmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI4LVx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXHRcdD0gXCYjMzQ7Y2dyb3VwX3NvY2tvcHRcJiMzNDssXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTEzPXN0YXRpYyBzdHJ1Y3Qge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzEzMC1cdHsgQlBGX1BST0dfVFlQRV9QRVJGX0VWRU5ULCAgICAgICAgICAgICAgXCYjMzQ7YnBmX3BlcmZfZXZlbnRfZGF0YVwmIzM0OyB9LFxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MTMxOlx0eyBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5ULCAgICAgICAgICBcJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfYXJnc1wmIzM0OyB9LFxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MTMyOlx0eyBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBcJiMzNDticGZfcmF3X3RyYWNlcG9pbnRfYXJnc1wmIzM0OyB9LFxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MTMzLVx0eyBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVCwgICAgICAgICAgICAgICBcJiMzNDtfX3NrX2J1ZmZcJiMzNDsgfSxcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTEwMDc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3NlY19kZWYgc2VjdGlvbl9kZWZzW10gPSB7XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMDExMS1cdFNFQ19ERUYoXCYjMzQ7dHAucyYjNDM7XCYjMzQ7LFx0XHRUUkFDRVBPSU5ULCAwLCBTRUNfU0xFRVBBQkxFLCBhdHRhY2hfdHApLFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMDExMjpcdFNFQ19ERUYoXCYjMzQ7cmF3X3RyYWNlcG9pbnQmIzQzO1wmIzM0OyxcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEwMTEzLVx0U0VDX0RFRihcJiMzNDtyYXdfdHAmIzQzO1wmIzM0OyxcdFx0UkFXX1RSQUNFUE9JTlQsIDAsIFNFQ19OT05FLCBhdHRhY2hfcmF3X3RwKSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTAxMTQ6XHRTRUNfREVGKFwmIzM0O3Jhd190cmFjZXBvaW50LnMmIzQzO1wmIzM0OyxcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfU0xFRVBBQkxFLCBhdHRhY2hfcmF3X3RwKSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTAxMTUtXHRTRUNfREVGKFwmIzM0O3Jhd190cC5zJiM0MztcJiMzNDssXHRcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfU0xFRVBBQkxFLCBhdHRhY2hfcmF3X3RwKSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTAxMTY6XHRTRUNfREVGKFwmIzM0O3Jhd190cmFjZXBvaW50LncmIzQzO1wmIzM0OyxcdFJBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEwMTE3LVx0U0VDX0RFRihcJiMzNDtyYXdfdHAudyYjNDM7XCYjMzQ7LFx0XHRSQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgMCwgU0VDX05PTkUsIGF0dGFjaF9yYXdfdHApLFxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTM1OTY9c3RydWN0IGJwZl9saW5rICpcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM1OTc6YnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludF9vcHRzKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM1OTgtXHRcdFx0XHRcdGNvbnN0IGNoYXIgKnRwX25hbWUsXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNTk5Olx0XHRcdFx0XHRzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X29wdHMgKm9wdHMpXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjAwLXtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjA0LVxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzYwNTpcdGlmICghT1BUU19WQUxJRChvcHRzLCBicGZfcmF3X3RyYWNlcG9pbnRfb3B0cykpXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjA2LVx0XHRyZXR1cm4gbGliYnBmX2Vycl9wdHIoLUVJTlZBTCk7XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzYyMC1cdHJhd19vcHRzLmNvb2tpZSA9IE9QVFNfR0VUKG9wdHMsIGNvb2tpZSwgMCk7XG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjIxOlx0cGZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW5fb3B0cyhwcm9nX2ZkLCBcdTAwMjZyYXdfb3B0cyk7XG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjIyLVx0aWYgKHBmZCBcdTAwM2MgMCkge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzItXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjMzOnN0cnVjdCBicGZfbGluayAqYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjM0LVx0XHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICp0cF9uYW1lKVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzYzNS17XG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjM2Olx0cmV0dXJuIGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnRfb3B0cyhwcm9nLCB0cF9uYW1lLCBOVUxMKTtcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzctfVxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTM2Mzk9c3RhdGljIGludCBhdHRhY2hfcmF3X3RwKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgbG9uZyBjb29raWUsIHN0cnVjdCBicGZfbGluayAqKmxpbmspXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzY0Mi1cdFx0XCYjMzQ7cmF3X3RwXCYjMzQ7LFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzY0MzpcdFx0XCYjMzQ7cmF3X3RyYWNlcG9pbnRcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjQ0LVx0XHRcJiMzNDtyYXdfdHAud1wmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM2NDU6XHRcdFwmIzM0O3Jhd190cmFjZXBvaW50LndcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjQ2LVx0XHRcJiMzNDtyYXdfdHAuc1wmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM2NDc6XHRcdFwmIzM0O3Jhd190cmFjZXBvaW50LnNcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjQ4LVx0fTtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjYwLVxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzY2MTpcdCpsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChwcm9nLCBtYXRjaCk7XG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjYyLVx0cmV0dXJuIGxpYmJwZl9nZXRfZXJyb3IoKmxpbmspO1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTM4ODQ9c3RydWN0IGJwZl9saW5rICpicGZfcHJvZ3JhbV9fYXR0YWNoX2ZyZXBsYWNlKGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzOTEzLVx0fSBlbHNlIHtcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM5MTQ6XHRcdC8qIG5vIHRhcmdldCwgc28gdXNlIHJhd190cmFjZXBvaW50X29wZW4gZm9yIGNvbXBhdGliaWxpdHlcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM5MTUtXHRcdCAqIHdpdGggb2xkIGtlcm5lbHNcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5oPTg1Mz1icGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlcG9pbnRfb3B0cyhjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuaC04NTctXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg1ODpzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X29wdHMge1xudG9vbHMvbGliL2JwZi9saWJicGYuaC04NTktXHRzaXplX3Qgc3o7IC8qIHNpemUgb2YgdGhpcyBzdHJ1Y3QgZm9yIGZvcndhcmQvYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODYyLX07XG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg2MzojZGVmaW5lIGJwZl9yYXdfdHJhY2Vwb2ludF9vcHRzX19sYXN0X2ZpZWxkIGNvb2tpZVxudG9vbHMvbGliL2JwZi9saWJicGYuaC04NjQtXG50b29scy9saWIvYnBmL2xpYmJwZi5oPTg2NT1MSUJCUEZfQVBJIHN0cnVjdCBicGZfbGluayAqXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg2NjpicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODY3LVx0XHRcdFx0ICAgY29uc3QgY2hhciAqdHBfbmFtZSk7XG50b29scy9saWIvYnBmL2xpYmJwZi5oPTg2OD1MSUJCUEZfQVBJIHN0cnVjdCBicGZfbGluayAqXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg2OTpicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50X29wdHMoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxudG9vbHMvbGliL2JwZi9saWJicGYuaC04NzAtXHRcdFx0XHRcdGNvbnN0IGNoYXIgKnRwX25hbWUsXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg3MTpcdFx0XHRcdFx0c3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9vcHRzICpvcHRzKTtcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODcyLVxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcD0xPUxJQkJQRl8wLjAuMSB7XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTUxLVx0XHRicGZfcHJvZ19saW5mb19fbGZpbmQ7XG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NTI6XHRcdGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuO1xudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTUzLVx0XHRicGZfdGFza19mZF9xdWVyeTtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA9ODg9TElCQlBGXzAuMC40IHtcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXAtOTItXHRcdGJwZl9wcm9ncmFtX19hdHRhY2hfcGVyZl9ldmVudDtcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcDo5MzpcdFx0YnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludDtcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcC05NC1cdFx0YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZXBvaW50O1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcD00MTE9TElCQlBGXzEuNC4wIHtcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcC00MTItXHRnbG9iYWw6XG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NDEzOlx0XHRicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50X29wdHM7XG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NDE0Olx0XHRicGZfcmF3X3RyYWNlcG9pbnRfb3Blbl9vcHRzO1xudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTQxNS1cdFx0YnBmX3Rva2VuX2NyZWF0ZTtcbi0tXG50b29scy9saWIvYnBmL3NrZWxfaW50ZXJuYWwuaD0yODY9c3RhdGljIGlubGluZSBpbnQgc2tlbF9tYXBfZ2V0X2ZkX2J5X2lkKF9fdTMyIGlkKVxuLS1cbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTI5Ni1cbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oOjI5NzpzdGF0aWMgaW5saW5lIGludCBza2VsX3Jhd190cmFjZXBvaW50X29wZW4oY29uc3QgY2hhciAqbmFtZSwgaW50IHByb2dfZmQpXG50b29scy9saWIvYnBmL3NrZWxfaW50ZXJuYWwuaC0yOTgte1xudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg6Mjk5Olx0Y29uc3Qgc2l6ZV90IGF0dHJfc3ogPSBvZmZzZXRvZmVuZCh1bmlvbiBicGZfYXR0ciwgcmF3X3RyYWNlcG9pbnQucHJvZ19mZCk7XG50b29scy9saWIvYnBmL3NrZWxfaW50ZXJuYWwuaC0zMDAtXHR1bmlvbiBicGZfYXR0ciBhdHRyO1xuLS1cbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTMwMi1cdG1lbXNldChcdTAwMjZhdHRyLCAwLCBhdHRyX3N6KTtcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oOjMwMzpcdGF0dHIucmF3X3RyYWNlcG9pbnQubmFtZSA9IChsb25nKSBuYW1lO1xudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg6MzA0Olx0YXR0ci5yYXdfdHJhY2Vwb2ludC5wcm9nX2ZkID0gcHJvZ19mZDtcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTMwNS1cbi0tXG50b29scy9wZXJmL3V0aWwvYnBmX2Z0cmFjZS5jPTIyPWludCBwZXJmX2Z0cmFjZV9fbGF0ZW5jeV9wcmVwYXJlX2JwZihzdHJ1Y3QgcGVyZl9mdHJhY2UgKmZ0cmFjZSlcbi0tXG50b29scy9wZXJmL3V0aWwvYnBmX2Z0cmFjZS5jLTEyOS1cbnRvb2xzL3BlcmYvdXRpbC9icGZfZnRyYWNlLmM6MTMwOlx0XHRza2VsLVx1MDAzZWxpbmtzLmV2ZW50X2JlZ2luID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmV2ZW50X2JlZ2luLFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYy0xMzEtXHRcdFx0XHRcdFx0XHRcdFx0ICAgICBldmVudC1cdTAwM2VuYW1lKTtcbi0tXG50b29scy9wZXJmL3V0aWwvYnBmX2Z0cmFjZS5jLTEzOS1cbnRvb2xzL3BlcmYvdXRpbC9icGZfZnRyYWNlLmM6MTQwOlx0XHRza2VsLVx1MDAzZWxpbmtzLmV2ZW50X2VuZCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQoc2tlbC1cdTAwM2Vwcm9ncy5ldmVudF9lbmQsXG50b29scy9wZXJmL3V0aWwvYnBmX2Z0cmFjZS5jLTE0MS1cdFx0XHRcdFx0XHRcdFx0XHQgICAgIGV2ZW50LVx1MDAzZW5hbWUpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYz02MTU9c3RhdGljIHZvaWQgdHBfYnRmX3N1YnRlc3Qoc3RydWN0IHRlc3RfYnBmX2Nvb2tpZSAqc2tlbClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNjMyLVx0cmF3X3RwX29wdHMuY29va2llID0gY29va2llID0gMHgxMTAwMDAwMDAwMDAwMEw7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NjMzOlx0bGlua19mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXHUwMDI2cmF3X3RwX29wdHMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jOjYzNDpcdGlmICghQVNTRVJUX0dFKGxpbmtfZmQsIDAsIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHNcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTYzNS1cdFx0Z290byBjbGVhbnVwO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYz02Nzc9c3RhdGljIGludCB2ZXJpZnlfcmF3X3RwX2xpbmtfaW5mbyhpbnQgZmQsIHU2NCBjb29raWUpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTY5MC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYzo2OTE6XHRBU1NFUlRfRVEoaW5mby5yYXdfdHJhY2Vwb2ludC5jb29raWUsIGNvb2tpZSwgXCYjMzQ7cmF3X3RwX2Nvb2tpZVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNjkyLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYz02OTY9c3RhdGljIHZvaWQgcmF3X3RwX3N1YnRlc3Qoc3RydWN0IHRlc3RfYnBmX2Nvb2tpZSAqc2tlbClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNzAxLVx0TElCQlBGX09QVFMoYnBmX3Jhd190cF9vcHRzLCByYXdfdHBfb3B0cyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NzAyOlx0TElCQlBGX09QVFMoYnBmX3Jhd190cmFjZXBvaW50X29wdHMsIG9wdHMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTcwMy1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNzExLVx0cmF3X3RwX29wdHMuY29va2llID0gY29va2llID0gMHg1NTAwMDAwMDAwMDAwMEw7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NzEyOlx0bGlua19mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXHUwMDI2cmF3X3RwX29wdHMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jOjcxMzpcdGlmICghQVNTRVJUX0dFKGxpbmtfZmQsIDAsIFwmIzM0O2JwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHNcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTcxNC1cdFx0Z290byBjbGVhbnVwO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mzg4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIFJhdyBUcmFjZXBvaW50IFRlc3QqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgdGVzdCwgYW5kIGl0JiMzOTtzIHVzaW5nIGBTRUMoJiMzNDtyYXdfdHJhY2Vwb2ludC53JiMzNDspYC4gUmlnaHQsIHRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWAuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHByb2dyYW0gdHlwZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgb3IgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byByYXcgdHJhY2Vwb2ludHMgYW5kIHdyaXRhYmxlIHByb2dyYW1zLiBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHNldHRpbmdzIG9yIHBhcmFtZXRlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBwYXJ0aWN1bGFyIHNldHVwLiBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGFjcm9zcyBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgb3IgcG90ZW50aWFsIGxpbWl0YXRpb25zLiBJdCYjMzk7cyBhIGtleSBmaXJzdCBzdGVwLCBzbyBJJiMzOTtsbCBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdD0xOD1kZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gdGhlIGZvb3Rub3Rlcy5cbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQzLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE0NDp8IGBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWBgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cC53JiM0MztgYCBbI3Jhd3RwXV8gICAgICAgICAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0NS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0Mztcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTQ1PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQsXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ2LVx0ICAgICAgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzLCB1NjQpXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ3OkJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUsXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ4LVx0ICAgICAgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzLCB1NjQpXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEzMj11bmlvbiBicGZfaXRlcl9saW5rX2luZm8ge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODYtICpcdFx0KipCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UKiosXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Mzg3OiAqXHRcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSoqXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg4LSAqXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEwNjI9ZW51bSBicGZfcHJvZ190eXBlIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4Ni1cdEJQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTCxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDg3Olx0QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDg4LVx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVCxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTYyMTY9c3RhdGljIGludCBidGZfdmFsaWRhdGVfcHJvZ19jdHhfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi9idGYuYy02MjczLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxua2VybmVsL2JwZi9idGYuYzo2Mjc0Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxua2VybmVsL2JwZi9idGYuYy02Mjc1LVx0XHQvKiBhbGxvdyB1NjQqIGFzIGN0eCAqL1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI4NzE9c3RhdGljIGJvb2wgaXNfcGVyZm1vbl9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHByb2dfdHlwZSlcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yODc3LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mjg3ODpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzktXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM3OC1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzNzk6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzgwLVx0XHRpZiAoc3RybmNweV9mcm9tX3VzZXIoYnVmLCB1c2VyX3RwX25hbWUsIHNpemVvZihidWYpIC0gMSkgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3NzI2PXN0YXRpYyBib29sIGlzX3RyYWNpbmdfcHJvZ190eXBlKGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzczMi1cdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzczMzpcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzczNC1cdFx0cmV0dXJuIHRydWU7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEzMj11bmlvbiBicGZfaXRlcl9saW5rX2luZm8ge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODYtICpcdFx0KipCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UKiosXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Mzg3OiAqXHRcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSoqXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg4LSAqXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEwNjI9ZW51bSBicGZfcHJvZ190eXBlIHtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4Ni1cdEJQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTCxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDg3Olx0QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDg4LVx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVCxcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTIwMj1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHByb2dfdHlwZV9uYW1lW10gPSB7XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXHRbQlBGX1BST0dfVFlQRV9DR1JPVVBfU1lTQ1RMXVx0XHQ9IFwmIzM0O2Nncm91cF9zeXNjdGxcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcdFtCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFXVx0PSBcJiMzNDtyYXdfdHJhY2Vwb2ludF93cml0YWJsZVwmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI4LVx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXHRcdD0gXCYjMzQ7Y2dyb3VwX3NvY2tvcHRcJiMzNDssXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTEzPXN0YXRpYyBzdHJ1Y3Qge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzEzMS1cdHsgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgICAgICAgICAgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X2FyZ3NcJiMzNDsgfSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6NzEzMjpcdHsgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X2FyZ3NcJiMzNDsgfSxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzEzMy1cdHsgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1QsICAgICAgICAgICAgICAgXCYjMzQ7X19za19idWZmXCYjMzQ7IH0sXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTUzPXN0YXRpYyBib29sIG5lZWRfZnVuY19hcmdfdHlwZV9maXh1cChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcyMDgtXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XG50b29scy9saWIvYnBmL2xpYmJwZi5jOjcyMDk6XHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcyMTAtXHRcdC8qIGFsbG93IHU2NCogYXMgY3R4ICovXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM9MTAzPXN0YXRpYyBpbnQgcHJvYmVfcHJvZ19sb2FkKGVudW0gYnBmX3Byb2dfdHlwZSBwcm9nX3R5cGUsXG4tLVxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMTc3LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM6MTc4Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMTc5LVx0Y2FzZSBCUEZfUFJPR19UWVBFX0xXVF9TRUc2TE9DQUw6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jPTc9dm9pZCB0ZXN0X3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMtMjctXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmM6Mjg6XHRicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFwmIzM0O0dQTCB2MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuYy0yOS1cdFx0XHQgICAgICAgcHJvZ3JhbSwgQVJSQVlfU0laRShwcm9ncmFtKSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYz04PXZvaWQgc2VyaWFsX3Rlc3RfcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfdGVzdF9ydW4uYzoyNzpcdGludCBicGZfZmQgPSBicGZfcHJvZ19sb2FkKEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIE5VTEwsIFwmIzM0O0dQTCB2MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV90ZXN0X3J1bi5jLTI4LVx0XHRcdFx0ICAgdHJhY2VfcHJvZ3JhbSwgQVJSQVlfU0laRSh0cmFjZV9wcm9ncmFtKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwODMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIEJQRl9FVkVOVFMgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0VWRU5UU2AuIFRoZSBpbnRlcmVzdGluZyBvbmUgaGVyZSBpcyBgQlBGX0VWRU5UU2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmN5IGdyYXBoIGZvciBgQlBGX0VWRU5UU2AuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIEJQRiBlY29zeXN0ZW0sIHNvIHVuZGVyc3RhbmRpbmcgd2hhdCBpdCBsZWFucyBvbiBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkga25vdyB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFuZCBrZXJuZWwgZmVhdHVyZXMgYXJlIG5lZWRlZCBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3QgYSBwcmVsaW1pbmFyeSBhc3Nlc3NtZW50LiBJIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgdGhlIG1vc3QgZGlyZWN0IHBhdGguIEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgYnVpbHQgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0VWRU5UUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZz04Mzk9Y29uZmlnIEVQUk9CRV9FVkVOVFNcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4NTM6Y29uZmlnIEJQRl9FVkVOVFNcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNzAKCQkJCQkJCW91dHB1dDogMTI4CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqTXkgQlBGIEltcGxlbWVudGF0aW9uIFN0cmF0ZWd5KioKClJpZ2h0LCBpdCBzZWVtcyB3ZSYjMzk7cmUgb24gdGhlIHJpZ2h0IHRyYWNrLiBGcm9tIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgSSBjYW4gY29uZmlybSB0aGF0IGZvY3VzaW5nIG91ciBlZmZvcnRzIG9uIHRoZSBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0VWRU5UU2AgYXNwZWN0cyB3aWxsIGJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgc3BlY2lmaWMgdGFzay4gV2Ugd2FudCB0byBiZSBlZmZpY2llbnQgYW5kIHBpbnBvaW50IHdoZXJlIHdlIG5lZWQgdG8gbWFrZSBjaGFuZ2VzLgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aG9zZSBrZXkgc3ltYm9sIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgdG8gY29uZmlybSB0aGUgY29kZSB3aWxsIGZ1bmN0aW9uIGFzIGludGVuZGVkLgoKSSBxdWlja2x5IGNoZWNrZWQgdGhlIGxpc3QgYW5kIGNvbmZpcm1lZCB0aGF0IHdoaWxlIGBjaGVja19tYXhfc3RhY2tfZGVwdGhgIGlzbiYjMzk7dCBpbXBhY3RlZCwgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGFyZSBhbGwgbW9kaWZpZWQsIGFzIGV4cGVjdGVkLgoKSSB3aWxsIHByb2NlZWQgdG8gc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fY2hlY2tfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja190cF9idWZmZXJfYWNjZXNzJiMzNDssCiAgICAmIzM0O2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgaGFuZGxlIG5lZ2F0aXZlIG9mZnNldHMgYW5kIG92ZXJmbG93cyB3aGVuIGNoZWNraW5nIGJ1ZmZlciBhY2Nlc3MgaW4gQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBjb21wb25lbnQgKEJQRiB2ZXJpZmllcikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MmIzM0OywKICAgICYjMzQ7Y2hlY2tfdHBfYnVmZmVyX2FjY2VzcyYjMzQ7LAogICAgJiMzNDtjaGVja19idWZmZXJfYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mgd2hlbiBjaGVja2luZyBidWZmZXIgYWNjZXNzIGluIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgY29tcG9uZW50IChCUEYgdmVyaWZpZXIpIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MDk6NDIuMTc5MjY5NTY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2ODM1NTIxNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19jaGVja19idWZmZXJfYWNjZXNzXCIsXG4gICAgXCJjaGVja190cF9idWZmZXJfYWNjZXNzXCIsXG4gICAgXCJjaGVja19idWZmZXJfYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgaGFuZGxlIG5lZ2F0aXZlIG9mZnNldHMgYW5kIG92ZXJmbG93cyB3aGVuIGNoZWNraW5nIGJ1ZmZlciBhY2Nlc3MgaW4gQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBjb21wb25lbnQgKEJQRiB2ZXJpZmllcikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjA5OjQyLjE3OTI3NDYxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk5NzgwNDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmMxOGQzOGU4MTljNTI2MTBmMDVlMjlmMDRiOGUyZGIzZDJiODYyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDA0OjA5OjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDIxYTM2NWQ0MzZhNTk1Li40MjFjYTExOGZjYmZlNiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtNTMyNiwxNCArNTMyNiwxOCBAQCBzdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbiBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqYnVmX2luZm8sXFxuIFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi1cXHRcXHRcXHRcXHQgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXFxuK1xcdFxcdFxcdFxcdCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLCBpbnQgc2l6ZSxcXG4rXFx0XFx0XFx0XFx0IHUzMiAqYWNjZXNzX2VuZClcXG4ge1xcbitcXHRzNjQgc3RhcnQsIHZhcl9vZmY7XFxuK1xcbiBcXHRpZiAob2ZmIFxcdTAwM2MgMCkge1xcbiBcXHRcXHR2ZXJib3NlKGVudixcXG4gXFx0XFx0XFx0XFxcIiVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVkLCBzaXplPSVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xcbiBcXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4gXFx0fVxcbitcXG4gXFx0aWYgKCF0bnVtX2lzX2NvbnN0KHJlZy1cXHUwMDNldmFyX29mZikpIHtcXG4gXFx0XFx0Y2hhciB0bl9idWZbNDhdO1xcbiBcXG5AQCAtNTM0NCw2ICs1MzQ4LDI5IEBAIHN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbiBcXHR9XFxuIFxcbitcXHR2YXJfb2ZmID0gKHM2NClyZWctXFx1MDAzZXZhcl9vZmYudmFsdWU7XFxuK1xcdGlmIChjaGVja19hZGRfb3ZlcmZsb3codmFyX29mZiwgKHM2NClvZmYsIFxcdTAwMjZzdGFydCkpIHtcXG4rXFx0XFx0dmVyYm9zZShlbnYsXFxuK1xcdFxcdFxcdFxcXCIlcyBpbnZhbGlkICVzIGJ1ZmZlciBhY2Nlc3M6IG9mZj0lZCwgdmFyX29mZj0lbGxkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHZhcl9vZmYpO1xcbitcXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHN0YXJ0IFxcdTAwM2MgMCkge1xcbitcXHRcXHR2ZXJib3NlKGVudixcXG4rXFx0XFx0XFx0XFxcIiVzIGludmFsaWQgbmVnYXRpdmUgJXMgYnVmZmVyIG9mZnNldDogb2ZmPSVkLCB2YXJfb2ZmPSVsbGRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XFxuK1xcdFxcdHJldHVybiAtRUFDQ0VTO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoc3RhcnQgXFx1MDAzZSBVMzJfTUFYIHx8IHNpemUgXFx1MDAzYyAwIHx8XFxuK1xcdCAgICBjaGVja19hZGRfb3ZlcmZsb3coKHUzMilzdGFydCwgKHUzMilzaXplLCBhY2Nlc3NfZW5kKSkge1xcbitcXHRcXHR2ZXJib3NlKGVudixcXG4rXFx0XFx0XFx0XFxcIiVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVsbGQsIHNpemU9JWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIHN0YXJ0LCBzaXplKTtcXG4rXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC01MzUxLDEzICs1Mzc4LDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfdHBfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuIFxcdFxcdFxcdFxcdCAgYXJnbm9fdCBhcmdubywgaW50IG9mZiwgaW50IHNpemUpXFxuIHtcXG4rXFx0dTMyIGFjY2Vzc19lbmQ7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcXFwidHJhY2Vwb2ludFxcXCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSk7XFxuK1xcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFxcXCJ0cmFjZXBvaW50XFxcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxcbitcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0ZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgocmVnLVxcdTAwM2V2YXJfb2ZmLnZhbHVlICsgb2ZmICsgc2l6ZSxcXG4rXFx0ZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZW1heF90cF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VtYXhfdHBfYWNjZXNzKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbkBAIC01MzcwLDEzICs1Mzk5LDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHQgICAgICAgdTMyICptYXhfYWNjZXNzKVxcbiB7XFxuIFxcdGNvbnN0IGNoYXIgKmJ1Zl9pbmZvID0gdHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cXHUwMDNldHlwZSkgPyBcXFwicmRvbmx5XFxcIiA6IFxcXCJyZHdyXFxcIjtcXG4rXFx0dTMyIGFjY2Vzc19lbmQ7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplKTtcXG4rXFx0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcXG4rXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZhY2Nlc3NfZW5kKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdCptYXhfYWNjZXNzID0gbWF4KHJlZy1cXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsICptYXhfYWNjZXNzKTtcXG4rXFx0Km1heF9hY2Nlc3MgPSBtYXgoYWNjZXNzX2VuZCwgKm1heF9hY2Nlc3MpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXFxuaW5kZXggMTRhMDE3MmUyMTQxZTguLjQwNTVhNjQ0M2JjMjBhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xcbkBAIC00Nyw0ICs0NywyMCBAQCBsMF8lPTpcXHQvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1xcXFxcXG4gXFx0OiBfX2Nsb2JiZXJfYWxsKTtcXG4gfVxcbiBcXG4rU0VDKFxcXCJyYXdfdHJhY2Vwb2ludC53XFxcIilcXG4rX19kZXNjcmlwdGlvbihcXFwicmF3X3RyYWNlcG9pbnRfd3JpdGFibGU6IHJlamVjdCBuZWdhdGl2ZSBjb25zdCBvZmZzZXRcXFwiKVxcbitfX2ZhaWx1cmVcXG4rX19tc2coXFxcImludmFsaWQgbmVnYXRpdmUgdHJhY2Vwb2ludCBidWZmZXIgb2Zmc2V0XFxcIilcXG4rX19uYWtlZCB2b2lkIHRyYWNlcG9pbnRfd3JpdGFibGVfcmVqZWN0X25lZ2F0aXZlX2NvbnN0X29mZnNldCh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxcIlxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjYgPSAqKHU2NCAqKShyMSArIDApO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjYgKz0gLTg7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMCA9ICoodTY0ICopKHI2ICsgMCk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRleGl0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFxcIlxcdDpcXG4rXFx0OlxcbitcXHQ6IF9fY2xvYmJlcl9hbGwpO1xcbit9XFxuK1xcbiBjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MDk6NDIuNDc5ODI3NzQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTY1MzQ5NTQ1NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgb2Zmc2V0cyBhbmQgb3ZlcmZsb3dzIHdoZW4gY2hlY2tpbmcgYnVmZmVyIGFjY2VzcyBpbiBCUEYgcHJvZ3JhbXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIGNvbXBvbmVudCAoQlBGIHZlcmlmaWVyKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YzE4ZDM4ZTgxOWM1MjYxMGYwNWUyOWYwNGI4ZTJkYjNkMmI4NjI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwNDowOTo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMjFhMzY1ZDQzNmE1OTUuLjQyMWNhMTE4ZmNiZmU2IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01MzI2LDE0ICs1MzI2LDE4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gc3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRcdCBjb25zdCBjaGFyICpidWZfaW5mbyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLVx0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuK1x0XHRcdFx0IGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplLFxuK1x0XHRcdFx0IHUzMiAqYWNjZXNzX2VuZClcbiB7XG4rXHRzNjQgc3RhcnQsIHZhcl9vZmY7XG4rXG4gXHRpZiAob2ZmIFx1MDAzYyAwKSB7XG4gXHRcdHZlcmJvc2UoZW52LFxuIFx0XHRcdFwiJXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWQsIHNpemU9JWRcXG5cIixcbiBcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBvZmYsIHNpemUpO1xuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbitcbiBcdGlmICghdG51bV9pc19jb25zdChyZWctXHUwMDNldmFyX29mZikpIHtcbiBcdFx0Y2hhciB0bl9idWZbNDhdO1xuIFxuQEAgLTUzNDQsNiArNTM0OCwyOSBAQCBzdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiBcbitcdHZhcl9vZmYgPSAoczY0KXJlZy1cdTAwM2V2YXJfb2ZmLnZhbHVlO1xuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyh2YXJfb2ZmLCAoczY0KW9mZiwgXHUwMDI2c3RhcnQpKSB7XG4rXHRcdHZlcmJvc2UoZW52LFxuK1x0XHRcdFwiJXMgaW52YWxpZCAlcyBidWZmZXIgYWNjZXNzOiBvZmY9JWQsIHZhcl9vZmY9JWxsZFxcblwiLFxuK1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuK1x0aWYgKHN0YXJ0IFx1MDAzYyAwKSB7XG4rXHRcdHZlcmJvc2UoZW52LFxuK1x0XHRcdFwiJXMgaW52YWxpZCBuZWdhdGl2ZSAlcyBidWZmZXIgb2Zmc2V0OiBvZmY9JWQsIHZhcl9vZmY9JWxsZFxcblwiLFxuK1x0XHRcdHJlZ19hcmdfbmFtZShlbnYsIGFyZ25vKSwgYnVmX2luZm8sIG9mZiwgdmFyX29mZik7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuK1x0aWYgKHN0YXJ0IFx1MDAzZSBVMzJfTUFYIHx8IHNpemUgXHUwMDNjIDAgfHxcbitcdCAgICBjaGVja19hZGRfb3ZlcmZsb3coKHUzMilzdGFydCwgKHUzMilzaXplLCBhY2Nlc3NfZW5kKSkge1xuK1x0XHR2ZXJib3NlKGVudixcbitcdFx0XHRcIiVzIGludmFsaWQgJXMgYnVmZmVyIGFjY2Vzczogb2ZmPSVsbGQsIHNpemU9JWRcXG5cIixcbitcdFx0XHRyZWdfYXJnX25hbWUoZW52LCBhcmdubyksIGJ1Zl9pbmZvLCBzdGFydCwgc2l6ZSk7XG4rXHRcdHJldHVybiAtRUFDQ0VTO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTUzNTEsMTMgKzUzNzgsMTUgQEAgc3RhdGljIGludCBjaGVja190cF9idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4gXHRcdFx0XHQgIGFyZ25vX3QgYXJnbm8sIGludCBvZmYsIGludCBzaXplKVxuIHtcbitcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFwidHJhY2Vwb2ludFwiLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuK1x0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgXCJ0cmFjZXBvaW50XCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcbitcdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsXG4rXHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlbWF4X3RwX2FjY2VzcyA9IG1heChhY2Nlc3NfZW5kLFxuIFx0XHRcdFx0XHQgICAgZW52LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZW1heF90cF9hY2Nlc3MpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtNTM3MCwxMyArNTM5OSwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHQgICAgICAgdTMyICptYXhfYWNjZXNzKVxuIHtcbiBcdGNvbnN0IGNoYXIgKmJ1Zl9pbmZvID0gdHlwZV9pc19yZG9ubHlfbWVtKHJlZy1cdTAwM2V0eXBlKSA/IFwicmRvbmx5XCIgOiBcInJkd3JcIjtcbitcdHUzMiBhY2Nlc3NfZW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUpO1xuK1x0ZXJyID0gX19jaGVja19idWZmZXJfYWNjZXNzKGVudiwgYnVmX2luZm8sIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcbitcdFx0XHRcdCAgICBcdTAwMjZhY2Nlc3NfZW5kKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHQqbWF4X2FjY2VzcyA9IG1heChyZWctXHUwMDNldmFyX29mZi52YWx1ZSArIG9mZiArIHNpemUsICptYXhfYWNjZXNzKTtcbitcdCptYXhfYWNjZXNzID0gbWF4KGFjY2Vzc19lbmQsICptYXhfYWNjZXNzKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcmF3X3RwX3dyaXRhYmxlLmNcbmluZGV4IDE0YTAxNzJlMjE0MWU4Li40MDU1YTY0NDNiYzIwYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Jhd190cF93cml0YWJsZS5jXG5AQCAtNDcsNCArNDcsMjAgQEAgbDBfJT06XHQvKiBzaGlmdCB0aGUgYnVmZmVyIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBsb2NhdGlvbiAqL1xcXG4gXHQ6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbitTRUMoXCJyYXdfdHJhY2Vwb2ludC53XCIpXG4rX19kZXNjcmlwdGlvbihcInJhd190cmFjZXBvaW50X3dyaXRhYmxlOiByZWplY3QgbmVnYXRpdmUgY29uc3Qgb2Zmc2V0XCIpXG4rX19mYWlsdXJlXG4rX19tc2coXCJpbnZhbGlkIG5lZ2F0aXZlIHRyYWNlcG9pbnQgYnVmZmVyIG9mZnNldFwiKVxuK19fbmFrZWQgdm9pZCB0cmFjZXBvaW50X3dyaXRhYmxlX3JlamVjdF9uZWdhdGl2ZV9jb25zdF9vZmZzZXQodm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFwiXHRcdFx0XHRcdFxcXG4rXHRyNiA9ICoodTY0ICopKHIxICsgMCk7XHRcdFx0XHRcXFxuK1x0cjYgKz0gLTg7XHRcdFx0XHRcdFxcXG4rXHRyMCA9ICoodTY0ICopKHI2ICsgMCk7XHRcdFx0XHRcXFxuK1x0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuK1wiXHQ6XG4rXHQ6XG4rXHQ6IF9fY2xvYmJlcl9hbGwpO1xuK31cbitcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNDowOTo0Mi40Nzk4MjkxMTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzA0NzkzNjA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEl0J3MgZ290IGEgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2UgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9yYXdfdHBfd3JpdGFibGUuY2AuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhleSdyZSBtb2RpZnlpbmcgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mg4oCTIGNyaXRpY2FsIGZvciBlbnN1cmluZyBCUEYgcHJvZ3JhbXMgZG9uJ3Qgd3JlYWsgaGF2b2Mgb24gbWVtb3J5LlxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIHVwZGF0ZXMgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgdG8gY29ycmVjdGx5IHVzZSB0aGUgbmV3IGBhY2Nlc3NfZW5kYCBvdXRwdXQgb2YgdGhlIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhlIEJQRiB2ZXJpZmllciBpcyBhICpjb3JlKiBjb21wb25lbnQgb2YgdGhlIGtlcm5lbCwgYW5kIGV2ZW4gc3VidGxlIGNoYW5nZXMgY2FuIGhhdmUgZmFyLXJlYWNoaW5nIGNvbnNlcXVlbmNlcywgZXNwZWNpYWxseSBpbiBob3cgaXQgaGFuZGxlcyBtZW1vcnkgYWNjZXNzLiBHaXZlbiBpdHMgaW1wb3J0YW5jZSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBmdXp6ZXIgY292ZXJhZ2UgaXMgKmVzc2VudGlhbCouIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgcmVhbGx5IG5lZWRzIHRvIGJlIGhpdCBoYXJkIHdpdGggZnV6emluZy5cblxuTXkgbmV4dCBpbW1lZGlhdGUgdGFzayBpcyBmaWd1cmluZyBvdXQgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFNpbmNlIHRoaXMgaW52b2x2ZXMgdGhlIEJQRiB2ZXJpZmllciwgbXkgZGVmYXVsdCBhc3N1bXB0aW9uIGlzIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgd2lsbCBiZSB0aGUga2V5LiBIb3dldmVyLCBpdCdzIGFsd2F5cyB3aXNlIHRvIGJlIHRob3JvdWdoLlxuXG5UbyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIG9jY3VycmVuY2VzIG9mIGVpdGhlciBgX19jaGVja19idWZmZXJfYWNjZXNzYCBvciBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AuIFRoYXQgc2hvdWxkIHF1aWNrbHkgdW5jb3ZlciBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBtaWdodCBiZSBvdmVybG9va2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjA5OjU5LjUyNzc2NzAyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYyMzU5OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fY2hlY2tfYnVmZmVyX2FjY2Vzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTI3Mj1zdGF0aWMgaW50IGNoZWNrX21heF9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMjUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzMjY6c3RhdGljIGludCBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTMyNy1cXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqYnVmX2luZm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM3Nz1zdGF0aWMgaW50IGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzgzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Mzg0OlxcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIFxcXCJ0cmFjZXBvaW50XFxcIiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Mzg1LVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2YWNjZXNzX2VuZCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTM5NT1zdGF0aWMgaW50IGNoZWNrX2J1ZmZlcl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA0LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NDA1OlxcdGVyciA9IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIGJ1Zl9pbmZvLCByZWcsIGFyZ25vLCBvZmYsIHNpemUsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU0MDYtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZhY2Nlc3NfZW5kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTA6MDEuNDkwMTMyMDIzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU5OTU3NTE0NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIG1vZGlmaWNhdGlvbnMuXG5cbioqQW5hbHl6aW5nIHRoZSBCdWZmZXIgQWNjZXNzIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiB0aHJlZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5OiBgX19jaGVja19idWZmZXJfYWNjZXNzYCwgYGNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NgLCBhbmQgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLiBDbGVhcmx5LCB0aGVzZSBhcmUgYWxsIGludm9sdmVkIGluIGNvbnRyb2xsaW5nIGFuZCB2ZXJpZnlpbmcgYWNjZXNzIHRvIHNvbWUgc29ydCBvZiBidWZmZXIgd2l0aGluIHRoZSBzeXN0ZW0sIGxpa2VseSByZWxhdGVkIHRvIGVCUEYuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29udGV4dCBvZiB3aGVyZSB0aGVzZSBhcmUgdXNlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBkaWZmZXJlbnRpYXRpb24gYmV0d2VlbiB0aGVtIG1pZ2h0IGJlIGJhc2VkIG9uIGZhY3RvcnMgbGlrZTpcblxuKiAgICoqVW5kZXJseWluZyBUYXJnZXQ6KiogVGhlIHVzZSBvZiBgdHBgIGluIGBjaGVja190cF9idWZmZXJfYWNjZXNzYCBsaWtlbHkgbWVhbnMgaXQncyBzcGVjaWZpYyB0byB0cmFjZXBvaW50IGRhdGEgc3RydWN0dXJlcy4gYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AgbWlnaHQgc3VnZ2VzdCBhIG1vcmUgaW50ZXJuYWwsIGxvdy1sZXZlbCB2YXJpYW50LiBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AgaXMgbGlrZWx5IGEgbW9yZSBnZW5lcmFsLXB1cnBvc2Ugcm91dGluZS5cbiogICAqKlNlY3VyaXR5IENvbnRleHQ6KiogVGhlcmUgY291bGQgYmUgZGlmZmVyZW50IHNlY3VyaXR5IGxldmVscyBvciBhY2Nlc3MgcnVsZXMgYXQgcGxheS4gUGVyaGFwcyBgX19jaGVja19idWZmZXJfYWNjZXNzYCBpcyBmb3IgaGlnaGx5IHByaXZpbGVnZWQgY29kZSBvciBmb3IgaW50ZXJuYWwga2VybmVsIHN0cnVjdHVyZXMsIHdoaWxlIGBjaGVja19idWZmZXJfYWNjZXNzYCBpcyBmb3IgdXNlci1zcGFjZSBwcm9ncmFtcyB3aXRoIHNvbWUgbGV2ZWwgb2YgdHJ1c3QuXG4qICAgKipWZXJpZmljYXRpb24gU3RyYXRlZ3k6KiogRWFjaCBmdW5jdGlvbiBtaWdodCBlbXBsb3kgZGlmZmVyZW50IGFjY2VzcyBjb250cm9sIG1lY2hhbmlzbXMuIFdlIG1pZ2h0IHNlZSB0aGluZ3MgbGlrZSByYW5nZSBjaGVja3MsIHBlcm1pc3Npb24gY2hlY2tzLCBvciBzaXplIGxpbWl0YXRpb25zIGVuZm9yY2VkLlxuXG5HaXZlbiB0aGF0IHRoZXNlIGZ1bmN0aW9ucyByZWxhdGUgdG8gQlBGLCBhIHByaW1hcnkgY29uY2VybiB3aWxsIGJlIHByZXZlbnRpbmcgYnVmZmVyIG92ZXJmbG93cywgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFuZCBnZW5lcmFsbHkgZW5zdXJpbmcgdGhlIGludGVncml0eSBhbmQgc2FmZXR5IG9mIHRoZSBrZXJuZWwuIFRoaXMgaXMgZXNwZWNpYWxseSBjcml0aWNhbCBzaW5jZSBCUEYgYWxsb3dzIHVudHJ1c3RlZCBjb2RlIHRvIHJ1biB3aXRoaW4gdGhlIGtlcm5lbC5cblxuTm93LCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUbyB1bmRlcnN0YW5kIHdoYXQncyAqYWN0dWFsbHkqIGNoYW5naW5nLCBJIG5lZWQgdG8gbG9vayBhdCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgaW5mbHVlbmNlZCBvciBuZWVkZWQgZm9yIHRoZXNlIGFjY2VzcyBjaGVja3M/IEFyZSB0aGVzZSBuZXcgZmVhdHVyZXMgYmVpbmcgYWRkZWQsIG9yIGV4aXN0aW5nIGFjY2VzcyBzdHJhdGVnaWVzIGJlaW5nIG1vZGlmaWVkPyBBcmUgdGhlcmUgYW55IGNvbmZpZyBvcHRpb25zIHRoYXQgaW5mbHVlbmNlIHRoZSB3YXkgdGhlc2UgZnVuY3Rpb25zIGJlaGF2ZSwgc3VjaCBhcyBkaWZmZXJlbnQgbGV2ZWxzIG9mIGJ1ZmZlciBzaXplIHZhbGlkYXRpb24gb3IgbW9yZSBzdHJpbmdlbnQgY2hlY2tzIGVuYWJsZWQ/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGNvbnRleHQsIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczoqKiBBcmUgdGhlc2UgY2hhbmdlcyBjb250aW5nZW50IG9uIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IChlLmcuLCBgQ09ORklHX0JQRl9KSVRgLCBgQ09ORklHX0JQRl9FVkVOVFNgLCBvciBvdGhlciByZWxhdGVkIHNldHRpbmdzKS5cbiogICAqKlBlcmZvcm1hbmNlIFRyYWRlb2ZmczoqKiBJZiB0aGVyZSBhcmUgbmV3IGJ1ZmZlciBhY2Nlc3MgY2hlY2tzLCBhcmUgdGhlcmUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zPyBBcmUgdGhlcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGFkanVzdCB0aGUgc3RyaWN0bmVzcyBvZiB0aGUgY2hlY2tzIHRvIGJhbGFuY2Ugc2VjdXJpdHkgYW5kIHNwZWVkP1xuKiAgICoqU2VjdXJpdHkgTGV2ZWxzOioqIEFyZSB0aGVyZSBuZXcgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGRlZ3JlZSBvZiBzZWN1cml0eT8gQXJlIHdlIG5vdyBhYmxlIHRvIHRpZ2h0ZW4gdGhlIGNvbnRyb2xzP1xuKiAgICoqQ29tcGF0aWJpbGl0eSBJc3N1ZXM6KiogQ291bGQgdGhlc2UgbW9kaWZpY2F0aW9ucyBicmVhayBleGlzdGluZyBlQlBGIHByb2dyYW1zIG9yIHJlcXVpcmUgcmVjb21waWxhdGlvbj8gSWYgc28sIHdoYXQgYXJlIHRoZSBjb21wYXRpYmlsaXR5IG9wdGlvbnM/XG5cbkJhc2ljYWxseSwgSSBuZWVkIHRoZSBjb250ZXh0IHByb3ZpZGVkIGJ5IGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoZXNlIGJ1ZmZlciBhY2Nlc3MgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEwNCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEwOjE3LjQ4NTg4NTgwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgxNDE0NDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEwOjE5LjQ2NzMwNTg4M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MDgzNTg3OTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBUcmFjZXBvaW50IEJ1ZmZlciBBY2Nlc3MqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSBwcmltYXJ5IHRoaW5nIHRvIGNvbnNpZGVyIGhlcmUgaXMgZGVmaW5pdGVseSB0aGUgYEJQRl9TWVNDQUxMYCBtZWNoYW5pc20uIFRoYXQncyB0aGUgY29yZS4gQnV0IEkgbmVlZCB0byBiZSB0aG9yb3VnaDsgSSBjYW4ndCBqdXN0IGFzc3VtZS4gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gU28sIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY2hlY2ssIGFuZCBJIG1lYW4gKnJlYWxseSogY2hlY2ssIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBzZXR0aW5ncywgZm9yIGBjaGVja190cF9idWZmZXJfYWNjZXNzYC4gR290dGEgYmUgbWV0aWN1bG91cywgZXNwZWNpYWxseSB3aXRoIHNvbWV0aGluZyB0aGF0IHRvdWNoZXMgbWVtb3J5IGFjY2Vzcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEgZGV0YWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODg4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTA6NDYuNTUwODk1NzQ4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTA4MDk0ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTMyNj1zdGF0aWMgaW50IF9fY2hlY2tfYnVmZmVyX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzYtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzNzc6c3RhdGljIGludCBjaGVja190cF9idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzNzgtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTYxMDE9c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzA5LVxcdH0gZWxzZSBpZiAocmVnLVxcdTAwM2V0eXBlID09IFBUUl9UT19UUF9CVUZGRVIpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjMxMDpcXHRcXHRlcnIgPSBjaGVja190cF9idWZmZXJfYWNjZXNzKGVudiwgcmVnLCBhcmdubywgb2ZmLCBzaXplKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjMxMS1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiB0ID09IEJQRl9SRUFEIFxcdTAwMjZcXHUwMDI2IHZhbHVlX3JlZ25vIFxcdTAwM2U9IDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEwOjQ4LjQwMTcxMzIxOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NTk4MzI0MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEJ1ZmZlciBBY2Nlc3MgRnVuY3Rpb24qKlxuXG5IbW0sIGBjaGVja19idWZmZXJfYWNjZXNzYC4uLiBsZXQncyBzZWUuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhYm91dCB2ZXJpZnlpbmcgcmVhZC93cml0ZSBwZXJtaXNzaW9ucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBib3VuZHMgY2hlY2tpbmcgb24gcG9pbnRlcnMsIG9yIHBlcmhhcHMgYWNjZXNzIGNvbnRyb2wgd2l0aGluIGEgc2hhcmVkIG1lbW9yeSByZWdpb24/IEkgbmVlZCBtb3JlIGNvbnRleHQgdG8gYmUgc3VyZSwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gbGlrZWx5IHBsYXlzIGEgY3JpdGljYWwgcm9sZSBpbiBwcmV2ZW50aW5nIHZ1bG5lcmFiaWxpdGllcy5cblxuSSdtIHByb2JhYmx5IGdvaW5nIHRvIG5lZWQgdG8gbG9vayBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQncyBoYW5kbGluZyBjb3JuZXIgY2FzZXMgZ3JhY2VmdWxseSwgc3BlY2lmaWNhbGx5OlxuXG4qICAgKipJbnRlZ2VyIG92ZXJmbG93OioqIENvdWxkIHRoZXJlIGJlIGFuIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBieXBhc3NlcyBpbnRlbmRlZCBjaGVja3MgZm9yIGJ1ZmZlciBzaXplLlxuKiAgICoqUmFjZSBjb25kaXRpb25zOioqIElmIHdlIGFyZSBpbiBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQsIGhvdyBpcyB0aGlzIGhhbmRsZWQgdG8gcHJldmVudCBjb3JydXB0aW9uP1xuKiAgICoqT2ZmLWJ5LW9uZSBlcnJvcnM6KiogQ291bGQgdGhlcmUgYmUgc3VidGxlIGluZGV4aW5nIHByb2JsZW1zP1xuKiAgICoqU2VjdXJpdHkgQ29udGV4dDoqKiBEb2VzIHRoaXMgZnVuY3Rpb24gY29uc2lkZXIgdGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGFjY2Vzc2luZyBwcm9jZXNzIG9yIHRocmVhZD9cblxuVGhlc2UgYXJlIGFsbCBzdGFuZGFyZCBjb25zaWRlcmF0aW9ucywgYnV0IHdpdGhvdXQga25vd2luZyB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgZnVuY3Rpb24sIEkgY2FuJ3QgYmVnaW4gdG8gYXNzZXNzIGl0cyBlZmZlY3RpdmVuZXNzLiBUaGUgbmFtZSBzdWdnZXN0cyBhIGdvb2QgZm91bmRhdGlvbiBmb3Igcm9idXN0IGNvZGUsIGJ1dCBJIG5lZWQgdG8gc2VlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHdoZXJlIGl0J3MgY2FsbGVkIGFuZCBob3cgaXQncyB1c2VkLiBBcmUgdGhlcmUgYW55IG90aGVyIGFjY2VzcyBjb250cm9scyBpbiBwbGFjZSwgb3IgaXMgdGhpcyB0aGUgcHJpbWFyeSBwcm90ZWN0aW9uP1xuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzg3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTE6MTQuMDAwMDM5MTA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzk5NTYwMjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTUyNzI9c3RhdGljIGludCBjaGVja19tYXhfc3RhY2tfZGVwdGgoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01MzI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1MzI2OnN0YXRpYyBpbnQgX19jaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzMjctXFx0XFx0XFx0XFx0IGNvbnN0IGNoYXIgKmJ1Zl9pbmZvLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTUzNzc9c3RhdGljIGludCBjaGVja190cF9idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTM4NDpcXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBcXFwidHJhY2Vwb2ludFxcXCIsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTM4NS1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNmFjY2Vzc19lbmQpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzOTQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjUzOTU6c3RhdGljIGludCBjaGVja19idWZmZXJfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTUzOTYtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTQwNC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTQwNTpcXHRlcnIgPSBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3MoZW52LCBidWZfaW5mbywgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NDA2LVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2YWNjZXNzX2VuZCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjEwMT1zdGF0aWMgaW50IGNoZWNrX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjYzMzY6XFx0XFx0ZXJyID0gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgZmFsc2UsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzMzctXFx0XFx0XFx0XFx0XFx0ICBtYXhfYWNjZXNzKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NzY0PXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODEyLVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgxMzpcXHRcXHRyZXR1cm4gY2hlY2tfYnVmZmVyX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIDAsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MTQtXFx0XFx0XFx0XFx0XFx0ICAgYWNjZXNzX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNDoxMToxNS43OTk2MjQxM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTAxMjAzODkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIFZlcmlmaWVyIEZ1bmN0aW9uYWxpdHkgZm9yIFJhdyBUcmFjZXBvaW50IFdyaXRlIEFjY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgX19jaGVja19idWZmZXJfYWNjZXNzYC4gVGhlc2UgYXJlIGFsbCBjcnVjaWFsIHBhcnRzIG9mIHRoZSBCUEYgdmVyaWZpZXIsIG9idmlvdXNseS4gVGhleSBnZXQgY2FsbGVkIGR1cmluZyB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3Mgb2YgYSBCUEYgcHJvZ3JhbSDigJMgbWFraW5nIHN1cmUgZXZlcnl0aGluZyBpcyBzYWZlIGFuZCBzb3VuZCBiZWZvcmUgaXQgcnVucy5cblxuTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIHRoZSBjb25maWd1cmF0aW9uLCBwcmltYXJpbHkgZHJpdmVuIGJ5IGBCUEZfU1lTQ0FMTGAsIHRoYXQncyB0aGUgbWFpbiBwb2ludC4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zPyBFc3BlY2lhbGx5IHJlbGF0ZWQgdG8gd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLiBUaGUgdGVzdCBjYXNlIEknbSByZXZpZXdpbmcgbGV2ZXJhZ2VzIGByYXdfdHJhY2Vwb2ludC53YCwgc28gSSBuZWVkIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGxpbmtlZCB0byB3cml0ZSBhY2Nlc3Mgd2l0aGluIHJhdyB0cmFjZXBvaW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgaXMgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHRoaXMgY2FzZSwgcmVsYXRpbmcgdG8gd3JpdGFibGUgcmF3IHRyYWNlcG9pbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzc5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTI6MDAuODExNjY0ODM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTM4NTk5NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfRVZFTlRTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEyOjAzLjM1MDI3MTE1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODM3Nzc3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJ20gdHJ5aW5nIHRvIG9wdGltaXplIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb246XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gdGhlIGN1cnJlbnQgZGlyZWN0aW9uIHNlZW1zIHNvdW5kLiBJJ20gZ29pbmcgdG8gaW5jbHVkZSBgQlBGX0VWRU5UU2AuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHRyYWNpbmcgYW5kIGluc3RydW1lbnRhdGlvbi4gTm93LCBJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0VWRU5UU2AsIGVuc3VyaW5nIHRoZXJlIGFyZSBubyB1bmludGVuZGVkIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMuIFRoZSBnb2FsIGlzIGEgbGVhbiwgZWZmaWNpZW50IGNvbmZpZ3VyYXRpb24sIHNvIHVuZGVyc3RhbmRpbmcgdGhlIGludGVycGxheSBvZiB0aGVzZSBmZWF0dXJlcyBpcyBjcml0aWNhbC5cblxuUmVnYXJkaW5nIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGxvb2sgdG8gYmU6IGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AsIGFuZCBgY2hlY2tfYnVmZmVyX2FjY2Vzc2AuIFRoZXNlIHN5bWJvbHMgYXJlIG9idmlvdXNseSBpbXBvcnRhbnQgYW5kIHJlbGF0ZSB0byBtZW1vcnkgYWNjZXNzIGNoZWNrcy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlbSBjbG9zZWx5IHRvIHVuZGVyc3RhbmQgaG93IGBCUEZfRVZFTlRTYCBhbmQgYEJQRl9TWVNDQUxMYCBtaWdodCBpbmZsdWVuY2UgdGhlaXIgYmVoYXZpb3Igb3IgdHJpZ2dlciBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEFyZSB0aGVyZSBhbnkgZXhpc3RpbmcgYnVnIHJlcG9ydHM/IEFueSBrbm93biBpbnRlcmFjdGlvbnMgaW4gc2ltaWxhciBjb25maWd1cmF0aW9ucz9cblxuRmluYWxseSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIGlmIHRoZXJlIGFyZSAqb3RoZXIqIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGFsc28gaW1wYWN0IHBlcmZvcm1hbmNlIG9yIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCBhIGhvbGlzdGljIHZpZXcgdG8gZW5zdXJlIHRoYXQgSSBoYXZlbid0IG92ZXJsb29rZWQgYW55IGNydWNpYWwgcGFyYW1ldGVycyBvciBpbnRlcmFjdGlvbnMgdGhhdCBjb3VsZCBjb250cmlidXRlIHRvLCBvciBkZXRyYWN0IGZyb20sIHRoZSBvdmVyYWxsIGRlc2lnbiBnb2Fscy4gSXQncyBhIGNvbXByZWhlbnNpdmUgYXBwcm9hY2ggdGhhdCdzIG5lZWRlZCBoZXJlLCBhcyBhbHdheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NzQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNDoxMjowNi45MzQwNjI2MDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjcxMDc4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3X3RyYWNlcG9pbnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MjcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYnBmL2RyZ24ucnN0PTM1PUxpc3QgQlBGIHByb2dyYW1zIChmdWxsIG5hbWVzIGFyZSBvYnRhaW5lZCBmcm9tIEJURik6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvZHJnbi5yc3QtMzktICAgICAgNDYzMjogQlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS19BRERSICAgdHdfaXB0X2JpbmRcXG5Eb2N1bWVudGF0aW9uL2JwZi9kcmduLnJzdDo0MDogICAgIDQ5NDY0OiBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UICAgICByYXdfdHJhY2Vwb2ludF9fc2NoZWRfcHJvY2Vzc19leGl0XFxuRG9jdW1lbnRhdGlvbi9icGYvZHJnbi5yc3QtNDEtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3Q9MTg9ZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHRoZSBmb290bm90ZXMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQ1LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLStcXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3Q6MTQ2OnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgcmF3X3RyYWNlcG9pbnQudytgYCAgICAgICAgICAgIHwgICAgICAgICAgIHxcXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTQ3LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLStcXG4tLVxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xNDktKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tK1xcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoxNTA6fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGByYXdfdHJhY2Vwb2ludCtgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgfFxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xNTEtKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tK1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTI0OC0uLiBbI2xzbV0gVGhlIGBgbHNtYGAgYXR0YWNobWVudCBmb3JtYXQgaXMgYGBsc21bLnNdL1xcdTAwM2Nob29rXFx1MDAzZWBgLlxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoyNDk6Li4gWyNyYXd0cF0gVGhlIGBgcmF3X3RwYGAgYXR0YWNoIGZvcm1hdCBpcyBgYHJhd190cmFjZXBvaW50Wy53XS9cXHUwMDNjdHJhY2Vwb2ludFxcdTAwM2VgYC5cXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMjUwLS4uIFsjdGNfbGVnYWN5XSBUaGUgYGB0Y2BgLCBgYGNsYXNzaWZpZXJgYCBhbmQgYGBhY3Rpb25gYCBhdHRhY2ggdHlwZXMgYXJlIGRlcHJlY2F0ZWQsIHVzZVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD00Mz1CUEZfUFJPR19UWVBFKEJQRl9QUk9HX1RZUEVfUEVSRl9FVkVOVCwgcGVyZl9ldmVudCxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTQ0LVxcdCAgICAgIHN0cnVjdCBicGZfcGVyZl9ldmVudF9kYXRhLCBzdHJ1Y3QgYnBmX3BlcmZfZXZlbnRfZGF0YV9rZXJuKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDU6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5ULCByYXdfdHJhY2Vwb2ludCxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ2OlxcdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6NDc6QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCByYXdfdHJhY2Vwb2ludF93cml0YWJsZSxcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ4OlxcdCAgICAgIHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncywgdTY0KVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNDktQlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1RSQUNJTkcsIHRyYWNpbmcsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTEzNz1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JIQVNILCByaHRhYl9tYXBfb3BzKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6MTM5OkJQRl9MSU5LX1RZUEUoQlBGX0xJTktfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQpXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xNDAtQlBGX0xJTktfVFlQRShCUEZfTElOS19UWVBFX1RSQUNJTkcsIHRyYWNpbmcpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc4MD1pbnQgYnBmX3Byb2JlX3VucmVnaXN0ZXIoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHAsIHN0cnVjdCBicGZfcmF3X3RwX2xpbmsgKmxpbmspO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzgxLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzgyOnN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJhY2Vwb2ludChjb25zdCBjaGFyICpuYW1lKTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc4Mzp2b2lkIGJwZl9wdXRfcmF3X3RyYWNlcG9pbnQoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHApO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzg0LWludCBicGZfZ2V0X3BlcmZfZXZlbnRfaW5mbyhjb25zdCBzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHUzMiAqcHJvZ19pZCxcXG4tLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9ODIwPXN0YXRpYyBpbmxpbmUgaW50IGJwZl9wcm9iZV91bnJlZ2lzdGVyKHN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnRwLCBzdHJ1Y3QgYnBmX3Jhd190cF9saW5rICpsaW5rKVxcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04MjMtfVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6ODI0OnN0YXRpYyBpbmxpbmUgc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpicGZfZ2V0X3Jhd190cmFjZXBvaW50KGNvbnN0IGNoYXIgKm5hbWUpXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04MjUte1xcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04MjctfVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6ODI4OnN0YXRpYyBpbmxpbmUgdm9pZCBicGZfcHV0X3Jhd190cmFjZXBvaW50KHN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnRwKVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODI5LXtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNzczLVxcdFxcdF9fYWxpZ25lZF91NjRcXHRjb29raWU7XFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjE3NzQ6XFx0fSByYXdfdHJhY2Vwb2ludDtcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTc3NS1cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC00MjkyLSAqIFxcdFxcdFRoaXMgaGVscGVyIGlzIHNpbWlsYXIgdG8gKipicGZfcGVyZl9ldmVudF9vdXRwdXQqKlxcXFwgKCkgYnV0XFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjQyOTM6ICogXFx0XFx0cmVzdHJpY3RlZCB0byByYXdfdHJhY2Vwb2ludCBicGYgcHJvZ3JhbXMuXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQyOTQtICogXFx0UmV0dXJuXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNDQ0MC0gKlxcdFxcdFRoaXMgaGVscGVyIGlzIHNpbWlsYXIgdG8gKipicGZfcGVyZl9ldmVudG91dHB1dCoqXFxcXCAoKSBidXRcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NDQ0MTogKlxcdFxcdHJlc3RyaWN0ZWQgdG8gcmF3X3RyYWNlcG9pbnQgYnBmIHByb2dyYW1zLlxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC00NDQyLSAqXFx0UmV0dXJuXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9Njc2Mz1zdHJ1Y3QgYnBmX2xpbmtfaW5mbyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjc3Mi1cXHRcXHRcXHRfX3U2NCBjb29raWU7XFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjY3NzM6XFx0XFx0fSByYXdfdHJhY2Vwb2ludDtcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjc3NC1cXHRcXHRzdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTczMDk9c3RydWN0IGJwZl9jZ3JvdXBfZGV2X2N0eCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNzMxNS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NzMxNjpzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3Mge1xcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC03MzE3LVxcdF9fdTY0IGFyZ3NbMF07XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTYyMTY9c3RhdGljIGludCBidGZfdmFsaWRhdGVfcHJvZ19jdHhfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTYyODMtXFx0XFx0XFx0aWYgKF9fYnRmX3R5cGVfaXNfc3RydWN0KHQpIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9idGYuYzo2Mjg0OlxcdFxcdFxcdCAgICBzdHJjbXAodG5hbWUsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfYXJnc1xcXCIpID09IDApXFxua2VybmVsL2JwZi9idGYuYy02Mjg1LVxcdFxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzY4OT1zdGF0aWMgaW50IGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM3ODMtXFx0ICogLSBpZiB0Z3RfcHJvZyA9PSBOVUxMIHdoZW4gdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkIHVzaW5nIHRoZSBvbGRcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozNzg0OlxcdCAqICAgcmF3X3RyYWNlcG9pbnRfb3BlbiBBUEksIGFuZCB3ZSBuZWVkIGEgdGFyZ2V0IGZyb20gcHJvZy1cXHUwMDNlYXV4XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc4NS1cXHQgKlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzkwOD1zdGF0aWMgdm9pZCBicGZfcmF3X3RwX2xpbmtfcmVsZWFzZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zOTEzLVxcdGJwZl9wcm9iZV91bnJlZ2lzdGVyKHJhd190cC1cXHUwMDNlYnRwLCByYXdfdHApO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5MTQ6XFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChyYXdfdHAtXFx1MDAzZWJ0cCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzkxNS19XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0zOTU3PXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2ZpbGxfbGlua19pbmZvKGNvbnN0IHN0cnVjdCBicGZfbGluayAqbGluayxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NjEtXFx0XFx0Y29udGFpbmVyX29mKGxpbmssIHN0cnVjdCBicGZfcmF3X3RwX2xpbmssIGxpbmspO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM5NjI6XFx0Y2hhciBfX3VzZXIgKnVidWYgPSB1NjRfdG9fdXNlcl9wdHIoaW5mby1cXHUwMDNlcmF3X3RyYWNlcG9pbnQudHBfbmFtZSk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzk2My1cXHRjb25zdCBjaGFyICp0cF9uYW1lID0gcmF3X3RwX2xpbmstXFx1MDAzZWJ0cC1cXHUwMDNldHAtXFx1MDAzZW5hbWU7XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mzk2NDpcXHR1MzIgdWxlbiA9IGluZm8tXFx1MDAzZXJhd190cmFjZXBvaW50LnRwX25hbWVfbGVuO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NjUtXFx0c2l6ZV90IHRwX2xlbiA9IHN0cmxlbih0cF9uYW1lKTtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NjktXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mzk3MDpcXHRpbmZvLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC50cF9uYW1lX2xlbiA9IHRwX2xlbiArIDE7XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6Mzk3MTpcXHRpbmZvLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC5jb29raWUgPSByYXdfdHBfbGluay1cXHUwMDNlY29va2llO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM5NzItXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00Mzg4LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzODk6XFx0YnRwID0gYnBmX2dldF9yYXdfdHJhY2Vwb2ludCh0cF9uYW1lKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzkwLVxcdGlmICghYnRwKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDM5My1cXHRpZiAocHJvZy1cXHUwMDNlc2xlZXBhYmxlIFxcdTAwMjZcXHUwMDI2ICF0cmFjZXBvaW50X2lzX2ZhdWx0YWJsZShidHAtXFx1MDAzZXRwKSkge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQzOTQ6XFx0XFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQzOTUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDIzLW91dF9wdXRfYnRwOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0MjQ6XFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQ0MjUtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQ0MjctXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQyODojZGVmaW5lIEJQRl9SQVdfVFJBQ0VQT0lOVF9PUEVOX0xBU1RfRklFTEQgcmF3X3RyYWNlcG9pbnQuY29va2llXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQyOS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0NDMwOnN0YXRpYyBpbnQgYnBmX3Jhd190cmFjZXBvaW50X29wZW4oY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDQzMS17XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDM5LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0NDA6XFx0cHJvZyA9IGJwZl9wcm9nX2dldChhdHRyLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC5wcm9nX2ZkKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQxLVxcdGlmIChJU19FUlIocHJvZykpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQzLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQ0NDQ6XFx0dHBfbmFtZSA9IHU2NF90b191c2VyX3B0cihhdHRyLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC5uYW1lKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0NDQ1OlxcdGNvb2tpZSA9IGF0dHItXFx1MDAzZXJhd190cmFjZXBvaW50LmNvb2tpZTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDQ2LVxcdGZkID0gYnBmX3Jhd190cF9saW5rX2F0dGFjaChwcm9nLCB0cF9uYW1lLCBjb29raWUsIHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKTtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTYzNTQ9c3RhdGljIGludCBfX3N5c19icGYoZW51bSBicGZfY21kIGNtZCwgYnBmcHRyX3QgdWF0dHIsIHVuc2lnbmVkIGludCBzaXplLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjQ1OS1cXHRjYXNlIEJQRl9SQVdfVFJBQ0VQT0lOVF9PUEVOOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY0NjA6XFx0XFx0ZXJyID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oXFx1MDAyNmF0dHIpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY0NjEtXFx0XFx0YnJlYWs7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4OTU9aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNjYtXFx0XFx0ICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDY3OlxcdFxcdGJ0cCA9IGJwZl9nZXRfcmF3X3RyYWNlcG9pbnQodG5hbWUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA2OC1cXHRcXHRpZiAoIWJ0cClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA3Mi1cXHRcXHRcXHRcXHR0bmFtZSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDczOlxcdFxcdFxcdGJwZl9wdXRfcmF3X3RyYWNlcG9pbnQoYnRwKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNzQtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNzctXFx0XFx0XFx0XFx0XFx0dHJhY2Vfc3ltYm9sKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwNzg6XFx0XFx0YnBmX3B1dF9yYXdfdHJhY2Vwb2ludChidHApO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA3OS1cXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz01NT1zdGF0aWMgREVGSU5FX01VVEVYKGJwZl9tb2R1bGVfbXV0ZXgpO1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy01Ni1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6NTc6c3RhdGljIHN0cnVjdCBicGZfcmF3X2V2ZW50X21hcCAqYnBmX2dldF9yYXdfdHJhY2Vwb2ludF9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSlcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtNTgte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTc4LSNlbHNlXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjc5OnN0YXRpYyBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgKmJwZl9nZXRfcmF3X3RyYWNlcG9pbnRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTgwLXtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xNjIwPXN0YXRpYyB2b2lkIHB1dF9icGZfcmF3X3RwX3JlZ3Modm9pZClcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjI0LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjI1OkJQRl9DQUxMXzUoYnBmX3BlcmZfZXZlbnRfb3V0cHV0X3Jhd190cCwgc3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzICosIGFyZ3MsXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2MjYtXFx0ICAgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB1NjQsIGZsYWdzLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSlcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xNjU0PWV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3hkcF9nZXRfYnVmZl9sZW5fdHJhY2VfcHJvdG87XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2NTUtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2NTY6QlBGX0NBTExfMyhicGZfZ2V0X3N0YWNraWRfcmF3X3RwLCBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MgKiwgYXJncyxcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY1Ny1cXHQgICBzdHJ1Y3QgYnBmX21hcCAqLCBtYXAsIHU2NCwgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MTY3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tpZF9wcm90b19yYXdfdHAgPSB7XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY4MS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTY4MjpCUEZfQ0FMTF80KGJwZl9nZXRfc3RhY2tfcmF3X3RwLCBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MgKiwgYXJncyxcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY4My1cXHQgICB2b2lkICosIGJ1ZiwgdTMyLCBzaXplLCB1NjQsIGZsYWdzKVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTE4MTY9aW50IF9fd2VhayBicGZfcHJvZ190ZXN0X3J1bl90cmFjaW5nKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODIyLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODIzOmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIHJhd190cmFjZXBvaW50X3ZlcmlmaWVyX29wcyA9IHtcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTgyNC1cXHQuZ2V0X2Z1bmNfcHJvdG8gID0gcmF3X3RwX3Byb2dfZnVuY19wcm90byxcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODI3LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODI4OmNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgcmF3X3RyYWNlcG9pbnRfcHJvZ19vcHMgPSB7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4MjktI2lmZGVmIENPTkZJR19ORVRcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xODQzPXN0YXRpYyBib29sIHJhd190cF93cml0YWJsZV9wcm9nX2lzX3ZhbGlkX2FjY2VzcyhpbnQgb2ZmLCBpbnQgc2l6ZSxcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODU1LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODU2OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIHJhd190cmFjZXBvaW50X3dyaXRhYmxlX3ZlcmlmaWVyX29wcyA9IHtcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTg1Ny1cXHQuZ2V0X2Z1bmNfcHJvdG8gID0gcmF3X3RwX3Byb2dfZnVuY19wcm90byxcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODYwLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxODYxOmNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGVfcHJvZ19vcHMgPSB7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4NjItfTtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0yMDgwPWV4dGVybiBzdHJ1Y3QgYnBmX3Jhd19ldmVudF9tYXAgX19zdG9wX19icGZfcmF3X3RwW107XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwODEtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjIwODI6c3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpicGZfZ2V0X3Jhd190cmFjZXBvaW50KGNvbnN0IGNoYXIgKm5hbWUpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwODMte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwOTAtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjIwOTE6XFx0cmV0dXJuIGJwZl9nZXRfcmF3X3RyYWNlcG9pbnRfbW9kdWxlKG5hbWUpO1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yMDkyLX1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjA5My1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MjA5NDp2b2lkIGJwZl9wdXRfcmF3X3RyYWNlcG9pbnQoc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwICpidHApXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTIwOTUte1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXBlcmYucnN0PTMyPWJwZnRvb2wgcGVyZiB7IHNob3cgfCBsaXN0IH1cXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcGVyZi5yc3Q6MzM6ICAgIExpc3QgYWxsIHJhd190cmFjZXBvaW50LCB0cmFjZXBvaW50LCBrcHJvYmUgYXR0YWNobWVudCBpbiB0aGUgc3lzdGVtLlxcbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdC0zNC1cXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdC0zNi0gICAgZm9sbG93ZWQgYnkgYnBmIHByb2dyYW0gaWQsIGF0dGFjaG1lbnQgaW5mb3JtYXRpb24sIGFuZCBhdHRhY2htZW50IHBvaW50LlxcbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wZXJmLnJzdDozNzogICAgVGhlIGF0dGFjaG1lbnQgcG9pbnQgZm9yIHJhd190cmFjZXBvaW50L3RyYWNlcG9pbnQgaXMgdGhlIHRyYWNlIHByb2JlIG5hbWUuXFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXBlcmYucnN0LTM4LSAgICBUaGUgYXR0YWNobWVudCBwb2ludCBmb3Iga1tyZXRdcHJvYmUgaXMgZWl0aGVyIHN5bWJvbCBuYW1lIGFuZCBvZmZzZXQsIG9yIGFcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL0RvY3VtZW50YXRpb24vYnBmdG9vbC1wcm9nLnJzdD0yNz1QUk9HIENPTU1BTkRTXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3QtNDYtfCAgICAgKipzb2NrZXQqKiB8ICoqa3Byb2JlKiogfCAqKmtyZXRwcm9iZSoqIHwgKipjbGFzc2lmaWVyKiogfCAqKmFjdGlvbioqIHxcXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q6NDc6fCAgICAgKip0cmFjZXBvaW50KiogfCAqKnJhd190cmFjZXBvaW50KiogfCAqKnhkcCoqIHwgKipwZXJmX2V2ZW50KiogfCAqKmNncm91cC9za2IqKiB8XFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTQ4LXwgICAgICoqY2dyb3VwL3NvY2sqKiB8ICoqY2dyb3VwL2RldioqIHwgKipsd3RfaW4qKiB8ICoqbHd0X291dCoqIHwgKipsd3RfeG1pdCoqIHxcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL2Jhc2gtY29tcGxldGlvbi9icGZ0b29sPTI1Nj1fYnBmdG9vbCgpXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9iYXNoLWNvbXBsZXRpb24vYnBmdG9vbC00OTAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcmV0cHJvYmUgY2xhc3NpZmllciBmbG93X2Rpc3NlY3RvciBcXFxcXFxudG9vbHMvYnBmL2JwZnRvb2wvYmFzaC1jb21wbGV0aW9uL2JwZnRvb2w6NDkxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uIHRyYWNlcG9pbnQgcmF3X3RyYWNlcG9pbnQgXFxcXFxcbnRvb2xzL2JwZi9icGZ0b29sL2Jhc2gtY29tcGxldGlvbi9icGZ0b29sLTQ5Mi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkcCBwZXJmX2V2ZW50IGNncm91cC9za2IgY2dyb3VwL3NvY2sgXFxcXFxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmM9NTYyPXN0YXRpYyB2b2lkIGNvZGVnZW5fYXR0YWNoX2RldGFjaChzdHJ1Y3QgYnBmX29iamVjdCAqb2JqLCBjb25zdCBjaGFyICpvYmpfbmFtZSlcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jLTU4MC1cXHRcXHRcXHR0cF9uYW1lID0gc3RyY2hyKGJwZl9wcm9ncmFtX19zZWN0aW9uX25hbWUocHJvZyksICcvJykgKyAxO1xcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jOjU4MTpcXHRcXHRcXHRwcmludGYoXFxcIlxcXFx0aW50IGZkID0gc2tlbF9yYXdfdHJhY2Vwb2ludF9vcGVuKFxcXFxcXFwiJXNcXFxcXFxcIiwgcHJvZ19mZCk7XFxcXG5cXFwiLCB0cF9uYW1lKTtcXG50b29scy9icGYvYnBmdG9vbC9nZW4uYy01ODItXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9nZW4uYy01ODctXFx0XFx0XFx0ZWxzZVxcbnRvb2xzL2JwZi9icGZ0b29sL2dlbi5jOjU4ODpcXHRcXHRcXHRcXHRwcmludGYoXFxcIlxcXFx0aW50IGZkID0gc2tlbF9yYXdfdHJhY2Vwb2ludF9vcGVuKE5VTEwsIHByb2dfZmQpO1xcXFxuXFxcIik7XFxudG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmMtNTg5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jPTUxNz1zdGF0aWMgaW50IHNob3dfbGlua19jbG9zZV9qc29uKGludCBmZCwgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8pXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtNTI5LVxcdFxcdGpzb253X3N0cmluZ19maWVsZChqc29uX3d0ciwgXFxcInRwX25hbWVcXFwiLFxcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo1MzA6XFx0XFx0XFx0XFx0ICAgdTY0X3RvX3B0cihpbmZvLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC50cF9uYW1lKSk7XFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjUzMTpcXHRcXHRqc29ud191aW50X2ZpZWxkKGpzb25fd3RyLCBcXFwiY29va2llXFxcIiwgaW5mby1cXHUwMDNlcmF3X3RyYWNlcG9pbnQuY29va2llKTtcXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtNTMyLVxcdFxcdGJyZWFrO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jPTkxOD1zdGF0aWMgaW50IHNob3dfbGlua19jbG9zZV9wbGFpbihpbnQgZmQsIHN0cnVjdCBicGZfbGlua19pbmZvICppbmZvKVxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jLTkyOC1cXHRcXHRwcmludGYoXFxcIlxcXFxuXFxcXHR0cCAnJXMnICBcXFwiLFxcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo5Mjk6XFx0XFx0ICAgICAgIChjb25zdCBjaGFyICopdTY0X3RvX3B0cihpbmZvLVxcdTAwM2VyYXdfdHJhY2Vwb2ludC50cF9uYW1lKSk7XFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjkzMDpcXHRcXHRpZiAoaW5mby1cXHUwMDNlcmF3X3RyYWNlcG9pbnQuY29va2llKVxcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzo5MzE6XFx0XFx0XFx0cHJpbnRmKFxcXCJjb29raWUgJWxsdSAgXFxcIiwgaW5mby1cXHUwMDNlcmF3X3RyYWNlcG9pbnQuY29va2llKTtcXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtOTMyLVxcdFxcdGJyZWFrO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jPTEwMjk9c3RhdGljIGludCBkb19zaG93X2xpbmsoaW50IGZkKVxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jLTEwNTAtXFx0aWYgKGluZm8udHlwZSA9PSBCUEZfTElOS19UWVBFX1JBV19UUkFDRVBPSU5UIFxcdTAwMjZcXHUwMDI2XFxudG9vbHMvYnBmL2JwZnRvb2wvbGluay5jOjEwNTE6XFx0ICAgICFpbmZvLnJhd190cmFjZXBvaW50LnRwX25hbWUpIHtcXG50b29scy9icGYvYnBmdG9vbC9saW5rLmM6MTA1MjpcXHRcXHRpbmZvLnJhd190cmFjZXBvaW50LnRwX25hbWUgPSBwdHJfdG9fdTY0KFxcdTAwMjZidWYpO1xcbnRvb2xzL2JwZi9icGZ0b29sL2xpbmsuYzoxMDUzOlxcdFxcdGluZm8ucmF3X3RyYWNlcG9pbnQudHBfbmFtZV9sZW4gPSBzaXplb2YoYnVmKTtcXG50b29scy9icGYvYnBmdG9vbC9saW5rLmMtMTA1NC1cXHRcXHRnb3RvIGFnYWluO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jPTY1PXN0YXRpYyB2b2lkIHByaW50X3BlcmZfanNvbihpbnQgcGlkLCBpbnQgZmQsIF9fdTMyIHByb2dfaWQsIF9fdTMyIGZkX3R5cGUsXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmMtNzMtXFx0Y2FzZSBCUEZfRkRfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmM6NzQ6XFx0XFx0anNvbndfc3RyaW5nX2ZpZWxkKGpzb25fd3RyLCBcXFwiZmRfdHlwZVxcXCIsIFxcXCJyYXdfdHJhY2Vwb2ludFxcXCIpO1xcbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYy03NS1cXHRcXHRqc29ud19zdHJpbmdfZmllbGQoanNvbl93dHIsIFxcXCJ0cmFjZXBvaW50XFxcIiwgYnVmKTtcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL3BlcmYuYz0xMTU9c3RhdGljIHZvaWQgcHJpbnRfcGVyZl9wbGFpbihpbnQgcGlkLCBpbnQgZmQsIF9fdTMyIHByb2dfaWQsIF9fdTMyIGZkX3R5cGUsXFxuLS1cXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmMtMTIwLVxcdGNhc2UgQlBGX0ZEX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxudG9vbHMvYnBmL2JwZnRvb2wvcGVyZi5jOjEyMTpcXHRcXHRwcmludGYoXFxcInJhd190cmFjZXBvaW50ICAlc1xcXFxuXFxcIiwgYnVmKTtcXG50b29scy9icGYvYnBmdG9vbC9wZXJmLmMtMTIyLVxcdFxcdGJyZWFrO1xcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jPTI1NDI9c3RhdGljIGludCBkb19oZWxwKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL3Byb2cuYy0yNTc0LVxcdFxcdFxcXCIgICAgICAgVFlQRSA6PSB7IHNvY2tldCB8IGtwcm9iZSB8IGtyZXRwcm9iZSB8IGNsYXNzaWZpZXIgfCBhY3Rpb24gfFxcXFxuXFxcIlxcbnRvb2xzL2JwZi9icGZ0b29sL3Byb2cuYzoyNTc1OlxcdFxcdFxcXCIgICAgICAgICAgICAgICAgIHRyYWNlcG9pbnQgfCByYXdfdHJhY2Vwb2ludCB8IHhkcCB8IHBlcmZfZXZlbnQgfCBjZ3JvdXAvc2tiIHxcXFxcblxcXCJcXG50b29scy9icGYvYnBmdG9vbC9wcm9nLmMtMjU3Ni1cXHRcXHRcXFwiICAgICAgICAgICAgICAgICBjZ3JvdXAvc29jayB8IGNncm91cC9kZXYgfCBsd3RfaW4gfCBsd3Rfb3V0IHwgbHd0X3htaXQgfFxcXFxuXFxcIlxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTE1Mjc9dW5pb24gYnBmX2F0dHIge1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE3NzMtXFx0XFx0X19hbGlnbmVkX3U2NFxcdGNvb2tpZTtcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTc3NDpcXHR9IHJhd190cmFjZXBvaW50O1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNzc1LVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQyOTItICogXFx0XFx0VGhpcyBoZWxwZXIgaXMgc2ltaWxhciB0byAqKmJwZl9wZXJmX2V2ZW50X291dHB1dCoqXFxcXCAoKSBidXRcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NDI5MzogKiBcXHRcXHRyZXN0cmljdGVkIHRvIHJhd190cmFjZXBvaW50IGJwZiBwcm9ncmFtcy5cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNDI5NC0gKiBcXHRSZXR1cm5cXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC00NDQwLSAqXFx0XFx0VGhpcyBoZWxwZXIgaXMgc2ltaWxhciB0byAqKmJwZl9wZXJmX2V2ZW50b3V0cHV0KipcXFxcICgpIGJ1dFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo0NDQxOiAqXFx0XFx0cmVzdHJpY3RlZCB0byByYXdfdHJhY2Vwb2ludCBicGYgcHJvZ3JhbXMuXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTQ0NDItICpcXHRSZXR1cm5cXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD02NzYzPXN0cnVjdCBicGZfbGlua19pbmZvIHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC02NzcyLVxcdFxcdFxcdF9fdTY0IGNvb2tpZTtcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Njc3MzpcXHRcXHR9IHJhd190cmFjZXBvaW50O1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC02Nzc0LVxcdFxcdHN0cnVjdCB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9NzMwOT1zdHJ1Y3QgYnBmX2Nncm91cF9kZXZfY3R4IHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC03MzE1LVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo3MzE2OnN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncyB7XFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTczMTctXFx0X191NjQgYXJnc1swXTtcXG4tLVxcbnRvb2xzL2xpYi9icGYvYnBmLmM9NzgyPWludCBicGZfbGlua19jcmVhdGUoaW50IHByb2dfZmQsIGludCB0YXJnZXRfZmQsXFxuLS1cXG50b29scy9saWIvYnBmL2JwZi5jLTk4NS1cXHRjYXNlIEJQRl9NT0RJRllfUkVUVVJOOlxcbnRvb2xzL2xpYi9icGYvYnBmLmM6OTg2OlxcdFxcdHJldHVybiBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihOVUxMLCBwcm9nX2ZkKTtcXG50b29scy9saWIvYnBmL2JwZi5jLTk4Ny1cXHRkZWZhdWx0Olxcbi0tXFxudG9vbHMvbGliL2JwZi9icGYuYz0xMjg4PWludCBicGZfbGlua19nZXRfaW5mb19ieV9mZChpbnQgbGlua19mZCwgc3RydWN0IGJwZl9saW5rX2luZm8gKmluZm8sIF9fdTMyICppbmZvX2xlbilcXG4tLVxcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTI5Mi1cXG50b29scy9saWIvYnBmL2JwZi5jOjEyOTM6aW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMoaW50IHByb2dfZmQsIHN0cnVjdCBicGZfcmF3X3RwX29wdHMgKm9wdHMpXFxudG9vbHMvbGliL2JwZi9icGYuYy0xMjk0LXtcXG50b29scy9saWIvYnBmL2JwZi5jOjEyOTU6XFx0Y29uc3Qgc2l6ZV90IGF0dHJfc3ogPSBvZmZzZXRvZmVuZCh1bmlvbiBicGZfYXR0ciwgcmF3X3RyYWNlcG9pbnQpO1xcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTI5Ni1cXHR1bmlvbiBicGZfYXR0ciBhdHRyO1xcbi0tXFxudG9vbHMvbGliL2JwZi9icGYuYy0xMzAyLVxcdG1lbXNldChcXHUwMDI2YXR0ciwgMCwgYXR0cl9zeik7XFxudG9vbHMvbGliL2JwZi9icGYuYzoxMzAzOlxcdGF0dHIucmF3X3RyYWNlcG9pbnQucHJvZ19mZCA9IHByb2dfZmQ7XFxudG9vbHMvbGliL2JwZi9icGYuYzoxMzA0OlxcdGF0dHIucmF3X3RyYWNlcG9pbnQubmFtZSA9IHB0cl90b191NjQoT1BUU19HRVQob3B0cywgdHBfbmFtZSwgTlVMTCkpO1xcbnRvb2xzL2xpYi9icGYvYnBmLmM6MTMwNTpcXHRhdHRyLnJhd190cmFjZXBvaW50LmNvb2tpZSA9IE9QVFNfR0VUKG9wdHMsIGNvb2tpZSwgMCk7XFxudG9vbHMvbGliL2JwZi9icGYuYy0xMzA2LVxcbi0tXFxudG9vbHMvbGliL2JwZi9icGYuYy0xMzEwLVxcbnRvb2xzL2xpYi9icGYvYnBmLmM6MTMxMTppbnQgYnBmX3Jhd190cmFjZXBvaW50X29wZW4oY29uc3QgY2hhciAqbmFtZSwgaW50IHByb2dfZmQpXFxudG9vbHMvbGliL2JwZi9icGYuYy0xMzEyLXtcXG4tLVxcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMxNC1cXG50b29scy9saWIvYnBmL2JwZi5jOjEzMTU6XFx0cmV0dXJuIGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXFx1MDAyNm9wdHMpO1xcbnRvb2xzL2xpYi9icGYvYnBmLmMtMTMxNi19XFxuLS1cXG50b29scy9saWIvYnBmL2JwZi5oPTY2MT1zdHJ1Y3QgYnBmX3Jhd190cF9vcHRzIHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvYnBmLmgtNjY4LVxcbnRvb2xzL2xpYi9icGYvYnBmLmg6NjY5OkxJQkJQRl9BUEkgaW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMoaW50IHByb2dfZmQsIHN0cnVjdCBicGZfcmF3X3RwX29wdHMgKm9wdHMpO1xcbnRvb2xzL2xpYi9icGYvYnBmLmg6NjcwOkxJQkJQRl9BUEkgaW50IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwcm9nX2ZkKTtcXG50b29scy9saWIvYnBmL2JwZi5oLTY3MS1MSUJCUEZfQVBJIGludCBicGZfdGFza19mZF9xdWVyeShpbnQgcGlkLCBpbnQgZmQsIF9fdTMyIGZsYWdzLCBjaGFyICpidWYsXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTE0ND1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGxpbmtfdHlwZV9uYW1lW10gPSB7XFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xNDUtXFx0W0JQRl9MSU5LX1RZUEVfVU5TUEVDXVxcdFxcdFxcdD0gXFxcInVuc3BlY1xcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxNDY6XFx0W0JQRl9MSU5LX1RZUEVfUkFXX1RSQUNFUE9JTlRdXFx0XFx0PSBcXFwicmF3X3RyYWNlcG9pbnRcXFwiLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTQ3LVxcdFtCUEZfTElOS19UWVBFX1RSQUNJTkddXFx0XFx0XFx0PSBcXFwidHJhY2luZ1xcXCIsXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTIwMj1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHByb2dfdHlwZV9uYW1lW10gPSB7XFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIxOS1cXHRbQlBGX1BST0dfVFlQRV9TS19NU0ddXFx0XFx0XFx0PSBcXFwic2tfbXNnXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyMDpcXHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF1cXHRcXHQ9IFxcXCJyYXdfdHJhY2Vwb2ludFxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjEtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tfQUREUl1cXHQ9IFxcXCJjZ3JvdXBfc29ja19hZGRyXFxcIixcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI2LVxcdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVExdXFx0XFx0PSBcXFwiY2dyb3VwX3N5c2N0bFxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoyMjc6XFx0W0JQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVdXFx0PSBcXFwicmF3X3RyYWNlcG9pbnRfd3JpdGFibGVcXFwiLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjI4LVxcdFtCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLT1BUXVxcdFxcdD0gXFxcImNncm91cF9zb2Nrb3B0XFxcIixcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9NzExMz1zdGF0aWMgc3RydWN0IHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzEzMC1cXHR7IEJQRl9QUk9HX1RZUEVfUEVSRl9FVkVOVCwgICAgICAgICAgICAgIFxcXCJicGZfcGVyZl9ldmVudF9kYXRhXFxcIiB9LFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6NzEzMTpcXHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQsICAgICAgICAgIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfYXJnc1xcXCIgfSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjcxMzI6XFx0eyBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCBcXFwiYnBmX3Jhd190cmFjZXBvaW50X2FyZ3NcXFwiIH0sXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MTMzLVxcdHsgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1QsICAgICAgICAgICAgICAgXFxcIl9fc2tfYnVmZlxcXCIgfSxcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTAwNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfc2VjX2RlZiBzZWN0aW9uX2RlZnNbXSA9IHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTAxMTEtXFx0U0VDX0RFRihcXFwidHAucytcXFwiLFxcdFxcdFRSQUNFUE9JTlQsIDAsIFNFQ19TTEVFUEFCTEUsIGF0dGFjaF90cCksXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMDExMjpcXHRTRUNfREVGKFxcXCJyYXdfdHJhY2Vwb2ludCtcXFwiLFxcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMDExMy1cXHRTRUNfREVGKFxcXCJyYXdfdHArXFxcIixcXHRcXHRSQVdfVFJBQ0VQT0lOVCwgMCwgU0VDX05PTkUsIGF0dGFjaF9yYXdfdHApLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTAxMTQ6XFx0U0VDX0RFRihcXFwicmF3X3RyYWNlcG9pbnQucytcXFwiLFxcdFJBV19UUkFDRVBPSU5ULCAwLCBTRUNfU0xFRVBBQkxFLCBhdHRhY2hfcmF3X3RwKSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEwMTE1LVxcdFNFQ19ERUYoXFxcInJhd190cC5zK1xcXCIsXFx0XFx0UkFXX1RSQUNFUE9JTlQsIDAsIFNFQ19TTEVFUEFCTEUsIGF0dGFjaF9yYXdfdHApLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTAxMTY6XFx0U0VDX0RFRihcXFwicmF3X3RyYWNlcG9pbnQudytcXFwiLFxcdFJBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMDExNy1cXHRTRUNfREVGKFxcXCJyYXdfdHAudytcXFwiLFxcdFxcdFJBV19UUkFDRVBPSU5UX1dSSVRBQkxFLCAwLCBTRUNfTk9ORSwgYXR0YWNoX3Jhd190cCksXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTEzNTk2PXN0cnVjdCBicGZfbGluayAqXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzU5NzpicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50X29wdHMoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM1OTgtXFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqdHBfbmFtZSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNTk5OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfb3B0cyAqb3B0cylcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjAwLXtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MDQtXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzYwNTpcXHRpZiAoIU9QVFNfVkFMSUQob3B0cywgYnBmX3Jhd190cmFjZXBvaW50X29wdHMpKVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MDYtXFx0XFx0cmV0dXJuIGxpYmJwZl9lcnJfcHRyKC1FSU5WQUwpO1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzYyMC1cXHRyYXdfb3B0cy5jb29raWUgPSBPUFRTX0dFVChvcHRzLCBjb29raWUsIDApO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6MTM2MjE6XFx0cGZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW5fb3B0cyhwcm9nX2ZkLCBcXHUwMDI2cmF3X29wdHMpO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MjItXFx0aWYgKHBmZCBcXHUwMDNjIDApIHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzItXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzYzMzpzdHJ1Y3QgYnBmX2xpbmsgKmJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKnRwX25hbWUpXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzYzNS17XFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzYzNjpcXHRyZXR1cm4gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludF9vcHRzKHByb2csIHRwX25hbWUsIE5VTEwpO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2MzctfVxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz0xMzYzOT1zdGF0aWMgaW50IGF0dGFjaF9yYXdfdHAoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBsb25nIGNvb2tpZSwgc3RydWN0IGJwZl9saW5rICoqbGluaylcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2NDItXFx0XFx0XFxcInJhd190cFxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzY0MzpcXHRcXHRcXFwicmF3X3RyYWNlcG9pbnRcXFwiLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTM2NDQtXFx0XFx0XFxcInJhd190cC53XFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjQ1OlxcdFxcdFxcXCJyYXdfdHJhY2Vwb2ludC53XFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzNjQ2LVxcdFxcdFxcXCJyYXdfdHAuc1xcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzY0NzpcXHRcXHRcXFwicmF3X3RyYWNlcG9pbnQuc1xcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzY0OC1cXHR9O1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzY2MC1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjEzNjYxOlxcdCpsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChwcm9nLCBtYXRjaCk7XFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzY2Mi1cXHRyZXR1cm4gbGliYnBmX2dldF9lcnJvcigqbGluayk7XFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTEzODg0PXN0cnVjdCBicGZfbGluayAqYnBmX3Byb2dyYW1fX2F0dGFjaF9mcmVwbGFjZShjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTEzOTEzLVxcdH0gZWxzZSB7XFxudG9vbHMvbGliL2JwZi9saWJicGYuYzoxMzkxNDpcXHRcXHQvKiBubyB0YXJnZXQsIHNvIHVzZSByYXdfdHJhY2Vwb2ludF9vcGVuIGZvciBjb21wYXRpYmlsaXR5XFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0xMzkxNS1cXHRcXHQgKiB3aXRoIG9sZCBrZXJuZWxzXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5oPTg1Mz1icGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlcG9pbnRfb3B0cyhjb25zdCBzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5oLTg1Ny1cXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg1ODpzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X29wdHMge1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODU5LVxcdHNpemVfdCBzejsgLyogc2l6ZSBvZiB0aGlzIHN0cnVjdCBmb3IgZm9yd2FyZC9iYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5oLTg2Mi19O1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmg6ODYzOiNkZWZpbmUgYnBmX3Jhd190cmFjZXBvaW50X29wdHNfX2xhc3RfZmllbGQgY29va2llXFxudG9vbHMvbGliL2JwZi9saWJicGYuaC04NjQtXFxudG9vbHMvbGliL2JwZi9saWJicGYuaD04NjU9TElCQlBGX0FQSSBzdHJ1Y3QgYnBmX2xpbmsgKlxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmg6ODY2OmJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODY3LVxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKnRwX25hbWUpO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLmg9ODY4PUxJQkJQRl9BUEkgc3RydWN0IGJwZl9saW5rICpcXG50b29scy9saWIvYnBmL2xpYmJwZi5oOjg2OTpicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50X29wdHMoY29uc3Qgc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmgtODcwLVxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKnRwX25hbWUsXFxudG9vbHMvbGliL2JwZi9saWJicGYuaDo4NzE6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGJwZl9yYXdfdHJhY2Vwb2ludF9vcHRzICpvcHRzKTtcXG50b29scy9saWIvYnBmL2xpYmJwZi5oLTg3Mi1cXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcD0xPUxJQkJQRl8wLjAuMSB7XFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXAtNTEtXFx0XFx0YnBmX3Byb2dfbGluZm9fX2xmaW5kO1xcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcDo1MjpcXHRcXHRicGZfcmF3X3RyYWNlcG9pbnRfb3BlbjtcXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXAtNTMtXFx0XFx0YnBmX3Rhc2tfZmRfcXVlcnk7XFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA9ODg9TElCQlBGXzAuMC40IHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcC05Mi1cXHRcXHRicGZfcHJvZ3JhbV9fYXR0YWNoX3BlcmZfZXZlbnQ7XFxudG9vbHMvbGliL2JwZi9saWJicGYubWFwOjkzOlxcdFxcdGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQ7XFxudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTk0LVxcdFxcdGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludDtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLm1hcD00MTE9TElCQlBGXzEuNC4wIHtcXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXAtNDEyLVxcdGdsb2JhbDpcXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NDEzOlxcdFxcdGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnRfb3B0cztcXG50b29scy9saWIvYnBmL2xpYmJwZi5tYXA6NDE0OlxcdFxcdGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHM7XFxudG9vbHMvbGliL2JwZi9saWJicGYubWFwLTQxNS1cXHRcXHRicGZfdG9rZW5fY3JlYXRlO1xcbi0tXFxudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg9Mjg2PXN0YXRpYyBpbmxpbmUgaW50IHNrZWxfbWFwX2dldF9mZF9ieV9pZChfX3UzMiBpZClcXG4tLVxcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTI5Ni1cXG50b29scy9saWIvYnBmL3NrZWxfaW50ZXJuYWwuaDoyOTc6c3RhdGljIGlubGluZSBpbnQgc2tlbF9yYXdfdHJhY2Vwb2ludF9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwcm9nX2ZkKVxcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTI5OC17XFxudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg6Mjk5OlxcdGNvbnN0IHNpemVfdCBhdHRyX3N6ID0gb2Zmc2V0b2ZlbmQodW5pb24gYnBmX2F0dHIsIHJhd190cmFjZXBvaW50LnByb2dfZmQpO1xcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTMwMC1cXHR1bmlvbiBicGZfYXR0ciBhdHRyO1xcbi0tXFxudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmgtMzAyLVxcdG1lbXNldChcXHUwMDI2YXR0ciwgMCwgYXR0cl9zeik7XFxudG9vbHMvbGliL2JwZi9za2VsX2ludGVybmFsLmg6MzAzOlxcdGF0dHIucmF3X3RyYWNlcG9pbnQubmFtZSA9IChsb25nKSBuYW1lO1xcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oOjMwNDpcXHRhdHRyLnJhd190cmFjZXBvaW50LnByb2dfZmQgPSBwcm9nX2ZkO1xcbnRvb2xzL2xpYi9icGYvc2tlbF9pbnRlcm5hbC5oLTMwNS1cXG4tLVxcbnRvb2xzL3BlcmYvdXRpbC9icGZfZnRyYWNlLmM9MjI9aW50IHBlcmZfZnRyYWNlX19sYXRlbmN5X3ByZXBhcmVfYnBmKHN0cnVjdCBwZXJmX2Z0cmFjZSAqZnRyYWNlKVxcbi0tXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYy0xMjktXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYzoxMzA6XFx0XFx0c2tlbC1cXHUwMDNlbGlua3MuZXZlbnRfYmVnaW4gPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KHNrZWwtXFx1MDAzZXByb2dzLmV2ZW50X2JlZ2luLFxcbnRvb2xzL3BlcmYvdXRpbC9icGZfZnRyYWNlLmMtMTMxLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZXZlbnQtXFx1MDAzZW5hbWUpO1xcbi0tXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYy0xMzktXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYzoxNDA6XFx0XFx0c2tlbC1cXHUwMDNlbGlua3MuZXZlbnRfZW5kID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVxcdTAwM2Vwcm9ncy5ldmVudF9lbmQsXFxudG9vbHMvcGVyZi91dGlsL2JwZl9mdHJhY2UuYy0xNDEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBldmVudC1cXHUwMDNlbmFtZSk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM9NjE1PXN0YXRpYyB2b2lkIHRwX2J0Zl9zdWJ0ZXN0KHN0cnVjdCB0ZXN0X2JwZl9jb29raWUgKnNrZWwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNjMyLVxcdHJhd190cF9vcHRzLmNvb2tpZSA9IGNvb2tpZSA9IDB4MTEwMDAwMDAwMDAwMDBMO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYzo2MzM6XFx0bGlua19mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXFx1MDAyNnJhd190cF9vcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NjM0OlxcdGlmICghQVNTRVJUX0dFKGxpbmtfZmQsIDAsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfb3Blbl9vcHRzXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTYzNS1cXHRcXHRnb3RvIGNsZWFudXA7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM9Njc3PXN0YXRpYyBpbnQgdmVyaWZ5X3Jhd190cF9saW5rX2luZm8oaW50IGZkLCB1NjQgY29va2llKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTY5MC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NjkxOlxcdEFTU0VSVF9FUShpbmZvLnJhd190cmFjZXBvaW50LmNvb2tpZSwgY29va2llLCBcXFwicmF3X3RwX2Nvb2tpZVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYy02OTItXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM9Njk2PXN0YXRpYyB2b2lkIHJhd190cF9zdWJ0ZXN0KHN0cnVjdCB0ZXN0X2JwZl9jb29raWUgKnNrZWwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNzAxLVxcdExJQkJQRl9PUFRTKGJwZl9yYXdfdHBfb3B0cywgcmF3X3RwX29wdHMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYzo3MDI6XFx0TElCQlBGX09QVFMoYnBmX3Jhd190cmFjZXBvaW50X29wdHMsIG9wdHMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYy03MDMtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmMtNzExLVxcdHJhd190cF9vcHRzLmNvb2tpZSA9IGNvb2tpZSA9IDB4NTUwMDAwMDAwMDAwMDBMO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9jb29raWUuYzo3MTI6XFx0bGlua19mZCA9IGJwZl9yYXdfdHJhY2Vwb2ludF9vcGVuX29wdHMocHJvZ19mZCwgXFx1MDAyNnJhd190cF9vcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfY29va2llLmM6NzEzOlxcdGlmICghQVNTRVJUX0dFKGxpbmtfZmQsIDAsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfb3Blbl9vcHRzXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX2Nvb2tpZS5jLTcxNC1cXHRcXHRnb3RvIGNsZWFudXA7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEyOjA4LjkwMTE4MDMyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjg4ODc0MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgUmF3IFRyYWNlcG9pbnQgVGVzdCoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgdGVzdCwgYW5kIGl0J3MgdXNpbmcgYFNFQyhcInJhd190cmFjZXBvaW50LndcIilgLiBSaWdodCwgdGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhpcyBwcm9ncmFtIHR5cGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIG9yIGFueSByZWxldmFudCBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gcmF3IHRyYWNlcG9pbnRzIGFuZCB3cml0YWJsZSBwcm9ncmFtcy4gSSdtIGtlZW4gdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHNldHRpbmdzIG9yIHBhcmFtZXRlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBwYXJ0aWN1bGFyIHNldHVwLiBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBhY3Jvc3MgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIG9yIHBvdGVudGlhbCBsaW1pdGF0aW9ucy4gSXQncyBhIGtleSBmaXJzdCBzdGVwLCBzbyBJJ2xsIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mzg4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTI6NTEuNTkwMDU2MDYzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA4MTYyOTczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0PTE4PWRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiB0aGUgZm9vdG5vdGVzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0My0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjE0NDp8IGBgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRWBgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHJhd190cC53K2BgIFsjcmF3dHBdXyAgICAgICAgICB8ICAgICAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTE0NS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTQ1PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgcmF3X3RyYWNlcG9pbnQsXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00Ni1cXHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjQ3OkJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgcmF3X3RyYWNlcG9pbnRfd3JpdGFibGUsXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC00OC1cXHQgICAgICBzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MsIHU2NClcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMzI9dW5pb24gYnBmX2l0ZXJfbGlua19pbmZvIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODYtICpcXHRcXHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQqKixcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6Mzg3OiAqXFx0XFx0KipCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFKipcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMzg4LSAqXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9MTA2Mj1lbnVtIGJwZl9wcm9nX3R5cGUge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODYtXFx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU1lTQ1RMLFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDg3OlxcdEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwODgtXFx0QlBGX1BST0dfVFlQRV9DR1JPVVBfU09DS09QVCxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9NjIxNj1zdGF0aWMgaW50IGJ0Zl92YWxpZGF0ZV9wcm9nX2N0eF90eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtNjI3My1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxua2VybmVsL2JwZi9idGYuYzo2Mjc0OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL2J0Zi5jLTYyNzUtXFx0XFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI4NzE9c3RhdGljIGJvb2wgaXNfcGVyZm1vbl9wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHByb2dfdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzctXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjI4Nzg6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI4NzktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz00MzUyPXN0YXRpYyBpbnQgYnBmX3Jhd190cF9saW5rX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00Mzc4LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0Mzc5OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00MzgwLVxcdFxcdGlmIChzdHJuY3B5X2Zyb21fdXNlcihidWYsIHVzZXJfdHBfbmFtZSwgc2l6ZW9mKGJ1ZikgLSAxKSBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTc3MjY9c3RhdGljIGJvb2wgaXNfdHJhY2luZ19wcm9nX3R5cGUoZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3MzItXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzczMzpcXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEU6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzM0LVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEzMj11bmlvbiBicGZfaXRlcl9saW5rX2luZm8ge1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTM4Ni0gKlxcdFxcdCoqQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCoqLFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDozODc6ICpcXHRcXHQqKkJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUqKlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0zODgtICpcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDYyPWVudW0gYnBmX3Byb2dfdHlwZSB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4Ni1cXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TWVNDVEwsXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjEwODc6XFx0QlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA4OC1cXHRCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLT1BULFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz0yMDI9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwcm9nX3R5cGVfbmFtZVtdID0ge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjYtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NZU0NUTF1cXHRcXHQ9IFxcXCJjZ3JvdXBfc3lzY3RsXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjIyNzpcXHRbQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRV1cXHQ9IFxcXCJyYXdfdHJhY2Vwb2ludF93cml0YWJsZVxcXCIsXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy0yMjgtXFx0W0JQRl9QUk9HX1RZUEVfQ0dST1VQX1NPQ0tPUFRdXFx0XFx0PSBcXFwiY2dyb3VwX3NvY2tvcHRcXFwiLFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTEzPXN0YXRpYyBzdHJ1Y3Qge1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYy03MTMxLVxcdHsgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVCwgICAgICAgICAgXFxcImJwZl9yYXdfdHJhY2Vwb2ludF9hcmdzXFxcIiB9LFxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmM6NzEzMjpcXHR7IEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlRfV1JJVEFCTEUsIFxcXCJicGZfcmF3X3RyYWNlcG9pbnRfYXJnc1xcXCIgfSxcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcxMzMtXFx0eyBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVCwgICAgICAgICAgICAgICBcXFwiX19za19idWZmXFxcIiB9LFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGYuYz03MTUzPXN0YXRpYyBib29sIG5lZWRfZnVuY19hcmdfdHlwZV9maXh1cChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtNzIwOC1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfUkFXX1RSQUNFUE9JTlQ6XFxudG9vbHMvbGliL2JwZi9saWJicGYuYzo3MjA5OlxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRTpcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTcyMTAtXFx0XFx0LyogYWxsb3cgdTY0KiBhcyBjdHggKi9cXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jPTEwMz1zdGF0aWMgaW50IHByb2JlX3Byb2dfbG9hZChlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190eXBlLFxcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMTc3LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDpcXG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYzoxNzg6XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UX1dSSVRBQkxFOlxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTE3OS1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfTFdUX1NFRzZMT0NBTDpcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfbmJkX2ludmFsaWQuYz03PXZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X25iZF9pbnZhbGlkLmMtMjctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jOjI4OlxcdGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXFxcIkdQTCB2MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9uYmRfaW52YWxpZC5jLTI5LVxcdFxcdFxcdCAgICAgICBwcm9ncmFtLCBBUlJBWV9TSVpFKHByb2dyYW0pLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM9OD12b2lkIHNlcmlhbF90ZXN0X3Jhd190cF93cml0YWJsZV90ZXN0X3J1bih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjYtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmM6Mjc6XFx0aW50IGJwZl9mZCA9IGJwZl9wcm9nX2xvYWQoQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVF9XUklUQUJMRSwgTlVMTCwgXFxcIkdQTCB2MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3Rlc3RfcnVuLmMtMjgtXFx0XFx0XFx0XFx0ICAgdHJhY2VfcHJvZ3JhbSwgQVJSQVlfU0laRSh0cmFjZV9wcm9ncmFtKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTI6NTMuNTk4MjI0NTg3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MDMyMDUwODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEJQRl9FVkVOVFMgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9FVkVOVFNgLiBUaGUgaW50ZXJlc3Rpbmcgb25lIGhlcmUgaXMgYEJQRl9FVkVOVFNgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbWFwIG91dCB0aGUgZGVwZW5kZW5jeSBncmFwaCBmb3IgYEJQRl9FVkVOVFNgLiBJdCdzIGEga2V5IHBhcnQgb2YgdGhlIEJQRiBlY29zeXN0ZW0sIHNvIHVuZGVyc3RhbmRpbmcgd2hhdCBpdCBsZWFucyBvbiBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkga25vdyB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFuZCBrZXJuZWwgZmVhdHVyZXMgYXJlIG5lZWRlZCBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3QgYSBwcmVsaW1pbmFyeSBhc3Nlc3NtZW50LiBJIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgdGhlIG1vc3QgZGlyZWN0IHBhdGguIEkgbmVlZCB0byBlbnN1cmUgaXQncyBidWlsdCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDgzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDQ6MTM6MTIuNjMwMjc3ODk3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQzOTY1NzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfRVZFTlRTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA0OjEzOjE0LjY3NDI1OTkyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTg1MjQ4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqTXkgQlBGIEltcGxlbWVudGF0aW9uIFN0cmF0ZWd5KipcblxuUmlnaHQsIGl0IHNlZW1zIHdlJ3JlIG9uIHRoZSByaWdodCB0cmFjay4gRnJvbSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0sIEkgY2FuIGNvbmZpcm0gdGhhdCBmb2N1c2luZyBvdXIgZWZmb3J0cyBvbiB0aGUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9FVkVOVFNgIGFzcGVjdHMgd2lsbCBiZSBzdWZmaWNpZW50IGZvciB0aGlzIHNwZWNpZmljIHRhc2suIFdlIHdhbnQgdG8gYmUgZWZmaWNpZW50IGFuZCBwaW5wb2ludCB3aGVyZSB3ZSBuZWVkIHRvIG1ha2UgY2hhbmdlcy5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRob3NlIGtleSBzeW1ib2wgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYF9fY2hlY2tfYnVmZmVyX2FjY2Vzc2AsIGBjaGVja190cF9idWZmZXJfYWNjZXNzYCwgYW5kIGBjaGVja19idWZmZXJfYWNjZXNzYCB0byBjb25maXJtIHRoZSBjb2RlIHdpbGwgZnVuY3Rpb24gYXMgaW50ZW5kZWQuXG5cbkkgcXVpY2tseSBjaGVja2VkIHRoZSBsaXN0IGFuZCBjb25maXJtZWQgdGhhdCB3aGlsZSBgY2hlY2tfbWF4X3N0YWNrX2RlcHRoYCBpc24ndCBpbXBhY3RlZCwgYGNoZWNrX2J1ZmZlcl9hY2Nlc3NgLCBgY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc2AgYW5kIGBfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NgIGFyZSBhbGwgbW9kaWZpZWQsIGFzIGV4cGVjdGVkLlxuXG5JIHdpbGwgcHJvY2VlZCB0byBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzcwLCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNDoxMzoxOC45MzI3ODY5NzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTk4ODc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX3RwX2J1ZmZlcl9hY2Nlc3NcIixcbiAgICBcImNoZWNrX2J1ZmZlcl9hY2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSBoYW5kbGUgbmVnYXRpdmUgb2Zmc2V0cyBhbmQgb3ZlcmZsb3dzIHdoZW4gY2hlY2tpbmcgYnVmZmVyIGFjY2VzcyBpbiBCUEYgcHJvZ3JhbXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIGNvbXBvbmVudCAoQlBGIHZlcmlmaWVyKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fY2hlY2tfYnVmZmVyX2FjY2Vzc1wiLFxuICAgIFwiY2hlY2tfdHBfYnVmZmVyX2FjY2Vzc1wiLFxuICAgIFwiY2hlY2tfYnVmZmVyX2FjY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IGhhbmRsZSBuZWdhdGl2ZSBvZmZzZXRzIGFuZCBvdmVyZmxvd3Mgd2hlbiBjaGVja2luZyBidWZmZXIgYWNjZXNzIGluIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgY29tcG9uZW50IChCUEYgdmVyaWZpZXIpIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[1] Phase: Succeeded StartedAt: 2026-07-03 04:13:30 +0000 UTC FinishedAt: 2026-07-03 04:13:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-03 04:13:30 +0000 UTC FinishedAt: 2026-07-03 04:13:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2] Phase: Succeeded StartedAt: 2026-07-03 04:13:30 +0000 UTC FinishedAt: 2026-07-03 08:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-03 04:13:30 +0000 UTC FinishedAt: 2026-07-03 08:10:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-03 04:13:30 +0000 UTC FinishedAt: 2026-07-03 04:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-03 04:13:30 +0000 UTC FinishedAt: 2026-07-03 04:13:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-convert-artifact-1793346847/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-03 04:14:57 +0000 UTC FinishedAt: 2026-07-03 04:40:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-03 04:14:57 +0000 UTC FinishedAt: 2026-07-03 04:40:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ff65f3da-53a2-4cde-8563-7e254b28838f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-convert-artifact-1793346847/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d2968c54-342d-4ca8-8790-5e8facc50512", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-741130021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-03 04:14:57 +0000 UTC FinishedAt: 2026-07-03 04:40:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ff65f3da-53a2-4cde-8563-7e254b28838f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-convert-artifact-1793346847/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d2968c54-342d-4ca8-8790-5e8facc50512", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-741130021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-03 04:40:33 +0000 UTC FinishedAt: 2026-07-03 04:40:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-03 04:40:33 +0000 UTC FinishedAt: 2026-07-03 04:40:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-03 04:40:33 +0000 UTC FinishedAt: 2026-07-03 04:40:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-03 04:40:33 +0000 UTC FinishedAt: 2026-07-03 04:40:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-convert-artifact-3020553134/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-03 04:40:43 +0000 UTC FinishedAt: 2026-07-03 04:43:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-03 04:40:43 +0000 UTC FinishedAt: 2026-07-03 04:42:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d2968c54-342d-4ca8-8790-5e8facc50512,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-741130021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-03 04:43:01 +0000 UTC FinishedAt: 2026-07-03 04:43:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-03 04:43:01 +0000 UTC FinishedAt: 2026-07-03 04:43:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-03 04:43:01 +0000 UTC FinishedAt: 2026-07-03 05:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-03 04:43:01 +0000 UTC FinishedAt: 2026-07-03 05:04:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ff65f3da-53a2-4cde-8563-7e254b28838f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-convert-artifact-3020553134/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "2a7db90d-2ca0-4671-b5b8-f7d5d2f97246", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-3561140930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-03 04:43:01 +0000 UTC FinishedAt: 2026-07-03 05:04:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ff65f3da-53a2-4cde-8563-7e254b28838f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-convert-artifact-3020553134/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "2a7db90d-2ca0-4671-b5b8-f7d5d2f97246", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-3561140930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-03 05:04:12 +0000 UTC FinishedAt: 2026-07-03 05:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-03 05:04:12 +0000 UTC FinishedAt: 2026-07-03 05:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-03 05:04:12 +0000 UTC FinishedAt: 2026-07-03 05:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-03 05:04:12 +0000 UTC FinishedAt: 2026-07-03 05:06:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2a7db90d-2ca0-4671-b5b8-f7d5d2f97246,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-3561140930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-03 05:06:54 +0000 UTC FinishedAt: 2026-07-03 08:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-03 05:06:54 +0000 UTC FinishedAt: 2026-07-03 08:10:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d2968c54-342d-4ca8-8790-5e8facc50512,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2a7db90d-2ca0-4671-b5b8-f7d5d2f97246,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-741130021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-3561140930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-03 05:06:54 +0000 UTC FinishedAt: 2026-07-03 05:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-03 05:06:54 +0000 UTC FinishedAt: 2026-07-03 05:07:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-convert-artifact-1730980947/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-03 05:06:54 +0000 UTC FinishedAt: 2026-07-03 05:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-03 05:06:54 +0000 UTC FinishedAt: 2026-07-03 05:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-03 05:06:54 +0000 UTC FinishedAt: 2026-07-03 05:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-03 05:07:26 +0000 UTC FinishedAt: 2026-07-03 08:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnvmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_buffer_access","check_tp_buffer_access","check_buffer_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66bb952b449eac53dffb341108251d632767fd2d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"99a7905e-dff7-4dbe-a8b6-a7c92a2c0746","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-03 05:07:26 +0000 UTC FinishedAt: 2026-07-03 08:10:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d2968c54-342d-4ca8-8790-5e8facc50512,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2a7db90d-2ca0-4671-b5b8-f7d5d2f97246,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-741130021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-build-action-3561140930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcnvmv/series-workflowcnvmv-convert-artifact-1730980947/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}