Name: series-workflowd7br5 Phase: Succeeded StartedAt: 2026-06-22 05:13:56 +0000 UTC FinishedAt: 2026-06-22 09:15:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[0] Phase: Succeeded StartedAt: 2026-06-22 05:13:56 +0000 UTC FinishedAt: 2026-06-22 05:21:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 05:13:56 +0000 UTC FinishedAt: 2026-06-22 05:21:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "7d1194d7-b675-41b2-898d-60c062a83b72" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_special_kfunc", "btf_type_has_trailing_flex_array" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfc3BlY2lhbF9rZnVuYyYjMzQ7LAogICAgJiMzNDtidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgYXR0ZW1wdCB0byBhbGxvY2F0ZSBzdHJ1Y3RzIHdpdGggdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBCVEYgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBieXBhc3Nlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE1Y2Y3YTBiMTA5Y2U1Y2U1YTAzN2Y4YzZlM2IyYjE0OWI0MTQ5MDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAwNToyMDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5jM2E1NzRjYzBkMDlmZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTA5NTUsNiAmIzQzOzEwOTU1LDMwIEBAIHN0YXRpYyBib29sIF9fYnRmX3R5cGVfaXNfc2NhbGFyX3N0cnVjdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheShjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4mIzQzO1x0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdClcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqbWVtYmVyX3R5cGU7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm1lbWJlcjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgYnRmX2FycmF5ICphcnJheTtcbiYjNDM7XHR1MzIgdmxlbjtcbiYjNDM7XG4mIzQzO1x0aWYgKCFidGZfdHlwZV9pc19zdHJ1Y3QodCkpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHZsZW4gPSBidGZfdHlwZV92bGVuKHQpO1xuJiM0MztcdGlmICghdmxlbilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0bWVtYmVyID0gYnRmX3R5cGVfbWVtYmVyKHQpICYjNDM7IHZsZW4gLSAxO1xuJiM0MztcdG1lbWJlcl90eXBlID0gYnRmX3R5cGVfc2tpcF9tb2RpZmllcnMoYnRmLCBtZW1iZXItXHUwMDNldHlwZSwgTlVMTCk7XG4mIzQzO1x0aWYgKCFidGZfdHlwZV9pc19hcnJheShtZW1iZXJfdHlwZSkpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGFycmF5ID0gYnRmX2FycmF5KG1lbWJlcl90eXBlKTtcbiYjNDM7XHRyZXR1cm4gIWFycmF5LVx1MDAzZW5lbGVtcztcbiYjNDM7fVxuJiM0MztcbiBlbnVtIGtmdW5jX3B0cl9hcmdfdHlwZSB7XG4gXHRLRl9BUkdfUFRSX1RPX0NUWCxcbiBcdEtGX0FSR19QVFJfVE9fQUxMT0NfQlRGX0lELCAgICAvKiBBbGxvY2F0ZWQgb2JqZWN0ICovXG5AQCAtMTI3NDksNiAmIzQzOzEyNzczLDEwIEBAIHN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhXG4gXHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0O2JwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcXG5cJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAoYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkocmV0X2J0ZiwgcmV0X3QpKSB7XG4mIzQzO1x0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDticGZfb2JqX25ldyB0eXBlIG11c3Qgbm90IGNvbnRhaW4gYSBmbGV4aWJsZSBhcnJheVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRpZiAoaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkpIHtcbiBcdFx0XHRpZiAocmV0X3QtXHUwMDNlc2l6ZSBcdTAwM2UgQlBGX0dMT0JBTF9QRVJDUFVfTUFfTUFYX1NJWkUpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9saW5rZWRfbGlzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuY1xuaW5kZXggOGRlZmVhMDI1M2VkOWEuLjQ5YzI1MDEzMmI5YjBlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuY1xuQEAgLTY4LDYgJiM0Mzs2OCw4IEBAIHN0YXRpYyBzdHJ1Y3Qge1xuIFx0eyBcJiMzNDtvYmpfdHlwZV9pZF9vb3JcJiMzNDssIFwmIzM0O2xvY2FsIHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBpbiByYW5nZSBbMCwgVTMyX01BWF1cJiMzNDsgfSxcbiBcdHsgXCYjMzQ7b2JqX25ld19ub19jb21wb3NpdGVcJiMzNDssIFwmIzM0O2JwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcJiMzNDsgfSxcbiBcdHsgXCYjMzQ7b2JqX25ld19ub19zdHJ1Y3RcJiMzNDssIFwmIzM0O2JwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcJiMzNDsgfSxcbiYjNDM7XHR7IFwmIzM0O29ial9uZXdfZmxleF9hcnJheVwmIzM0OyxcbiYjNDM7XHQgIFwmIzM0O2JwZl9vYmpfbmV3IHR5cGUgbXVzdCBub3QgY29udGFpbiBhIGZsZXhpYmxlIGFycmF5XCYjMzQ7IH0sXG4gXHR7IFwmIzM0O29ial9kcm9wX25vbl96ZXJvX29mZlwmIzM0OywgXCYjMzQ7UjEgbXVzdCBoYXZlIHplcm8gb2Zmc2V0IHdoZW4gcGFzc2VkIHRvIHJlbGVhc2UgZnVuY1wmIzM0OyB9LFxuIFx0eyBcJiMzNDtuZXdfbnVsbF9yZXRcJiMzNDssIFwmIzM0O1IwIGludmFsaWQgbWVtIGFjY2VzcyAmIzM5O3B0cl9vcl9udWxsXyYjMzk7XCYjMzQ7IH0sXG4gXHR7IFwmIzM0O29ial9uZXdfYWNxXCYjMzQ7LCBcJiMzNDtVbnJlbGVhc2VkIHJlZmVyZW5jZSBpZD1cJiMzNDsgfSxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbGlua2VkX2xpc3RfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuY1xuaW5kZXggZGRkMjZkMWEwODNmNzIuLjAzMWU3N2EyODhlZWMwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuY1xuQEAgLTE2Nyw2ICYjNDM7MTY3LDE2IEBAIENIRUNLX09QKHB1c2hfYmFjayk7XG4gI3VuZGVmIENIRUNLX09QXG4gI3VuZGVmIElOSVRcbiBcbiYjNDM7c3RydWN0IG9ial9uZXdfZmxleF9lbGVtIHtcbiYjNDM7XHRpbnQgbG87XG4mIzQzO1x0aW50IGhpO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IG9ial9uZXdfZmxleCB7XG4mIzQzO1x0aW50IGhkcjtcbiYjNDM7XHRzdHJ1Y3Qgb2JqX25ld19mbGV4X2VsZW0gY2VsbHNbXTtcbiYjNDM7fTtcbiYjNDM7XG4gU0VDKFwmIzM0Oz9rcHJvYmUveHl6XCYjMzQ7KVxuIGludCBtYXBfY29tcGF0X2twcm9iZSh2b2lkICpjdHgpXG4ge1xuQEAgLTIzMCw2ICYjNDM7MjQwLDE5IEBAIGludCBvYmpfbmV3X25vX3N0cnVjdCh2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDs/dGNcJiMzNDspXG4mIzQzO2ludCBvYmpfbmV3X2ZsZXhfYXJyYXkodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG9ial9uZXdfZmxleCAqcDtcbiYjNDM7XG4mIzQzO1x0cCA9IGJwZl9vYmpfbmV3X2ltcGwoYnBmX2NvcmVfdHlwZV9pZF9sb2NhbChzdHJ1Y3Qgb2JqX25ld19mbGV4KSwgTlVMTCk7XG4mIzQzO1x0aWYgKCFwKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0cC1cdTAwM2VjZWxsc1swXS5oaSA9IDQyO1xuJiM0MztcdGJwZl9vYmpfZHJvcF9pbXBsKHAsIE5VTEwpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIFNFQyhcJiMzNDs/dGNcJiMzNDspXG4gaW50IG9ial9kcm9wX25vbl96ZXJvX29mZih2b2lkICpjdHgpXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfc3BlY2lhbF9rZnVuYyYjMzQ7LAogICAgJiMzNDtidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgYXR0ZW1wdCB0byBhbGxvY2F0ZSBzdHJ1Y3RzIHdpdGggdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBCVEYgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBieXBhc3Nlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTVjZjdhMGIxMDljZTVjZTVhMDM3ZjhjNmUzYjJiMTQ5YjQxNDkwMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDIyIDA1OjIwOjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDJhYmM3OWRiZjI4MWMyLi5jM2E1NzRjYzBkMDlmZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTA5NTUsNiAmIzQzOzEwOTU1LDMwIEBAIHN0YXRpYyBib29sIF9fYnRmX3R5cGVfaXNfc2NhbGFyX3N0cnVjdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCXJldHVybiB0cnVlOwogfQogCiYjNDM7c3RhdGljIGJvb2wgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLAomIzQzOwkJCQkJICAgICBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlOwomIzQzOwljb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyOwomIzQzOwljb25zdCBzdHJ1Y3QgYnRmX2FycmF5ICphcnJheTsKJiM0MzsJdTMyIHZsZW47CiYjNDM7CiYjNDM7CWlmICghYnRmX3R5cGVfaXNfc3RydWN0KHQpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwl2bGVuID0gYnRmX3R5cGVfdmxlbih0KTsKJiM0MzsJaWYgKCF2bGVuKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwltZW1iZXIgPSBidGZfdHlwZV9tZW1iZXIodCkgJiM0MzsgdmxlbiAtIDE7CiYjNDM7CW1lbWJlcl90eXBlID0gYnRmX3R5cGVfc2tpcF9tb2RpZmllcnMoYnRmLCBtZW1iZXItJmd0O3R5cGUsIE5VTEwpOwomIzQzOwlpZiAoIWJ0Zl90eXBlX2lzX2FycmF5KG1lbWJlcl90eXBlKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJYXJyYXkgPSBidGZfYXJyYXkobWVtYmVyX3R5cGUpOwomIzQzOwlyZXR1cm4gIWFycmF5LSZndDtuZWxlbXM7CiYjNDM7fQomIzQzOwogZW51bSBrZnVuY19wdHJfYXJnX3R5cGUgewogCUtGX0FSR19QVFJfVE9fQ1RYLAogCUtGX0FSR19QVFJfVE9fQUxMT0NfQlRGX0lELCAgICAvKiBBbGxvY2F0ZWQgb2JqZWN0ICovCkBAIC0xMjc0OSw2ICYjNDM7MTI3NzMsMTAgQEAgc3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2EKIAkJCXZlcmJvc2UoZW52LCAmIzM0O2JwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcbiYjMzQ7KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiYjNDM7CQlpZiAoYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkocmV0X2J0ZiwgcmV0X3QpKSB7CiYjNDM7CQkJdmVyYm9zZShlbnYsICYjMzQ7YnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcbiYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KIAogCQlpZiAoaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEtJmd0O2Z1bmNfaWQpKSB7CiAJCQlpZiAocmV0X3QtJmd0O3NpemUgJmd0OyBCUEZfR0xPQkFMX1BFUkNQVV9NQV9NQVhfU0laRSkgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmMKaW5kZXggOGRlZmVhMDI1M2VkOWEuLjQ5YzI1MDEzMmI5YjBlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9saW5rZWRfbGlzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmMKQEAgLTY4LDYgJiM0Mzs2OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgewogCXsgJiMzNDtvYmpfdHlwZV9pZF9vb3ImIzM0OywgJiMzNDtsb2NhbCB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgaW4gcmFuZ2UgWzAsIFUzMl9NQVhdJiMzNDsgfSwKIAl7ICYjMzQ7b2JqX25ld19ub19jb21wb3NpdGUmIzM0OywgJiMzNDticGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0JiMzNDsgfSwKIAl7ICYjMzQ7b2JqX25ld19ub19zdHJ1Y3QmIzM0OywgJiMzNDticGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0JiMzNDsgfSwKJiM0MzsJeyAmIzM0O29ial9uZXdfZmxleF9hcnJheSYjMzQ7LAomIzQzOwkgICYjMzQ7YnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXkmIzM0OyB9LAogCXsgJiMzNDtvYmpfZHJvcF9ub25femVyb19vZmYmIzM0OywgJiMzNDtSMSBtdXN0IGhhdmUgemVybyBvZmZzZXQgd2hlbiBwYXNzZWQgdG8gcmVsZWFzZSBmdW5jJiMzNDsgfSwKIAl7ICYjMzQ7bmV3X251bGxfcmV0JiMzNDssICYjMzQ7UjAgaW52YWxpZCBtZW0gYWNjZXNzICYjMzk7cHRyX29yX251bGxfJiMzOTsmIzM0OyB9LAogCXsgJiMzNDtvYmpfbmV3X2FjcSYjMzQ7LCAmIzM0O1VucmVsZWFzZWQgcmVmZXJlbmNlIGlkPSYjMzQ7IH0sCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbGlua2VkX2xpc3RfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuYwppbmRleCBkZGQyNmQxYTA4M2Y3Mi4uMDMxZTc3YTI4OGVlYzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuYwpAQCAtMTY3LDYgJiM0MzsxNjcsMTYgQEAgQ0hFQ0tfT1AocHVzaF9iYWNrKTsKICN1bmRlZiBDSEVDS19PUAogI3VuZGVmIElOSVQKIAomIzQzO3N0cnVjdCBvYmpfbmV3X2ZsZXhfZWxlbSB7CiYjNDM7CWludCBsbzsKJiM0MzsJaW50IGhpOwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IG9ial9uZXdfZmxleCB7CiYjNDM7CWludCBoZHI7CiYjNDM7CXN0cnVjdCBvYmpfbmV3X2ZsZXhfZWxlbSBjZWxsc1tdOwomIzQzO307CiYjNDM7CiBTRUMoJiMzNDs/a3Byb2JlL3h5eiYjMzQ7KQogaW50IG1hcF9jb21wYXRfa3Byb2JlKHZvaWQgKmN0eCkKIHsKQEAgLTIzMCw2ICYjNDM7MjQwLDE5IEBAIGludCBvYmpfbmV3X25vX3N0cnVjdCh2b2lkICpjdHgpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztTRUMoJiMzNDs/dGMmIzM0OykKJiM0MztpbnQgb2JqX25ld19mbGV4X2FycmF5KHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvYmpfbmV3X2ZsZXggKnA7CiYjNDM7CiYjNDM7CXAgPSBicGZfb2JqX25ld19pbXBsKGJwZl9jb3JlX3R5cGVfaWRfbG9jYWwoc3RydWN0IG9ial9uZXdfZmxleCksIE5VTEwpOwomIzQzOwlpZiAoIXApCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJcC0mZ3Q7Y2VsbHNbMF0uaGkgPSA0MjsKJiM0MzsJYnBmX29ial9kcm9wX2ltcGwocCwgTlVMTCk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIFNFQygmIzM0Oz90YyYjMzQ7KQogaW50IG9ial9kcm9wX25vbl96ZXJvX29mZih2b2lkICpjdHgpCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV3IEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uZSwgcmVhbGx5LiBJdCBzZWVtcyB0byBiZSBwcmV2ZW50aW5nIGBicGZfb2JqX25ld2AgZnJvbSBhbGxvY2F0aW5nIHN0cnVjdHMgdGhhdCBoYXZlIHRyYWlsaW5nIGZsZXhpYmxlIGFycmF5cy4gVGhlIGNvcmUgb2YgdGhpcyBmdW5jdGlvbmFsaXR5IGxpZXMgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGEgZnVuY3Rpb24gY2FsbGVkIGBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheWAgYW5kIGluY29ycG9yYXRlZCBpdCBpbnRvIHRoZSBgY2hlY2tfc3BlY2lhbF9rZnVuY2AgZnVuY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgQlBGIHZlcmlmaWVyLCB3aGljaCwgaW4gbXkgZXhwZXJpZW5jZSwgc2NyZWFtcyAmIzM0O25lZWRzIGZ1enppbmcuJiMzNDsgR290dGEgbWFrZSBzdXJlIHRoaXMgYWRkaXRpb24gZG9lc27igJl0IGludHJvZHVjZSBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYW5kIHN5bWJvbHMuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgZ2l2ZW4sIG9mIGNvdXJzZTsgdGhpcyBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0cyB0aGUgQlBGIHN5c2NhbGwgcGF0aC4gRm9yIHRoZSBrZXkgc3ltYm9scywgSSYjMzk7bSB0aGlua2luZyBgY2hlY2tfc3BlY2lhbF9rZnVuY2AgYW5kIGBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheWAgYXJlIHRoZSBtYWluIHBvaW50cyB0byBmb2N1cyBvbi4gV2FpdCBhIHNlY29uZCwgdGhlIHNlY29uZCBmdW5jdGlvbiBpcyBzdGF0aWMuIFNvLCBpdCBtYXkgYmUgYmV0dGVyIHRvIGp1c3QgY29uY2VudHJhdGUgb24gYGNoZWNrX3NwZWNpYWxfa2Z1bmNgLgoKQWxyaWdodCwgSSYjMzk7bGwgZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGBjaGVja19zcGVjaWFsX2tmdW5jYC4gU2VlIHdoYXQgb3RoZXIgcmVsYXRlZCBhcmVhcyBuZWVkIGNhcmVmdWwgY29uc2lkZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19zcGVjaWFsX2tmdW5jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjY3ND1zNjQgYnBmX2tmdW5jX3N0YWNrX2FjY2Vzc19ieXRlcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM4LSAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzM5OnN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NDAtXHRcdFx0ICAgICAgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzLCBzdHJ1Y3QgYnBmX2luc25fYXV4X2RhdGEgKmluc25fYXV4LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxND1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE0OC1cdFx0cHRyX3R5cGUgPSBidGZfdHlwZV9za2lwX21vZGlmaWVycyhkZXNjX2J0ZiwgdC1cdTAwM2V0eXBlLCBcdTAwMjZwdHJfdHlwZV9pZCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxNDk6XHRcdGVyciA9IGNoZWNrX3NwZWNpYWxfa2Z1bmMoZW52LCBcdTAwMjZtZXRhLCByZWdzLCBpbnNuX2F1eCwgcHRyX3R5cGUsIGRlc2NfYnRmKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE1MC1cdFx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgS2VybmVsIEZ1bmN0aW9uIENhbGwgVmVyaWZpY2F0aW9uIEZsb3cqKgoKUmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGFuZCBgY2hlY2tfa2Z1bmNfY2FsbGAuIEl0IGxvb2tzIGxpa2UgdGhlIHZlcmlmaWNhdGlvbiBsb2dpYyBmb3Igc3BlY2lhbCBrZXJuZWwgZnVuY3Rpb25zIGlzIGJlaW5nIGludm9rZWQgZnJvbSB0aGUgYnJvYWRlciBrZXJuZWwgZnVuY3Rpb24gY2FsbCB2ZXJpZmljYXRpb24gcHJvY2Vzcy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb2RlIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyBmaWxlIGFsbW9zdCBjZXJ0YWlubHkgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyB0aGVzZSBzcGVjaWFsIGtlcm5lbCBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5JiMzOTtyZSBpbnRlZ3JhdGVkIGludG8gdGhlIG92ZXJhbGwgQlBGIHByb2dyYW0gdmVyaWZpY2F0aW9uIHN0cmF0ZWd5LiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gdGhlc2UgZnVuY3Rpb25zLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjb25zdHJhaW50cywgc2VjdXJpdHkgY2hlY2tzLCBhbmQgbGltaXRhdGlvbnMgaW1wb3NlZCBkdXJpbmcgcHJvZ3JhbSB2ZXJpZmljYXRpb24uIEkgbmVlZCB0byBiZSBwcmVwYXJlZCBmb3IgcG90ZW50aWFsbHkgY29tcGxleCBpbnRlcmFjdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MzppZm5lcSAoJChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGhhc2h0YWIubyBhcnJheW1hcC5vIHBlcmNwdV9mcmVlbGlzdC5vIGJwZl9scnVfbGlzdC5vIGxwbV90cmllLm8gbWFwX2luX21hcC5vIGJsb29tX2ZpbHRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGxvY2FsX3N0b3JhZ2UubyBxdWV1ZV9zdGFja19tYXBzLm8gcmluZ2J1Zi5vIGJwZl9pbnNuX2FycmF5Lm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2xvY2FsX3N0b3JhZ2UubyBicGZfdGFza19zdG9yYWdlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZml4dXBzLm8gY2ZnLm8gc3RhdGVzLm8gYmFja3RyYWNrLm8gY2hlY2tfYnRmLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTU6b2JqLSR7Q09ORklHX0JQRl9MU019XHQgICYjNDM7PSBicGZfaW5vZGVfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRpc2FzbS5vIG1wcm9nLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYXJlbmEubyByYW5nZV90cmVlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjEtZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBkaXNwYXRjaGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjMtaWZlcSAoJChDT05GSUdfTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkZXZtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBvZmZsb2FkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbmV0X25hbWVzcGFjZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHRjeC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTI5LWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzdGFja21hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMzPWlmZXEgKCQoQ09ORklHX0NHUk9VUFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNncm91cF9pdGVyLm8gYnBmX2NncnBfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT0zNz1pZmVxICgkKENPTkZJR19JTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZXVzZXBvcnRfYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9NDI9ZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDM6aWZlcSAoJChDT05GSUdfQlBGX0pJVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3N0cnVjdF9vcHMub1xua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXNrLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZS01NS0jIHNlbWFudGljcyB3aXRoaW4gcGFob2xlIGFyZSByZXZpc2l0ZWQgYWNjb3JkaW5nbHkuXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU2Om9iai0ke0NPTkZJR19CUEZfTFNNfSAmIzQzOz0gYnBmX2xzbV9wcm90by5vIGJwZl9sc20ub1xua2VybmVsL2JwZi9NYWtlZmlsZS01Ny1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZT01OD1pZm5lcSAoJChDT05GSUdfQ1JZUFRPKSwpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNyeXB0by5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgJiM0Mzs9IHByZWxvYWQvXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxua2VybmVsL2JwZi9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZWxvX2NvcmUub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zl9yZWxvY2F0ZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGttZW1fY2FjaGVfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY3LWlmZXEgKCQoQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkbWFidWZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc2NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIEtmdW5jIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaW52b2x2ZXMgYENPTkZJR19CUEZfU1lTQ0FMTGAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZGlnIGludG8gYGNoZWNrX3NwZWNpYWxfa2Z1bmNgLCBhcyBpdCBzZWVtcyByZWxldmFudC4gSGFuZyBvbiwgdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbi4gTm8gcHJvYmxlbSwgU3l6a2FsbGVyICpjYW4qIGhhbmRsZSB0aG9zZSBhcyBsb25nIGFzIHRoZXkmIzM5O3JlIGluIHRoZSBzeW1ib2wgdGFibGUuIEl0JiMzOTtzIGdvb2QgdG8ga25vdyB0aGF0IEkmIzM5O20gYWJsZSB0byB0YXJnZXQgdGhlbSwgYnV0IG1heWJlIHRoZXJlJiMzOTtzIGEgYmV0dGVyIHN0YXJ0aW5nIHBvaW50PwoKTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgd291bGRuJiMzOTt0IGBjaGVja19rZnVuY19jYWxsYCBiZSBhIG1vcmUgc3RyYXRlZ2ljIHBsYWNlIHRvIHN0YXJ0PyBIbW0sIGl0JiMzOTtzICphbHNvKiBzdGF0aWMuIEFscmlnaHQsIG5vIG1hdHRlciwgaXQmIzM5O3Mgc3RpbGwgYWNjZXNzaWJsZS4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBleGFtaW5lIGBjaGVja19rZnVuY19jYWxsYCBhbmQgc2VlIHdoYXQgaW5zaWdodHMgaXQgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19rZnVuY19jYWxsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz03MjI0PXN0YXRpYyBpbnQgcHJvY2Vzc19keW5wdHJfZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mjk4LVx0XHRcdCAqIEZvciBDT05TVF9QVFJfVE9fRFlOUFRSLCByZWcgaXMgYWxyZWFkeSBzY3JhdGNoZWQgYnkgY2hlY2tfcmVnX2FyZ1xua2VybmVsL2JwZi92ZXJpZmllci5jOjcyOTk6XHRcdFx0ICogaW4gY2hlY2tfaGVscGVyX2NhbGwgYW5kIG1hcmtfYnRmX2Z1bmNfcmVnX3NpemUgaW4gY2hlY2tfa2Z1bmNfY2FsbC5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03MzAwLVx0XHRcdCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxMj1zdGF0aWMgaW50IGNoZWNrX3JldHVybl9jb2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCByZWdubywgY29uc3QgY2hhciAqcmVnX25hbWUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTEzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTE0OnN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MTUtXHRcdFx0ICAgIGludCAqaW5zbl9pZHhfcClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTcyMzY9c3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzMwNC1cdFx0XHRpZiAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzMwNTpcdFx0XHRcdHJldHVybiBjaGVja19rZnVuY19jYWxsKGVudiwgaW5zbiwgXHUwMDI2ZW52LVx1MDAzZWluc25faWR4KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzMwNi1cdFx0XHRyZXR1cm4gY2hlY2tfaGVscGVyX2NhbGwoZW52LCBpbnNuLCBcdTAwMjZlbnYtXHUwMDNlaW5zbl9pZHgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NTIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBGdW5jdGlvbiBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhpcyBsb2dpYyBhbmQgaXQgbG9va3MgbGlrZSBgY2hlY2tfa2Z1bmNfY2FsbGAgaXMgdHJpZ2dlcmVkIGJ5IGBkb19jaGVja19pbnNuYC4gRnJvbSB0aGVyZSwgaXQgZGl2ZXMgaW50byBgY2hlY2tfc3BlY2lhbF9rZnVuY2AuIEhtbSwgaW50ZXJlc3RpbmcuIExldCYjMzk7cyBtYWtlIGBjaGVja19zcGVjaWFsX2tmdW5jYCB0aGUgcHJpbWFyeSBmb2N1cyBmb3Igbm93LCBzZWUgd2hlcmUgdGhhdCBsZWFkcy4KCldhaXQsIGFyZSB0aGVyZSBhbnkgb3RoZXIgc2ltaWxhciBmdW5jdGlvbnM/IEFoLCB5ZXMsIGBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheWAuIFRoYXQmIzM5O3MgYSBzdGF0aWMgb25lLCBhbmQgcmVsYXRpdmVseSByZWNlbnQsIHNvIGl0JiMzOTtzIHByb2JhYmx5IHdvcnRoIGFkZGluZyB0byB0aGUgc2V0IG9mIGZvY3VzIHN5bWJvbHMgYXMgd2VsbC4KClJpZ2h0LCB0aW1lIHRvIGdvIHNwZWx1bmtpbmcgaW4gdGhlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5MTk9c3RhdGljIGJvb2wgX19idGZfdHlwZV9pc19zY2FsYXJfc3RydWN0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTU3LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTU4OnN0YXRpYyBib29sIGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5KGNvbnN0IHN0cnVjdCBidGYgKmJ0Zixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk1OS1cdFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzM5PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzc1LVx0XHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI3NzY6XHRcdGlmIChidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheShyZXRfYnRmLCByZXRfdCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3Ny1cdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjA0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIEJQRiBWZXJpZmljYXRpb24gZm9yIFRyYWlsaW5nIEZsZXhpYmxlIEFycmF5cyoqCgpPa2F5LCBzbyBgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlgIGFuZCBgY2hlY2tfc3BlY2lhbF9rZnVuY2AgYXJlIHNvbGlkIHN0YXJ0aW5nIHBvaW50cyBmb3IgZnV6emluZy4gVGhleSBkaXJlY3RseSByZWxhdGUgdG8gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBiZWluZyBtb2RpZmllZCBpbiB0aGlzIHBhdGNoOiB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIHJlamVjdGlvbiBvZiBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgdHJ5IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0aG9zZSB0cmFpbGluZyBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb25lLCByZWFsbHksIHRvIHRoZSBCUEYgY29yZSBsb2dpYy4gVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGJlaGF2aW9yIGlzIHJvYnVzdC4gSSBuZWVkIHRvIGVuc3VyZSBpdCBoYW5kbGVzIGFsbCB0aGUgZGlmZmVyZW50IEJURiB0eXBlcyBjb3JyZWN0bHksIGFuZCBpbXBvcnRhbnRseSwgdGhhdCBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIGFsbG93IGZvciBhbnkgYnlwYXNzZXMuIEZ1enppbmcgaXMgZGVmaW5pdGVseSB0aGUgcmlnaHQgYXBwcm9hY2ggaGVyZS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgYW5kIGNvbmZpcm0gdGhlcmUgYXJlbuKAmXQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIFRoZSBrZXkgb25lIGFwcGVhcnMgdG8gYmUgYEJQRl9TWVNDQUxMYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBjb25zaWRlciBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCwgc2luY2UgYGJwZl9vYmpfbmV3YCByZWxpZXMgb24gQlRGLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgYENPTkZJR19ERUJVR19JTkZPX0JURmAgaXMgcmVxdWlyZWQgaW4gdGhlIGBicGZfb2JqX25ld2AgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJ4oCZbSBjb3ZlcmluZyBhbGwgdGhlIGRlcGVuZGVuY2llcyBpbiBteSBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfb2JqX25ldyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnRmLmM9MzkxMD1zdGF0aWMgaW50IGJ0Zl9wYXJzZV9rcHRyKGNvbnN0IHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJ0Zl9maWVsZCAqZmllbGQsXG4tLVxua2VybmVsL2JwZi9idGYuYy0zOTMyLVx0XHQvKiBUeXBlIGV4aXN0cyBvbmx5IGluIHByb2dyYW0gQlRGLiBBc3N1bWUgdGhhdCBpdCYjMzk7cyBhIE1FTV9BTExPQ1xua2VybmVsL2JwZi9idGYuYzozOTMzOlx0XHQgKiBrcHRyIGFsbG9jYXRlZCB2aWEgYnBmX29ial9uZXdcbmtlcm5lbC9icGYvYnRmLmMtMzkzNC1cdFx0ICovXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9MjMzNj1fX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjMzOC0vKipcbmtlcm5lbC9icGYvaGVscGVycy5jOjIzMzk6ICogYnBmX29ial9uZXcoKSAtIGFsbG9jYXRlIGFuIG9iamVjdCBkZXNjcmliZWQgYnkgcHJvZ3JhbSBCVEZcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNDAtICogQGxvY2FsX3R5cGVfaWRfX2s6IHR5cGUgSUQgaW4gcHJvZ3JhbSBCVEZcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMzQ5LSAqL1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM1MDpfX2JwZl9rZnVuYyB2b2lkICpicGZfb2JqX25ldyh1NjQgbG9jYWxfdHlwZV9pZF9faywgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNTEte1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNjMtXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyMzY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9vYmpfbmV3X2ltcGwodTY0IGxvY2FsX3R5cGVfaWRfX2ssIHZvaWQgKm1ldGFfX2lnbilcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNjUte1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM2NjpcdHJldHVybiBicGZfb2JqX25ldyhsb2NhbF90eXBlX2lkX19rLCBtZXRhX19pZ24pO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtMjM2Ny19XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgwND1CVEZfSURfRkxBR1MoZnVuYywgY3Jhc2hfa2V4ZWMsIEtGX0RFU1RSVUNUSVZFKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwNS0jZW5kaWZcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgwNzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9uZXdfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwOC1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02OTM0PWVudW0ge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02OTQxLSAqIGJwZl9tYXBfbG9va3VwIHJldHVybnMgUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMLlxua2VybmVsL2JwZi92ZXJpZmllci5jOjY5NDI6ICogYnBmX29ial9uZXcgcmV0dXJucyBQVFJfVE9fQlRGX0lEIHwgTUVNX0FMTE9DIHwgUFRSX01BWUJFX05VTEwuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjk0My0gKiBUd28gYnBmX21hcF9sb29rdXBzIChldmVuIHdpdGggdGhlIHNhbWUga2V5KSB3aWxsIGhhdmUgZGlmZmVyZW50IHJlZy1cdTAwM2VpZC5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2OTQ0OiAqIFR3byBzZXBhcmF0ZSBicGZfb2JqX25ldyB3aWxsIGFsc28gaGF2ZSBkaWZmZXJlbnQgcmVnLVx1MDAzZWlkLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTY5NDUtICogRm9yIHRyYWRpdGlvbmFsIFBUUl9UT19NQVBfVkFMVUUgb3IgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQywgdGhlIHZlcmlmaWVyXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY5NTItICogcG9pbnQgdG8gZGlmZmVyZW50IGJwZl9zcGluX2xvY2tzLiBMaWtld2lzZSBmb3IgcG9pbnRlcnMgdG8gYWxsb2NhdGVkIG9iamVjdHNcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2OTUzOiAqIHJldHVybmVkIGZyb20gYnBmX29ial9uZXcuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjk1NC0gKiBUaGUgdmVyaWZpZXIgYWxsb3dzIHRha2luZyBvbmx5IG9uZSBicGZfc3Bpbl9sb2NrIGF0IGEgdGltZSB0byBhdm9pZFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTAwNj1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwMDc6XHRLRl9icGZfb2JqX25ld19pbXBsLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDA4Olx0S0ZfYnBmX29ial9uZXcsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEwMDktXHRLRl9icGZfb2JqX2Ryb3BfaW1wbCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEwNzk9QlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDgwOkJURl9JRChmdW5jLCBicGZfb2JqX25ld19pbXBsKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDgxOkJURl9JRChmdW5jLCBicGZfb2JqX25ldylcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA4Mi1CVEZfSUQoZnVuYywgYnBmX29ial9kcm9wX2ltcGwpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTczPUJURl9JRChmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTc0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTc1OnN0YXRpYyBib29sIGlzX2JwZl9vYmpfbmV3X2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTc2LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE3NzpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE3ODpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld19pbXBsXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE3OS19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNTE0PXN0YXRpYyB2b2lkIHJlZl9jb252ZXJ0X293bmluZ19ub25fb3duaW5nKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHUzMiBpZClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1NzItICogcmVnLVx1MDAzZWlkIGlzIGEgdW5pcXVlIElEIHByZXNlcnZlZCBhZnRlciB0aGUgTlVMTCBwb2ludGVyIGNoZWNrIG9uIHRoZSBwb2ludGVyXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1NzM6ICogcmV0dXJuZWQgZnJvbSBicGZfb2JqX25ldy4gRWFjaCBhbGxvY2F0aW9uIHJlY2VpdmVzIGEgbmV3IHJlZy1cdTAwM2VpZC5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTU3NC0gKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3Mzk9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NDgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI3NDk6XHRpZiAoaXNfYnBmX29ial9uZXdfa2Z1bmMobWV0YS1cdTAwM2VmdW5jX2lkKSB8fCBpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmMobWV0YS1cdTAwM2VmdW5jX2lkKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzUwLVx0XHRzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICpzdHJ1Y3RfbWV0YTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NTMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI3NTQ6XHRcdGlmIChpc19icGZfb2JqX25ld19rZnVuYyhtZXRhLVx1MDAzZWZ1bmNfaWQpIFx1MDAyNlx1MDAyNiAhYnBmX2dsb2JhbF9tYV9zZXQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NTUtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzY2LVx0XHRpZiAoIXJldF9idGYpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjc2NzpcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YnBmX29ial9uZXcvYnBmX3BlcmNwdV9vYmpfbmV3IHJlcXVpcmVzIHByb2cgQlRGXFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc2OC1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NzItXHRcdGlmICghcmV0X3QgfHwgIV9fYnRmX3R5cGVfaXNfc3RydWN0KHJldF90KSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzczOlx0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDticGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0XFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3NC1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NzYtXHRcdGlmIChidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheShyZXRfYnRmLCByZXRfdCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjc3NzpcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcXG5cJiMzNDspO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzc4LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxND1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEzMi1cdFx0aWYgKG1ldGEuYnRmICE9IGJ0Zl92bWxpbnV4IHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMzM6XHRcdCAgICAoIWlzX2JwZl9vYmpfbmV3X2tmdW5jKG1ldGEuZnVuY19pZCkgXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMzQtXHRcdCAgICAgIWlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFx1MDAyNlx1MDAyNlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTU5MD1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYyMTpcdGlmIChpc19icGZfb2JqX25ld19rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpIHx8IGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MjItXHRcdHN0cnVjdCBidGZfc3RydWN0X21ldGEgKmtwdHJfc3RydWN0X21ldGEgPSBlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ua3B0cl9zdHJ1Y3RfbWV0YTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNDAKCQkJCQkJCW91dHB1dDogMTM2CgkJCQkJCQl0aG91Z2h0czogMzQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgYnBmX29ial9uZXdgIGlzIGEga2Z1bmMsIGdvdCBpdC4gVGhlIHByaW1hcnkgY29uZmlnIGRlcGVuZGVuY3kgaXMgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGJ1dCBJIGFsd2F5cyBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLiBMZXQgbWUgc2VlLi4uIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGBsaW5rZWRfbGlzdF9mYWlsLmNgIHNlbGZ0ZXN0LCBqdXN0IHRvIGJlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGdvdGNoYXMuIFllcCwgc2VlbXMgbGlrZSB0aGUgdXN1YWwgc3VzcGVjdHMgYXJlIHJlcXVpcmVkOiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19ERUJVR19JTkZPX0JURmAsIGFuZCBgQ09ORklHX0JQRl9KSVRgLiBPa2F5LCBJIHdpbGwgaW5jbHVkZSBgQlBGX1NZU0NBTExgIGFuZCBgREVCVUdfSU5GT19CVEZgLgoKTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBjaGVja19zcGVjaWFsX2tmdW5jYCBpcyByZWFjaGFibGUuIEFoLCB5ZXMsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBjaGVja19rZnVuY19jYWxsYCwgd2hpY2ggaW4gdHVybiBpcyBwYXJ0IG9mIHRoZSBgZG9fY2hlY2tfaW5zbmAgdmVyaWZpY2F0aW9uIHByb2Nlc3MgZm9yIEJQRiBwcm9ncmFtcy4gTWFrZXMgc2Vuc2UuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGZvciBmbGV4aWJsZSBhcnJheXMgd2l0aGluIGBicGZfb2JqX25ld2AgY2FsbHMuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSwgcmlnaHQ/CgpLZXkgc3ltYm9scyB0byBrZWVwIGluIG1pbmQgaGVyZSBhcmUgYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGFuZCBgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlgLgoKU28sIHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgQlBGIHZlcmlmaWVyLiBJdCB3aWxsIG5vdyByZWplY3QgYGJwZl9vYmpfbmV3YCBjYWxscyB0aGF0IHRyeSB0byBhbGxvY2F0ZSBzdHJ1Y3RzIGNvbnRhaW5pbmcgdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGNvcmUgQlBGIGxvZ2ljIGJlaW5nIHR3ZWFrZWQsIGFuZCBteSBmb2N1cyBzaG91bGQgYmUgb24gZnV6emluZyB0aGlzIGV4dGVuc2l2ZWx5LiBXZSBuZWVkIHRvIGVuc3VyZSBpdCBoYW5kbGVzIHZhcmlvdXMgQlRGIHR5cGVzIGdyYWNlZnVsbHkgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGFueSBzbmVha3kgd2F5cyB0byBieXBhc3MgdGhpcyBuZXcgY2hlY2suCgpSaWdodCwgbGV0JiMzOTtzIGdldCB0aGUgc2V0LXJlc3VsdHMgdG9vbCBydW5uaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19zcGVjaWFsX2tmdW5jJiMzNDssCiAgICAmIzM0O2J0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcmVqZWN0IGBicGZfb2JqX25ld2AgY2FsbHMgdGhhdCBhdHRlbXB0IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgaGFuZGxlcyB2YXJpb3VzIEJURiB0eXBlcyBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGJ5cGFzc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX3NwZWNpYWxfa2Z1bmMmIzM0OywKICAgICYjMzQ7YnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgYGJwZl9vYmpfbmV3YCBjYWxscyB0aGF0IGF0dGVtcHQgdG8gYWxsb2NhdGUgc3RydWN0cyB3aXRoIHRyYWlsaW5nIGZsZXhpYmxlIGFycmF5cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGNvcnJlY3RseSBoYW5kbGVzIHZhcmlvdXMgQlRGIHR5cGVzIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgYnlwYXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDozMC4wMDIxNjQwODZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgzMTE5MzkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19zcGVjaWFsX2tmdW5jXCIsXG4gICAgXCJidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcmVqZWN0IGBicGZfb2JqX25ld2AgY2FsbHMgdGhhdCBhdHRlbXB0IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgaGFuZGxlcyB2YXJpb3VzIEJURiB0eXBlcyBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgYnlwYXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjMwLjAwMjE3MDk2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE3Njc2MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTVjZjdhMGIxMDljZTVjZTVhMDM3ZjhjNmUzYjJiMTQ5YjQxNDkwMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyMiAwNToyMDoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCAyYWJjNzlkYmYyODFjMi4uYzNhNTc0Y2MwZDA5ZmQgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTEwOTU1LDYgKzEwOTU1LDMwIEBAIHN0YXRpYyBib29sIF9fYnRmX3R5cGVfaXNfc2NhbGFyX3N0cnVjdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdClcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlO1xcbitcXHRjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyO1xcbitcXHRjb25zdCBzdHJ1Y3QgYnRmX2FycmF5ICphcnJheTtcXG4rXFx0dTMyIHZsZW47XFxuK1xcbitcXHRpZiAoIWJ0Zl90eXBlX2lzX3N0cnVjdCh0KSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0dmxlbiA9IGJ0Zl90eXBlX3ZsZW4odCk7XFxuK1xcdGlmICghdmxlbilcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0bWVtYmVyID0gYnRmX3R5cGVfbWVtYmVyKHQpICsgdmxlbiAtIDE7XFxuK1xcdG1lbWJlcl90eXBlID0gYnRmX3R5cGVfc2tpcF9tb2RpZmllcnMoYnRmLCBtZW1iZXItXFx1MDAzZXR5cGUsIE5VTEwpO1xcbitcXHRpZiAoIWJ0Zl90eXBlX2lzX2FycmF5KG1lbWJlcl90eXBlKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0YXJyYXkgPSBidGZfYXJyYXkobWVtYmVyX3R5cGUpO1xcbitcXHRyZXR1cm4gIWFycmF5LVxcdTAwM2VuZWxlbXM7XFxuK31cXG4rXFxuIGVudW0ga2Z1bmNfcHRyX2FyZ190eXBlIHtcXG4gXFx0S0ZfQVJHX1BUUl9UT19DVFgsXFxuIFxcdEtGX0FSR19QVFJfVE9fQUxMT0NfQlRGX0lELCAgICAvKiBBbGxvY2F0ZWQgb2JqZWN0ICovXFxuQEAgLTEyNzQ5LDYgKzEyNzczLDEwIEBAIHN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhXFxuIFxcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwiYnBmX29ial9uZXcvYnBmX3BlcmNwdV9vYmpfbmV3IHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBvZiBhIHN0cnVjdFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheShyZXRfYnRmLCByZXRfdCkpIHtcXG4rXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJicGZfb2JqX25ldyB0eXBlIG11c3Qgbm90IGNvbnRhaW4gYSBmbGV4aWJsZSBhcnJheVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAoaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpKSB7XFxuIFxcdFxcdFxcdGlmIChyZXRfdC1cXHUwMDNlc2l6ZSBcXHUwMDNlIEJQRl9HTE9CQUxfUEVSQ1BVX01BX01BWF9TSVpFKSB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9saW5rZWRfbGlzdC5jXFxuaW5kZXggOGRlZmVhMDI1M2VkOWEuLjQ5YzI1MDEzMmI5YjBlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9saW5rZWRfbGlzdC5jXFxuQEAgLTY4LDYgKzY4LDggQEAgc3RhdGljIHN0cnVjdCB7XFxuIFxcdHsgXFxcIm9ial90eXBlX2lkX29vclxcXCIsIFxcXCJsb2NhbCB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgaW4gcmFuZ2UgWzAsIFUzMl9NQVhdXFxcIiB9LFxcbiBcXHR7IFxcXCJvYmpfbmV3X25vX2NvbXBvc2l0ZVxcXCIsIFxcXCJicGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0XFxcIiB9LFxcbiBcXHR7IFxcXCJvYmpfbmV3X25vX3N0cnVjdFxcXCIsIFxcXCJicGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0XFxcIiB9LFxcbitcXHR7IFxcXCJvYmpfbmV3X2ZsZXhfYXJyYXlcXFwiLFxcbitcXHQgIFxcXCJicGZfb2JqX25ldyB0eXBlIG11c3Qgbm90IGNvbnRhaW4gYSBmbGV4aWJsZSBhcnJheVxcXCIgfSxcXG4gXFx0eyBcXFwib2JqX2Ryb3Bfbm9uX3plcm9fb2ZmXFxcIiwgXFxcIlIxIG11c3QgaGF2ZSB6ZXJvIG9mZnNldCB3aGVuIHBhc3NlZCB0byByZWxlYXNlIGZ1bmNcXFwiIH0sXFxuIFxcdHsgXFxcIm5ld19udWxsX3JldFxcXCIsIFxcXCJSMCBpbnZhbGlkIG1lbSBhY2Nlc3MgJ3B0cl9vcl9udWxsXydcXFwiIH0sXFxuIFxcdHsgXFxcIm9ial9uZXdfYWNxXFxcIiwgXFxcIlVucmVsZWFzZWQgcmVmZXJlbmNlIGlkPVxcXCIgfSxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcXG5pbmRleCBkZGQyNmQxYTA4M2Y3Mi4uMDMxZTc3YTI4OGVlYzAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcXG5AQCAtMTY3LDYgKzE2NywxNiBAQCBDSEVDS19PUChwdXNoX2JhY2spO1xcbiAjdW5kZWYgQ0hFQ0tfT1BcXG4gI3VuZGVmIElOSVRcXG4gXFxuK3N0cnVjdCBvYmpfbmV3X2ZsZXhfZWxlbSB7XFxuK1xcdGludCBsbztcXG4rXFx0aW50IGhpO1xcbit9O1xcbitcXG4rc3RydWN0IG9ial9uZXdfZmxleCB7XFxuK1xcdGludCBoZHI7XFxuK1xcdHN0cnVjdCBvYmpfbmV3X2ZsZXhfZWxlbSBjZWxsc1tdO1xcbit9O1xcbitcXG4gU0VDKFxcXCI/a3Byb2JlL3h5elxcXCIpXFxuIGludCBtYXBfY29tcGF0X2twcm9iZSh2b2lkICpjdHgpXFxuIHtcXG5AQCAtMjMwLDYgKzI0MCwxOSBAQCBpbnQgb2JqX25ld19ub19zdHJ1Y3Qodm9pZCAqY3R4KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rU0VDKFxcXCI/dGNcXFwiKVxcbitpbnQgb2JqX25ld19mbGV4X2FycmF5KHZvaWQgKmN0eClcXG4re1xcbitcXHRzdHJ1Y3Qgb2JqX25ld19mbGV4ICpwO1xcbitcXG4rXFx0cCA9IGJwZl9vYmpfbmV3X2ltcGwoYnBmX2NvcmVfdHlwZV9pZF9sb2NhbChzdHJ1Y3Qgb2JqX25ld19mbGV4KSwgTlVMTCk7XFxuK1xcdGlmICghcClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdHAtXFx1MDAzZWNlbGxzWzBdLmhpID0gNDI7XFxuK1xcdGJwZl9vYmpfZHJvcF9pbXBsKHAsIE5VTEwpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gU0VDKFxcXCI/dGNcXFwiKVxcbiBpbnQgb2JqX2Ryb3Bfbm9uX3plcm9fb2ZmKHZvaWQgKmN0eClcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDozMC41MjA2NDUyNjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzEyNzAxNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX3NwZWNpYWxfa2Z1bmNcIixcbiAgICBcImJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgYGJwZl9vYmpfbmV3YCBjYWxscyB0aGF0IGF0dGVtcHQgdG8gYWxsb2NhdGUgc3RydWN0cyB3aXRoIHRyYWlsaW5nIGZsZXhpYmxlIGFycmF5cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGNvcnJlY3RseSBoYW5kbGVzIHZhcmlvdXMgQlRGIHR5cGVzIGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBieXBhc3Nlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNWNmN2EwYjEwOWNlNWNlNWEwMzdmOGM2ZTNiMmIxNDliNDE0OTAwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDU6MjA6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5jM2E1NzRjYzBkMDlmZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTA5NTUsNiArMTA5NTUsMzAgQEAgc3RhdGljIGJvb2wgX19idGZfdHlwZV9pc19zY2FsYXJfc3RydWN0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuK1x0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlO1xuK1x0Y29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm1lbWJlcjtcbitcdGNvbnN0IHN0cnVjdCBidGZfYXJyYXkgKmFycmF5O1xuK1x0dTMyIHZsZW47XG4rXG4rXHRpZiAoIWJ0Zl90eXBlX2lzX3N0cnVjdCh0KSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0dmxlbiA9IGJ0Zl90eXBlX3ZsZW4odCk7XG4rXHRpZiAoIXZsZW4pXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdG1lbWJlciA9IGJ0Zl90eXBlX21lbWJlcih0KSArIHZsZW4gLSAxO1xuK1x0bWVtYmVyX3R5cGUgPSBidGZfdHlwZV9za2lwX21vZGlmaWVycyhidGYsIG1lbWJlci1cdTAwM2V0eXBlLCBOVUxMKTtcbitcdGlmICghYnRmX3R5cGVfaXNfYXJyYXkobWVtYmVyX3R5cGUpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRhcnJheSA9IGJ0Zl9hcnJheShtZW1iZXJfdHlwZSk7XG4rXHRyZXR1cm4gIWFycmF5LVx1MDAzZW5lbGVtcztcbit9XG4rXG4gZW51bSBrZnVuY19wdHJfYXJnX3R5cGUge1xuIFx0S0ZfQVJHX1BUUl9UT19DVFgsXG4gXHRLRl9BUkdfUFRSX1RPX0FMTE9DX0JURl9JRCwgICAgLyogQWxsb2NhdGVkIG9iamVjdCAqL1xuQEAgLTEyNzQ5LDYgKzEyNzczLDEwIEBAIHN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhXG4gXHRcdFx0dmVyYm9zZShlbnYsIFwiYnBmX29ial9uZXcvYnBmX3BlcmNwdV9vYmpfbmV3IHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBvZiBhIHN0cnVjdFxcblwiKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuK1x0XHRpZiAoYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkocmV0X2J0ZiwgcmV0X3QpKSB7XG4rXHRcdFx0dmVyYm9zZShlbnYsIFwiYnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcXG5cIik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbiBcbiBcdFx0aWYgKGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLVx1MDAzZWZ1bmNfaWQpKSB7XG4gXHRcdFx0aWYgKHJldF90LVx1MDAzZXNpemUgXHUwMDNlIEJQRl9HTE9CQUxfUEVSQ1BVX01BX01BWF9TSVpFKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmNcbmluZGV4IDhkZWZlYTAyNTNlZDlhLi40OWMyNTAxMzJiOWIwZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmNcbkBAIC02OCw2ICs2OCw4IEBAIHN0YXRpYyBzdHJ1Y3Qge1xuIFx0eyBcIm9ial90eXBlX2lkX29vclwiLCBcImxvY2FsIHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBpbiByYW5nZSBbMCwgVTMyX01BWF1cIiB9LFxuIFx0eyBcIm9ial9uZXdfbm9fY29tcG9zaXRlXCIsIFwiYnBmX29ial9uZXcvYnBmX3BlcmNwdV9vYmpfbmV3IHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBvZiBhIHN0cnVjdFwiIH0sXG4gXHR7IFwib2JqX25ld19ub19zdHJ1Y3RcIiwgXCJicGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0XCIgfSxcbitcdHsgXCJvYmpfbmV3X2ZsZXhfYXJyYXlcIixcbitcdCAgXCJicGZfb2JqX25ldyB0eXBlIG11c3Qgbm90IGNvbnRhaW4gYSBmbGV4aWJsZSBhcnJheVwiIH0sXG4gXHR7IFwib2JqX2Ryb3Bfbm9uX3plcm9fb2ZmXCIsIFwiUjEgbXVzdCBoYXZlIHplcm8gb2Zmc2V0IHdoZW4gcGFzc2VkIHRvIHJlbGVhc2UgZnVuY1wiIH0sXG4gXHR7IFwibmV3X251bGxfcmV0XCIsIFwiUjAgaW52YWxpZCBtZW0gYWNjZXNzICdwdHJfb3JfbnVsbF8nXCIgfSxcbiBcdHsgXCJvYmpfbmV3X2FjcVwiLCBcIlVucmVsZWFzZWQgcmVmZXJlbmNlIGlkPVwiIH0sXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcbmluZGV4IGRkZDI2ZDFhMDgzZjcyLi4wMzFlNzdhMjg4ZWVjMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcbkBAIC0xNjcsNiArMTY3LDE2IEBAIENIRUNLX09QKHB1c2hfYmFjayk7XG4gI3VuZGVmIENIRUNLX09QXG4gI3VuZGVmIElOSVRcbiBcbitzdHJ1Y3Qgb2JqX25ld19mbGV4X2VsZW0ge1xuK1x0aW50IGxvO1xuK1x0aW50IGhpO1xuK307XG4rXG4rc3RydWN0IG9ial9uZXdfZmxleCB7XG4rXHRpbnQgaGRyO1xuK1x0c3RydWN0IG9ial9uZXdfZmxleF9lbGVtIGNlbGxzW107XG4rfTtcbitcbiBTRUMoXCI/a3Byb2JlL3h5elwiKVxuIGludCBtYXBfY29tcGF0X2twcm9iZSh2b2lkICpjdHgpXG4ge1xuQEAgLTIzMCw2ICsyNDAsMTkgQEAgaW50IG9ial9uZXdfbm9fc3RydWN0KHZvaWQgKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbitTRUMoXCI/dGNcIilcbitpbnQgb2JqX25ld19mbGV4X2FycmF5KHZvaWQgKmN0eClcbit7XG4rXHRzdHJ1Y3Qgb2JqX25ld19mbGV4ICpwO1xuK1xuK1x0cCA9IGJwZl9vYmpfbmV3X2ltcGwoYnBmX2NvcmVfdHlwZV9pZF9sb2NhbChzdHJ1Y3Qgb2JqX25ld19mbGV4KSwgTlVMTCk7XG4rXHRpZiAoIXApXG4rXHRcdHJldHVybiAwO1xuK1x0cC1cdTAwM2VjZWxsc1swXS5oaSA9IDQyO1xuK1x0YnBmX29ial9kcm9wX2ltcGwocCwgTlVMTCk7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gU0VDKFwiP3RjXCIpXG4gaW50IG9ial9kcm9wX25vbl96ZXJvX29mZih2b2lkICpjdHgpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDU6MjA6MzAuNTIwNjQ3MzE1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2MTczNTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXcgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uZSwgcmVhbGx5LiBJdCBzZWVtcyB0byBiZSBwcmV2ZW50aW5nIGBicGZfb2JqX25ld2AgZnJvbSBhbGxvY2F0aW5nIHN0cnVjdHMgdGhhdCBoYXZlIHRyYWlsaW5nIGZsZXhpYmxlIGFycmF5cy4gVGhlIGNvcmUgb2YgdGhpcyBmdW5jdGlvbmFsaXR5IGxpZXMgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkndmUgYWRkZWQgYSBmdW5jdGlvbiBjYWxsZWQgYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YCBhbmQgaW5jb3Jwb3JhdGVkIGl0IGludG8gdGhlIGBjaGVja19zcGVjaWFsX2tmdW5jYCBmdW5jdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBCUEYgdmVyaWZpZXIsIHdoaWNoLCBpbiBteSBleHBlcmllbmNlLCBzY3JlYW1zIFwibmVlZHMgZnV6emluZy5cIiBHb3R0YSBtYWtlIHN1cmUgdGhpcyBhZGRpdGlvbiBkb2VzbuKAmXQgaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbk5vdywgbGV0J3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYW5kIHN5bWJvbHMuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgZ2l2ZW4sIG9mIGNvdXJzZTsgdGhpcyBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0cyB0aGUgQlBGIHN5c2NhbGwgcGF0aC4gRm9yIHRoZSBrZXkgc3ltYm9scywgSSdtIHRoaW5raW5nIGBjaGVja19zcGVjaWFsX2tmdW5jYCBhbmQgYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YCBhcmUgdGhlIG1haW4gcG9pbnRzIHRvIGZvY3VzIG9uLiBXYWl0IGEgc2Vjb25kLCB0aGUgc2Vjb25kIGZ1bmN0aW9uIGlzIHN0YXRpYy4gU28sIGl0IG1heSBiZSBiZXR0ZXIgdG8ganVzdCBjb25jZW50cmF0ZSBvbiBgY2hlY2tfc3BlY2lhbF9rZnVuY2AuXG5cbkFscmlnaHQsIEknbGwgZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGBjaGVja19zcGVjaWFsX2tmdW5jYC4gU2VlIHdoYXQgb3RoZXIgcmVsYXRlZCBhcmVhcyBuZWVkIGNhcmVmdWwgY29uc2lkZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjM1LjE4MjM4NDc0MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODg1NDkyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19zcGVjaWFsX2tmdW5jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI2NzQ9czY0IGJwZl9rZnVuY19zdGFja19hY2Nlc3NfYnl0ZXMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM4LSAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjczOTpzdGF0aWMgaW50IGNoZWNrX3NwZWNpYWxfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc0MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZ3MsIHN0cnVjdCBicGZfaW5zbl9hdXhfZGF0YSAqaW5zbl9hdXgsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI5MTQ9c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE0OC1cXHRcXHRwdHJfdHlwZSA9IGJ0Zl90eXBlX3NraXBfbW9kaWZpZXJzKGRlc2NfYnRmLCB0LVxcdTAwM2V0eXBlLCBcXHUwMDI2cHRyX3R5cGVfaWQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzE0OTpcXHRcXHRlcnIgPSBjaGVja19zcGVjaWFsX2tmdW5jKGVudiwgXFx1MDAyNm1ldGEsIHJlZ3MsIGluc25fYXV4LCBwdHJfdHlwZSwgZGVzY19idGYpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE1MC1cXHRcXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjM1LjI0MTI0NDc2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjc5NDgzNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgRnVuY3Rpb24gQ2FsbCBWZXJpZmljYXRpb24gRmxvdyoqXG5cblJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGFuZCBgY2hlY2tfa2Z1bmNfY2FsbGAuIEl0IGxvb2tzIGxpa2UgdGhlIHZlcmlmaWNhdGlvbiBsb2dpYyBmb3Igc3BlY2lhbCBrZXJuZWwgZnVuY3Rpb25zIGlzIGJlaW5nIGludm9rZWQgZnJvbSB0aGUgYnJvYWRlciBrZXJuZWwgZnVuY3Rpb24gY2FsbCB2ZXJpZmljYXRpb24gcHJvY2Vzcy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb2RlIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyBmaWxlIGFsbW9zdCBjZXJ0YWlubHkgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyB0aGVzZSBzcGVjaWFsIGtlcm5lbCBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5J3JlIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gc3RyYXRlZ3kuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZXNlIGZ1bmN0aW9ucy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMsIHNlY3VyaXR5IGNoZWNrcywgYW5kIGxpbWl0YXRpb25zIGltcG9zZWQgZHVyaW5nIHByb2dyYW0gdmVyaWZpY2F0aW9uLiBJIG5lZWQgdG8gYmUgcHJlcGFyZWQgZm9yIHBvdGVudGlhbGx5IGNvbXBsZXggaW50ZXJhY3Rpb24uIExldCdzIHNlZSBob3cgYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDU6MjA6MzguMzA5MTk1Mjc5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjExMzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTI9b2JqLXkgOj0gY29yZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTozOmlmbmVxICgkKENPTkZJR19CUEZfSklUX0FMV0FZU19PTikseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTU6b2JqLSR7Q09ORklHX0JQRl9MU019XFx0ICArPSBicGZfaW5vZGVfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRpc2FzbS5vIG1wcm9nLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSArPSB0cmFtcG9saW5lLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGRpc3BhdGNoZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjMtaWZlcSAoJChDT05GSUdfTkVUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkZXZtYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjcHVtYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBvZmZsb2FkLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbmV0X25hbWVzcGFjZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHRjeC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yOS1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzA9aWZlcSAoJChDT05GSUdfUEVSRl9FVkVOVFMpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN0YWNrbWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT0zMz1pZmVxICgkKENPTkZJR19DR1JPVVBTKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjZ3JvdXBfaXRlci5vIGJwZl9jZ3JwX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzUtZW5kaWZcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Mzc9aWZlcSAoJChDT05GSUdfSU5FVCkseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gcmV1c2Vwb3J0X2FycmF5Lm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM5LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTQyPWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0MzppZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfc3RydWN0X29wcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hc2sub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTU1LSMgc2VtYW50aWNzIHdpdGhpbiBwYWhvbGUgYXJlIHJldmlzaXRlZCBhY2NvcmRpbmdseS5cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU2Om9iai0ke0NPTkZJR19CUEZfTFNNfSArPSBicGZfbHNtX3Byb3RvLm8gYnBmX2xzbS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS01Ny1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NTg9aWZuZXEgKCQoQ09ORklHX0NSWVBUTyksKVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjcnlwdG8ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjAtZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgKz0gcHJlbG9hZC9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSByZWxvX2NvcmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGZfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zl9yZWxvY2F0ZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGttZW1fY2FjaGVfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS02Ny1pZmVxICgkKENPTkZJR19ETUFfU0hBUkVEX0JVRkZFUikseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZG1hYnVmX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjktZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDU6MjA6MzguMzY1ODEyNDI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyNzcyNzU4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIEtmdW5jIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0IGludm9sdmVzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGRpZyBpbnRvIGBjaGVja19zcGVjaWFsX2tmdW5jYCwgYXMgaXQgc2VlbXMgcmVsZXZhbnQuIEhhbmcgb24sIHRoYXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gTm8gcHJvYmxlbSwgU3l6a2FsbGVyICpjYW4qIGhhbmRsZSB0aG9zZSBhcyBsb25nIGFzIHRoZXkncmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSXQncyBnb29kIHRvIGtub3cgdGhhdCBJJ20gYWJsZSB0byB0YXJnZXQgdGhlbSwgYnV0IG1heWJlIHRoZXJlJ3MgYSBiZXR0ZXIgc3RhcnRpbmcgcG9pbnQ/XG5cbk5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIHdvdWxkbid0IGBjaGVja19rZnVuY19jYWxsYCBiZSBhIG1vcmUgc3RyYXRlZ2ljIHBsYWNlIHRvIHN0YXJ0PyBIbW0sIGl0J3MgKmFsc28qIHN0YXRpYy4gQWxyaWdodCwgbm8gbWF0dGVyLCBpdCdzIHN0aWxsIGFjY2Vzc2libGUuIExldCdzIGhlYWQgb3ZlciB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBleGFtaW5lIGBjaGVja19rZnVuY19jYWxsYCBhbmQgc2VlIHdoYXQgaW5zaWdodHMgaXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc2NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDo0Mi4yOTM1NDIzNzhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5Njg2NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2tmdW5jX2NhbGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz03MjI0PXN0YXRpYyBpbnQgcHJvY2Vzc19keW5wdHJfZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTcyOTgtXFx0XFx0XFx0ICogRm9yIENPTlNUX1BUUl9UT19EWU5QVFIsIHJlZyBpcyBhbHJlYWR5IHNjcmF0Y2hlZCBieSBjaGVja19yZWdfYXJnXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjcyOTk6XFx0XFx0XFx0ICogaW4gY2hlY2tfaGVscGVyX2NhbGwgYW5kIG1hcmtfYnRmX2Z1bmNfcmVnX3NpemUgaW4gY2hlY2tfa2Z1bmNfY2FsbC5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzMwMC1cXHRcXHRcXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxMj1zdGF0aWMgaW50IGNoZWNrX3JldHVybl9jb2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCByZWdubywgY29uc3QgY2hhciAqcmVnX25hbWUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjkxMy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5MTQ6c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MTUtXFx0XFx0XFx0ICAgIGludCAqaW5zbl9pZHhfcClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzIzNj1zdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTczMDQtXFx0XFx0XFx0aWYgKGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzMwNTpcXHRcXHRcXHRcXHRyZXR1cm4gY2hlY2tfa2Z1bmNfY2FsbChlbnYsIGluc24sIFxcdTAwMjZlbnYtXFx1MDAzZWluc25faWR4KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTczMDYtXFx0XFx0XFx0cmV0dXJuIGNoZWNrX2hlbHBlcl9jYWxsKGVudiwgaW5zbiwgXFx1MDAyNmVudi1cXHUwMDNlaW5zbl9pZHgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDo0Mi41NDMyMzYxNjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODkzNDM0MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGlzIGxvZ2ljIGFuZCBpdCBsb29rcyBsaWtlIGBjaGVja19rZnVuY19jYWxsYCBpcyB0cmlnZ2VyZWQgYnkgYGRvX2NoZWNrX2luc25gLiBGcm9tIHRoZXJlLCBpdCBkaXZlcyBpbnRvIGBjaGVja19zcGVjaWFsX2tmdW5jYC4gSG1tLCBpbnRlcmVzdGluZy4gTGV0J3MgbWFrZSBgY2hlY2tfc3BlY2lhbF9rZnVuY2AgdGhlIHByaW1hcnkgZm9jdXMgZm9yIG5vdywgc2VlIHdoZXJlIHRoYXQgbGVhZHMuXG5cbldhaXQsIGFyZSB0aGVyZSBhbnkgb3RoZXIgc2ltaWxhciBmdW5jdGlvbnM/IEFoLCB5ZXMsIGBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheWAuIFRoYXQncyBhIHN0YXRpYyBvbmUsIGFuZCByZWxhdGl2ZWx5IHJlY2VudCwgc28gaXQncyBwcm9iYWJseSB3b3J0aCBhZGRpbmcgdG8gdGhlIHNldCBvZiBmb2N1cyBzeW1ib2xzIGFzIHdlbGwuXG5cblJpZ2h0LCB0aW1lIHRvIGdvIHNwZWx1bmtpbmcgaW4gdGhlIGNvZGUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTUyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjQ2LjQzNjY3OTAwNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0MTc2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDkxOT1zdGF0aWMgYm9vbCBfX2J0Zl90eXBlX2lzX3NjYWxhcl9zdHJ1Y3Qoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk1Ny1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5NTg6c3RhdGljIGJvb2wgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk1OS1cXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjczOT1zdGF0aWMgaW50IGNoZWNrX3NwZWNpYWxfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzc1LVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI3NzY6XFx0XFx0aWYgKGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5KHJldF9idGYsIHJldF90KSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3Ny1cXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImJwZl9vYmpfbmV3IHR5cGUgbXVzdCBub3QgY29udGFpbiBhIGZsZXhpYmxlIGFycmF5XFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDU6MjA6NDYuNDkyMTA2NjMyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDY4NDQ1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gQlBGIFZlcmlmaWNhdGlvbiBmb3IgVHJhaWxpbmcgRmxleGlibGUgQXJyYXlzKipcblxuT2theSwgc28gYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YCBhbmQgYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGFyZSBzb2xpZCBzdGFydGluZyBwb2ludHMgZm9yIGZ1enppbmcuIFRoZXkgZGlyZWN0bHkgcmVsYXRlIHRvIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaDogdGhlIEJQRiB2ZXJpZmllcidzIHJlamVjdGlvbiBvZiBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgdHJ5IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0aG9zZSB0cmFpbGluZyBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb25lLCByZWFsbHksIHRvIHRoZSBCUEYgY29yZSBsb2dpYy4gVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGJlaGF2aW9yIGlzIHJvYnVzdC4gSSBuZWVkIHRvIGVuc3VyZSBpdCBoYW5kbGVzIGFsbCB0aGUgZGlmZmVyZW50IEJURiB0eXBlcyBjb3JyZWN0bHksIGFuZCBpbXBvcnRhbnRseSwgdGhhdCBpdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgYWxsb3cgZm9yIGFueSBieXBhc3Nlcy4gRnV6emluZyBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBhcHByb2FjaCBoZXJlLlxuXG5Ob3csIGxldCdzIGp1c3QgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgYW5kIGNvbmZpcm0gdGhlcmUgYXJlbuKAmXQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIFRoZSBrZXkgb25lIGFwcGVhcnMgdG8gYmUgYEJQRl9TWVNDQUxMYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBjb25zaWRlciBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCwgc2luY2UgYGJwZl9vYmpfbmV3YCByZWxpZXMgb24gQlRGLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgYENPTkZJR19ERUJVR19JTkZPX0JURmAgaXMgcmVxdWlyZWQgaW4gdGhlIGBicGZfb2JqX25ld2AgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJ4oCZbSBjb3ZlcmluZyBhbGwgdGhlIGRlcGVuZGVuY2llcyBpbiBteSBmdXp6aW5nIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjUxLjEzODk1MzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzI1ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9vYmpfbmV3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYnRmLmM9MzkxMD1zdGF0aWMgaW50IGJ0Zl9wYXJzZV9rcHRyKGNvbnN0IHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJ0Zl9maWVsZCAqZmllbGQsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzItXFx0XFx0LyogVHlwZSBleGlzdHMgb25seSBpbiBwcm9ncmFtIEJURi4gQXNzdW1lIHRoYXQgaXQncyBhIE1FTV9BTExPQ1xcbmtlcm5lbC9icGYvYnRmLmM6MzkzMzpcXHRcXHQgKiBrcHRyIGFsbG9jYXRlZCB2aWEgYnBmX29ial9uZXdcXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzQtXFx0XFx0ICovXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0yMzM2PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzMzgtLyoqXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjMzOTogKiBicGZfb2JqX25ldygpIC0gYWxsb2NhdGUgYW4gb2JqZWN0IGRlc2NyaWJlZCBieSBwcm9ncmFtIEJURlxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNDAtICogQGxvY2FsX3R5cGVfaWRfX2s6IHR5cGUgSUQgaW4gcHJvZ3JhbSBCVEZcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNDktICovXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM1MDpfX2JwZl9rZnVuYyB2b2lkICpicGZfb2JqX25ldyh1NjQgbG9jYWxfdHlwZV9pZF9faywgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMzUxLXtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNjMtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM2NDpfX2JwZl9rZnVuYyB2b2lkICpicGZfb2JqX25ld19pbXBsKHU2NCBsb2NhbF90eXBlX2lkX19rLCB2b2lkICptZXRhX19pZ24pXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjM2NS17XFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM2NjpcXHRyZXR1cm4gYnBmX29ial9uZXcobG9jYWxfdHlwZV9pZF9faywgbWV0YV9faWduKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMzY3LX1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGNyYXNoX2tleGVjLCBLRl9ERVNUUlVDVElWRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODA1LSNlbmRpZlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDc6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODA4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9uZXcsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX0lNUExJQ0lUX0FSR1MpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjkzND1lbnVtIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02OTQxLSAqIGJwZl9tYXBfbG9va3VwIHJldHVybnMgUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2OTQyOiAqIGJwZl9vYmpfbmV3IHJldHVybnMgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IFBUUl9NQVlCRV9OVUxMLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02OTQzLSAqIFR3byBicGZfbWFwX2xvb2t1cHMgKGV2ZW4gd2l0aCB0aGUgc2FtZSBrZXkpIHdpbGwgaGF2ZSBkaWZmZXJlbnQgcmVnLVxcdTAwM2VpZC5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Njk0NDogKiBUd28gc2VwYXJhdGUgYnBmX29ial9uZXcgd2lsbCBhbHNvIGhhdmUgZGlmZmVyZW50IHJlZy1cXHUwMDNlaWQuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY5NDUtICogRm9yIHRyYWRpdGlvbmFsIFBUUl9UT19NQVBfVkFMVUUgb3IgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQywgdGhlIHZlcmlmaWVyXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjk1Mi0gKiBwb2ludCB0byBkaWZmZXJlbnQgYnBmX3NwaW5fbG9ja3MuIExpa2V3aXNlIGZvciBwb2ludGVycyB0byBhbGxvY2F0ZWQgb2JqZWN0c1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2OTUzOiAqIHJldHVybmVkIGZyb20gYnBmX29ial9uZXcuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY5NTQtICogVGhlIHZlcmlmaWVyIGFsbG93cyB0YWtpbmcgb25seSBvbmUgYnBmX3NwaW5fbG9jayBhdCBhIHRpbWUgdG8gYXZvaWRcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTAwNj1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDA3OlxcdEtGX2JwZl9vYmpfbmV3X2ltcGwsXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDA4OlxcdEtGX2JwZl9vYmpfbmV3LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTAwOS1cXHRLRl9icGZfb2JqX2Ryb3BfaW1wbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTA3OT1CVEZfSURfTElTVChzcGVjaWFsX2tmdW5jX2xpc3QpXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDgwOkJURl9JRChmdW5jLCBicGZfb2JqX25ld19pbXBsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTA4MTpCVEZfSUQoZnVuYywgYnBmX29ial9uZXcpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDgyLUJURl9JRChmdW5jLCBicGZfb2JqX2Ryb3BfaW1wbClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE3Mz1CVEZfSUQoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaylcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExNzQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTc1OnN0YXRpYyBib29sIGlzX2JwZl9vYmpfbmV3X2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE3Ni17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTc3OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExNzg6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9vYmpfbmV3X2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE3OS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE1MTQ9c3RhdGljIHZvaWQgcmVmX2NvbnZlcnRfb3duaW5nX25vbl9vd25pbmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGlkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTcyLSAqIHJlZy1cXHUwMDNlaWQgaXMgYSB1bmlxdWUgSUQgcHJlc2VydmVkIGFmdGVyIHRoZSBOVUxMIHBvaW50ZXIgY2hlY2sgb24gdGhlIHBvaW50ZXJcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1NzM6ICogcmV0dXJuZWQgZnJvbSBicGZfb2JqX25ldy4gRWFjaCBhbGxvY2F0aW9uIHJlY2VpdmVzIGEgbmV3IHJlZy1cXHUwMDNlaWQuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTc0LSAqL1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzM5PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NDgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzQ5OlxcdGlmIChpc19icGZfb2JqX25ld19rZnVuYyhtZXRhLVxcdTAwM2VmdW5jX2lkKSB8fCBpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmMobWV0YS1cXHUwMDNlZnVuY19pZCkpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NTAtXFx0XFx0c3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqc3RydWN0X21ldGE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NTMtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzU0OlxcdFxcdGlmIChpc19icGZfb2JqX25ld19rZnVuYyhtZXRhLVxcdTAwM2VmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNiAhYnBmX2dsb2JhbF9tYV9zZXQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzU1LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzY2LVxcdFxcdGlmICghcmV0X2J0Zikge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjc2NzpcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImJwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyByZXF1aXJlcyBwcm9nIEJURlxcXFxuXFxcIik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzY4LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzcyLVxcdFxcdGlmICghcmV0X3QgfHwgIV9fYnRmX3R5cGVfaXNfc3RydWN0KHJldF90KSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjc3MzpcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImJwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcXFxcblxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3NC1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3Ni1cXHRcXHRpZiAoYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkocmV0X2J0ZiwgcmV0X3QpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzc3OlxcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwiYnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcXFxcblxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3OC1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxND1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTMyLVxcdFxcdGlmIChtZXRhLmJ0ZiAhPSBidGZfdm1saW51eCB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzEzMzpcXHRcXHQgICAgKCFpc19icGZfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTM0LVxcdFxcdCAgICAgIWlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1OTA9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2MjE6XFx0aWYgKGlzX2JwZl9vYmpfbmV3X2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpIHx8IGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cXHRcXHRzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICprcHRyX3N0cnVjdF9tZXRhID0gZW52LVxcdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5rcHRyX3N0cnVjdF9tZXRhO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDo1MS4xOTYyODY1OTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU1MzQ5NDk3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBicGZfb2JqX25ld2AgaXMgYSBrZnVuYywgZ290IGl0LiBUaGUgcHJpbWFyeSBjb25maWcgZGVwZW5kZW5jeSBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IEkgYWx3YXlzIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MuIExldCBtZSBzZWUuLi4gSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgbGlua2VkX2xpc3RfZmFpbC5jYCBzZWxmdGVzdCwganVzdCB0byBiZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBnb3RjaGFzLiBZZXAsIHNlZW1zIGxpa2UgdGhlIHVzdWFsIHN1c3BlY3RzIGFyZSByZXF1aXJlZDogYENPTkZJR19CUEZfU1lTQ0FMTGAsIGBDT05GSUdfREVCVUdfSU5GT19CVEZgLCBhbmQgYENPTkZJR19CUEZfSklUYC4gT2theSwgSSB3aWxsIGluY2x1ZGUgYEJQRl9TWVNDQUxMYCBhbmQgYERFQlVHX0lORk9fQlRGYC5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBjaGVja19zcGVjaWFsX2tmdW5jYCBpcyByZWFjaGFibGUuIEFoLCB5ZXMsIGl0J3MgY2FsbGVkIGZyb20gYGNoZWNrX2tmdW5jX2NhbGxgLCB3aGljaCBpbiB0dXJuIGlzIHBhcnQgb2YgdGhlIGBkb19jaGVja19pbnNuYCB2ZXJpZmljYXRpb24gcHJvY2VzcyBmb3IgQlBGIHByb2dyYW1zLiBNYWtlcyBzZW5zZS4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGZsZXhpYmxlIGFycmF5cyB3aXRoaW4gYGJwZl9vYmpfbmV3YCBjYWxscy4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCByaWdodD9cblxuS2V5IHN5bWJvbHMgdG8ga2VlcCBpbiBtaW5kIGhlcmUgYXJlIGBjaGVja19zcGVjaWFsX2tmdW5jYCBhbmQgYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YC5cblxuU28sIHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgQlBGIHZlcmlmaWVyLiBJdCB3aWxsIG5vdyByZWplY3QgYGJwZl9vYmpfbmV3YCBjYWxscyB0aGF0IHRyeSB0byBhbGxvY2F0ZSBzdHJ1Y3RzIGNvbnRhaW5pbmcgdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGNvcmUgQlBGIGxvZ2ljIGJlaW5nIHR3ZWFrZWQsIGFuZCBteSBmb2N1cyBzaG91bGQgYmUgb24gZnV6emluZyB0aGlzIGV4dGVuc2l2ZWx5LiBXZSBuZWVkIHRvIGVuc3VyZSBpdCBoYW5kbGVzIHZhcmlvdXMgQlRGIHR5cGVzIGdyYWNlZnVsbHkgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGFueSBzbmVha3kgd2F5cyB0byBieXBhc3MgdGhpcyBuZXcgY2hlY2suXG5cblJpZ2h0LCBsZXQncyBnZXQgdGhlIHNldC1yZXN1bHRzIHRvb2wgcnVubmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNDAsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjU3Ljc0OTc4MzYzOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTU5Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19zcGVjaWFsX2tmdW5jXCIsXG4gICAgXCJidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcmVqZWN0IGBicGZfb2JqX25ld2AgY2FsbHMgdGhhdCBhdHRlbXB0IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgaGFuZGxlcyB2YXJpb3VzIEJURiB0eXBlcyBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgYnlwYXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfc3BlY2lhbF9rZnVuY1wiLFxuICAgIFwiYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgYXR0ZW1wdCB0byBhbGxvY2F0ZSBzdHJ1Y3RzIHdpdGggdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBCVEYgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGJ5cGFzc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowd7br5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 05:13:56 +0000 UTC FinishedAt: 2026-06-22 05:20:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "7d1194d7-b675-41b2-898d-60c062a83b72" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_special_kfunc", "btf_type_has_trailing_flex_array" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfc3BlY2lhbF9rZnVuYyYjMzQ7LAogICAgJiMzNDtidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgYXR0ZW1wdCB0byBhbGxvY2F0ZSBzdHJ1Y3RzIHdpdGggdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBCVEYgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBieXBhc3Nlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE1Y2Y3YTBiMTA5Y2U1Y2U1YTAzN2Y4YzZlM2IyYjE0OWI0MTQ5MDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAwNToyMDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5jM2E1NzRjYzBkMDlmZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTA5NTUsNiAmIzQzOzEwOTU1LDMwIEBAIHN0YXRpYyBib29sIF9fYnRmX3R5cGVfaXNfc2NhbGFyX3N0cnVjdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheShjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4mIzQzO1x0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdClcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqbWVtYmVyX3R5cGU7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm1lbWJlcjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgYnRmX2FycmF5ICphcnJheTtcbiYjNDM7XHR1MzIgdmxlbjtcbiYjNDM7XG4mIzQzO1x0aWYgKCFidGZfdHlwZV9pc19zdHJ1Y3QodCkpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHZsZW4gPSBidGZfdHlwZV92bGVuKHQpO1xuJiM0MztcdGlmICghdmxlbilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0bWVtYmVyID0gYnRmX3R5cGVfbWVtYmVyKHQpICYjNDM7IHZsZW4gLSAxO1xuJiM0MztcdG1lbWJlcl90eXBlID0gYnRmX3R5cGVfc2tpcF9tb2RpZmllcnMoYnRmLCBtZW1iZXItXHUwMDNldHlwZSwgTlVMTCk7XG4mIzQzO1x0aWYgKCFidGZfdHlwZV9pc19hcnJheShtZW1iZXJfdHlwZSkpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGFycmF5ID0gYnRmX2FycmF5KG1lbWJlcl90eXBlKTtcbiYjNDM7XHRyZXR1cm4gIWFycmF5LVx1MDAzZW5lbGVtcztcbiYjNDM7fVxuJiM0MztcbiBlbnVtIGtmdW5jX3B0cl9hcmdfdHlwZSB7XG4gXHRLRl9BUkdfUFRSX1RPX0NUWCxcbiBcdEtGX0FSR19QVFJfVE9fQUxMT0NfQlRGX0lELCAgICAvKiBBbGxvY2F0ZWQgb2JqZWN0ICovXG5AQCAtMTI3NDksNiAmIzQzOzEyNzczLDEwIEBAIHN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhXG4gXHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0O2JwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcXG5cJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAoYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkocmV0X2J0ZiwgcmV0X3QpKSB7XG4mIzQzO1x0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDticGZfb2JqX25ldyB0eXBlIG11c3Qgbm90IGNvbnRhaW4gYSBmbGV4aWJsZSBhcnJheVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRpZiAoaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkpIHtcbiBcdFx0XHRpZiAocmV0X3QtXHUwMDNlc2l6ZSBcdTAwM2UgQlBGX0dMT0JBTF9QRVJDUFVfTUFfTUFYX1NJWkUpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9saW5rZWRfbGlzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuY1xuaW5kZXggOGRlZmVhMDI1M2VkOWEuLjQ5YzI1MDEzMmI5YjBlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuY1xuQEAgLTY4LDYgJiM0Mzs2OCw4IEBAIHN0YXRpYyBzdHJ1Y3Qge1xuIFx0eyBcJiMzNDtvYmpfdHlwZV9pZF9vb3JcJiMzNDssIFwmIzM0O2xvY2FsIHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBpbiByYW5nZSBbMCwgVTMyX01BWF1cJiMzNDsgfSxcbiBcdHsgXCYjMzQ7b2JqX25ld19ub19jb21wb3NpdGVcJiMzNDssIFwmIzM0O2JwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcJiMzNDsgfSxcbiBcdHsgXCYjMzQ7b2JqX25ld19ub19zdHJ1Y3RcJiMzNDssIFwmIzM0O2JwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcJiMzNDsgfSxcbiYjNDM7XHR7IFwmIzM0O29ial9uZXdfZmxleF9hcnJheVwmIzM0OyxcbiYjNDM7XHQgIFwmIzM0O2JwZl9vYmpfbmV3IHR5cGUgbXVzdCBub3QgY29udGFpbiBhIGZsZXhpYmxlIGFycmF5XCYjMzQ7IH0sXG4gXHR7IFwmIzM0O29ial9kcm9wX25vbl96ZXJvX29mZlwmIzM0OywgXCYjMzQ7UjEgbXVzdCBoYXZlIHplcm8gb2Zmc2V0IHdoZW4gcGFzc2VkIHRvIHJlbGVhc2UgZnVuY1wmIzM0OyB9LFxuIFx0eyBcJiMzNDtuZXdfbnVsbF9yZXRcJiMzNDssIFwmIzM0O1IwIGludmFsaWQgbWVtIGFjY2VzcyAmIzM5O3B0cl9vcl9udWxsXyYjMzk7XCYjMzQ7IH0sXG4gXHR7IFwmIzM0O29ial9uZXdfYWNxXCYjMzQ7LCBcJiMzNDtVbnJlbGVhc2VkIHJlZmVyZW5jZSBpZD1cJiMzNDsgfSxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbGlua2VkX2xpc3RfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuY1xuaW5kZXggZGRkMjZkMWEwODNmNzIuLjAzMWU3N2EyODhlZWMwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuY1xuQEAgLTE2Nyw2ICYjNDM7MTY3LDE2IEBAIENIRUNLX09QKHB1c2hfYmFjayk7XG4gI3VuZGVmIENIRUNLX09QXG4gI3VuZGVmIElOSVRcbiBcbiYjNDM7c3RydWN0IG9ial9uZXdfZmxleF9lbGVtIHtcbiYjNDM7XHRpbnQgbG87XG4mIzQzO1x0aW50IGhpO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IG9ial9uZXdfZmxleCB7XG4mIzQzO1x0aW50IGhkcjtcbiYjNDM7XHRzdHJ1Y3Qgb2JqX25ld19mbGV4X2VsZW0gY2VsbHNbXTtcbiYjNDM7fTtcbiYjNDM7XG4gU0VDKFwmIzM0Oz9rcHJvYmUveHl6XCYjMzQ7KVxuIGludCBtYXBfY29tcGF0X2twcm9iZSh2b2lkICpjdHgpXG4ge1xuQEAgLTIzMCw2ICYjNDM7MjQwLDE5IEBAIGludCBvYmpfbmV3X25vX3N0cnVjdCh2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDs/dGNcJiMzNDspXG4mIzQzO2ludCBvYmpfbmV3X2ZsZXhfYXJyYXkodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG9ial9uZXdfZmxleCAqcDtcbiYjNDM7XG4mIzQzO1x0cCA9IGJwZl9vYmpfbmV3X2ltcGwoYnBmX2NvcmVfdHlwZV9pZF9sb2NhbChzdHJ1Y3Qgb2JqX25ld19mbGV4KSwgTlVMTCk7XG4mIzQzO1x0aWYgKCFwKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0cC1cdTAwM2VjZWxsc1swXS5oaSA9IDQyO1xuJiM0MztcdGJwZl9vYmpfZHJvcF9pbXBsKHAsIE5VTEwpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIFNFQyhcJiMzNDs/dGNcJiMzNDspXG4gaW50IG9ial9kcm9wX25vbl96ZXJvX29mZih2b2lkICpjdHgpXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfc3BlY2lhbF9rZnVuYyYjMzQ7LAogICAgJiMzNDtidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgYXR0ZW1wdCB0byBhbGxvY2F0ZSBzdHJ1Y3RzIHdpdGggdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBCVEYgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBieXBhc3Nlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTVjZjdhMGIxMDljZTVjZTVhMDM3ZjhjNmUzYjJiMTQ5YjQxNDkwMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDIyIDA1OjIwOjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDJhYmM3OWRiZjI4MWMyLi5jM2E1NzRjYzBkMDlmZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTA5NTUsNiAmIzQzOzEwOTU1LDMwIEBAIHN0YXRpYyBib29sIF9fYnRmX3R5cGVfaXNfc2NhbGFyX3N0cnVjdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCXJldHVybiB0cnVlOwogfQogCiYjNDM7c3RhdGljIGJvb2wgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLAomIzQzOwkJCQkJICAgICBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlOwomIzQzOwljb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyOwomIzQzOwljb25zdCBzdHJ1Y3QgYnRmX2FycmF5ICphcnJheTsKJiM0MzsJdTMyIHZsZW47CiYjNDM7CiYjNDM7CWlmICghYnRmX3R5cGVfaXNfc3RydWN0KHQpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwl2bGVuID0gYnRmX3R5cGVfdmxlbih0KTsKJiM0MzsJaWYgKCF2bGVuKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwltZW1iZXIgPSBidGZfdHlwZV9tZW1iZXIodCkgJiM0MzsgdmxlbiAtIDE7CiYjNDM7CW1lbWJlcl90eXBlID0gYnRmX3R5cGVfc2tpcF9tb2RpZmllcnMoYnRmLCBtZW1iZXItJmd0O3R5cGUsIE5VTEwpOwomIzQzOwlpZiAoIWJ0Zl90eXBlX2lzX2FycmF5KG1lbWJlcl90eXBlKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJYXJyYXkgPSBidGZfYXJyYXkobWVtYmVyX3R5cGUpOwomIzQzOwlyZXR1cm4gIWFycmF5LSZndDtuZWxlbXM7CiYjNDM7fQomIzQzOwogZW51bSBrZnVuY19wdHJfYXJnX3R5cGUgewogCUtGX0FSR19QVFJfVE9fQ1RYLAogCUtGX0FSR19QVFJfVE9fQUxMT0NfQlRGX0lELCAgICAvKiBBbGxvY2F0ZWQgb2JqZWN0ICovCkBAIC0xMjc0OSw2ICYjNDM7MTI3NzMsMTAgQEAgc3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2EKIAkJCXZlcmJvc2UoZW52LCAmIzM0O2JwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcbiYjMzQ7KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiYjNDM7CQlpZiAoYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkocmV0X2J0ZiwgcmV0X3QpKSB7CiYjNDM7CQkJdmVyYm9zZShlbnYsICYjMzQ7YnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcbiYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KIAogCQlpZiAoaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEtJmd0O2Z1bmNfaWQpKSB7CiAJCQlpZiAocmV0X3QtJmd0O3NpemUgJmd0OyBCUEZfR0xPQkFMX1BFUkNQVV9NQV9NQVhfU0laRSkgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmMKaW5kZXggOGRlZmVhMDI1M2VkOWEuLjQ5YzI1MDEzMmI5YjBlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9saW5rZWRfbGlzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmMKQEAgLTY4LDYgJiM0Mzs2OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgewogCXsgJiMzNDtvYmpfdHlwZV9pZF9vb3ImIzM0OywgJiMzNDtsb2NhbCB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgaW4gcmFuZ2UgWzAsIFUzMl9NQVhdJiMzNDsgfSwKIAl7ICYjMzQ7b2JqX25ld19ub19jb21wb3NpdGUmIzM0OywgJiMzNDticGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0JiMzNDsgfSwKIAl7ICYjMzQ7b2JqX25ld19ub19zdHJ1Y3QmIzM0OywgJiMzNDticGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0JiMzNDsgfSwKJiM0MzsJeyAmIzM0O29ial9uZXdfZmxleF9hcnJheSYjMzQ7LAomIzQzOwkgICYjMzQ7YnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXkmIzM0OyB9LAogCXsgJiMzNDtvYmpfZHJvcF9ub25femVyb19vZmYmIzM0OywgJiMzNDtSMSBtdXN0IGhhdmUgemVybyBvZmZzZXQgd2hlbiBwYXNzZWQgdG8gcmVsZWFzZSBmdW5jJiMzNDsgfSwKIAl7ICYjMzQ7bmV3X251bGxfcmV0JiMzNDssICYjMzQ7UjAgaW52YWxpZCBtZW0gYWNjZXNzICYjMzk7cHRyX29yX251bGxfJiMzOTsmIzM0OyB9LAogCXsgJiMzNDtvYmpfbmV3X2FjcSYjMzQ7LCAmIzM0O1VucmVsZWFzZWQgcmVmZXJlbmNlIGlkPSYjMzQ7IH0sCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbGlua2VkX2xpc3RfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuYwppbmRleCBkZGQyNmQxYTA4M2Y3Mi4uMDMxZTc3YTI4OGVlYzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuYwpAQCAtMTY3LDYgJiM0MzsxNjcsMTYgQEAgQ0hFQ0tfT1AocHVzaF9iYWNrKTsKICN1bmRlZiBDSEVDS19PUAogI3VuZGVmIElOSVQKIAomIzQzO3N0cnVjdCBvYmpfbmV3X2ZsZXhfZWxlbSB7CiYjNDM7CWludCBsbzsKJiM0MzsJaW50IGhpOwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IG9ial9uZXdfZmxleCB7CiYjNDM7CWludCBoZHI7CiYjNDM7CXN0cnVjdCBvYmpfbmV3X2ZsZXhfZWxlbSBjZWxsc1tdOwomIzQzO307CiYjNDM7CiBTRUMoJiMzNDs/a3Byb2JlL3h5eiYjMzQ7KQogaW50IG1hcF9jb21wYXRfa3Byb2JlKHZvaWQgKmN0eCkKIHsKQEAgLTIzMCw2ICYjNDM7MjQwLDE5IEBAIGludCBvYmpfbmV3X25vX3N0cnVjdCh2b2lkICpjdHgpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztTRUMoJiMzNDs/dGMmIzM0OykKJiM0MztpbnQgb2JqX25ld19mbGV4X2FycmF5KHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvYmpfbmV3X2ZsZXggKnA7CiYjNDM7CiYjNDM7CXAgPSBicGZfb2JqX25ld19pbXBsKGJwZl9jb3JlX3R5cGVfaWRfbG9jYWwoc3RydWN0IG9ial9uZXdfZmxleCksIE5VTEwpOwomIzQzOwlpZiAoIXApCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJcC0mZ3Q7Y2VsbHNbMF0uaGkgPSA0MjsKJiM0MzsJYnBmX29ial9kcm9wX2ltcGwocCwgTlVMTCk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIFNFQygmIzM0Oz90YyYjMzQ7KQogaW50IG9ial9kcm9wX25vbl96ZXJvX29mZih2b2lkICpjdHgpCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV3IEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uZSwgcmVhbGx5LiBJdCBzZWVtcyB0byBiZSBwcmV2ZW50aW5nIGBicGZfb2JqX25ld2AgZnJvbSBhbGxvY2F0aW5nIHN0cnVjdHMgdGhhdCBoYXZlIHRyYWlsaW5nIGZsZXhpYmxlIGFycmF5cy4gVGhlIGNvcmUgb2YgdGhpcyBmdW5jdGlvbmFsaXR5IGxpZXMgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGEgZnVuY3Rpb24gY2FsbGVkIGBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheWAgYW5kIGluY29ycG9yYXRlZCBpdCBpbnRvIHRoZSBgY2hlY2tfc3BlY2lhbF9rZnVuY2AgZnVuY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgQlBGIHZlcmlmaWVyLCB3aGljaCwgaW4gbXkgZXhwZXJpZW5jZSwgc2NyZWFtcyAmIzM0O25lZWRzIGZ1enppbmcuJiMzNDsgR290dGEgbWFrZSBzdXJlIHRoaXMgYWRkaXRpb24gZG9lc27igJl0IGludHJvZHVjZSBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYW5kIHN5bWJvbHMuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgZ2l2ZW4sIG9mIGNvdXJzZTsgdGhpcyBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0cyB0aGUgQlBGIHN5c2NhbGwgcGF0aC4gRm9yIHRoZSBrZXkgc3ltYm9scywgSSYjMzk7bSB0aGlua2luZyBgY2hlY2tfc3BlY2lhbF9rZnVuY2AgYW5kIGBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheWAgYXJlIHRoZSBtYWluIHBvaW50cyB0byBmb2N1cyBvbi4gV2FpdCBhIHNlY29uZCwgdGhlIHNlY29uZCBmdW5jdGlvbiBpcyBzdGF0aWMuIFNvLCBpdCBtYXkgYmUgYmV0dGVyIHRvIGp1c3QgY29uY2VudHJhdGUgb24gYGNoZWNrX3NwZWNpYWxfa2Z1bmNgLgoKQWxyaWdodCwgSSYjMzk7bGwgZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGBjaGVja19zcGVjaWFsX2tmdW5jYC4gU2VlIHdoYXQgb3RoZXIgcmVsYXRlZCBhcmVhcyBuZWVkIGNhcmVmdWwgY29uc2lkZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19zcGVjaWFsX2tmdW5jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjY3ND1zNjQgYnBmX2tmdW5jX3N0YWNrX2FjY2Vzc19ieXRlcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM4LSAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzM5OnN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NDAtXHRcdFx0ICAgICAgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzLCBzdHJ1Y3QgYnBmX2luc25fYXV4X2RhdGEgKmluc25fYXV4LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxND1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE0OC1cdFx0cHRyX3R5cGUgPSBidGZfdHlwZV9za2lwX21vZGlmaWVycyhkZXNjX2J0ZiwgdC1cdTAwM2V0eXBlLCBcdTAwMjZwdHJfdHlwZV9pZCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxNDk6XHRcdGVyciA9IGNoZWNrX3NwZWNpYWxfa2Z1bmMoZW52LCBcdTAwMjZtZXRhLCByZWdzLCBpbnNuX2F1eCwgcHRyX3R5cGUsIGRlc2NfYnRmKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE1MC1cdFx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgS2VybmVsIEZ1bmN0aW9uIENhbGwgVmVyaWZpY2F0aW9uIEZsb3cqKgoKUmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGFuZCBgY2hlY2tfa2Z1bmNfY2FsbGAuIEl0IGxvb2tzIGxpa2UgdGhlIHZlcmlmaWNhdGlvbiBsb2dpYyBmb3Igc3BlY2lhbCBrZXJuZWwgZnVuY3Rpb25zIGlzIGJlaW5nIGludm9rZWQgZnJvbSB0aGUgYnJvYWRlciBrZXJuZWwgZnVuY3Rpb24gY2FsbCB2ZXJpZmljYXRpb24gcHJvY2Vzcy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb2RlIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyBmaWxlIGFsbW9zdCBjZXJ0YWlubHkgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyB0aGVzZSBzcGVjaWFsIGtlcm5lbCBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5JiMzOTtyZSBpbnRlZ3JhdGVkIGludG8gdGhlIG92ZXJhbGwgQlBGIHByb2dyYW0gdmVyaWZpY2F0aW9uIHN0cmF0ZWd5LiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gdGhlc2UgZnVuY3Rpb25zLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjb25zdHJhaW50cywgc2VjdXJpdHkgY2hlY2tzLCBhbmQgbGltaXRhdGlvbnMgaW1wb3NlZCBkdXJpbmcgcHJvZ3JhbSB2ZXJpZmljYXRpb24uIEkgbmVlZCB0byBiZSBwcmVwYXJlZCBmb3IgcG90ZW50aWFsbHkgY29tcGxleCBpbnRlcmFjdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MzppZm5lcSAoJChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGhhc2h0YWIubyBhcnJheW1hcC5vIHBlcmNwdV9mcmVlbGlzdC5vIGJwZl9scnVfbGlzdC5vIGxwbV90cmllLm8gbWFwX2luX21hcC5vIGJsb29tX2ZpbHRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGxvY2FsX3N0b3JhZ2UubyBxdWV1ZV9zdGFja19tYXBzLm8gcmluZ2J1Zi5vIGJwZl9pbnNuX2FycmF5Lm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2xvY2FsX3N0b3JhZ2UubyBicGZfdGFza19zdG9yYWdlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZml4dXBzLm8gY2ZnLm8gc3RhdGVzLm8gYmFja3RyYWNrLm8gY2hlY2tfYnRmLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTU6b2JqLSR7Q09ORklHX0JQRl9MU019XHQgICYjNDM7PSBicGZfaW5vZGVfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRpc2FzbS5vIG1wcm9nLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYXJlbmEubyByYW5nZV90cmVlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjEtZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBkaXNwYXRjaGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjMtaWZlcSAoJChDT05GSUdfTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkZXZtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBvZmZsb2FkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbmV0X25hbWVzcGFjZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHRjeC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTI5LWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzdGFja21hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMzPWlmZXEgKCQoQ09ORklHX0NHUk9VUFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNncm91cF9pdGVyLm8gYnBmX2NncnBfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT0zNz1pZmVxICgkKENPTkZJR19JTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZXVzZXBvcnRfYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9NDI9ZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDM6aWZlcSAoJChDT05GSUdfQlBGX0pJVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3N0cnVjdF9vcHMub1xua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXNrLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZS01NS0jIHNlbWFudGljcyB3aXRoaW4gcGFob2xlIGFyZSByZXZpc2l0ZWQgYWNjb3JkaW5nbHkuXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU2Om9iai0ke0NPTkZJR19CUEZfTFNNfSAmIzQzOz0gYnBmX2xzbV9wcm90by5vIGJwZl9sc20ub1xua2VybmVsL2JwZi9NYWtlZmlsZS01Ny1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZT01OD1pZm5lcSAoJChDT05GSUdfQ1JZUFRPKSwpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNyeXB0by5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgJiM0Mzs9IHByZWxvYWQvXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxua2VybmVsL2JwZi9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZWxvX2NvcmUub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zl9yZWxvY2F0ZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGttZW1fY2FjaGVfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY3LWlmZXEgKCQoQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkbWFidWZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc2NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIEtmdW5jIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaW52b2x2ZXMgYENPTkZJR19CUEZfU1lTQ0FMTGAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZGlnIGludG8gYGNoZWNrX3NwZWNpYWxfa2Z1bmNgLCBhcyBpdCBzZWVtcyByZWxldmFudC4gSGFuZyBvbiwgdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbi4gTm8gcHJvYmxlbSwgU3l6a2FsbGVyICpjYW4qIGhhbmRsZSB0aG9zZSBhcyBsb25nIGFzIHRoZXkmIzM5O3JlIGluIHRoZSBzeW1ib2wgdGFibGUuIEl0JiMzOTtzIGdvb2QgdG8ga25vdyB0aGF0IEkmIzM5O20gYWJsZSB0byB0YXJnZXQgdGhlbSwgYnV0IG1heWJlIHRoZXJlJiMzOTtzIGEgYmV0dGVyIHN0YXJ0aW5nIHBvaW50PwoKTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgd291bGRuJiMzOTt0IGBjaGVja19rZnVuY19jYWxsYCBiZSBhIG1vcmUgc3RyYXRlZ2ljIHBsYWNlIHRvIHN0YXJ0PyBIbW0sIGl0JiMzOTtzICphbHNvKiBzdGF0aWMuIEFscmlnaHQsIG5vIG1hdHRlciwgaXQmIzM5O3Mgc3RpbGwgYWNjZXNzaWJsZS4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBleGFtaW5lIGBjaGVja19rZnVuY19jYWxsYCBhbmQgc2VlIHdoYXQgaW5zaWdodHMgaXQgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19rZnVuY19jYWxsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz03MjI0PXN0YXRpYyBpbnQgcHJvY2Vzc19keW5wdHJfZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mjk4LVx0XHRcdCAqIEZvciBDT05TVF9QVFJfVE9fRFlOUFRSLCByZWcgaXMgYWxyZWFkeSBzY3JhdGNoZWQgYnkgY2hlY2tfcmVnX2FyZ1xua2VybmVsL2JwZi92ZXJpZmllci5jOjcyOTk6XHRcdFx0ICogaW4gY2hlY2tfaGVscGVyX2NhbGwgYW5kIG1hcmtfYnRmX2Z1bmNfcmVnX3NpemUgaW4gY2hlY2tfa2Z1bmNfY2FsbC5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03MzAwLVx0XHRcdCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxMj1zdGF0aWMgaW50IGNoZWNrX3JldHVybl9jb2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCByZWdubywgY29uc3QgY2hhciAqcmVnX25hbWUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTEzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTE0OnN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MTUtXHRcdFx0ICAgIGludCAqaW5zbl9pZHhfcClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTcyMzY9c3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzMwNC1cdFx0XHRpZiAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzMwNTpcdFx0XHRcdHJldHVybiBjaGVja19rZnVuY19jYWxsKGVudiwgaW5zbiwgXHUwMDI2ZW52LVx1MDAzZWluc25faWR4KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzMwNi1cdFx0XHRyZXR1cm4gY2hlY2tfaGVscGVyX2NhbGwoZW52LCBpbnNuLCBcdTAwMjZlbnYtXHUwMDNlaW5zbl9pZHgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NTIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBGdW5jdGlvbiBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhpcyBsb2dpYyBhbmQgaXQgbG9va3MgbGlrZSBgY2hlY2tfa2Z1bmNfY2FsbGAgaXMgdHJpZ2dlcmVkIGJ5IGBkb19jaGVja19pbnNuYC4gRnJvbSB0aGVyZSwgaXQgZGl2ZXMgaW50byBgY2hlY2tfc3BlY2lhbF9rZnVuY2AuIEhtbSwgaW50ZXJlc3RpbmcuIExldCYjMzk7cyBtYWtlIGBjaGVja19zcGVjaWFsX2tmdW5jYCB0aGUgcHJpbWFyeSBmb2N1cyBmb3Igbm93LCBzZWUgd2hlcmUgdGhhdCBsZWFkcy4KCldhaXQsIGFyZSB0aGVyZSBhbnkgb3RoZXIgc2ltaWxhciBmdW5jdGlvbnM/IEFoLCB5ZXMsIGBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheWAuIFRoYXQmIzM5O3MgYSBzdGF0aWMgb25lLCBhbmQgcmVsYXRpdmVseSByZWNlbnQsIHNvIGl0JiMzOTtzIHByb2JhYmx5IHdvcnRoIGFkZGluZyB0byB0aGUgc2V0IG9mIGZvY3VzIHN5bWJvbHMgYXMgd2VsbC4KClJpZ2h0LCB0aW1lIHRvIGdvIHNwZWx1bmtpbmcgaW4gdGhlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5MTk9c3RhdGljIGJvb2wgX19idGZfdHlwZV9pc19zY2FsYXJfc3RydWN0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTU3LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTU4OnN0YXRpYyBib29sIGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5KGNvbnN0IHN0cnVjdCBidGYgKmJ0Zixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk1OS1cdFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzM5PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzc1LVx0XHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI3NzY6XHRcdGlmIChidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheShyZXRfYnRmLCByZXRfdCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3Ny1cdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjA0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIEJQRiBWZXJpZmljYXRpb24gZm9yIFRyYWlsaW5nIEZsZXhpYmxlIEFycmF5cyoqCgpPa2F5LCBzbyBgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlgIGFuZCBgY2hlY2tfc3BlY2lhbF9rZnVuY2AgYXJlIHNvbGlkIHN0YXJ0aW5nIHBvaW50cyBmb3IgZnV6emluZy4gVGhleSBkaXJlY3RseSByZWxhdGUgdG8gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBiZWluZyBtb2RpZmllZCBpbiB0aGlzIHBhdGNoOiB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIHJlamVjdGlvbiBvZiBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgdHJ5IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0aG9zZSB0cmFpbGluZyBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb25lLCByZWFsbHksIHRvIHRoZSBCUEYgY29yZSBsb2dpYy4gVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGJlaGF2aW9yIGlzIHJvYnVzdC4gSSBuZWVkIHRvIGVuc3VyZSBpdCBoYW5kbGVzIGFsbCB0aGUgZGlmZmVyZW50IEJURiB0eXBlcyBjb3JyZWN0bHksIGFuZCBpbXBvcnRhbnRseSwgdGhhdCBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIGFsbG93IGZvciBhbnkgYnlwYXNzZXMuIEZ1enppbmcgaXMgZGVmaW5pdGVseSB0aGUgcmlnaHQgYXBwcm9hY2ggaGVyZS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgYW5kIGNvbmZpcm0gdGhlcmUgYXJlbuKAmXQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIFRoZSBrZXkgb25lIGFwcGVhcnMgdG8gYmUgYEJQRl9TWVNDQUxMYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBjb25zaWRlciBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCwgc2luY2UgYGJwZl9vYmpfbmV3YCByZWxpZXMgb24gQlRGLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgYENPTkZJR19ERUJVR19JTkZPX0JURmAgaXMgcmVxdWlyZWQgaW4gdGhlIGBicGZfb2JqX25ld2AgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJ4oCZbSBjb3ZlcmluZyBhbGwgdGhlIGRlcGVuZGVuY2llcyBpbiBteSBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfb2JqX25ldyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnRmLmM9MzkxMD1zdGF0aWMgaW50IGJ0Zl9wYXJzZV9rcHRyKGNvbnN0IHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJ0Zl9maWVsZCAqZmllbGQsXG4tLVxua2VybmVsL2JwZi9idGYuYy0zOTMyLVx0XHQvKiBUeXBlIGV4aXN0cyBvbmx5IGluIHByb2dyYW0gQlRGLiBBc3N1bWUgdGhhdCBpdCYjMzk7cyBhIE1FTV9BTExPQ1xua2VybmVsL2JwZi9idGYuYzozOTMzOlx0XHQgKiBrcHRyIGFsbG9jYXRlZCB2aWEgYnBmX29ial9uZXdcbmtlcm5lbC9icGYvYnRmLmMtMzkzNC1cdFx0ICovXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9MjMzNj1fX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjMzOC0vKipcbmtlcm5lbC9icGYvaGVscGVycy5jOjIzMzk6ICogYnBmX29ial9uZXcoKSAtIGFsbG9jYXRlIGFuIG9iamVjdCBkZXNjcmliZWQgYnkgcHJvZ3JhbSBCVEZcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNDAtICogQGxvY2FsX3R5cGVfaWRfX2s6IHR5cGUgSUQgaW4gcHJvZ3JhbSBCVEZcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMzQ5LSAqL1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM1MDpfX2JwZl9rZnVuYyB2b2lkICpicGZfb2JqX25ldyh1NjQgbG9jYWxfdHlwZV9pZF9faywgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNTEte1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNjMtXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyMzY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9vYmpfbmV3X2ltcGwodTY0IGxvY2FsX3R5cGVfaWRfX2ssIHZvaWQgKm1ldGFfX2lnbilcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNjUte1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM2NjpcdHJldHVybiBicGZfb2JqX25ldyhsb2NhbF90eXBlX2lkX19rLCBtZXRhX19pZ24pO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtMjM2Ny19XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgwND1CVEZfSURfRkxBR1MoZnVuYywgY3Jhc2hfa2V4ZWMsIEtGX0RFU1RSVUNUSVZFKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwNS0jZW5kaWZcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgwNzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9uZXdfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwOC1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02OTM0PWVudW0ge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02OTQxLSAqIGJwZl9tYXBfbG9va3VwIHJldHVybnMgUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMLlxua2VybmVsL2JwZi92ZXJpZmllci5jOjY5NDI6ICogYnBmX29ial9uZXcgcmV0dXJucyBQVFJfVE9fQlRGX0lEIHwgTUVNX0FMTE9DIHwgUFRSX01BWUJFX05VTEwuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjk0My0gKiBUd28gYnBmX21hcF9sb29rdXBzIChldmVuIHdpdGggdGhlIHNhbWUga2V5KSB3aWxsIGhhdmUgZGlmZmVyZW50IHJlZy1cdTAwM2VpZC5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2OTQ0OiAqIFR3byBzZXBhcmF0ZSBicGZfb2JqX25ldyB3aWxsIGFsc28gaGF2ZSBkaWZmZXJlbnQgcmVnLVx1MDAzZWlkLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTY5NDUtICogRm9yIHRyYWRpdGlvbmFsIFBUUl9UT19NQVBfVkFMVUUgb3IgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQywgdGhlIHZlcmlmaWVyXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY5NTItICogcG9pbnQgdG8gZGlmZmVyZW50IGJwZl9zcGluX2xvY2tzLiBMaWtld2lzZSBmb3IgcG9pbnRlcnMgdG8gYWxsb2NhdGVkIG9iamVjdHNcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2OTUzOiAqIHJldHVybmVkIGZyb20gYnBmX29ial9uZXcuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjk1NC0gKiBUaGUgdmVyaWZpZXIgYWxsb3dzIHRha2luZyBvbmx5IG9uZSBicGZfc3Bpbl9sb2NrIGF0IGEgdGltZSB0byBhdm9pZFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTAwNj1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwMDc6XHRLRl9icGZfb2JqX25ld19pbXBsLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDA4Olx0S0ZfYnBmX29ial9uZXcsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEwMDktXHRLRl9icGZfb2JqX2Ryb3BfaW1wbCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEwNzk9QlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDgwOkJURl9JRChmdW5jLCBicGZfb2JqX25ld19pbXBsKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDgxOkJURl9JRChmdW5jLCBicGZfb2JqX25ldylcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA4Mi1CVEZfSUQoZnVuYywgYnBmX29ial9kcm9wX2ltcGwpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTczPUJURl9JRChmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTc0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTc1OnN0YXRpYyBib29sIGlzX2JwZl9vYmpfbmV3X2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTc2LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE3NzpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE3ODpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld19pbXBsXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE3OS19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNTE0PXN0YXRpYyB2b2lkIHJlZl9jb252ZXJ0X293bmluZ19ub25fb3duaW5nKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHUzMiBpZClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1NzItICogcmVnLVx1MDAzZWlkIGlzIGEgdW5pcXVlIElEIHByZXNlcnZlZCBhZnRlciB0aGUgTlVMTCBwb2ludGVyIGNoZWNrIG9uIHRoZSBwb2ludGVyXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1NzM6ICogcmV0dXJuZWQgZnJvbSBicGZfb2JqX25ldy4gRWFjaCBhbGxvY2F0aW9uIHJlY2VpdmVzIGEgbmV3IHJlZy1cdTAwM2VpZC5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTU3NC0gKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3Mzk9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NDgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI3NDk6XHRpZiAoaXNfYnBmX29ial9uZXdfa2Z1bmMobWV0YS1cdTAwM2VmdW5jX2lkKSB8fCBpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmMobWV0YS1cdTAwM2VmdW5jX2lkKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzUwLVx0XHRzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICpzdHJ1Y3RfbWV0YTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NTMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI3NTQ6XHRcdGlmIChpc19icGZfb2JqX25ld19rZnVuYyhtZXRhLVx1MDAzZWZ1bmNfaWQpIFx1MDAyNlx1MDAyNiAhYnBmX2dsb2JhbF9tYV9zZXQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NTUtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzY2LVx0XHRpZiAoIXJldF9idGYpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjc2NzpcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YnBmX29ial9uZXcvYnBmX3BlcmNwdV9vYmpfbmV3IHJlcXVpcmVzIHByb2cgQlRGXFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc2OC1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NzItXHRcdGlmICghcmV0X3QgfHwgIV9fYnRmX3R5cGVfaXNfc3RydWN0KHJldF90KSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzczOlx0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDticGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0XFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3NC1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NzYtXHRcdGlmIChidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheShyZXRfYnRmLCByZXRfdCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjc3NzpcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcXG5cJiMzNDspO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzc4LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxND1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEzMi1cdFx0aWYgKG1ldGEuYnRmICE9IGJ0Zl92bWxpbnV4IHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMzM6XHRcdCAgICAoIWlzX2JwZl9vYmpfbmV3X2tmdW5jKG1ldGEuZnVuY19pZCkgXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMzQtXHRcdCAgICAgIWlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFx1MDAyNlx1MDAyNlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTU5MD1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYyMTpcdGlmIChpc19icGZfb2JqX25ld19rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpIHx8IGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MjItXHRcdHN0cnVjdCBidGZfc3RydWN0X21ldGEgKmtwdHJfc3RydWN0X21ldGEgPSBlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ua3B0cl9zdHJ1Y3RfbWV0YTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNDAKCQkJCQkJCW91dHB1dDogMTM2CgkJCQkJCQl0aG91Z2h0czogMzQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgYnBmX29ial9uZXdgIGlzIGEga2Z1bmMsIGdvdCBpdC4gVGhlIHByaW1hcnkgY29uZmlnIGRlcGVuZGVuY3kgaXMgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGJ1dCBJIGFsd2F5cyBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLiBMZXQgbWUgc2VlLi4uIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGBsaW5rZWRfbGlzdF9mYWlsLmNgIHNlbGZ0ZXN0LCBqdXN0IHRvIGJlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGdvdGNoYXMuIFllcCwgc2VlbXMgbGlrZSB0aGUgdXN1YWwgc3VzcGVjdHMgYXJlIHJlcXVpcmVkOiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19ERUJVR19JTkZPX0JURmAsIGFuZCBgQ09ORklHX0JQRl9KSVRgLiBPa2F5LCBJIHdpbGwgaW5jbHVkZSBgQlBGX1NZU0NBTExgIGFuZCBgREVCVUdfSU5GT19CVEZgLgoKTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBjaGVja19zcGVjaWFsX2tmdW5jYCBpcyByZWFjaGFibGUuIEFoLCB5ZXMsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBjaGVja19rZnVuY19jYWxsYCwgd2hpY2ggaW4gdHVybiBpcyBwYXJ0IG9mIHRoZSBgZG9fY2hlY2tfaW5zbmAgdmVyaWZpY2F0aW9uIHByb2Nlc3MgZm9yIEJQRiBwcm9ncmFtcy4gTWFrZXMgc2Vuc2UuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGZvciBmbGV4aWJsZSBhcnJheXMgd2l0aGluIGBicGZfb2JqX25ld2AgY2FsbHMuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSwgcmlnaHQ/CgpLZXkgc3ltYm9scyB0byBrZWVwIGluIG1pbmQgaGVyZSBhcmUgYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGFuZCBgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlgLgoKU28sIHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgQlBGIHZlcmlmaWVyLiBJdCB3aWxsIG5vdyByZWplY3QgYGJwZl9vYmpfbmV3YCBjYWxscyB0aGF0IHRyeSB0byBhbGxvY2F0ZSBzdHJ1Y3RzIGNvbnRhaW5pbmcgdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGNvcmUgQlBGIGxvZ2ljIGJlaW5nIHR3ZWFrZWQsIGFuZCBteSBmb2N1cyBzaG91bGQgYmUgb24gZnV6emluZyB0aGlzIGV4dGVuc2l2ZWx5LiBXZSBuZWVkIHRvIGVuc3VyZSBpdCBoYW5kbGVzIHZhcmlvdXMgQlRGIHR5cGVzIGdyYWNlZnVsbHkgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGFueSBzbmVha3kgd2F5cyB0byBieXBhc3MgdGhpcyBuZXcgY2hlY2suCgpSaWdodCwgbGV0JiMzOTtzIGdldCB0aGUgc2V0LXJlc3VsdHMgdG9vbCBydW5uaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19zcGVjaWFsX2tmdW5jJiMzNDssCiAgICAmIzM0O2J0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcmVqZWN0IGBicGZfb2JqX25ld2AgY2FsbHMgdGhhdCBhdHRlbXB0IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgaGFuZGxlcyB2YXJpb3VzIEJURiB0eXBlcyBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGJ5cGFzc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX3NwZWNpYWxfa2Z1bmMmIzM0OywKICAgICYjMzQ7YnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgYGJwZl9vYmpfbmV3YCBjYWxscyB0aGF0IGF0dGVtcHQgdG8gYWxsb2NhdGUgc3RydWN0cyB3aXRoIHRyYWlsaW5nIGZsZXhpYmxlIGFycmF5cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGNvcnJlY3RseSBoYW5kbGVzIHZhcmlvdXMgQlRGIHR5cGVzIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgYnlwYXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDozMC4wMDIxNjQwODZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgzMTE5MzkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19zcGVjaWFsX2tmdW5jXCIsXG4gICAgXCJidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcmVqZWN0IGBicGZfb2JqX25ld2AgY2FsbHMgdGhhdCBhdHRlbXB0IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgaGFuZGxlcyB2YXJpb3VzIEJURiB0eXBlcyBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgYnlwYXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjMwLjAwMjE3MDk2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE3Njc2MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTVjZjdhMGIxMDljZTVjZTVhMDM3ZjhjNmUzYjJiMTQ5YjQxNDkwMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyMiAwNToyMDoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCAyYWJjNzlkYmYyODFjMi4uYzNhNTc0Y2MwZDA5ZmQgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTEwOTU1LDYgKzEwOTU1LDMwIEBAIHN0YXRpYyBib29sIF9fYnRmX3R5cGVfaXNfc2NhbGFyX3N0cnVjdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdClcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlO1xcbitcXHRjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyO1xcbitcXHRjb25zdCBzdHJ1Y3QgYnRmX2FycmF5ICphcnJheTtcXG4rXFx0dTMyIHZsZW47XFxuK1xcbitcXHRpZiAoIWJ0Zl90eXBlX2lzX3N0cnVjdCh0KSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0dmxlbiA9IGJ0Zl90eXBlX3ZsZW4odCk7XFxuK1xcdGlmICghdmxlbilcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0bWVtYmVyID0gYnRmX3R5cGVfbWVtYmVyKHQpICsgdmxlbiAtIDE7XFxuK1xcdG1lbWJlcl90eXBlID0gYnRmX3R5cGVfc2tpcF9tb2RpZmllcnMoYnRmLCBtZW1iZXItXFx1MDAzZXR5cGUsIE5VTEwpO1xcbitcXHRpZiAoIWJ0Zl90eXBlX2lzX2FycmF5KG1lbWJlcl90eXBlKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0YXJyYXkgPSBidGZfYXJyYXkobWVtYmVyX3R5cGUpO1xcbitcXHRyZXR1cm4gIWFycmF5LVxcdTAwM2VuZWxlbXM7XFxuK31cXG4rXFxuIGVudW0ga2Z1bmNfcHRyX2FyZ190eXBlIHtcXG4gXFx0S0ZfQVJHX1BUUl9UT19DVFgsXFxuIFxcdEtGX0FSR19QVFJfVE9fQUxMT0NfQlRGX0lELCAgICAvKiBBbGxvY2F0ZWQgb2JqZWN0ICovXFxuQEAgLTEyNzQ5LDYgKzEyNzczLDEwIEBAIHN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhXFxuIFxcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwiYnBmX29ial9uZXcvYnBmX3BlcmNwdV9vYmpfbmV3IHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBvZiBhIHN0cnVjdFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheShyZXRfYnRmLCByZXRfdCkpIHtcXG4rXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJicGZfb2JqX25ldyB0eXBlIG11c3Qgbm90IGNvbnRhaW4gYSBmbGV4aWJsZSBhcnJheVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAoaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpKSB7XFxuIFxcdFxcdFxcdGlmIChyZXRfdC1cXHUwMDNlc2l6ZSBcXHUwMDNlIEJQRl9HTE9CQUxfUEVSQ1BVX01BX01BWF9TSVpFKSB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9saW5rZWRfbGlzdC5jXFxuaW5kZXggOGRlZmVhMDI1M2VkOWEuLjQ5YzI1MDEzMmI5YjBlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9saW5rZWRfbGlzdC5jXFxuQEAgLTY4LDYgKzY4LDggQEAgc3RhdGljIHN0cnVjdCB7XFxuIFxcdHsgXFxcIm9ial90eXBlX2lkX29vclxcXCIsIFxcXCJsb2NhbCB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgaW4gcmFuZ2UgWzAsIFUzMl9NQVhdXFxcIiB9LFxcbiBcXHR7IFxcXCJvYmpfbmV3X25vX2NvbXBvc2l0ZVxcXCIsIFxcXCJicGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0XFxcIiB9LFxcbiBcXHR7IFxcXCJvYmpfbmV3X25vX3N0cnVjdFxcXCIsIFxcXCJicGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0XFxcIiB9LFxcbitcXHR7IFxcXCJvYmpfbmV3X2ZsZXhfYXJyYXlcXFwiLFxcbitcXHQgIFxcXCJicGZfb2JqX25ldyB0eXBlIG11c3Qgbm90IGNvbnRhaW4gYSBmbGV4aWJsZSBhcnJheVxcXCIgfSxcXG4gXFx0eyBcXFwib2JqX2Ryb3Bfbm9uX3plcm9fb2ZmXFxcIiwgXFxcIlIxIG11c3QgaGF2ZSB6ZXJvIG9mZnNldCB3aGVuIHBhc3NlZCB0byByZWxlYXNlIGZ1bmNcXFwiIH0sXFxuIFxcdHsgXFxcIm5ld19udWxsX3JldFxcXCIsIFxcXCJSMCBpbnZhbGlkIG1lbSBhY2Nlc3MgJ3B0cl9vcl9udWxsXydcXFwiIH0sXFxuIFxcdHsgXFxcIm9ial9uZXdfYWNxXFxcIiwgXFxcIlVucmVsZWFzZWQgcmVmZXJlbmNlIGlkPVxcXCIgfSxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcXG5pbmRleCBkZGQyNmQxYTA4M2Y3Mi4uMDMxZTc3YTI4OGVlYzAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcXG5AQCAtMTY3LDYgKzE2NywxNiBAQCBDSEVDS19PUChwdXNoX2JhY2spO1xcbiAjdW5kZWYgQ0hFQ0tfT1BcXG4gI3VuZGVmIElOSVRcXG4gXFxuK3N0cnVjdCBvYmpfbmV3X2ZsZXhfZWxlbSB7XFxuK1xcdGludCBsbztcXG4rXFx0aW50IGhpO1xcbit9O1xcbitcXG4rc3RydWN0IG9ial9uZXdfZmxleCB7XFxuK1xcdGludCBoZHI7XFxuK1xcdHN0cnVjdCBvYmpfbmV3X2ZsZXhfZWxlbSBjZWxsc1tdO1xcbit9O1xcbitcXG4gU0VDKFxcXCI/a3Byb2JlL3h5elxcXCIpXFxuIGludCBtYXBfY29tcGF0X2twcm9iZSh2b2lkICpjdHgpXFxuIHtcXG5AQCAtMjMwLDYgKzI0MCwxOSBAQCBpbnQgb2JqX25ld19ub19zdHJ1Y3Qodm9pZCAqY3R4KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rU0VDKFxcXCI/dGNcXFwiKVxcbitpbnQgb2JqX25ld19mbGV4X2FycmF5KHZvaWQgKmN0eClcXG4re1xcbitcXHRzdHJ1Y3Qgb2JqX25ld19mbGV4ICpwO1xcbitcXG4rXFx0cCA9IGJwZl9vYmpfbmV3X2ltcGwoYnBmX2NvcmVfdHlwZV9pZF9sb2NhbChzdHJ1Y3Qgb2JqX25ld19mbGV4KSwgTlVMTCk7XFxuK1xcdGlmICghcClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdHAtXFx1MDAzZWNlbGxzWzBdLmhpID0gNDI7XFxuK1xcdGJwZl9vYmpfZHJvcF9pbXBsKHAsIE5VTEwpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gU0VDKFxcXCI/dGNcXFwiKVxcbiBpbnQgb2JqX2Ryb3Bfbm9uX3plcm9fb2ZmKHZvaWQgKmN0eClcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDozMC41MjA2NDUyNjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzEyNzAxNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX3NwZWNpYWxfa2Z1bmNcIixcbiAgICBcImJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZWplY3QgYGJwZl9vYmpfbmV3YCBjYWxscyB0aGF0IGF0dGVtcHQgdG8gYWxsb2NhdGUgc3RydWN0cyB3aXRoIHRyYWlsaW5nIGZsZXhpYmxlIGFycmF5cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGNvcnJlY3RseSBoYW5kbGVzIHZhcmlvdXMgQlRGIHR5cGVzIGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBieXBhc3Nlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNWNmN2EwYjEwOWNlNWNlNWEwMzdmOGM2ZTNiMmIxNDliNDE0OTAwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDU6MjA6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5jM2E1NzRjYzBkMDlmZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTA5NTUsNiArMTA5NTUsMzAgQEAgc3RhdGljIGJvb2wgX19idGZfdHlwZV9pc19zY2FsYXJfc3RydWN0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuK1x0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlO1xuK1x0Y29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm1lbWJlcjtcbitcdGNvbnN0IHN0cnVjdCBidGZfYXJyYXkgKmFycmF5O1xuK1x0dTMyIHZsZW47XG4rXG4rXHRpZiAoIWJ0Zl90eXBlX2lzX3N0cnVjdCh0KSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0dmxlbiA9IGJ0Zl90eXBlX3ZsZW4odCk7XG4rXHRpZiAoIXZsZW4pXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdG1lbWJlciA9IGJ0Zl90eXBlX21lbWJlcih0KSArIHZsZW4gLSAxO1xuK1x0bWVtYmVyX3R5cGUgPSBidGZfdHlwZV9za2lwX21vZGlmaWVycyhidGYsIG1lbWJlci1cdTAwM2V0eXBlLCBOVUxMKTtcbitcdGlmICghYnRmX3R5cGVfaXNfYXJyYXkobWVtYmVyX3R5cGUpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRhcnJheSA9IGJ0Zl9hcnJheShtZW1iZXJfdHlwZSk7XG4rXHRyZXR1cm4gIWFycmF5LVx1MDAzZW5lbGVtcztcbit9XG4rXG4gZW51bSBrZnVuY19wdHJfYXJnX3R5cGUge1xuIFx0S0ZfQVJHX1BUUl9UT19DVFgsXG4gXHRLRl9BUkdfUFRSX1RPX0FMTE9DX0JURl9JRCwgICAgLyogQWxsb2NhdGVkIG9iamVjdCAqL1xuQEAgLTEyNzQ5LDYgKzEyNzczLDEwIEBAIHN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhXG4gXHRcdFx0dmVyYm9zZShlbnYsIFwiYnBmX29ial9uZXcvYnBmX3BlcmNwdV9vYmpfbmV3IHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBvZiBhIHN0cnVjdFxcblwiKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuK1x0XHRpZiAoYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkocmV0X2J0ZiwgcmV0X3QpKSB7XG4rXHRcdFx0dmVyYm9zZShlbnYsIFwiYnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcXG5cIik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbiBcbiBcdFx0aWYgKGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLVx1MDAzZWZ1bmNfaWQpKSB7XG4gXHRcdFx0aWYgKHJldF90LVx1MDAzZXNpemUgXHUwMDNlIEJQRl9HTE9CQUxfUEVSQ1BVX01BX01BWF9TSVpFKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbGlua2VkX2xpc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmNcbmluZGV4IDhkZWZlYTAyNTNlZDlhLi40OWMyNTAxMzJiOWIwZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2xpbmtlZF9saXN0LmNcbkBAIC02OCw2ICs2OCw4IEBAIHN0YXRpYyBzdHJ1Y3Qge1xuIFx0eyBcIm9ial90eXBlX2lkX29vclwiLCBcImxvY2FsIHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBpbiByYW5nZSBbMCwgVTMyX01BWF1cIiB9LFxuIFx0eyBcIm9ial9uZXdfbm9fY29tcG9zaXRlXCIsIFwiYnBmX29ial9uZXcvYnBmX3BlcmNwdV9vYmpfbmV3IHR5cGUgSUQgYXJndW1lbnQgbXVzdCBiZSBvZiBhIHN0cnVjdFwiIH0sXG4gXHR7IFwib2JqX25ld19ub19zdHJ1Y3RcIiwgXCJicGZfb2JqX25ldy9icGZfcGVyY3B1X29ial9uZXcgdHlwZSBJRCBhcmd1bWVudCBtdXN0IGJlIG9mIGEgc3RydWN0XCIgfSxcbitcdHsgXCJvYmpfbmV3X2ZsZXhfYXJyYXlcIixcbitcdCAgXCJicGZfb2JqX25ldyB0eXBlIG11c3Qgbm90IGNvbnRhaW4gYSBmbGV4aWJsZSBhcnJheVwiIH0sXG4gXHR7IFwib2JqX2Ryb3Bfbm9uX3plcm9fb2ZmXCIsIFwiUjEgbXVzdCBoYXZlIHplcm8gb2Zmc2V0IHdoZW4gcGFzc2VkIHRvIHJlbGVhc2UgZnVuY1wiIH0sXG4gXHR7IFwibmV3X251bGxfcmV0XCIsIFwiUjAgaW52YWxpZCBtZW0gYWNjZXNzICdwdHJfb3JfbnVsbF8nXCIgfSxcbiBcdHsgXCJvYmpfbmV3X2FjcVwiLCBcIlVucmVsZWFzZWQgcmVmZXJlbmNlIGlkPVwiIH0sXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xpbmtlZF9saXN0X2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcbmluZGV4IGRkZDI2ZDFhMDgzZjcyLi4wMzFlNzdhMjg4ZWVjMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9saW5rZWRfbGlzdF9mYWlsLmNcbkBAIC0xNjcsNiArMTY3LDE2IEBAIENIRUNLX09QKHB1c2hfYmFjayk7XG4gI3VuZGVmIENIRUNLX09QXG4gI3VuZGVmIElOSVRcbiBcbitzdHJ1Y3Qgb2JqX25ld19mbGV4X2VsZW0ge1xuK1x0aW50IGxvO1xuK1x0aW50IGhpO1xuK307XG4rXG4rc3RydWN0IG9ial9uZXdfZmxleCB7XG4rXHRpbnQgaGRyO1xuK1x0c3RydWN0IG9ial9uZXdfZmxleF9lbGVtIGNlbGxzW107XG4rfTtcbitcbiBTRUMoXCI/a3Byb2JlL3h5elwiKVxuIGludCBtYXBfY29tcGF0X2twcm9iZSh2b2lkICpjdHgpXG4ge1xuQEAgLTIzMCw2ICsyNDAsMTkgQEAgaW50IG9ial9uZXdfbm9fc3RydWN0KHZvaWQgKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbitTRUMoXCI/dGNcIilcbitpbnQgb2JqX25ld19mbGV4X2FycmF5KHZvaWQgKmN0eClcbit7XG4rXHRzdHJ1Y3Qgb2JqX25ld19mbGV4ICpwO1xuK1xuK1x0cCA9IGJwZl9vYmpfbmV3X2ltcGwoYnBmX2NvcmVfdHlwZV9pZF9sb2NhbChzdHJ1Y3Qgb2JqX25ld19mbGV4KSwgTlVMTCk7XG4rXHRpZiAoIXApXG4rXHRcdHJldHVybiAwO1xuK1x0cC1cdTAwM2VjZWxsc1swXS5oaSA9IDQyO1xuK1x0YnBmX29ial9kcm9wX2ltcGwocCwgTlVMTCk7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gU0VDKFwiP3RjXCIpXG4gaW50IG9ial9kcm9wX25vbl96ZXJvX29mZih2b2lkICpjdHgpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDU6MjA6MzAuNTIwNjQ3MzE1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2MTczNTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXcgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uZSwgcmVhbGx5LiBJdCBzZWVtcyB0byBiZSBwcmV2ZW50aW5nIGBicGZfb2JqX25ld2AgZnJvbSBhbGxvY2F0aW5nIHN0cnVjdHMgdGhhdCBoYXZlIHRyYWlsaW5nIGZsZXhpYmxlIGFycmF5cy4gVGhlIGNvcmUgb2YgdGhpcyBmdW5jdGlvbmFsaXR5IGxpZXMgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkndmUgYWRkZWQgYSBmdW5jdGlvbiBjYWxsZWQgYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YCBhbmQgaW5jb3Jwb3JhdGVkIGl0IGludG8gdGhlIGBjaGVja19zcGVjaWFsX2tmdW5jYCBmdW5jdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBCUEYgdmVyaWZpZXIsIHdoaWNoLCBpbiBteSBleHBlcmllbmNlLCBzY3JlYW1zIFwibmVlZHMgZnV6emluZy5cIiBHb3R0YSBtYWtlIHN1cmUgdGhpcyBhZGRpdGlvbiBkb2VzbuKAmXQgaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbk5vdywgbGV0J3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYW5kIHN5bWJvbHMuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgZ2l2ZW4sIG9mIGNvdXJzZTsgdGhpcyBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0cyB0aGUgQlBGIHN5c2NhbGwgcGF0aC4gRm9yIHRoZSBrZXkgc3ltYm9scywgSSdtIHRoaW5raW5nIGBjaGVja19zcGVjaWFsX2tmdW5jYCBhbmQgYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YCBhcmUgdGhlIG1haW4gcG9pbnRzIHRvIGZvY3VzIG9uLiBXYWl0IGEgc2Vjb25kLCB0aGUgc2Vjb25kIGZ1bmN0aW9uIGlzIHN0YXRpYy4gU28sIGl0IG1heSBiZSBiZXR0ZXIgdG8ganVzdCBjb25jZW50cmF0ZSBvbiBgY2hlY2tfc3BlY2lhbF9rZnVuY2AuXG5cbkFscmlnaHQsIEknbGwgZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGBjaGVja19zcGVjaWFsX2tmdW5jYC4gU2VlIHdoYXQgb3RoZXIgcmVsYXRlZCBhcmVhcyBuZWVkIGNhcmVmdWwgY29uc2lkZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjM1LjE4MjM4NDc0MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODg1NDkyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19zcGVjaWFsX2tmdW5jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI2NzQ9czY0IGJwZl9rZnVuY19zdGFja19hY2Nlc3NfYnl0ZXMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM4LSAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjczOTpzdGF0aWMgaW50IGNoZWNrX3NwZWNpYWxfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc0MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZ3MsIHN0cnVjdCBicGZfaW5zbl9hdXhfZGF0YSAqaW5zbl9hdXgsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI5MTQ9c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE0OC1cXHRcXHRwdHJfdHlwZSA9IGJ0Zl90eXBlX3NraXBfbW9kaWZpZXJzKGRlc2NfYnRmLCB0LVxcdTAwM2V0eXBlLCBcXHUwMDI2cHRyX3R5cGVfaWQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzE0OTpcXHRcXHRlcnIgPSBjaGVja19zcGVjaWFsX2tmdW5jKGVudiwgXFx1MDAyNm1ldGEsIHJlZ3MsIGluc25fYXV4LCBwdHJfdHlwZSwgZGVzY19idGYpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE1MC1cXHRcXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjM1LjI0MTI0NDc2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjc5NDgzNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgRnVuY3Rpb24gQ2FsbCBWZXJpZmljYXRpb24gRmxvdyoqXG5cblJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGFuZCBgY2hlY2tfa2Z1bmNfY2FsbGAuIEl0IGxvb2tzIGxpa2UgdGhlIHZlcmlmaWNhdGlvbiBsb2dpYyBmb3Igc3BlY2lhbCBrZXJuZWwgZnVuY3Rpb25zIGlzIGJlaW5nIGludm9rZWQgZnJvbSB0aGUgYnJvYWRlciBrZXJuZWwgZnVuY3Rpb24gY2FsbCB2ZXJpZmljYXRpb24gcHJvY2Vzcy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb2RlIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyBmaWxlIGFsbW9zdCBjZXJ0YWlubHkgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyB0aGVzZSBzcGVjaWFsIGtlcm5lbCBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5J3JlIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gc3RyYXRlZ3kuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZXNlIGZ1bmN0aW9ucy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMsIHNlY3VyaXR5IGNoZWNrcywgYW5kIGxpbWl0YXRpb25zIGltcG9zZWQgZHVyaW5nIHByb2dyYW0gdmVyaWZpY2F0aW9uLiBJIG5lZWQgdG8gYmUgcHJlcGFyZWQgZm9yIHBvdGVudGlhbGx5IGNvbXBsZXggaW50ZXJhY3Rpb24uIExldCdzIHNlZSBob3cgYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDU6MjA6MzguMzA5MTk1Mjc5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjExMzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTI9b2JqLXkgOj0gY29yZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTozOmlmbmVxICgkKENPTkZJR19CUEZfSklUX0FMV0FZU19PTikseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTU6b2JqLSR7Q09ORklHX0JQRl9MU019XFx0ICArPSBicGZfaW5vZGVfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRpc2FzbS5vIG1wcm9nLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSArPSB0cmFtcG9saW5lLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGRpc3BhdGNoZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjMtaWZlcSAoJChDT05GSUdfTkVUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkZXZtYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjcHVtYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBvZmZsb2FkLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbmV0X25hbWVzcGFjZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHRjeC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yOS1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzA9aWZlcSAoJChDT05GSUdfUEVSRl9FVkVOVFMpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN0YWNrbWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT0zMz1pZmVxICgkKENPTkZJR19DR1JPVVBTKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjZ3JvdXBfaXRlci5vIGJwZl9jZ3JwX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzUtZW5kaWZcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Mzc9aWZlcSAoJChDT05GSUdfSU5FVCkseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gcmV1c2Vwb3J0X2FycmF5Lm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM5LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTQyPWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0MzppZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfc3RydWN0X29wcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hc2sub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTU1LSMgc2VtYW50aWNzIHdpdGhpbiBwYWhvbGUgYXJlIHJldmlzaXRlZCBhY2NvcmRpbmdseS5cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU2Om9iai0ke0NPTkZJR19CUEZfTFNNfSArPSBicGZfbHNtX3Byb3RvLm8gYnBmX2xzbS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS01Ny1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NTg9aWZuZXEgKCQoQ09ORklHX0NSWVBUTyksKVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjcnlwdG8ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjAtZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgKz0gcHJlbG9hZC9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSByZWxvX2NvcmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGZfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zl9yZWxvY2F0ZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGttZW1fY2FjaGVfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS02Ny1pZmVxICgkKENPTkZJR19ETUFfU0hBUkVEX0JVRkZFUikseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZG1hYnVmX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjktZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDU6MjA6MzguMzY1ODEyNDI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyNzcyNzU4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIEtmdW5jIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0IGludm9sdmVzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGRpZyBpbnRvIGBjaGVja19zcGVjaWFsX2tmdW5jYCwgYXMgaXQgc2VlbXMgcmVsZXZhbnQuIEhhbmcgb24sIHRoYXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gTm8gcHJvYmxlbSwgU3l6a2FsbGVyICpjYW4qIGhhbmRsZSB0aG9zZSBhcyBsb25nIGFzIHRoZXkncmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSXQncyBnb29kIHRvIGtub3cgdGhhdCBJJ20gYWJsZSB0byB0YXJnZXQgdGhlbSwgYnV0IG1heWJlIHRoZXJlJ3MgYSBiZXR0ZXIgc3RhcnRpbmcgcG9pbnQ/XG5cbk5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIHdvdWxkbid0IGBjaGVja19rZnVuY19jYWxsYCBiZSBhIG1vcmUgc3RyYXRlZ2ljIHBsYWNlIHRvIHN0YXJ0PyBIbW0sIGl0J3MgKmFsc28qIHN0YXRpYy4gQWxyaWdodCwgbm8gbWF0dGVyLCBpdCdzIHN0aWxsIGFjY2Vzc2libGUuIExldCdzIGhlYWQgb3ZlciB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBleGFtaW5lIGBjaGVja19rZnVuY19jYWxsYCBhbmQgc2VlIHdoYXQgaW5zaWdodHMgaXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc2NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDo0Mi4yOTM1NDIzNzhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5Njg2NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2tmdW5jX2NhbGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz03MjI0PXN0YXRpYyBpbnQgcHJvY2Vzc19keW5wdHJfZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTcyOTgtXFx0XFx0XFx0ICogRm9yIENPTlNUX1BUUl9UT19EWU5QVFIsIHJlZyBpcyBhbHJlYWR5IHNjcmF0Y2hlZCBieSBjaGVja19yZWdfYXJnXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjcyOTk6XFx0XFx0XFx0ICogaW4gY2hlY2tfaGVscGVyX2NhbGwgYW5kIG1hcmtfYnRmX2Z1bmNfcmVnX3NpemUgaW4gY2hlY2tfa2Z1bmNfY2FsbC5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzMwMC1cXHRcXHRcXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxMj1zdGF0aWMgaW50IGNoZWNrX3JldHVybl9jb2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCByZWdubywgY29uc3QgY2hhciAqcmVnX25hbWUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjkxMy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5MTQ6c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MTUtXFx0XFx0XFx0ICAgIGludCAqaW5zbl9pZHhfcClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzIzNj1zdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTczMDQtXFx0XFx0XFx0aWYgKGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzMwNTpcXHRcXHRcXHRcXHRyZXR1cm4gY2hlY2tfa2Z1bmNfY2FsbChlbnYsIGluc24sIFxcdTAwMjZlbnYtXFx1MDAzZWluc25faWR4KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTczMDYtXFx0XFx0XFx0cmV0dXJuIGNoZWNrX2hlbHBlcl9jYWxsKGVudiwgaW5zbiwgXFx1MDAyNmVudi1cXHUwMDNlaW5zbl9pZHgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDo0Mi41NDMyMzYxNjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODkzNDM0MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGlzIGxvZ2ljIGFuZCBpdCBsb29rcyBsaWtlIGBjaGVja19rZnVuY19jYWxsYCBpcyB0cmlnZ2VyZWQgYnkgYGRvX2NoZWNrX2luc25gLiBGcm9tIHRoZXJlLCBpdCBkaXZlcyBpbnRvIGBjaGVja19zcGVjaWFsX2tmdW5jYC4gSG1tLCBpbnRlcmVzdGluZy4gTGV0J3MgbWFrZSBgY2hlY2tfc3BlY2lhbF9rZnVuY2AgdGhlIHByaW1hcnkgZm9jdXMgZm9yIG5vdywgc2VlIHdoZXJlIHRoYXQgbGVhZHMuXG5cbldhaXQsIGFyZSB0aGVyZSBhbnkgb3RoZXIgc2ltaWxhciBmdW5jdGlvbnM/IEFoLCB5ZXMsIGBidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheWAuIFRoYXQncyBhIHN0YXRpYyBvbmUsIGFuZCByZWxhdGl2ZWx5IHJlY2VudCwgc28gaXQncyBwcm9iYWJseSB3b3J0aCBhZGRpbmcgdG8gdGhlIHNldCBvZiBmb2N1cyBzeW1ib2xzIGFzIHdlbGwuXG5cblJpZ2h0LCB0aW1lIHRvIGdvIHNwZWx1bmtpbmcgaW4gdGhlIGNvZGUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTUyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjQ2LjQzNjY3OTAwNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0MTc2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDkxOT1zdGF0aWMgYm9vbCBfX2J0Zl90eXBlX2lzX3NjYWxhcl9zdHJ1Y3Qoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk1Ny1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5NTg6c3RhdGljIGJvb2wgYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk1OS1cXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjczOT1zdGF0aWMgaW50IGNoZWNrX3NwZWNpYWxfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzc1LVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI3NzY6XFx0XFx0aWYgKGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5KHJldF9idGYsIHJldF90KSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3Ny1cXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImJwZl9vYmpfbmV3IHR5cGUgbXVzdCBub3QgY29udGFpbiBhIGZsZXhpYmxlIGFycmF5XFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDU6MjA6NDYuNDkyMTA2NjMyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDY4NDQ1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gQlBGIFZlcmlmaWNhdGlvbiBmb3IgVHJhaWxpbmcgRmxleGlibGUgQXJyYXlzKipcblxuT2theSwgc28gYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YCBhbmQgYGNoZWNrX3NwZWNpYWxfa2Z1bmNgIGFyZSBzb2xpZCBzdGFydGluZyBwb2ludHMgZm9yIGZ1enppbmcuIFRoZXkgZGlyZWN0bHkgcmVsYXRlIHRvIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaDogdGhlIEJQRiB2ZXJpZmllcidzIHJlamVjdGlvbiBvZiBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgdHJ5IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0aG9zZSB0cmFpbGluZyBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb25lLCByZWFsbHksIHRvIHRoZSBCUEYgY29yZSBsb2dpYy4gVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGJlaGF2aW9yIGlzIHJvYnVzdC4gSSBuZWVkIHRvIGVuc3VyZSBpdCBoYW5kbGVzIGFsbCB0aGUgZGlmZmVyZW50IEJURiB0eXBlcyBjb3JyZWN0bHksIGFuZCBpbXBvcnRhbnRseSwgdGhhdCBpdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgYWxsb3cgZm9yIGFueSBieXBhc3Nlcy4gRnV6emluZyBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBhcHByb2FjaCBoZXJlLlxuXG5Ob3csIGxldCdzIGp1c3QgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgYW5kIGNvbmZpcm0gdGhlcmUgYXJlbuKAmXQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIFRoZSBrZXkgb25lIGFwcGVhcnMgdG8gYmUgYEJQRl9TWVNDQUxMYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBjb25zaWRlciBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCwgc2luY2UgYGJwZl9vYmpfbmV3YCByZWxpZXMgb24gQlRGLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgYENPTkZJR19ERUJVR19JTkZPX0JURmAgaXMgcmVxdWlyZWQgaW4gdGhlIGBicGZfb2JqX25ld2AgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJ4oCZbSBjb3ZlcmluZyBhbGwgdGhlIGRlcGVuZGVuY2llcyBpbiBteSBmdXp6aW5nIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjUxLjEzODk1MzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzI1ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9vYmpfbmV3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYnRmLmM9MzkxMD1zdGF0aWMgaW50IGJ0Zl9wYXJzZV9rcHRyKGNvbnN0IHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJ0Zl9maWVsZCAqZmllbGQsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzItXFx0XFx0LyogVHlwZSBleGlzdHMgb25seSBpbiBwcm9ncmFtIEJURi4gQXNzdW1lIHRoYXQgaXQncyBhIE1FTV9BTExPQ1xcbmtlcm5lbC9icGYvYnRmLmM6MzkzMzpcXHRcXHQgKiBrcHRyIGFsbG9jYXRlZCB2aWEgYnBmX29ial9uZXdcXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzQtXFx0XFx0ICovXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0yMzM2PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzMzgtLyoqXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjMzOTogKiBicGZfb2JqX25ldygpIC0gYWxsb2NhdGUgYW4gb2JqZWN0IGRlc2NyaWJlZCBieSBwcm9ncmFtIEJURlxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNDAtICogQGxvY2FsX3R5cGVfaWRfX2s6IHR5cGUgSUQgaW4gcHJvZ3JhbSBCVEZcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNDktICovXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM1MDpfX2JwZl9rZnVuYyB2b2lkICpicGZfb2JqX25ldyh1NjQgbG9jYWxfdHlwZV9pZF9faywgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMzUxLXtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIzNjMtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM2NDpfX2JwZl9rZnVuYyB2b2lkICpicGZfb2JqX25ld19pbXBsKHU2NCBsb2NhbF90eXBlX2lkX19rLCB2b2lkICptZXRhX19pZ24pXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjM2NS17XFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjM2NjpcXHRyZXR1cm4gYnBmX29ial9uZXcobG9jYWxfdHlwZV9pZF9faywgbWV0YV9faWduKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMzY3LX1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGNyYXNoX2tleGVjLCBLRl9ERVNUUlVDVElWRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODA1LSNlbmRpZlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDc6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODA4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9uZXcsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX0lNUExJQ0lUX0FSR1MpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjkzND1lbnVtIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02OTQxLSAqIGJwZl9tYXBfbG9va3VwIHJldHVybnMgUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2OTQyOiAqIGJwZl9vYmpfbmV3IHJldHVybnMgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IFBUUl9NQVlCRV9OVUxMLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02OTQzLSAqIFR3byBicGZfbWFwX2xvb2t1cHMgKGV2ZW4gd2l0aCB0aGUgc2FtZSBrZXkpIHdpbGwgaGF2ZSBkaWZmZXJlbnQgcmVnLVxcdTAwM2VpZC5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Njk0NDogKiBUd28gc2VwYXJhdGUgYnBmX29ial9uZXcgd2lsbCBhbHNvIGhhdmUgZGlmZmVyZW50IHJlZy1cXHUwMDNlaWQuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY5NDUtICogRm9yIHRyYWRpdGlvbmFsIFBUUl9UT19NQVBfVkFMVUUgb3IgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQywgdGhlIHZlcmlmaWVyXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjk1Mi0gKiBwb2ludCB0byBkaWZmZXJlbnQgYnBmX3NwaW5fbG9ja3MuIExpa2V3aXNlIGZvciBwb2ludGVycyB0byBhbGxvY2F0ZWQgb2JqZWN0c1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2OTUzOiAqIHJldHVybmVkIGZyb20gYnBmX29ial9uZXcuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY5NTQtICogVGhlIHZlcmlmaWVyIGFsbG93cyB0YWtpbmcgb25seSBvbmUgYnBmX3NwaW5fbG9jayBhdCBhIHRpbWUgdG8gYXZvaWRcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTAwNj1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDA3OlxcdEtGX2JwZl9vYmpfbmV3X2ltcGwsXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDA4OlxcdEtGX2JwZl9vYmpfbmV3LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTAwOS1cXHRLRl9icGZfb2JqX2Ryb3BfaW1wbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTA3OT1CVEZfSURfTElTVChzcGVjaWFsX2tmdW5jX2xpc3QpXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDgwOkJURl9JRChmdW5jLCBicGZfb2JqX25ld19pbXBsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTA4MTpCVEZfSUQoZnVuYywgYnBmX29ial9uZXcpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDgyLUJURl9JRChmdW5jLCBicGZfb2JqX2Ryb3BfaW1wbClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE3Mz1CVEZfSUQoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaylcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExNzQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTc1OnN0YXRpYyBib29sIGlzX2JwZl9vYmpfbmV3X2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE3Ni17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTc3OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExNzg6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9vYmpfbmV3X2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE3OS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE1MTQ9c3RhdGljIHZvaWQgcmVmX2NvbnZlcnRfb3duaW5nX25vbl9vd25pbmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGlkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTcyLSAqIHJlZy1cXHUwMDNlaWQgaXMgYSB1bmlxdWUgSUQgcHJlc2VydmVkIGFmdGVyIHRoZSBOVUxMIHBvaW50ZXIgY2hlY2sgb24gdGhlIHBvaW50ZXJcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1NzM6ICogcmV0dXJuZWQgZnJvbSBicGZfb2JqX25ldy4gRWFjaCBhbGxvY2F0aW9uIHJlY2VpdmVzIGEgbmV3IHJlZy1cXHUwMDNlaWQuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTc0LSAqL1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzM5PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NDgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzQ5OlxcdGlmIChpc19icGZfb2JqX25ld19rZnVuYyhtZXRhLVxcdTAwM2VmdW5jX2lkKSB8fCBpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmMobWV0YS1cXHUwMDNlZnVuY19pZCkpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NTAtXFx0XFx0c3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqc3RydWN0X21ldGE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3NTMtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzU0OlxcdFxcdGlmIChpc19icGZfb2JqX25ld19rZnVuYyhtZXRhLVxcdTAwM2VmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNiAhYnBmX2dsb2JhbF9tYV9zZXQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzU1LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzY2LVxcdFxcdGlmICghcmV0X2J0Zikge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjc2NzpcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImJwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyByZXF1aXJlcyBwcm9nIEJURlxcXFxuXFxcIik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzY4LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzcyLVxcdFxcdGlmICghcmV0X3QgfHwgIV9fYnRmX3R5cGVfaXNfc3RydWN0KHJldF90KSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjc3MzpcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImJwZl9vYmpfbmV3L2JwZl9wZXJjcHVfb2JqX25ldyB0eXBlIElEIGFyZ3VtZW50IG11c3QgYmUgb2YgYSBzdHJ1Y3RcXFxcblxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3NC1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3Ni1cXHRcXHRpZiAoYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXkocmV0X2J0ZiwgcmV0X3QpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzc3OlxcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwiYnBmX29ial9uZXcgdHlwZSBtdXN0IG5vdCBjb250YWluIGEgZmxleGlibGUgYXJyYXlcXFxcblxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjc3OC1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjkxND1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTMyLVxcdFxcdGlmIChtZXRhLmJ0ZiAhPSBidGZfdm1saW51eCB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzEzMzpcXHRcXHQgICAgKCFpc19icGZfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTM0LVxcdFxcdCAgICAgIWlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhtZXRhLmZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1OTA9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2MjE6XFx0aWYgKGlzX2JwZl9vYmpfbmV3X2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpIHx8IGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cXHRcXHRzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhICprcHRyX3N0cnVjdF9tZXRhID0gZW52LVxcdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5rcHRyX3N0cnVjdF9tZXRhO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNToyMDo1MS4xOTYyODY1OTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU1MzQ5NDk3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBicGZfb2JqX25ld2AgaXMgYSBrZnVuYywgZ290IGl0LiBUaGUgcHJpbWFyeSBjb25maWcgZGVwZW5kZW5jeSBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IEkgYWx3YXlzIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MuIExldCBtZSBzZWUuLi4gSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgbGlua2VkX2xpc3RfZmFpbC5jYCBzZWxmdGVzdCwganVzdCB0byBiZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBnb3RjaGFzLiBZZXAsIHNlZW1zIGxpa2UgdGhlIHVzdWFsIHN1c3BlY3RzIGFyZSByZXF1aXJlZDogYENPTkZJR19CUEZfU1lTQ0FMTGAsIGBDT05GSUdfREVCVUdfSU5GT19CVEZgLCBhbmQgYENPTkZJR19CUEZfSklUYC4gT2theSwgSSB3aWxsIGluY2x1ZGUgYEJQRl9TWVNDQUxMYCBhbmQgYERFQlVHX0lORk9fQlRGYC5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBjaGVja19zcGVjaWFsX2tmdW5jYCBpcyByZWFjaGFibGUuIEFoLCB5ZXMsIGl0J3MgY2FsbGVkIGZyb20gYGNoZWNrX2tmdW5jX2NhbGxgLCB3aGljaCBpbiB0dXJuIGlzIHBhcnQgb2YgdGhlIGBkb19jaGVja19pbnNuYCB2ZXJpZmljYXRpb24gcHJvY2VzcyBmb3IgQlBGIHByb2dyYW1zLiBNYWtlcyBzZW5zZS4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGZsZXhpYmxlIGFycmF5cyB3aXRoaW4gYGJwZl9vYmpfbmV3YCBjYWxscy4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCByaWdodD9cblxuS2V5IHN5bWJvbHMgdG8ga2VlcCBpbiBtaW5kIGhlcmUgYXJlIGBjaGVja19zcGVjaWFsX2tmdW5jYCBhbmQgYGJ0Zl90eXBlX2hhc190cmFpbGluZ19mbGV4X2FycmF5YC5cblxuU28sIHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgQlBGIHZlcmlmaWVyLiBJdCB3aWxsIG5vdyByZWplY3QgYGJwZl9vYmpfbmV3YCBjYWxscyB0aGF0IHRyeSB0byBhbGxvY2F0ZSBzdHJ1Y3RzIGNvbnRhaW5pbmcgdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGNvcmUgQlBGIGxvZ2ljIGJlaW5nIHR3ZWFrZWQsIGFuZCBteSBmb2N1cyBzaG91bGQgYmUgb24gZnV6emluZyB0aGlzIGV4dGVuc2l2ZWx5LiBXZSBuZWVkIHRvIGVuc3VyZSBpdCBoYW5kbGVzIHZhcmlvdXMgQlRGIHR5cGVzIGdyYWNlZnVsbHkgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGFueSBzbmVha3kgd2F5cyB0byBieXBhc3MgdGhpcyBuZXcgY2hlY2suXG5cblJpZ2h0LCBsZXQncyBnZXQgdGhlIHNldC1yZXN1bHRzIHRvb2wgcnVubmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNDAsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA1OjIwOjU3Ljc0OTc4MzYzOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTU5Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19zcGVjaWFsX2tmdW5jXCIsXG4gICAgXCJidGZfdHlwZV9oYXNfdHJhaWxpbmdfZmxleF9hcnJheVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcmVqZWN0IGBicGZfb2JqX25ld2AgY2FsbHMgdGhhdCBhdHRlbXB0IHRvIGFsbG9jYXRlIHN0cnVjdHMgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgaGFuZGxlcyB2YXJpb3VzIEJURiB0eXBlcyBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgYnlwYXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfc3BlY2lhbF9rZnVuY1wiLFxuICAgIFwiYnRmX3R5cGVfaGFzX3RyYWlsaW5nX2ZsZXhfYXJyYXlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlamVjdCBgYnBmX29ial9uZXdgIGNhbGxzIHRoYXQgYXR0ZW1wdCB0byBhbGxvY2F0ZSBzdHJ1Y3RzIHdpdGggdHJhaWxpbmcgZmxleGlibGUgYXJyYXlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBCVEYgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGJ5cGFzc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowd7br5[1] Phase: Succeeded StartedAt: 2026-06-22 05:21:08 +0000 UTC FinishedAt: 2026-06-22 05:21:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-22 05:21:08 +0000 UTC FinishedAt: 2026-06-22 05:21:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2] Phase: Succeeded StartedAt: 2026-06-22 05:21:08 +0000 UTC FinishedAt: 2026-06-22 09:15:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-22 05:21:08 +0000 UTC FinishedAt: 2026-06-22 09:15:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-22 05:21:08 +0000 UTC FinishedAt: 2026-06-22 05:21:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-22 05:21:08 +0000 UTC FinishedAt: 2026-06-22 05:21:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd7br5/series-workflowd7br5-convert-artifact-3599380101/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-22 05:21:18 +0000 UTC FinishedAt: 2026-06-22 05:47:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-22 05:21:18 +0000 UTC FinishedAt: 2026-06-22 05:47:03 +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:*a13ec6c3-bf2e-46c5-806f-c03e8ec31e9c,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-workflowd7br5/series-workflowd7br5-convert-artifact-3599380101/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": "2e2a4db5-9693-4fa7-afaa-df38b0de7dcb", "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-workflowd7br5/series-workflowd7br5-build-action-3343444523/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-22 05:21:18 +0000 UTC FinishedAt: 2026-06-22 05:46:53 +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:*a13ec6c3-bf2e-46c5-806f-c03e8ec31e9c,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-workflowd7br5/series-workflowd7br5-convert-artifact-3599380101/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": "2e2a4db5-9693-4fa7-afaa-df38b0de7dcb", "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-workflowd7br5/series-workflowd7br5-build-action-3343444523/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-22 05:47:03 +0000 UTC FinishedAt: 2026-06-22 05:47:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-22 05:47:03 +0000 UTC FinishedAt: 2026-06-22 05:47:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-22 05:47:03 +0000 UTC FinishedAt: 2026-06-22 05:47:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-22 05:47:03 +0000 UTC FinishedAt: 2026-06-22 05:47:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd7br5/series-workflowd7br5-convert-artifact-1454190944/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-22 05:47:13 +0000 UTC FinishedAt: 2026-06-22 05:49:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-22 05:47:13 +0000 UTC FinishedAt: 2026-06-22 05:48:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2e2a4db5-9693-4fa7-afaa-df38b0de7dcb,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-workflowd7br5/series-workflowd7br5-build-action-3343444523/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-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-22 05:49:04 +0000 UTC FinishedAt: 2026-06-22 05:49:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-22 05:49:04 +0000 UTC FinishedAt: 2026-06-22 05:49:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-22 05:49:04 +0000 UTC FinishedAt: 2026-06-22 06:10:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-22 05:49:04 +0000 UTC FinishedAt: 2026-06-22 06:10:51 +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:*a13ec6c3-bf2e-46c5-806f-c03e8ec31e9c,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-workflowd7br5/series-workflowd7br5-convert-artifact-1454190944/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": "b2de5040-d51f-4f22-ac5d-4b0cb55f6214", "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-workflowd7br5/series-workflowd7br5-build-action-2971639324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-22 05:49:04 +0000 UTC FinishedAt: 2026-06-22 06:10:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a13ec6c3-bf2e-46c5-806f-c03e8ec31e9c,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-workflowd7br5/series-workflowd7br5-convert-artifact-1454190944/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": "b2de5040-d51f-4f22-ac5d-4b0cb55f6214", "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-workflowd7br5/series-workflowd7br5-build-action-2971639324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-22 06:10:51 +0000 UTC FinishedAt: 2026-06-22 06:10:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-22 06:10:51 +0000 UTC FinishedAt: 2026-06-22 06:10:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-22 06:10:51 +0000 UTC FinishedAt: 2026-06-22 06:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-22 06:10:51 +0000 UTC FinishedAt: 2026-06-22 06:12:33 +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:*b2de5040-d51f-4f22-ac5d-4b0cb55f6214,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-workflowd7br5/series-workflowd7br5-build-action-2971639324/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-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-22 06:12:43 +0000 UTC FinishedAt: 2026-06-22 09:15:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-22 06:12:43 +0000 UTC FinishedAt: 2026-06-22 09:15:55 +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_special_kfunc","btf_type_has_trailing_flex_array"],"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:*2e2a4db5-9693-4fa7-afaa-df38b0de7dcb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b2de5040-d51f-4f22-ac5d-4b0cb55f6214,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-workflowd7br5/series-workflowd7br5-build-action-3343444523/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-workflowd7br5/series-workflowd7br5-build-action-2971639324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-22 06:12:43 +0000 UTC FinishedAt: 2026-06-22 06:12:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-22 06:12:43 +0000 UTC FinishedAt: 2026-06-22 06:12:47 +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_special_kfunc","btf_type_has_trailing_flex_array"],"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-workflowd7br5/series-workflowd7br5-convert-artifact-749484473/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-22 06:12:43 +0000 UTC FinishedAt: 2026-06-22 06:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-22 06:12:43 +0000 UTC FinishedAt: 2026-06-22 06:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-22 06:12:43 +0000 UTC FinishedAt: 2026-06-22 06:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-22 06:12:53 +0000 UTC FinishedAt: 2026-06-22 09:15:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7br5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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_special_kfunc","btf_type_has_trailing_flex_array"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"7d1194d7-b675-41b2-898d-60c062a83b72","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-22 06:12:53 +0000 UTC FinishedAt: 2026-06-22 09:15:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2e2a4db5-9693-4fa7-afaa-df38b0de7dcb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b2de5040-d51f-4f22-ac5d-4b0cb55f6214,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-workflowd7br5/series-workflowd7br5-build-action-3343444523/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-workflowd7br5/series-workflowd7br5-build-action-2971639324/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-workflowd7br5/series-workflowd7br5-convert-artifact-749484473/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,}