Name: series-workflow7q5n9 Phase: Succeeded StartedAt: 2026-07-14 11:43:24 +0000 UTC FinishedAt: 2026-07-14 16:15:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[0] Phase: Succeeded StartedAt: 2026-07-14 11:43:24 +0000 UTC FinishedAt: 2026-07-14 12:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 11:43:24 +0000 UTC FinishedAt: 2026-07-14 12:06:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "adea84ee6cdea611146c4251d3c1616f5a09feca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "adea84ee6cdea611146c4251d3c1616f5a09feca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "49df6e82-4a94-4cab-ba27-6ebe3b43cac0" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_alloc_file_blocks", "ext4_zero_range", "ext4_load_tail_bh", "ext4_block_zero_eof", "ext4_zero_partial_blocks", "ext4_punch_hole" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19yYW5nZSYjMzQ7LAogICAgJiMzNDtleHQ0X2xvYWRfdGFpbF9iaCYjMzQ7LAogICAgJiMzNDtleHQ0X2Jsb2NrX3plcm9fZW9mJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3B1bmNoX2hvbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBleHQ0IGxvZ2ljIGZvciBoYW5kbGluZyBwYXJ0aWFsIGJsb2NrIHplcm9pbmcgZHVyaW5nIGZhbGxvY2F0ZSBvcGVyYXRpb25zICh6ZXJvIHJhbmdlLCBwdW5jaCBob2xlKSBhbmQgYmxvY2sgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gY2FsbHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTI6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmZTViZWEyMTVkYmQxODE2ZWQwMDAyNjU2NmZhNjYxZTdlNTVjYjM1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTI6MDY6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxuaW5kZXggOTQyODNhOTkxZTVjNGYuLmIyZTU1ODc2ZDBlMzUyIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMzA5OSw4ICYjNDM7MzA5OSwxMSBAQCBleHRlcm4gaW50IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2Nrcyk7XG4gZXh0ZXJuIGludCBleHQ0X21ldGFfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBsYmxvY2tzLFxuIFx0XHRcdFx0ICBpbnQgcGV4dGVudHMpO1xuIGV4dGVybiBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZCk7XG4mIzQzO1xuJiM0MzsjZGVmaW5lIEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUXHQweDFcbiYjNDM7I2RlZmluZSBFWFQ0X1BBUlRJQUxfWkVST19FTkRcdDB4MlxuIGV4dGVybiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsXG4tXHRcdFx0XHQgICAgbG9mZl90IGxlbmd0aCwgYm9vbCAqZGlkX3plcm8pO1xuJiM0MztcdFx0XHRcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcbiBleHRlcm4gdm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7XG4gZXh0ZXJuIHFzaXplX3QgKmV4dDRfZ2V0X3Jlc2VydmVkX3NwYWNlKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jXG5pbmRleCAxMjVmNjI4ZTczOGFiMS4uOWExYjA2YzhkZDk3OTcgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9leHRlbnRzLmNcbkBAIC00NTg1LDYgJiM0Mzs0NTg1LDcgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0bG9mZl90IGVwb3MgPSAwLCBvbGRfc2l6ZSA9IGlfc2l6ZV9yZWFkKGlub2RlKTtcbiBcdHVuc2lnbmVkIGludCBibGtiaXRzID0gaW5vZGUtXHUwMDNlaV9ibGtiaXRzO1xuIFx0Ym9vbCBhbGxvY196ZXJvID0gZmFsc2U7XG4mIzQzO1x0Ym9vbCBvcnBoYW4gPSBmYWxzZTtcbiBcbiBcdEJVR19PTighZXh0NF90ZXN0X2lub2RlX2ZsYWcoaW5vZGUsIEVYVDRfSU5PREVfRVhURU5UUykpO1xuIFx0bWFwLm1fbGJsayA9IG9mZnNldCBcdTAwM2VcdTAwM2UgYmxrYml0cztcbkBAIC00NjU5LDEyICYjNDM7NDY2MCwzNSBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXG4gXHRcdGlmIChhbGxvY196ZXJvIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKG1hcC5tX2ZsYWdzIFx1MDAyNiAoRVhUNF9NQVBfTUFQUEVEIHwgRVhUNF9NQVBfVU5XUklUVEVOKSkpIHtcbiYjNDM7XHRcdFx0V0FSTl9PTl9PTkNFKG1hcC5tX2xibGsgJiM0MzsgbWFwLm1fbGVuIFx1MDAzZVxuJiM0MztcdFx0XHRcdEVYVDRfQl9UT19MQkxLKGlub2RlLCBuZXdfc2l6ZSA/OiBvbGRfc2l6ZSkpO1xuJiM0MztcbiBcdFx0XHRyZXQgPSBleHQ0X2lzc3VlX3plcm9vdXQoaW5vZGUsIG1hcC5tX2xibGssIG1hcC5tX3BibGssXG4gXHRcdFx0XHRcdFx0IG1hcC5tX2xlbik7XG4tXHRcdFx0aWYgKGxpa2VseSghcmV0KSlcbi1cdFx0XHRcdHJldCA9IGV4dDRfY29udmVydF91bndyaXR0ZW5fZXh0ZW50cyhOVUxMLFxuJiM0MztcdFx0XHRpZiAodW5saWtlbHkocmV0KSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdGhhbmRsZSA9IGV4dDRfam91cm5hbF9zdGFydChpbm9kZSwgRVhUNF9IVF9NQVBfQkxPQ0tTLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgY3JlZGl0cyk7XG4mIzQzO1x0XHRcdGlmIChJU19FUlIoaGFuZGxlKSkge1xuJiM0MztcdFx0XHRcdHJldCA9IFBUUl9FUlIoaGFuZGxlKTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0aWYgKG5ld19zaXplKSB7XG4mIzQzO1x0XHRcdFx0cmV0ID0gZXh0NF9vcnBoYW5fYWRkKGhhbmRsZSwgaW5vZGUpO1xuJiM0MztcdFx0XHRcdG9ycGhhbiA9IHRydWU7XG4mIzQzO1x0XHRcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRcdFx0ZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcbiYjNDM7XHRcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdH1cbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0cmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKGhhbmRsZSxcbiBcdFx0XHRcdFx0aW5vZGUsIChsb2ZmX3QpbWFwLm1fbGJsayBcdTAwM2NcdTAwM2MgYmxrYml0cyxcbiBcdFx0XHRcdFx0KGxvZmZfdCltYXAubV9sZW4gXHUwMDNjXHUwMDNjIGJsa2JpdHMpO1xuJiM0MztcdFx0XHRyZXQyID0gZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcbiYjNDM7XHRcdFx0cmV0ID0gcmV0ID8gcmV0IDogcmV0MjtcbiBcdFx0XHRpZiAocmV0KVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdH1cbkBAIC00Njc4LDcgJiM0Mzs0NzAyLDcgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0XHRnb3RvIHJldHJ5O1xuIFxuIFx0aWYgKCFlcG9zIHx8ICFuZXdfc2l6ZSlcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFxuIFx0LypcbiBcdCAqIEFsbG9jYXRlIGJsb2NrcywgdXBkYXRlIHRoZSBmaWxlIHNpemUgdG8gbWF0Y2ggdGhlIHNpemUgb2YgdGhlXG5AQCAtNDY4NywxMiAmIzQzOzQ3MTEsMTYgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0aWYgKGVwb3MgXHUwMDNlIG5ld19zaXplKVxuIFx0XHRlcG9zID0gbmV3X3NpemU7XG4gXG4tXHRoYW5kbGUgPSBleHQ0X2pvdXJuYWxfc3RhcnQoaW5vZGUsIEVYVDRfSFRfTUlTQywgMSk7XG4tXHRpZiAoSVNfRVJSKGhhbmRsZSkpXG4tXHRcdHJldHVybiByZXQgPyByZXQgOiBQVFJfRVJSKGhhbmRsZSk7XG4mIzQzO1x0aGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDIpO1xuJiM0MztcdGlmIChJU19FUlIoaGFuZGxlKSkge1xuJiM0MztcdFx0cmV0ID0gcmV0ID8gcmV0IDogUFRSX0VSUihoYW5kbGUpO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuIFxuIFx0ZXh0NF91cGRhdGVfaW5vZGVfc2l6ZShpbm9kZSwgZXBvcyk7XG4gXHRyZXQyID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpO1xuJiM0MztcdGlmIChvcnBoYW4gXHUwMDI2XHUwMDI2IGlub2RlLVx1MDAzZWlfbmxpbmspXG4mIzQzO1x0XHRleHQ0X29ycGhhbl9kZWwoaGFuZGxlLCBpbm9kZSk7XG4gXHRleHQ0X3VwZGF0ZV9pbm9kZV9mc3luY190cmFucyhoYW5kbGUsIGlub2RlLCAxKTtcbiBcdHJldDMgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuIFx0cmV0MiA9IHJldDMgPyByZXQzIDogcmV0MjtcbkBAIC00NzAxLDYgJiM0Mzs0NzI5LDExIEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcbiBcdFx0cGFnZWNhY2hlX2lzaXplX2V4dGVuZGVkKGlub2RlLCBvbGRfc2l6ZSwgZXBvcyk7XG4gXG4gXHRyZXR1cm4gcmV0ID8gcmV0IDogcmV0MjtcbiYjNDM7XG4mIzQzO291dDpcbiYjNDM7XHRpZiAob3JwaGFuIFx1MDAyNlx1MDAyNiBpbm9kZS1cdTAwM2VpX25saW5rKVxuJiM0MztcdFx0ZXh0NF9vcnBoYW5fZGVsKE5VTEwsIGlub2RlKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGV4dDRfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pO1xuQEAgLTQ3MTUsNyAmIzQzOzQ3NDgsNyBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRsb2ZmX3QgYWxpZ25fc3RhcnQsIGFsaWduX2VuZCwgbmV3X3NpemUgPSAwO1xuIFx0bG9mZl90IGVuZCA9IG9mZnNldCAmIzQzOyBsZW47XG4gXHR1bnNpZ25lZCBpbnQgYmxvY2tzaXplID0gaV9ibG9ja3NpemUoaW5vZGUpO1xuLVx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xuJiM0MztcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0LCBmbGFncztcbiBcbiBcdHRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xuQEAgLTQ3MzQsMTAgJiM0Mzs0NzY3LDE2IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdH1cbiBcbiBcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9VTldSSVRfRVhUO1xuLVx0LyogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMsIGFuZCB6ZXJvXG4mIzQzO1x0ICogb3V0IHBhcnRpYWwgYmxvY2tzIGlmIHRoZXkgYWxyZWFkeSBjb250YWluIGRhdGEuXG4mIzQzO1x0ICovXG4gXHRpZiAoIUlTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKSB7XG4gXHRcdHJldCA9IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3MoZmlsZSwgb2Zmc2V0LCBsZW4sIG5ld19zaXplLFxuIFx0XHRcdFx0XHQgICAgIGZsYWdzKTtcbiYjNDM7XHRcdGlmICghcmV0KVxuJiM0MztcdFx0XHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2cGFydGlhbF96ZXJvZWQpO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG5AQCAtNDc1NCw2ICYjNDM7NDc5MywyMSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHQvKiBaZXJvIHJhbmdlIGV4Y2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovXG4gXHRhbGlnbl9zdGFydCA9IHJvdW5kX3VwKG9mZnNldCwgYmxvY2tzaXplKTtcbiBcdGFsaWduX2VuZCA9IHJvdW5kX2Rvd24oZW5kLCBibG9ja3NpemUpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEluIFdSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IHdlcmUgbm90IHBhcnRpYWwtemVyb2VkIChjbGVhblxuJiM0MztcdCAqIHVud3JpdHRlbiBvciBob2xlKSBtdXN0IGJlIGFsbG9jYXRlZCBhbmQgemVyb2VkIGFzIHdob2xlIGJsb2Nrcy5cbiYjNDM7XHQgKiBFeHBhbmQgdGhlIGFsaWduZWQgcmFuZ2Ugb3V0d2FyZCB0byBjb3ZlciB0aGVtLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB7XG4mIzQzO1x0XHRpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCBibG9ja3NpemUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICEocGFydGlhbF96ZXJvZWQgXHUwMDI2IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUKSlcbiYjNDM7XHRcdFx0YWxpZ25fc3RhcnQgPSByb3VuZF9kb3duKG9mZnNldCwgYmxvY2tzaXplKTtcbiYjNDM7XHRcdGlmICghSVNfQUxJR05FRChlbmQsIGJsb2Nrc2l6ZSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgIShwYXJ0aWFsX3plcm9lZCBcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKSlcbiYjNDM7XHRcdFx0YWxpZ25fZW5kID0gcm91bmRfdXAoZW5kLCBibG9ja3NpemUpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoYWxpZ25fZW5kIFx1MDAzZSBhbGlnbl9zdGFydCkge1xuIFx0XHRpZiAobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUylcbiBcdFx0XHRmbGFncyA9IEVYVDRfR0VUX0JMT0NLU19DUkVBVEVfWkVSTyB8IEVYVDRfRVhfTk9DQUNIRTtcbkBAIC00NzcwLDExICYjNDM7NDgyNCwxNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRpZiAoSVNfQUxJR05FRChvZmZzZXQgfCBlbmQsIGJsb2Nrc2l6ZSkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHQvKiBaZXJvIG91dCBwYXJ0aWFsIGJsb2NrIGF0IHRoZSBlZGdlcyBvZiB0aGUgcmFuZ2UgKi9cbi1cdHJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sIFx1MDAyNnBhcnRpYWxfemVyb2VkKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXHRpZiAoKChmaWxlLVx1MDAzZWZfZmxhZ3MgXHUwMDI2IE9fU1lOQykgfHwgSVNfU1lOQyhpbm9kZSkpIFx1MDAyNlx1MDAyNiBwYXJ0aWFsX3plcm9lZCkge1xuJiM0MztcdC8qXG4mIzQzO1x0ICogSW4gRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IGhhdmUgYmVlbiBwYXJ0aWFsbHlcbiYjNDM7XHQgKiB6ZXJvZWQgbXVzdCBiZSB3cml0dGVuIGJhY2sgdG8gZW5zdXJlIHRoZSBlbnRpcmUgemVyb2VkIHJhbmdlXG4mIzQzO1x0ICogaXMgY29udmVydGVkIHRvIHRoZSB3cml0dGVuIHN0YXRlLiBJbiBTWU5DIG1vZGUsIHdyaXRlYmFjayBpc1xuJiM0MztcdCAqIGFsc28gcmVxdWlyZWQgdG8gcGVyc2lzdCB0aGUgemVyb2VkIGRhdGEgdG8gZGlzay5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocGFydGlhbF96ZXJvZWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICgobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgfHxcbiYjNDM7XHQgICAgIChmaWxlLVx1MDAzZWZfZmxhZ3MgXHUwMDI2IE9fU1lOQykgfHwgSVNfU1lOQyhpbm9kZSkpKSB7XG4gXHRcdHJldCA9IGZpbGVtYXBfd3JpdGVfYW5kX3dhaXRfcmFuZ2UoaW5vZGUtXHUwMDNlaV9tYXBwaW5nLCBvZmZzZXQsXG4gXHRcdFx0XHRcdFx0ICAgZW5kIC0gMSk7XG4gXHRcdGlmIChyZXQpXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jXG5pbmRleCBjMmMyZDZhYzdmM2QxMy4uYTE2MTUwODRhM2I5OWIgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2lub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvaW5vZGUuY1xuQEAgLTQwMjYsNiAmIzQzOzQwMjYsMTAgQEAgdm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxuICAqIGV4dDRfcHVuY2hfaG9sZSwgZXRjKSB3aGljaCBuZWVkcyB0byBiZSBwcm9wZXJseSB6ZXJvZWQgb3V0LiBPdGhlcndpc2UgYVxuICAqIHJhY2luZyB3cml0ZWJhY2sgY2FuIGNvbWUgbGF0ZXIgYW5kIGZsdXNoIHRoZSBzdGFsZSBwYWdlY2FjaGUgdG8gZGlzay5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuIHRoZSBsb2FkZWQgYmggaWYgaXQgYWN0dWFsbHkgbmVlZHMgemVyb2luZyAtIGluIHdyaXR0ZW4sIGRpcnR5XG4mIzQzOyAqIHVud3JpdHRlbiwgb3IgZGVsYWxsb2Mgc3RhdGUuIFJldHVybiBOVUxMIGlmIGl0JiMzOTtzIGNsZWFuIChpLmUuLCBhIGhvbGUgb3JcbiYjNDM7ICogYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2spLlxuICAqL1xuIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxuIHtcbkBAIC00MDM3LDcgJiM0Mzs0MDQxLDcgQEAgc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pXG4gXHRpbnQgZXJyID0gMDtcbiBcbiBcdGZvbGlvID0gX19maWxlbWFwX2dldF9mb2xpbyhtYXBwaW5nLCBmcm9tIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZULFxuLVx0XHRcdFx0ICAgIEZHUF9MT0NLIHwgRkdQX0FDQ0VTU0VEIHwgRkdQX0NSRUFULFxuJiM0MztcdFx0XHRcdCAgICBGR1BfV1JJVEVCRUdJTiB8IEZHUF9BQ0NFU1NFRCxcbiBcdFx0XHRcdCAgICBtYXBwaW5nX2dmcF9jb25zdHJhaW50KG1hcHBpbmcsIH5fX0dGUF9GUykpO1xuIFx0aWYgKElTX0VSUihmb2xpbykpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChmb2xpbyk7XG5AQCAtNDA2NCw4ICYjNDM7NDA2OCwxNSBAQCBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcbiBcdH1cbiBcdGlmICghYnVmZmVyX21hcHBlZChiaCkpIHtcbiBcdFx0QlVGRkVSX1RSQUNFKGJoLCBcJiMzNDt1bm1hcHBlZFwmIzM0Oyk7XG4tXHRcdGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTtcbi1cdFx0LyogdW5tYXBwZWQ/IEl0JiMzOTtzIGEgaG9sZSAtIG5vdGhpbmcgdG8gZG8gKi9cbiYjNDM7XHRcdGVyciA9IGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTtcbiYjNDM7XHRcdGlmIChlcnIgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGdvdG8gdW5sb2NrO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEl0JiMzOTtzIGEgaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jayAtIG5vdGhpbmcgdG8gZG8uXG4mIzQzO1x0XHQgKiBOb3RlIHRoYXQgYSBsb29rdXAtb25seSBnZXRfYmxvY2sgKHdpdGhvdXRcbiYjNDM7XHRcdCAqIEVYVDRfR0VUX0JMT0NLU19DUkVBVEUpIG5ldmVyIHNldHMgQkhfTWFwcGVkIGZvciBjbGVhblxuJiM0MztcdFx0ICogdW53cml0dGVuIGV4dGVudHMuXG4mIzQzO1x0XHQgKi9cbiBcdFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xuIFx0XHRcdEJVRkZFUl9UUkFDRShiaCwgXCYjMzQ7c3RpbGwgdW5tYXBwZWRcJiMzNDspO1xuIFx0XHRcdGdvdG8gdW5sb2NrO1xuQEAgLTQyMTgsNiAmIzQzOzQyMjksMTQgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpXG4gXHRvZmZzZXQgPSBmcm9tIFx1MDAyNiAoYmxvY2tzaXplIC0gMSk7XG4gXHRpZiAoIW9mZnNldCB8fCBmcm9tIFx1MDAzZT0gZW5kKVxuIFx0XHRyZXR1cm4gMDtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIElubGluZSBkYXRhIGhhcyBubyB0YWlsIGJsb2NrIHRvIHplcm8gb3V0LiAgTm90ZSB0aGF0IGEgcmFjZSB3aXRoXG4mIzQzO1x0ICogZXh0NF9wYWdlX21rd3JpdGUoKSBjb252ZXJ0aW5nIGlubGluZSBkYXRhIHRvIGFuIGV4dGVudCB3aXRob3V0XG4mIzQzO1x0ICogaG9sZGluZyBpX3J3c2VtIGlzIHNhZmUsIGFzIHRoYXQgcGF0aCB6ZXJvZXMgdGhlIGZ1bGwgYmxvY2sgYmVmb3JlXG4mIzQzO1x0ICogY29weWluZyBpbiB0aGUgaW5saW5lIGRhdGEuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuIFx0LyogSWYgd2UgYXJlIHByb2Nlc3NpbmcgYW4gZW5jcnlwdGVkIGlub2RlIGR1cmluZyBvcnBoYW4gbGlzdCBoYW5kbGluZyAqL1xuIFx0aWYgKElTX0VOQ1JZUFRFRChpbm9kZSkgXHUwMDI2XHUwMDI2ICFmc2NyeXB0X2hhc19lbmNyeXB0aW9uX2tleShpbm9kZSkpXG4gXHRcdHJldHVybiAwO1xuQEAgLTQyNTIsMTMgJiM0Mzs0MjcxLDI2IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBaZXJvIG91dCB0aGUgdW5hbGlnbmVkIGhlYWQgYW5kIHRhaWwgb2YgdGhlIFtsc3RhcnQsIGxzdGFydCYjNDM7bGVuZ3RoKVxuJiM0MzsgKiByYW5nZS5cbiYjNDM7ICpcbiYjNDM7ICogT24gcmV0dXJuLCBAcGFydGlhbF96ZXJvZWQgcmVjb3JkcyB3aGljaCBlZGdlcyBhY3R1YWxseSBnb3RcbiYjNDM7ICogcGFydGlhbC16ZXJvZWQuICBTZXQgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQvRVhUNF9QQVJUSUFMX1pFUk9fRU5EIGlmXG4mIzQzOyAqIHRoZSBoZWFkL3RhaWwgYmxvY2sgZ290IGFjdHVhbGx5IHBhcnRpYWxseSB6ZXJvZWQgKGluIHdyaXR0ZW4sIGRpcnR5XG4mIzQzOyAqIHVud3JpdHRlbiBvciBkZWxhbGxvYyBzdGF0ZSkuICBDbGVhcmVkIGlmIHRoZSBoZWFkL3RhaWwgYmxvY2sgaXMgYVxuJiM0MzsgKiBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrLCBpbiB3aGljaCBjYXNlIHRoZXJlIGlzIG5vdGhpbmcgdGhhdFxuJiM0MzsgKiBuZWVkcyB6ZXJvaW5nLiAgV2hlbiB0aGUgaGVhZCBhbmQgdGFpbCBsYW5kIGluIHRoZSBzYW1lIGJsb2NrLCBib3RoXG4mIzQzOyAqIGJpdHMgYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyb2luZy5cbiYjNDM7ICovXG4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuLVx0XHRcdCAgICAgYm9vbCAqZGlkX3plcm8pXG4mIzQzO1x0XHRcdCAgICAgdW5zaWduZWQgaW50ICpwYXJ0aWFsX3plcm9lZClcbiB7XG4gXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtcbiBcdHVuc2lnbmVkIHBhcnRpYWxfc3RhcnQsIHBhcnRpYWxfZW5kO1xuIFx0ZXh0NF9mc2Jsa190IHN0YXJ0LCBlbmQ7XG4gXHRsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICYjNDM7IGxlbmd0aCAtIDEpO1xuJiM0MztcdGJvb2wgZGlkX3plcm8gPSBmYWxzZTtcbiBcdGludCBlcnIgPSAwO1xuIFxuIFx0cGFydGlhbF9zdGFydCA9IGxzdGFydCBcdTAwMjYgKHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSk7XG5AQCAtNDI3MCwyMSAmIzQzOzQzMDIsMzIgQEAgaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyB3aXRoaW4gdGhlIHNpbmdsZSBibG9jayAqL1xuIFx0aWYgKHN0YXJ0ID09IGVuZCBcdTAwMjZcdTAwMjZcbiBcdCAgICAocGFydGlhbF9zdGFydCB8fCAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSkpIHtcbi1cdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgZGlkX3plcm8sXG4mIzQzO1x0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBcdTAwMjZkaWRfemVybyxcbiBcdFx0XHRcdFx0ICAgIE5VTEwpO1xuJiM0MztcdFx0aWYgKGRpZF96ZXJvKVxuJiM0MztcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gKEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUIHxcbiYjNDM7XHRcdFx0XHRcdCAgICBFWFQ0X1BBUlRJQUxfWkVST19FTkQpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqL1xuIFx0aWYgKHBhcnRpYWxfc3RhcnQpIHtcbiBcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIHNiLVx1MDAzZXNfYmxvY2tzaXplLFxuLVx0XHRcdFx0XHQgICAgZGlkX3plcm8sIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0aWYgKGRpZF96ZXJvKVxuJiM0MztcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQ7XG4gXHR9XG4gXHQvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIG91dCBvbiB0aGUgZW5kIG9mIHRoZSByYW5nZSAqL1xuLVx0aWYgKHBhcnRpYWxfZW5kICE9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSlcbiYjNDM7XHRpZiAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSB7XG4mIzQzO1x0XHRkaWRfemVybyA9IGZhbHNlO1xuIFx0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGJ5dGVfZW5kIC0gcGFydGlhbF9lbmQsXG4tXHRcdFx0XHRcdCAgICBwYXJ0aWFsX2VuZCAmIzQzOyAxLCBkaWRfemVybywgTlVMTCk7XG4mIzQzO1x0XHRcdFx0XHQgICAgcGFydGlhbF9lbmQgJiM0MzsgMSwgXHUwMDI2ZGlkX3plcm8sIE5VTEwpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGlmIChkaWRfemVybylcbiYjNDM7XHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX0VORDtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbkBAIC00NDMzLDcgJiM0Mzs0NDc2LDcgQEAgaW50IGV4dDRfcHVuY2hfaG9sZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aClcbiBcdGxvZmZfdCBlbmQgPSBvZmZzZXQgJiM0MzsgbGVuZ3RoO1xuIFx0aGFuZGxlX3QgKmhhbmRsZTtcbiBcdHVuc2lnbmVkIGludCBjcmVkaXRzO1xuLVx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xuJiM0MztcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0O1xuIFxuIFx0dHJhY2VfZXh0NF9wdW5jaF9ob2xlKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTI6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfYWxsb2NfZmlsZV9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF96ZXJvX3JhbmdlJiMzNDssCiAgICAmIzM0O2V4dDRfbG9hZF90YWlsX2JoJiMzNDssCiAgICAmIzM0O2V4dDRfYmxvY2tfemVyb19lb2YmIzM0OywKICAgICYjMzQ7ZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzJiMzNDssCiAgICAmIzM0O2V4dDRfcHVuY2hfaG9sZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGV4dDQgbG9naWMgZm9yIGhhbmRsaW5nIHBhcnRpYWwgYmxvY2sgemVyb2luZyBkdXJpbmcgZmFsbG9jYXRlIG9wZXJhdGlvbnMgKHplcm8gcmFuZ2UsIHB1bmNoIGhvbGUpIGFuZCBibG9jayBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHN5c3RlbSBjYWxscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmU1YmVhMjE1ZGJkMTgxNmVkMDAwMjY1NjZmYTY2MWU3ZTU1Y2IzNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDEyOjA2OjAzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCA5NDI4M2E5OTFlNWM0Zi4uYjJlNTU4NzZkMGUzNTIgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvZXh0NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oCkBAIC0zMDk5LDggJiM0MzszMDk5LDExIEBAIGV4dGVybiBpbnQgZXh0NF9jaHVua190cmFuc19leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKTsKIGV4dGVybiBpbnQgZXh0NF9tZXRhX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbGJsb2NrcywKIAkJCQkgIGludCBwZXh0ZW50cyk7CiBleHRlcm4gaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpOwomIzQzOwomIzQzOyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQJMHgxCiYjNDM7I2RlZmluZSBFWFQ0X1BBUlRJQUxfWkVST19FTkQJMHgyCiBleHRlcm4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LAotCQkJCSAgICBsb2ZmX3QgbGVuZ3RoLCBib29sICpkaWRfemVybyk7CiYjNDM7CQkJCSAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTsKIGV4dGVybiB2bV9mYXVsdF90IGV4dDRfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKTsKIGV4dGVybiBxc2l6ZV90ICpleHQ0X2dldF9yZXNlcnZlZF9zcGFjZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0ZW50cy5jIGIvZnMvZXh0NC9leHRlbnRzLmMKaW5kZXggMTI1ZjYyOGU3MzhhYjEuLjlhMWIwNmM4ZGQ5Nzk3IDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dGVudHMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2V4dGVudHMuYwpAQCAtNDU4NSw2ICYjNDM7NDU4NSw3IEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwKIAlsb2ZmX3QgZXBvcyA9IDAsIG9sZF9zaXplID0gaV9zaXplX3JlYWQoaW5vZGUpOwogCXVuc2lnbmVkIGludCBibGtiaXRzID0gaW5vZGUtJmd0O2lfYmxrYml0czsKIAlib29sIGFsbG9jX3plcm8gPSBmYWxzZTsKJiM0MzsJYm9vbCBvcnBoYW4gPSBmYWxzZTsKIAogCUJVR19PTighZXh0NF90ZXN0X2lub2RlX2ZsYWcoaW5vZGUsIEVYVDRfSU5PREVfRVhURU5UUykpOwogCW1hcC5tX2xibGsgPSBvZmZzZXQgJmd0OyZndDsgYmxrYml0czsKQEAgLTQ2NTksMTIgJiM0Mzs0NjYwLDM1IEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwKIAogCQlpZiAoYWxsb2NfemVybyAmYW1wOyZhbXA7CiAJCSAgICAobWFwLm1fZmxhZ3MgJmFtcDsgKEVYVDRfTUFQX01BUFBFRCB8IEVYVDRfTUFQX1VOV1JJVFRFTikpKSB7CiYjNDM7CQkJV0FSTl9PTl9PTkNFKG1hcC5tX2xibGsgJiM0MzsgbWFwLm1fbGVuICZndDsKJiM0MzsJCQkJRVhUNF9CX1RPX0xCTEsoaW5vZGUsIG5ld19zaXplID86IG9sZF9zaXplKSk7CiYjNDM7CiAJCQlyZXQgPSBleHQ0X2lzc3VlX3plcm9vdXQoaW5vZGUsIG1hcC5tX2xibGssIG1hcC5tX3BibGssCiAJCQkJCQkgbWFwLm1fbGVuKTsKLQkJCWlmIChsaWtlbHkoIXJldCkpCi0JCQkJcmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKE5VTEwsCiYjNDM7CQkJaWYgKHVubGlrZWx5KHJldCkpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCWhhbmRsZSA9IGV4dDRfam91cm5hbF9zdGFydChpbm9kZSwgRVhUNF9IVF9NQVBfQkxPQ0tTLAomIzQzOwkJCQkJCSAgICBjcmVkaXRzKTsKJiM0MzsJCQlpZiAoSVNfRVJSKGhhbmRsZSkpIHsKJiM0MzsJCQkJcmV0ID0gUFRSX0VSUihoYW5kbGUpOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJaWYgKG5ld19zaXplKSB7CiYjNDM7CQkJCXJldCA9IGV4dDRfb3JwaGFuX2FkZChoYW5kbGUsIGlub2RlKTsKJiM0MzsJCQkJb3JwaGFuID0gdHJ1ZTsKJiM0MzsJCQkJaWYgKHJldCkgewomIzQzOwkJCQkJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKJiM0MzsJCQkJCWJyZWFrOwomIzQzOwkJCQl9CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCXJldCA9IGV4dDRfY29udmVydF91bndyaXR0ZW5fZXh0ZW50cyhoYW5kbGUsCiAJCQkJCWlub2RlLCAobG9mZl90KW1hcC5tX2xibGsgJmx0OyZsdDsgYmxrYml0cywKIAkJCQkJKGxvZmZfdCltYXAubV9sZW4gJmx0OyZsdDsgYmxrYml0cyk7CiYjNDM7CQkJcmV0MiA9IGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CiYjNDM7CQkJcmV0ID0gcmV0ID8gcmV0IDogcmV0MjsKIAkJCWlmIChyZXQpCiAJCQkJYnJlYWs7CiAJCX0KQEAgLTQ2NzgsNyAmIzQzOzQ3MDIsNyBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sCiAJCWdvdG8gcmV0cnk7CiAKIAlpZiAoIWVwb3MgfHwgIW5ld19zaXplKQotCQlyZXR1cm4gcmV0OwomIzQzOwkJZ290byBvdXQ7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGJsb2NrcywgdXBkYXRlIHRoZSBmaWxlIHNpemUgdG8gbWF0Y2ggdGhlIHNpemUgb2YgdGhlCkBAIC00Njg3LDEyICYjNDM7NDcxMSwxNiBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sCiAJaWYgKGVwb3MgJmd0OyBuZXdfc2l6ZSkKIAkJZXBvcyA9IG5ld19zaXplOwogCi0JaGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDEpOwotCWlmIChJU19FUlIoaGFuZGxlKSkKLQkJcmV0dXJuIHJldCA/IHJldCA6IFBUUl9FUlIoaGFuZGxlKTsKJiM0MzsJaGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDIpOwomIzQzOwlpZiAoSVNfRVJSKGhhbmRsZSkpIHsKJiM0MzsJCXJldCA9IHJldCA/IHJldCA6IFBUUl9FUlIoaGFuZGxlKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiAKIAlleHQ0X3VwZGF0ZV9pbm9kZV9zaXplKGlub2RlLCBlcG9zKTsKIAlyZXQyID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpOwomIzQzOwlpZiAob3JwaGFuICZhbXA7JmFtcDsgaW5vZGUtJmd0O2lfbmxpbmspCiYjNDM7CQlleHQ0X29ycGhhbl9kZWwoaGFuZGxlLCBpbm9kZSk7CiAJZXh0NF91cGRhdGVfaW5vZGVfZnN5bmNfdHJhbnMoaGFuZGxlLCBpbm9kZSwgMSk7CiAJcmV0MyA9IGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CiAJcmV0MiA9IHJldDMgPyByZXQzIDogcmV0MjsKQEAgLTQ3MDEsNiAmIzQzOzQ3MjksMTEgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLAogCQlwYWdlY2FjaGVfaXNpemVfZXh0ZW5kZWQoaW5vZGUsIG9sZF9zaXplLCBlcG9zKTsKIAogCXJldHVybiByZXQgPyByZXQgOiByZXQyOwomIzQzOwomIzQzO291dDoKJiM0MzsJaWYgKG9ycGhhbiAmYW1wOyZhbXA7IGlub2RlLSZndDtpX25saW5rKQomIzQzOwkJZXh0NF9vcnBoYW5fZGVsKE5VTEwsIGlub2RlKTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBleHQ0X2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTsKQEAgLTQ3MTUsNyAmIzQzOzQ3NDgsNyBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsCiAJbG9mZl90IGFsaWduX3N0YXJ0LCBhbGlnbl9lbmQsIG5ld19zaXplID0gMDsKIAlsb2ZmX3QgZW5kID0gb2Zmc2V0ICYjNDM7IGxlbjsKIAl1bnNpZ25lZCBpbnQgYmxvY2tzaXplID0gaV9ibG9ja3NpemUoaW5vZGUpOwotCWJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTsKJiM0MzsJdW5zaWduZWQgaW50IHBhcnRpYWxfemVyb2VkID0gMDsKIAlpbnQgcmV0LCBmbGFnczsKIAogCXRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpOwpAQCAtNDczNCwxMCAmIzQzOzQ3NjcsMTYgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAogCX0KIAogCWZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9VTldSSVRfRVhUOwotCS8qIFByZWFsbG9jYXRlIHRoZSByYW5nZSBpbmNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqLwomIzQzOwkvKgomIzQzOwkgKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMsIGFuZCB6ZXJvCiYjNDM7CSAqIG91dCBwYXJ0aWFsIGJsb2NrcyBpZiB0aGV5IGFscmVhZHkgY29udGFpbiBkYXRhLgomIzQzOwkgKi8KIAlpZiAoIUlTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKSB7CiAJCXJldCA9IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3MoZmlsZSwgb2Zmc2V0LCBsZW4sIG5ld19zaXplLAogCQkJCQkgICAgIGZsYWdzKTsKJiM0MzsJCWlmICghcmV0KQomIzQzOwkJCXJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sCiYjNDM7CQkJCQkJICAgICAgICZhbXA7cGFydGlhbF96ZXJvZWQpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CkBAIC00NzU0LDYgJiM0Mzs0NzkzLDIxIEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwKIAkvKiBaZXJvIHJhbmdlIGV4Y2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovCiAJYWxpZ25fc3RhcnQgPSByb3VuZF91cChvZmZzZXQsIGJsb2Nrc2l6ZSk7CiAJYWxpZ25fZW5kID0gcm91bmRfZG93bihlbmQsIGJsb2Nrc2l6ZSk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEluIFdSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IHdlcmUgbm90IHBhcnRpYWwtemVyb2VkIChjbGVhbgomIzQzOwkgKiB1bndyaXR0ZW4gb3IgaG9sZSkgbXVzdCBiZSBhbGxvY2F0ZWQgYW5kIHplcm9lZCBhcyB3aG9sZSBibG9ja3MuCiYjNDM7CSAqIEV4cGFuZCB0aGUgYWxpZ25lZCByYW5nZSBvdXR3YXJkIHRvIGNvdmVyIHRoZW0uCiYjNDM7CSAqLwomIzQzOwlpZiAobW9kZSAmYW1wOyBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB7CiYjNDM7CQlpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCBibG9ja3NpemUpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhKHBhcnRpYWxfemVyb2VkICZhbXA7IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUKSkKJiM0MzsJCQlhbGlnbl9zdGFydCA9IHJvdW5kX2Rvd24ob2Zmc2V0LCBibG9ja3NpemUpOwomIzQzOwkJaWYgKCFJU19BTElHTkVEKGVuZCwgYmxvY2tzaXplKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIShwYXJ0aWFsX3plcm9lZCAmYW1wOyBFWFQ0X1BBUlRJQUxfWkVST19FTkQpKQomIzQzOwkJCWFsaWduX2VuZCA9IHJvdW5kX3VwKGVuZCwgYmxvY2tzaXplKTsKJiM0MzsJfQomIzQzOwogCWlmIChhbGlnbl9lbmQgJmd0OyBhbGlnbl9zdGFydCkgewogCQlpZiAobW9kZSAmYW1wOyBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKQogCQkJZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1pFUk8gfCBFWFQ0X0VYX05PQ0FDSEU7CkBAIC00NzcwLDExICYjNDM7NDgyNCwxNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsCiAJaWYgKElTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKQogCQlyZXR1cm4gcmV0OwogCi0JLyogWmVybyBvdXQgcGFydGlhbCBibG9jayBhdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlICovCi0JcmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbiwgJmFtcDtwYXJ0aWFsX3plcm9lZCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQlpZiAoKChmaWxlLSZndDtmX2ZsYWdzICZhbXA7IE9fU1lOQykgfHwgSVNfU1lOQyhpbm9kZSkpICZhbXA7JmFtcDsgcGFydGlhbF96ZXJvZWQpIHsKJiM0MzsJLyoKJiM0MzsJICogSW4gRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IGhhdmUgYmVlbiBwYXJ0aWFsbHkKJiM0MzsJICogemVyb2VkIG11c3QgYmUgd3JpdHRlbiBiYWNrIHRvIGVuc3VyZSB0aGUgZW50aXJlIHplcm9lZCByYW5nZQomIzQzOwkgKiBpcyBjb252ZXJ0ZWQgdG8gdGhlIHdyaXR0ZW4gc3RhdGUuIEluIFNZTkMgbW9kZSwgd3JpdGViYWNrIGlzCiYjNDM7CSAqIGFsc28gcmVxdWlyZWQgdG8gcGVyc2lzdCB0aGUgemVyb2VkIGRhdGEgdG8gZGlzay4KJiM0MzsJICovCiYjNDM7CWlmIChwYXJ0aWFsX3plcm9lZCAmYW1wOyZhbXA7CiYjNDM7CSAgICAoKG1vZGUgJmFtcDsgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgfHwKJiM0MzsJICAgICAoZmlsZS0mZ3Q7Zl9mbGFncyAmYW1wOyBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSkgewogCQlyZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKGlub2RlLSZndDtpX21hcHBpbmcsIG9mZnNldCwKIAkJCQkJCSAgIGVuZCAtIDEpOwogCQlpZiAocmV0KQpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IGMyYzJkNmFjN2YzZDEzLi5hMTYxNTA4NGEzYjk5YiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9pbm9kZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvaW5vZGUuYwpAQCAtNDAyNiw2ICYjNDM7NDAyNiwxMCBAQCB2b2lkIGV4dDRfc2V0X2FvcHMoc3RydWN0IGlub2RlICppbm9kZSkKICAqIGJlY2F1c2UgaXQgbWlnaHQgaGF2ZSBkYXRhIGluIHBhZ2VjYWNoZSAoZWcsIGlmIGNhbGxlZCBmcm9tIGV4dDRfemVyb19yYW5nZSwKICAqIGV4dDRfcHVuY2hfaG9sZSwgZXRjKSB3aGljaCBuZWVkcyB0byBiZSBwcm9wZXJseSB6ZXJvZWQgb3V0LiBPdGhlcndpc2UgYQogICogcmFjaW5nIHdyaXRlYmFjayBjYW4gY29tZSBsYXRlciBhbmQgZmx1c2ggdGhlIHN0YWxlIHBhZ2VjYWNoZSB0byBkaXNrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuIHRoZSBsb2FkZWQgYmggaWYgaXQgYWN0dWFsbHkgbmVlZHMgemVyb2luZyAtIGluIHdyaXR0ZW4sIGRpcnR5CiYjNDM7ICogdW53cml0dGVuLCBvciBkZWxhbGxvYyBzdGF0ZS4gUmV0dXJuIE5VTEwgaWYgaXQmIzM5O3MgY2xlYW4gKGkuZS4sIGEgaG9sZSBvcgomIzQzOyAqIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrKS4KICAqLwogc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pCiB7CkBAIC00MDM3LDcgJiM0Mzs0MDQxLDcgQEAgc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pCiAJaW50IGVyciA9IDA7CiAKIAlmb2xpbyA9IF9fZmlsZW1hcF9nZXRfZm9saW8obWFwcGluZywgZnJvbSAmZ3Q7Jmd0OyBQQUdFX1NISUZULAotCQkJCSAgICBGR1BfTE9DSyB8IEZHUF9BQ0NFU1NFRCB8IEZHUF9DUkVBVCwKJiM0MzsJCQkJICAgIEZHUF9XUklURUJFR0lOIHwgRkdQX0FDQ0VTU0VELAogCQkJCSAgICBtYXBwaW5nX2dmcF9jb25zdHJhaW50KG1hcHBpbmcsIH5fX0dGUF9GUykpOwogCWlmIChJU19FUlIoZm9saW8pKQogCQlyZXR1cm4gRVJSX0NBU1QoZm9saW8pOwpAQCAtNDA2NCw4ICYjNDM7NDA2OCwxNSBAQCBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSkKIAl9CiAJaWYgKCFidWZmZXJfbWFwcGVkKGJoKSkgewogCQlCVUZGRVJfVFJBQ0UoYmgsICYjMzQ7dW5tYXBwZWQmIzM0Oyk7Ci0JCWV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTsKLQkJLyogdW5tYXBwZWQ/IEl0JiMzOTtzIGEgaG9sZSAtIG5vdGhpbmcgdG8gZG8gKi8KJiM0MzsJCWVyciA9IGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTsKJiM0MzsJCWlmIChlcnIgJmx0OyAwKQomIzQzOwkJCWdvdG8gdW5sb2NrOwomIzQzOwkJLyoKJiM0MzsJCSAqIEl0JiMzOTtzIGEgaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jayAtIG5vdGhpbmcgdG8gZG8uCiYjNDM7CQkgKiBOb3RlIHRoYXQgYSBsb29rdXAtb25seSBnZXRfYmxvY2sgKHdpdGhvdXQKJiM0MzsJCSAqIEVYVDRfR0VUX0JMT0NLU19DUkVBVEUpIG5ldmVyIHNldHMgQkhfTWFwcGVkIGZvciBjbGVhbgomIzQzOwkJICogdW53cml0dGVuIGV4dGVudHMuCiYjNDM7CQkgKi8KIAkJaWYgKCFidWZmZXJfbWFwcGVkKGJoKSkgewogCQkJQlVGRkVSX1RSQUNFKGJoLCAmIzM0O3N0aWxsIHVubWFwcGVkJiMzNDspOwogCQkJZ290byB1bmxvY2s7CkBAIC00MjE4LDYgJiM0Mzs0MjI5LDE0IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKQogCW9mZnNldCA9IGZyb20gJmFtcDsgKGJsb2Nrc2l6ZSAtIDEpOwogCWlmICghb2Zmc2V0IHx8IGZyb20gJmd0Oz0gZW5kKQogCQlyZXR1cm4gMDsKJiM0MzsJLyoKJiM0MzsJICogSW5saW5lIGRhdGEgaGFzIG5vIHRhaWwgYmxvY2sgdG8gemVybyBvdXQuICBOb3RlIHRoYXQgYSByYWNlIHdpdGgKJiM0MzsJICogZXh0NF9wYWdlX21rd3JpdGUoKSBjb252ZXJ0aW5nIGlubGluZSBkYXRhIHRvIGFuIGV4dGVudCB3aXRob3V0CiYjNDM7CSAqIGhvbGRpbmcgaV9yd3NlbSBpcyBzYWZlLCBhcyB0aGF0IHBhdGggemVyb2VzIHRoZSBmdWxsIGJsb2NrIGJlZm9yZQomIzQzOwkgKiBjb3B5aW5nIGluIHRoZSBpbmxpbmUgZGF0YS4KJiM0MzsJICovCiYjNDM7CWlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpCiYjNDM7CQlyZXR1cm4gMDsKIAkvKiBJZiB3ZSBhcmUgcHJvY2Vzc2luZyBhbiBlbmNyeXB0ZWQgaW5vZGUgZHVyaW5nIG9ycGhhbiBsaXN0IGhhbmRsaW5nICovCiAJaWYgKElTX0VOQ1JZUFRFRChpbm9kZSkgJmFtcDsmYW1wOyAhZnNjcnlwdF9oYXNfZW5jcnlwdGlvbl9rZXkoaW5vZGUpKQogCQlyZXR1cm4gMDsKQEAgLTQyNTIsMTMgJiM0Mzs0MjcxLDI2IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKQogCXJldHVybiAwOwogfQogCiYjNDM7LyoKJiM0MzsgKiBaZXJvIG91dCB0aGUgdW5hbGlnbmVkIGhlYWQgYW5kIHRhaWwgb2YgdGhlIFtsc3RhcnQsIGxzdGFydCYjNDM7bGVuZ3RoKQomIzQzOyAqIHJhbmdlLgomIzQzOyAqCiYjNDM7ICogT24gcmV0dXJuLCBAcGFydGlhbF96ZXJvZWQgcmVjb3JkcyB3aGljaCBlZGdlcyBhY3R1YWxseSBnb3QKJiM0MzsgKiBwYXJ0aWFsLXplcm9lZC4gIFNldCBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVC9FWFQ0X1BBUlRJQUxfWkVST19FTkQgaWYKJiM0MzsgKiB0aGUgaGVhZC90YWlsIGJsb2NrIGdvdCBhY3R1YWxseSBwYXJ0aWFsbHkgemVyb2VkIChpbiB3cml0dGVuLCBkaXJ0eQomIzQzOyAqIHVud3JpdHRlbiBvciBkZWxhbGxvYyBzdGF0ZSkuICBDbGVhcmVkIGlmIHRoZSBoZWFkL3RhaWwgYmxvY2sgaXMgYQomIzQzOyAqIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2ssIGluIHdoaWNoIGNhc2UgdGhlcmUgaXMgbm90aGluZyB0aGF0CiYjNDM7ICogbmVlZHMgemVyb2luZy4gIFdoZW4gdGhlIGhlYWQgYW5kIHRhaWwgbGFuZCBpbiB0aGUgc2FtZSBibG9jaywgYm90aAomIzQzOyAqIGJpdHMgYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyb2luZy4KJiM0MzsgKi8KIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCwKLQkJCSAgICAgYm9vbCAqZGlkX3plcm8pCiYjNDM7CQkJICAgICB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKQogewogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0mZ3Q7aV9zYjsKIAl1bnNpZ25lZCBwYXJ0aWFsX3N0YXJ0LCBwYXJ0aWFsX2VuZDsKIAlleHQ0X2ZzYmxrX3Qgc3RhcnQsIGVuZDsKIAlsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICYjNDM7IGxlbmd0aCAtIDEpOwomIzQzOwlib29sIGRpZF96ZXJvID0gZmFsc2U7CiAJaW50IGVyciA9IDA7CiAKIAlwYXJ0aWFsX3N0YXJ0ID0gbHN0YXJ0ICZhbXA7IChzYi0mZ3Q7c19ibG9ja3NpemUgLSAxKTsKQEAgLTQyNzAsMjEgJiM0Mzs0MzAyLDMyIEBAIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCwKIAkvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIHdpdGhpbiB0aGUgc2luZ2xlIGJsb2NrICovCiAJaWYgKHN0YXJ0ID09IGVuZCAmYW1wOyZhbXA7CiAJICAgIChwYXJ0aWFsX3N0YXJ0IHx8IChwYXJ0aWFsX2VuZCAhPSBzYi0mZ3Q7c19ibG9ja3NpemUgLSAxKSkpIHsKLQkJZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgZGlkX3plcm8sCiYjNDM7CQllcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCAmYW1wO2RpZF96ZXJvLAogCQkJCQkgICAgTlVMTCk7CiYjNDM7CQlpZiAoZGlkX3plcm8pCiYjNDM7CQkJKnBhcnRpYWxfemVyb2VkIHw9IChFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCB8CiYjNDM7CQkJCQkgICAgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKTsKIAkJcmV0dXJuIGVycjsKIAl9CiAJLyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqLwogCWlmIChwYXJ0aWFsX3N0YXJ0KSB7CiAJCWVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBzYi0mZ3Q7c19ibG9ja3NpemUsCi0JCQkJCSAgICBkaWRfemVybywgTlVMTCk7CiYjNDM7CQkJCQkgICAgJmFtcDtkaWRfemVybywgTlVMTCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJyOwomIzQzOwkJaWYgKGRpZF96ZXJvKQomIzQzOwkJCSpwYXJ0aWFsX3plcm9lZCB8PSBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVDsKIAl9CiAJLyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKi8KLQlpZiAocGFydGlhbF9lbmQgIT0gc2ItJmd0O3NfYmxvY2tzaXplIC0gMSkKJiM0MzsJaWYgKHBhcnRpYWxfZW5kICE9IHNiLSZndDtzX2Jsb2Nrc2l6ZSAtIDEpIHsKJiM0MzsJCWRpZF96ZXJvID0gZmFsc2U7CiAJCWVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgYnl0ZV9lbmQgLSBwYXJ0aWFsX2VuZCwKLQkJCQkJICAgIHBhcnRpYWxfZW5kICYjNDM7IDEsIGRpZF96ZXJvLCBOVUxMKTsKJiM0MzsJCQkJCSAgICBwYXJ0aWFsX2VuZCAmIzQzOyAxLCAmYW1wO2RpZF96ZXJvLCBOVUxMKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCWlmIChkaWRfemVybykKJiM0MzsJCQkqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fRU5EOwomIzQzOwl9CiAJcmV0dXJuIGVycjsKIH0KIApAQCAtNDQzMyw3ICYjNDM7NDQ3Niw3IEBAIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpCiAJbG9mZl90IGVuZCA9IG9mZnNldCAmIzQzOyBsZW5ndGg7CiAJaGFuZGxlX3QgKmhhbmRsZTsKIAl1bnNpZ25lZCBpbnQgY3JlZGl0czsKLQlib29sIHBhcnRpYWxfemVyb2VkID0gZmFsc2U7CiYjNDM7CXVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7CiAJaW50IHJldDsKIAogCXRyYWNlX2V4dDRfcHVuY2hfaG9sZShpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIDApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTIyCgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDc4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogZXh0NCBGaWxlc3lzdGVtIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIGRpZ2dpbmcgaW50byB0aGUgZ3V0cyBvZiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmcy9leHQ0L2V4dGVudHMuY2AsIGBmcy9leHQ0L2lub2RlLmNgLCBhbmQgYGZzL2V4dDQvZXh0NC5oYC4gVGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgaG93IGBleHQ0X3plcm9fcmFuZ2VgIGFuZCBgZXh0NF9wdW5jaF9ob2xlYCBkZWFsIHdpdGggcGFydGlhbCBibG9jayB6ZXJvaW5nLCB1c2luZyBhIGJpdG1hc2sgKGBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVGAsIGBFWFQ0X1BBUlRJQUxfWkVST19FTkRgKSB0byBrZWVwIHRyYWNrIG9mIHRob3NlIGVkZ2UgY2FzZXMuIFRoZXJlIGFyZSBhbHNvIGNoYW5nZXMgdG8gYGV4dDRfYWxsb2NfZmlsZV9ibG9ja3NgIHdoaWNoIGFmZmVjdCBvcnBoYW4gbGlzdHMgYW5kIGVycm9yIGhhbmRsaW5nLCBhbmQgYGV4dDRfbG9hZF90YWlsX2JoYCBpcyBiZWluZyBtb2RpZmllZCB0byBoYW5kbGUgY2xlYW4gdW53cml0dGVuIGJsb2NrcyBiZXR0ZXIuCgpNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgY29yZSBsb2dpYyBvZiBleHQ0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGBmYWxsb2NhdGVgIG9wZXJhdGlvbnMgbGlrZSB6ZXJvaW5nIHJhbmdlcyBhbmQgcHVuY2hpbmcgaG9sZXMsIGFzIHdlbGwgYXMgYmxvY2sgYWxsb2NhdGlvbi4KCklzIGl0IHJlYWNoYWJsZT8gQWJzb2x1dGVseS4gSXTigJlzIHRyaWdnZXJlZCB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c3RlbSBjYWxsLCBzbyBpdCYjMzk7cyBkaXJlY3RseSBleHBvc2VkIHRvIHVzZXJsYW5kIGFuZCBoZW5jZSwgZnV6emFibGUuIElzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFdpdGhvdXQgYSBkb3VidC4gQW55IG1vZGlmaWNhdGlvbiB0byBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgaXMgYSBwb3RlbnRpYWwgZ29sZG1pbmUgZm9yIGZpbmRpbmcgc3VidGxlLCBoYXJkLXRvLWZpbmQgYnVncy4KClNvLCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucy4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgYXJlOiBgZXh0NF9hbGxvY19maWxlX2Jsb2Nrc2AsIGBleHQ0X3plcm9fcmFuZ2VgLCBgZXh0NF9sb2FkX3RhaWxfYmhgLCBgZXh0NF9ibG9ja196ZXJvX2VvZmAsIGBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NgLCBhbmQgYGV4dDRfcHVuY2hfaG9sZWAuIFRoYXQmIzM5O3Mgd2hlcmUgd2UgbmVlZCB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLgoKSSYjMzk7bSB0aGlua2luZywgYXJlIHRoZXNlIGhvdC1wYXRoIGZ1bmN0aW9ucz8gTm90IGluIHRoZSBzZW5zZSBvZiBhIGZyZXF1ZW50IHdyaXRlIG9yIHJlYWQgcGF0aCwgbGlrZSBgZXh0NF9maWxlX3dyaXRlX2l0ZXJgIG9yIGBleHQ0X21hcF9ibG9ja3NgLCBidXQgYGV4dDRfcHVuY2hfaG9sZWAgYW5kIGBleHQ0X3plcm9fcmFuZ2VgIGFyZSBwYXJ0IG9mIGBmYWxsb2NhdGVgIGFuZCB0aGVyZWZvcmUgZGlyZWN0bHkgcmVsYXRlZCB0byBvdXIgZnV6eiB0YXJnZXQuIGBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzYCBpcyBpbnZvbHZlZCBpbiB6ZXJvIHJhbmdlLiBgZXh0NF9sb2FkX3RhaWxfYmhgIGlzIHVzZWQgZHVyaW5nIEVPRiB6ZXJvaW5nLiBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCBpcyB1c2VkIGluIHB1bmNoIGhvbGUgYW5kIHplcm8gcmFuZ2UuIFRoZXkgZGVmaW5pdGVseSB3YXJyYW50IGF0dGVudGlvbi4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24uIGBFWFQ0X0ZTYCBpcyB0aGUga2V5IGNvbmZpZywgYXMgdmVyaWZpZWQgaW4gYGZzL2V4dDQvS2NvbmZpZ2AuIFRoZSBmYWN0IHRoYXQgdGhlIHBhdGNoIHRvdWNoZXMgYGZzL2V4dDQvZXh0ZW50cy5jYCBhbmQgYGZzL2V4dDQvaW5vZGUuY2AgY29uZmlybXMgdGhhdCB0aGlzIGNvbmZpZyBpcyBzdWZmaWNpZW50LgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGF0IGBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzYCBpcyBpbmRlZWQgaW4gYGZzL2V4dDQvZXh0ZW50cy5jYCwgd2hpY2ggaXQgaXMuCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCmBgYGpzb24KewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19yYW5nZSYjMzQ7LAogICAgJiMzNDtleHQ0X2xvYWRfdGFpbF9iaCYjMzQ7LAogICAgJiMzNDtleHQ0X2Jsb2NrX3plcm9fZW9mJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3B1bmNoX2hvbGUmIzM0OwogIF0sCiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGV4dDQgbG9naWMgZm9yIGhhbmRsaW5nIHBhcnRpYWwgYmxvY2sgemVyb2luZyBkdXJpbmcgZmFsbG9jYXRlIG9wZXJhdGlvbnMgKHplcm8gcmFuZ2UsIHB1bmNoIGhvbGUpIGFuZCBibG9jayBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHN5c3RlbSBjYWxscy4mIzM0Owp9CmBgYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEyOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9hbGxvY19maWxlX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcmFuZ2UmIzM0OywKICAgICYjMzQ7ZXh0NF9sb2FkX3RhaWxfYmgmIzM0OywKICAgICYjMzQ7ZXh0NF9ibG9ja196ZXJvX2VvZiYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF9wdW5jaF9ob2xlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZXh0NCBsb2dpYyBmb3IgaGFuZGxpbmcgcGFydGlhbCBibG9jayB6ZXJvaW5nIGR1cmluZyBmYWxsb2NhdGUgb3BlcmF0aW9ucyAoemVybyByYW5nZSwgcHVuY2ggaG9sZSkgYW5kIGJsb2NrIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgc3lzdGVtIGNhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9hbGxvY19maWxlX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcmFuZ2UmIzM0OywKICAgICYjMzQ7ZXh0NF9sb2FkX3RhaWxfYmgmIzM0OywKICAgICYjMzQ7ZXh0NF9ibG9ja196ZXJvX2VvZiYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF9wdW5jaF9ob2xlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZXh0NCBsb2dpYyBmb3IgaGFuZGxpbmcgcGFydGlhbCBibG9jayB6ZXJvaW5nIGR1cmluZyBmYWxsb2NhdGUgb3BlcmF0aW9ucyAoemVybyByYW5nZSwgcHVuY2ggaG9sZSkgYW5kIGJsb2NrIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgc3lzdGVtIGNhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMTI6MDY6MDUuMjMzMDAyMDY4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MzgyOTA3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfYWxsb2NfZmlsZV9ibG9ja3NcIixcbiAgICBcImV4dDRfemVyb19yYW5nZVwiLFxuICAgIFwiZXh0NF9sb2FkX3RhaWxfYmhcIixcbiAgICBcImV4dDRfYmxvY2tfemVyb19lb2ZcIixcbiAgICBcImV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF9wdW5jaF9ob2xlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBleHQ0IGxvZ2ljIGZvciBoYW5kbGluZyBwYXJ0aWFsIGJsb2NrIHplcm9pbmcgZHVyaW5nIGZhbGxvY2F0ZSBvcGVyYXRpb25zICh6ZXJvIHJhbmdlLCBwdW5jaCBob2xlKSBhbmQgYmxvY2sgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gY2FsbHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEyOjA2OjA1LjIzMzAwNjkxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk5ODc2MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmU1YmVhMjE1ZGJkMTgxNmVkMDAwMjY1NjZmYTY2MWU3ZTU1Y2IzNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMjowNjowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXFxuaW5kZXggOTQyODNhOTkxZTVjNGYuLmIyZTU1ODc2ZDBlMzUyIDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcXG5AQCAtMzA5OSw4ICszMDk5LDExIEBAIGV4dGVybiBpbnQgZXh0NF9jaHVua190cmFuc19leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKTtcXG4gZXh0ZXJuIGludCBleHQ0X21ldGFfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBsYmxvY2tzLFxcbiBcXHRcXHRcXHRcXHQgIGludCBwZXh0ZW50cyk7XFxuIGV4dGVybiBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZCk7XFxuK1xcbisjZGVmaW5lIEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUXFx0MHgxXFxuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fRU5EXFx0MHgyXFxuIGV4dGVybiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsXFxuLVxcdFxcdFxcdFxcdCAgICBsb2ZmX3QgbGVuZ3RoLCBib29sICpkaWRfemVybyk7XFxuK1xcdFxcdFxcdFxcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcXG4gZXh0ZXJuIHZtX2ZhdWx0X3QgZXh0NF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpO1xcbiBleHRlcm4gcXNpemVfdCAqZXh0NF9nZXRfcmVzZXJ2ZWRfc3BhY2Uoc3RydWN0IGlub2RlICppbm9kZSk7XFxuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHRlbnRzLmMgYi9mcy9leHQ0L2V4dGVudHMuY1xcbmluZGV4IDEyNWY2MjhlNzM4YWIxLi45YTFiMDZjOGRkOTc5NyAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xcbisrKyBiL2ZzL2V4dDQvZXh0ZW50cy5jXFxuQEAgLTQ1ODUsNiArNDU4NSw3IEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcXG4gXFx0bG9mZl90IGVwb3MgPSAwLCBvbGRfc2l6ZSA9IGlfc2l6ZV9yZWFkKGlub2RlKTtcXG4gXFx0dW5zaWduZWQgaW50IGJsa2JpdHMgPSBpbm9kZS1cXHUwMDNlaV9ibGtiaXRzO1xcbiBcXHRib29sIGFsbG9jX3plcm8gPSBmYWxzZTtcXG4rXFx0Ym9vbCBvcnBoYW4gPSBmYWxzZTtcXG4gXFxuIFxcdEJVR19PTighZXh0NF90ZXN0X2lub2RlX2ZsYWcoaW5vZGUsIEVYVDRfSU5PREVfRVhURU5UUykpO1xcbiBcXHRtYXAubV9sYmxrID0gb2Zmc2V0IFxcdTAwM2VcXHUwMDNlIGJsa2JpdHM7XFxuQEAgLTQ2NTksMTIgKzQ2NjAsMzUgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbiBcXG4gXFx0XFx0aWYgKGFsbG9jX3plcm8gXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIChtYXAubV9mbGFncyBcXHUwMDI2IChFWFQ0X01BUF9NQVBQRUQgfCBFWFQ0X01BUF9VTldSSVRURU4pKSkge1xcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UobWFwLm1fbGJsayArIG1hcC5tX2xlbiBcXHUwMDNlXFxuK1xcdFxcdFxcdFxcdEVYVDRfQl9UT19MQkxLKGlub2RlLCBuZXdfc2l6ZSA/OiBvbGRfc2l6ZSkpO1xcbitcXG4gXFx0XFx0XFx0cmV0ID0gZXh0NF9pc3N1ZV96ZXJvb3V0KGlub2RlLCBtYXAubV9sYmxrLCBtYXAubV9wYmxrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgbWFwLm1fbGVuKTtcXG4tXFx0XFx0XFx0aWYgKGxpa2VseSghcmV0KSlcXG4tXFx0XFx0XFx0XFx0cmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKE5VTEwsXFxuK1xcdFxcdFxcdGlmICh1bmxpa2VseShyZXQpKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdFxcdGhhbmRsZSA9IGV4dDRfam91cm5hbF9zdGFydChpbm9kZSwgRVhUNF9IVF9NQVBfQkxPQ0tTLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgY3JlZGl0cyk7XFxuK1xcdFxcdFxcdGlmIChJU19FUlIoaGFuZGxlKSkge1xcbitcXHRcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGhhbmRsZSk7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRpZiAobmV3X3NpemUpIHtcXG4rXFx0XFx0XFx0XFx0cmV0ID0gZXh0NF9vcnBoYW5fYWRkKGhhbmRsZSwgaW5vZGUpO1xcbitcXHRcXHRcXHRcXHRvcnBoYW4gPSB0cnVlO1xcbitcXHRcXHRcXHRcXHRpZiAocmV0KSB7XFxuK1xcdFxcdFxcdFxcdFxcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XFxuK1xcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdHJldCA9IGV4dDRfY29udmVydF91bndyaXR0ZW5fZXh0ZW50cyhoYW5kbGUsXFxuIFxcdFxcdFxcdFxcdFxcdGlub2RlLCAobG9mZl90KW1hcC5tX2xibGsgXFx1MDAzY1xcdTAwM2MgYmxrYml0cyxcXG4gXFx0XFx0XFx0XFx0XFx0KGxvZmZfdCltYXAubV9sZW4gXFx1MDAzY1xcdTAwM2MgYmxrYml0cyk7XFxuK1xcdFxcdFxcdHJldDIgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xcbitcXHRcXHRcXHRyZXQgPSByZXQgPyByZXQgOiByZXQyO1xcbiBcXHRcXHRcXHRpZiAocmV0KVxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbkBAIC00Njc4LDcgKzQ3MDIsNyBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXFxuIFxcdFxcdGdvdG8gcmV0cnk7XFxuIFxcbiBcXHRpZiAoIWVwb3MgfHwgIW5ld19zaXplKVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRnb3RvIG91dDtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIEFsbG9jYXRlIGJsb2NrcywgdXBkYXRlIHRoZSBmaWxlIHNpemUgdG8gbWF0Y2ggdGhlIHNpemUgb2YgdGhlXFxuQEAgLTQ2ODcsMTIgKzQ3MTEsMTYgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbiBcXHRpZiAoZXBvcyBcXHUwMDNlIG5ld19zaXplKVxcbiBcXHRcXHRlcG9zID0gbmV3X3NpemU7XFxuIFxcbi1cXHRoYW5kbGUgPSBleHQ0X2pvdXJuYWxfc3RhcnQoaW5vZGUsIEVYVDRfSFRfTUlTQywgMSk7XFxuLVxcdGlmIChJU19FUlIoaGFuZGxlKSlcXG4tXFx0XFx0cmV0dXJuIHJldCA/IHJldCA6IFBUUl9FUlIoaGFuZGxlKTtcXG4rXFx0aGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDIpO1xcbitcXHRpZiAoSVNfRVJSKGhhbmRsZSkpIHtcXG4rXFx0XFx0cmV0ID0gcmV0ID8gcmV0IDogUFRSX0VSUihoYW5kbGUpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbiBcXG4gXFx0ZXh0NF91cGRhdGVfaW5vZGVfc2l6ZShpbm9kZSwgZXBvcyk7XFxuIFxcdHJldDIgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7XFxuK1xcdGlmIChvcnBoYW4gXFx1MDAyNlxcdTAwMjYgaW5vZGUtXFx1MDAzZWlfbmxpbmspXFxuK1xcdFxcdGV4dDRfb3JwaGFuX2RlbChoYW5kbGUsIGlub2RlKTtcXG4gXFx0ZXh0NF91cGRhdGVfaW5vZGVfZnN5bmNfdHJhbnMoaGFuZGxlLCBpbm9kZSwgMSk7XFxuIFxcdHJldDMgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xcbiBcXHRyZXQyID0gcmV0MyA/IHJldDMgOiByZXQyO1xcbkBAIC00NzAxLDYgKzQ3MjksMTEgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbiBcXHRcXHRwYWdlY2FjaGVfaXNpemVfZXh0ZW5kZWQoaW5vZGUsIG9sZF9zaXplLCBlcG9zKTtcXG4gXFxuIFxcdHJldHVybiByZXQgPyByZXQgOiByZXQyO1xcbitcXG4rb3V0OlxcbitcXHRpZiAob3JwaGFuIFxcdTAwMjZcXHUwMDI2IGlub2RlLVxcdTAwM2VpX25saW5rKVxcbitcXHRcXHRleHQ0X29ycGhhbl9kZWwoTlVMTCwgaW5vZGUpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGV4dDRfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pO1xcbkBAIC00NzE1LDcgKzQ3NDgsNyBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdGxvZmZfdCBhbGlnbl9zdGFydCwgYWxpZ25fZW5kLCBuZXdfc2l6ZSA9IDA7XFxuIFxcdGxvZmZfdCBlbmQgPSBvZmZzZXQgKyBsZW47XFxuIFxcdHVuc2lnbmVkIGludCBibG9ja3NpemUgPSBpX2Jsb2Nrc2l6ZShpbm9kZSk7XFxuLVxcdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcXG4rXFx0dW5zaWduZWQgaW50IHBhcnRpYWxfemVyb2VkID0gMDtcXG4gXFx0aW50IHJldCwgZmxhZ3M7XFxuIFxcbiBcXHR0cmFjZV9leHQ0X3plcm9fcmFuZ2UoaW5vZGUsIG9mZnNldCwgbGVuLCBtb2RlKTtcXG5AQCAtNDczNCwxMCArNDc2NywxNiBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdH1cXG4gXFxuIFxcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9VTldSSVRfRVhUO1xcbi1cXHQvKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMgKi9cXG4rXFx0LypcXG4rXFx0ICogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzLCBhbmQgemVyb1xcbitcXHQgKiBvdXQgcGFydGlhbCBibG9ja3MgaWYgdGhleSBhbHJlYWR5IGNvbnRhaW4gZGF0YS5cXG4rXFx0ICovXFxuIFxcdGlmICghSVNfQUxJR05FRChvZmZzZXQgfCBlbmQsIGJsb2Nrc2l6ZSkpIHtcXG4gXFx0XFx0cmV0ID0gZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhmaWxlLCBvZmZzZXQsIGxlbiwgbmV3X3NpemUsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgZmxhZ3MpO1xcbitcXHRcXHRpZiAoIXJldClcXG4rXFx0XFx0XFx0cmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtNDc1NCw2ICs0NzkzLDIxIEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0LyogWmVybyByYW5nZSBleGNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqL1xcbiBcXHRhbGlnbl9zdGFydCA9IHJvdW5kX3VwKG9mZnNldCwgYmxvY2tzaXplKTtcXG4gXFx0YWxpZ25fZW5kID0gcm91bmRfZG93bihlbmQsIGJsb2Nrc2l6ZSk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBJbiBXUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCB3ZXJlIG5vdCBwYXJ0aWFsLXplcm9lZCAoY2xlYW5cXG4rXFx0ICogdW53cml0dGVuIG9yIGhvbGUpIG11c3QgYmUgYWxsb2NhdGVkIGFuZCB6ZXJvZWQgYXMgd2hvbGUgYmxvY2tzLlxcbitcXHQgKiBFeHBhbmQgdGhlIGFsaWduZWQgcmFuZ2Ugb3V0d2FyZCB0byBjb3ZlciB0aGVtLlxcbitcXHQgKi9cXG4rXFx0aWYgKG1vZGUgXFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB7XFxuK1xcdFxcdGlmICghSVNfQUxJR05FRChvZmZzZXQsIGJsb2Nrc2l6ZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICEocGFydGlhbF96ZXJvZWQgXFx1MDAyNiBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCkpXFxuK1xcdFxcdFxcdGFsaWduX3N0YXJ0ID0gcm91bmRfZG93bihvZmZzZXQsIGJsb2Nrc2l6ZSk7XFxuK1xcdFxcdGlmICghSVNfQUxJR05FRChlbmQsIGJsb2Nrc2l6ZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICEocGFydGlhbF96ZXJvZWQgXFx1MDAyNiBFWFQ0X1BBUlRJQUxfWkVST19FTkQpKVxcbitcXHRcXHRcXHRhbGlnbl9lbmQgPSByb3VuZF91cChlbmQsIGJsb2Nrc2l6ZSk7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChhbGlnbl9lbmQgXFx1MDAzZSBhbGlnbl9zdGFydCkge1xcbiBcXHRcXHRpZiAobW9kZSBcXHUwMDI2IEZBTExPQ19GTF9XUklURV9aRVJPRVMpXFxuIFxcdFxcdFxcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9aRVJPIHwgRVhUNF9FWF9OT0NBQ0hFO1xcbkBAIC00NzcwLDExICs0ODI0LDE1IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0aWYgKElTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0LyogWmVybyBvdXQgcGFydGlhbCBibG9jayBhdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlICovXFxuLVxcdHJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sIFxcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcdGlmICgoKGZpbGUtXFx1MDAzZWZfZmxhZ3MgXFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSBcXHUwMDI2XFx1MDAyNiBwYXJ0aWFsX3plcm9lZCkge1xcbitcXHQvKlxcbitcXHQgKiBJbiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTIG1vZGUsIGVkZ2VzIHRoYXQgaGF2ZSBiZWVuIHBhcnRpYWxseVxcbitcXHQgKiB6ZXJvZWQgbXVzdCBiZSB3cml0dGVuIGJhY2sgdG8gZW5zdXJlIHRoZSBlbnRpcmUgemVyb2VkIHJhbmdlXFxuK1xcdCAqIGlzIGNvbnZlcnRlZCB0byB0aGUgd3JpdHRlbiBzdGF0ZS4gSW4gU1lOQyBtb2RlLCB3cml0ZWJhY2sgaXNcXG4rXFx0ICogYWxzbyByZXF1aXJlZCB0byBwZXJzaXN0IHRoZSB6ZXJvZWQgZGF0YSB0byBkaXNrLlxcbitcXHQgKi9cXG4rXFx0aWYgKHBhcnRpYWxfemVyb2VkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAoKG1vZGUgXFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB8fFxcbitcXHQgICAgIChmaWxlLVxcdTAwM2VmX2ZsYWdzIFxcdTAwMjYgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkpIHtcXG4gXFx0XFx0cmV0ID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZShpbm9kZS1cXHUwMDNlaV9tYXBwaW5nLCBvZmZzZXQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIGVuZCAtIDEpO1xcbiBcXHRcXHRpZiAocmV0KVxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcXG5pbmRleCBjMmMyZDZhYzdmM2QxMy4uYTE2MTUwODRhM2I5OWIgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9pbm9kZS5jXFxuKysrIGIvZnMvZXh0NC9pbm9kZS5jXFxuQEAgLTQwMjYsNiArNDAyNiwxMCBAQCB2b2lkIGV4dDRfc2V0X2FvcHMoc3RydWN0IGlub2RlICppbm9kZSlcXG4gICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxcbiAgKiBleHQ0X3B1bmNoX2hvbGUsIGV0Yykgd2hpY2ggbmVlZHMgdG8gYmUgcHJvcGVybHkgemVyb2VkIG91dC4gT3RoZXJ3aXNlIGFcXG4gICogcmFjaW5nIHdyaXRlYmFjayBjYW4gY29tZSBsYXRlciBhbmQgZmx1c2ggdGhlIHN0YWxlIHBhZ2VjYWNoZSB0byBkaXNrLlxcbisgKlxcbisgKiBSZXR1cm4gdGhlIGxvYWRlZCBiaCBpZiBpdCBhY3R1YWxseSBuZWVkcyB6ZXJvaW5nIC0gaW4gd3JpdHRlbiwgZGlydHlcXG4rICogdW53cml0dGVuLCBvciBkZWxhbGxvYyBzdGF0ZS4gUmV0dXJuIE5VTEwgaWYgaXQncyBjbGVhbiAoaS5lLiwgYSBob2xlIG9yXFxuKyAqIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrKS5cXG4gICovXFxuIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxcbiB7XFxuQEAgLTQwMzcsNyArNDA0MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxcbiBcXHRpbnQgZXJyID0gMDtcXG4gXFxuIFxcdGZvbGlvID0gX19maWxlbWFwX2dldF9mb2xpbyhtYXBwaW5nLCBmcm9tIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQsXFxuLVxcdFxcdFxcdFxcdCAgICBGR1BfTE9DSyB8IEZHUF9BQ0NFU1NFRCB8IEZHUF9DUkVBVCxcXG4rXFx0XFx0XFx0XFx0ICAgIEZHUF9XUklURUJFR0lOIHwgRkdQX0FDQ0VTU0VELFxcbiBcXHRcXHRcXHRcXHQgICAgbWFwcGluZ19nZnBfY29uc3RyYWludChtYXBwaW5nLCB+X19HRlBfRlMpKTtcXG4gXFx0aWYgKElTX0VSUihmb2xpbykpXFxuIFxcdFxcdHJldHVybiBFUlJfQ0FTVChmb2xpbyk7XFxuQEAgLTQwNjQsOCArNDA2OCwxNSBAQCBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcXG4gXFx0fVxcbiBcXHRpZiAoIWJ1ZmZlcl9tYXBwZWQoYmgpKSB7XFxuIFxcdFxcdEJVRkZFUl9UUkFDRShiaCwgXFxcInVubWFwcGVkXFxcIik7XFxuLVxcdFxcdGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTtcXG4tXFx0XFx0LyogdW5tYXBwZWQ/IEl0J3MgYSBob2xlIC0gbm90aGluZyB0byBkbyAqL1xcbitcXHRcXHRlcnIgPSBleHQ0X2dldF9ibG9jayhpbm9kZSwgaWJsb2NrLCBiaCwgMCk7XFxuK1xcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogSXQncyBhIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2sgLSBub3RoaW5nIHRvIGRvLlxcbitcXHRcXHQgKiBOb3RlIHRoYXQgYSBsb29rdXAtb25seSBnZXRfYmxvY2sgKHdpdGhvdXRcXG4rXFx0XFx0ICogRVhUNF9HRVRfQkxPQ0tTX0NSRUFURSkgbmV2ZXIgc2V0cyBCSF9NYXBwZWQgZm9yIGNsZWFuXFxuK1xcdFxcdCAqIHVud3JpdHRlbiBleHRlbnRzLlxcbitcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xcbiBcXHRcXHRcXHRCVUZGRVJfVFJBQ0UoYmgsIFxcXCJzdGlsbCB1bm1hcHBlZFxcXCIpO1xcbiBcXHRcXHRcXHRnb3RvIHVubG9jaztcXG5AQCAtNDIxOCw2ICs0MjI5LDE0IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKVxcbiBcXHRvZmZzZXQgPSBmcm9tIFxcdTAwMjYgKGJsb2Nrc2l6ZSAtIDEpO1xcbiBcXHRpZiAoIW9mZnNldCB8fCBmcm9tIFxcdTAwM2U9IGVuZClcXG4gXFx0XFx0cmV0dXJuIDA7XFxuK1xcdC8qXFxuK1xcdCAqIElubGluZSBkYXRhIGhhcyBubyB0YWlsIGJsb2NrIHRvIHplcm8gb3V0LiAgTm90ZSB0aGF0IGEgcmFjZSB3aXRoXFxuK1xcdCAqIGV4dDRfcGFnZV9ta3dyaXRlKCkgY29udmVydGluZyBpbmxpbmUgZGF0YSB0byBhbiBleHRlbnQgd2l0aG91dFxcbitcXHQgKiBob2xkaW5nIGlfcndzZW0gaXMgc2FmZSwgYXMgdGhhdCBwYXRoIHplcm9lcyB0aGUgZnVsbCBibG9jayBiZWZvcmVcXG4rXFx0ICogY29weWluZyBpbiB0aGUgaW5saW5lIGRhdGEuXFxuK1xcdCAqL1xcbitcXHRpZiAoZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFx0LyogSWYgd2UgYXJlIHByb2Nlc3NpbmcgYW4gZW5jcnlwdGVkIGlub2RlIGR1cmluZyBvcnBoYW4gbGlzdCBoYW5kbGluZyAqL1xcbiBcXHRpZiAoSVNfRU5DUllQVEVEKGlub2RlKSBcXHUwMDI2XFx1MDAyNiAhZnNjcnlwdF9oYXNfZW5jcnlwdGlvbl9rZXkoaW5vZGUpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG5AQCAtNDI1MiwxMyArNDI3MSwyNiBAQCBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIFplcm8gb3V0IHRoZSB1bmFsaWduZWQgaGVhZCBhbmQgdGFpbCBvZiB0aGUgW2xzdGFydCwgbHN0YXJ0K2xlbmd0aClcXG4rICogcmFuZ2UuXFxuKyAqXFxuKyAqIE9uIHJldHVybiwgQHBhcnRpYWxfemVyb2VkIHJlY29yZHMgd2hpY2ggZWRnZXMgYWN0dWFsbHkgZ290XFxuKyAqIHBhcnRpYWwtemVyb2VkLiAgU2V0IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUL0VYVDRfUEFSVElBTF9aRVJPX0VORCBpZlxcbisgKiB0aGUgaGVhZC90YWlsIGJsb2NrIGdvdCBhY3R1YWxseSBwYXJ0aWFsbHkgemVyb2VkIChpbiB3cml0dGVuLCBkaXJ0eVxcbisgKiB1bndyaXR0ZW4gb3IgZGVsYWxsb2Mgc3RhdGUpLiAgQ2xlYXJlZCBpZiB0aGUgaGVhZC90YWlsIGJsb2NrIGlzIGFcXG4rICogaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jaywgaW4gd2hpY2ggY2FzZSB0aGVyZSBpcyBub3RoaW5nIHRoYXRcXG4rICogbmVlZHMgemVyb2luZy4gIFdoZW4gdGhlIGhlYWQgYW5kIHRhaWwgbGFuZCBpbiB0aGUgc2FtZSBibG9jaywgYm90aFxcbisgKiBiaXRzIGFyZSBzZXQgdG9nZXRoZXIgb24gYSBzdWNjZXNzZnVsIHplcm9pbmcuXFxuKyAqL1xcbiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5ndGgsXFxuLVxcdFxcdFxcdCAgICAgYm9vbCAqZGlkX3plcm8pXFxuK1xcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50ICpwYXJ0aWFsX3plcm9lZClcXG4ge1xcbiBcXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXFx1MDAzZWlfc2I7XFxuIFxcdHVuc2lnbmVkIHBhcnRpYWxfc3RhcnQsIHBhcnRpYWxfZW5kO1xcbiBcXHRleHQ0X2ZzYmxrX3Qgc3RhcnQsIGVuZDtcXG4gXFx0bG9mZl90IGJ5dGVfZW5kID0gKGxzdGFydCArIGxlbmd0aCAtIDEpO1xcbitcXHRib29sIGRpZF96ZXJvID0gZmFsc2U7XFxuIFxcdGludCBlcnIgPSAwO1xcbiBcXG4gXFx0cGFydGlhbF9zdGFydCA9IGxzdGFydCBcXHUwMDI2IChzYi1cXHUwMDNlc19ibG9ja3NpemUgLSAxKTtcXG5AQCAtNDI3MCwyMSArNDMwMiwzMiBAQCBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5ndGgsXFxuIFxcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gd2l0aGluIHRoZSBzaW5nbGUgYmxvY2sgKi9cXG4gXFx0aWYgKHN0YXJ0ID09IGVuZCBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgKHBhcnRpYWxfc3RhcnQgfHwgKHBhcnRpYWxfZW5kICE9IHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpKSkge1xcbi1cXHRcXHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBkaWRfemVybyxcXG4rXFx0XFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgXFx1MDAyNmRpZF96ZXJvLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgTlVMTCk7XFxuK1xcdFxcdGlmIChkaWRfemVybylcXG4rXFx0XFx0XFx0KnBhcnRpYWxfemVyb2VkIHw9IChFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCB8XFxuK1xcdFxcdFxcdFxcdFxcdCAgICBFWFQ0X1BBUlRJQUxfWkVST19FTkQpO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gb3V0IG9uIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgKi9cXG4gXFx0aWYgKHBhcnRpYWxfc3RhcnQpIHtcXG4gXFx0XFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGRpZF96ZXJvLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZkaWRfemVybywgTlVMTCk7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGlmIChkaWRfemVybylcXG4rXFx0XFx0XFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUO1xcbiBcXHR9XFxuIFxcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gb3V0IG9uIHRoZSBlbmQgb2YgdGhlIHJhbmdlICovXFxuLVxcdGlmIChwYXJ0aWFsX2VuZCAhPSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLSAxKVxcbitcXHRpZiAocGFydGlhbF9lbmQgIT0gc2ItXFx1MDAzZXNfYmxvY2tzaXplIC0gMSkge1xcbitcXHRcXHRkaWRfemVybyA9IGZhbHNlO1xcbiBcXHRcXHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGJ5dGVfZW5kIC0gcGFydGlhbF9lbmQsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBwYXJ0aWFsX2VuZCArIDEsIGRpZF96ZXJvLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHBhcnRpYWxfZW5kICsgMSwgXFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0aWYgKGRpZF96ZXJvKVxcbitcXHRcXHRcXHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fRU5EO1xcbitcXHR9XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuQEAgLTQ0MzMsNyArNDQ3Niw3IEBAIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpXFxuIFxcdGxvZmZfdCBlbmQgPSBvZmZzZXQgKyBsZW5ndGg7XFxuIFxcdGhhbmRsZV90ICpoYW5kbGU7XFxuIFxcdHVuc2lnbmVkIGludCBjcmVkaXRzO1xcbi1cXHRib29sIHBhcnRpYWxfemVyb2VkID0gZmFsc2U7XFxuK1xcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHR0cmFjZV9leHQ0X3B1bmNoX2hvbGUoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTI6MDY6MDUuOTMzNzYwNTMxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjgzNzUxODk0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9hbGxvY19maWxlX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF96ZXJvX3JhbmdlXCIsXG4gICAgXCJleHQ0X2xvYWRfdGFpbF9iaFwiLFxuICAgIFwiZXh0NF9ibG9ja196ZXJvX2VvZlwiLFxuICAgIFwiZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzXCIsXG4gICAgXCJleHQ0X3B1bmNoX2hvbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGV4dDQgbG9naWMgZm9yIGhhbmRsaW5nIHBhcnRpYWwgYmxvY2sgemVyb2luZyBkdXJpbmcgZmFsbG9jYXRlIG9wZXJhdGlvbnMgKHplcm8gcmFuZ2UsIHB1bmNoIGhvbGUpIGFuZCBibG9jayBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHN5c3RlbSBjYWxscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmZTViZWEyMTVkYmQxODE2ZWQwMDAyNjU2NmZhNjYxZTdlNTVjYjM1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTI6MDY6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXG5pbmRleCA5NDI4M2E5OTFlNWM0Zi4uYjJlNTU4NzZkMGUzNTIgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dDQuaFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcbkBAIC0zMDk5LDggKzMwOTksMTEgQEAgZXh0ZXJuIGludCBleHQ0X2NodW5rX3RyYW5zX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbnJibG9ja3MpO1xuIGV4dGVybiBpbnQgZXh0NF9tZXRhX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbGJsb2NrcyxcbiBcdFx0XHRcdCAgaW50IHBleHRlbnRzKTtcbiBleHRlcm4gaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpO1xuK1xuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlRcdDB4MVxuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fRU5EXHQweDJcbiBleHRlcm4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LFxuLVx0XHRcdFx0ICAgIGxvZmZfdCBsZW5ndGgsIGJvb2wgKmRpZF96ZXJvKTtcbitcdFx0XHRcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcbiBleHRlcm4gdm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7XG4gZXh0ZXJuIHFzaXplX3QgKmV4dDRfZ2V0X3Jlc2VydmVkX3NwYWNlKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jXG5pbmRleCAxMjVmNjI4ZTczOGFiMS4uOWExYjA2YzhkZDk3OTcgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xuKysrIGIvZnMvZXh0NC9leHRlbnRzLmNcbkBAIC00NTg1LDYgKzQ1ODUsNyBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXHRsb2ZmX3QgZXBvcyA9IDAsIG9sZF9zaXplID0gaV9zaXplX3JlYWQoaW5vZGUpO1xuIFx0dW5zaWduZWQgaW50IGJsa2JpdHMgPSBpbm9kZS1cdTAwM2VpX2Jsa2JpdHM7XG4gXHRib29sIGFsbG9jX3plcm8gPSBmYWxzZTtcbitcdGJvb2wgb3JwaGFuID0gZmFsc2U7XG4gXG4gXHRCVUdfT04oIWV4dDRfdGVzdF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX0VYVEVOVFMpKTtcbiBcdG1hcC5tX2xibGsgPSBvZmZzZXQgXHUwMDNlXHUwMDNlIGJsa2JpdHM7XG5AQCAtNDY1OSwxMiArNDY2MCwzNSBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXG4gXHRcdGlmIChhbGxvY196ZXJvIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKG1hcC5tX2ZsYWdzIFx1MDAyNiAoRVhUNF9NQVBfTUFQUEVEIHwgRVhUNF9NQVBfVU5XUklUVEVOKSkpIHtcbitcdFx0XHRXQVJOX09OX09OQ0UobWFwLm1fbGJsayArIG1hcC5tX2xlbiBcdTAwM2VcbitcdFx0XHRcdEVYVDRfQl9UT19MQkxLKGlub2RlLCBuZXdfc2l6ZSA/OiBvbGRfc2l6ZSkpO1xuK1xuIFx0XHRcdHJldCA9IGV4dDRfaXNzdWVfemVyb291dChpbm9kZSwgbWFwLm1fbGJsaywgbWFwLm1fcGJsayxcbiBcdFx0XHRcdFx0XHQgbWFwLm1fbGVuKTtcbi1cdFx0XHRpZiAobGlrZWx5KCFyZXQpKVxuLVx0XHRcdFx0cmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKE5VTEwsXG4rXHRcdFx0aWYgKHVubGlrZWx5KHJldCkpXG4rXHRcdFx0XHRicmVhaztcbitcbitcdFx0XHRoYW5kbGUgPSBleHQ0X2pvdXJuYWxfc3RhcnQoaW5vZGUsIEVYVDRfSFRfTUFQX0JMT0NLUyxcbitcdFx0XHRcdFx0XHQgICAgY3JlZGl0cyk7XG4rXHRcdFx0aWYgKElTX0VSUihoYW5kbGUpKSB7XG4rXHRcdFx0XHRyZXQgPSBQVFJfRVJSKGhhbmRsZSk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4rXG4rXHRcdFx0aWYgKG5ld19zaXplKSB7XG4rXHRcdFx0XHRyZXQgPSBleHQ0X29ycGhhbl9hZGQoaGFuZGxlLCBpbm9kZSk7XG4rXHRcdFx0XHRvcnBoYW4gPSB0cnVlO1xuK1x0XHRcdFx0aWYgKHJldCkge1xuK1x0XHRcdFx0XHRleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuK1x0XHRcdFx0XHRicmVhaztcbitcdFx0XHRcdH1cbitcdFx0XHR9XG4rXG4rXHRcdFx0cmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKGhhbmRsZSxcbiBcdFx0XHRcdFx0aW5vZGUsIChsb2ZmX3QpbWFwLm1fbGJsayBcdTAwM2NcdTAwM2MgYmxrYml0cyxcbiBcdFx0XHRcdFx0KGxvZmZfdCltYXAubV9sZW4gXHUwMDNjXHUwMDNjIGJsa2JpdHMpO1xuK1x0XHRcdHJldDIgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuK1x0XHRcdHJldCA9IHJldCA/IHJldCA6IHJldDI7XG4gXHRcdFx0aWYgKHJldClcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHR9XG5AQCAtNDY3OCw3ICs0NzAyLDcgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0XHRnb3RvIHJldHJ5O1xuIFxuIFx0aWYgKCFlcG9zIHx8ICFuZXdfc2l6ZSlcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBvdXQ7XG4gXG4gXHQvKlxuIFx0ICogQWxsb2NhdGUgYmxvY2tzLCB1cGRhdGUgdGhlIGZpbGUgc2l6ZSB0byBtYXRjaCB0aGUgc2l6ZSBvZiB0aGVcbkBAIC00Njg3LDEyICs0NzExLDE2IEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcbiBcdGlmIChlcG9zIFx1MDAzZSBuZXdfc2l6ZSlcbiBcdFx0ZXBvcyA9IG5ld19zaXplO1xuIFxuLVx0aGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDEpO1xuLVx0aWYgKElTX0VSUihoYW5kbGUpKVxuLVx0XHRyZXR1cm4gcmV0ID8gcmV0IDogUFRSX0VSUihoYW5kbGUpO1xuK1x0aGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDIpO1xuK1x0aWYgKElTX0VSUihoYW5kbGUpKSB7XG4rXHRcdHJldCA9IHJldCA/IHJldCA6IFBUUl9FUlIoaGFuZGxlKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4gXG4gXHRleHQ0X3VwZGF0ZV9pbm9kZV9zaXplKGlub2RlLCBlcG9zKTtcbiBcdHJldDIgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7XG4rXHRpZiAob3JwaGFuIFx1MDAyNlx1MDAyNiBpbm9kZS1cdTAwM2VpX25saW5rKVxuK1x0XHRleHQ0X29ycGhhbl9kZWwoaGFuZGxlLCBpbm9kZSk7XG4gXHRleHQ0X3VwZGF0ZV9pbm9kZV9mc3luY190cmFucyhoYW5kbGUsIGlub2RlLCAxKTtcbiBcdHJldDMgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuIFx0cmV0MiA9IHJldDMgPyByZXQzIDogcmV0MjtcbkBAIC00NzAxLDYgKzQ3MjksMTEgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0XHRwYWdlY2FjaGVfaXNpemVfZXh0ZW5kZWQoaW5vZGUsIG9sZF9zaXplLCBlcG9zKTtcbiBcbiBcdHJldHVybiByZXQgPyByZXQgOiByZXQyO1xuK1xuK291dDpcbitcdGlmIChvcnBoYW4gXHUwMDI2XHUwMDI2IGlub2RlLVx1MDAzZWlfbmxpbmspXG4rXHRcdGV4dDRfb3JwaGFuX2RlbChOVUxMLCBpbm9kZSk7XG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGV4dDRfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pO1xuQEAgLTQ3MTUsNyArNDc0OCw3IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdGxvZmZfdCBhbGlnbl9zdGFydCwgYWxpZ25fZW5kLCBuZXdfc2l6ZSA9IDA7XG4gXHRsb2ZmX3QgZW5kID0gb2Zmc2V0ICsgbGVuO1xuIFx0dW5zaWduZWQgaW50IGJsb2Nrc2l6ZSA9IGlfYmxvY2tzaXplKGlub2RlKTtcbi1cdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcbitcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0LCBmbGFncztcbiBcbiBcdHRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xuQEAgLTQ3MzQsMTAgKzQ3NjcsMTYgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0fVxuIFxuIFx0ZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1VOV1JJVF9FWFQ7XG4tXHQvKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMgKi9cbitcdC8qXG4rXHQgKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMsIGFuZCB6ZXJvXG4rXHQgKiBvdXQgcGFydGlhbCBibG9ja3MgaWYgdGhleSBhbHJlYWR5IGNvbnRhaW4gZGF0YS5cbitcdCAqL1xuIFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSkge1xuIFx0XHRyZXQgPSBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKGZpbGUsIG9mZnNldCwgbGVuLCBuZXdfc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICBmbGFncyk7XG4rXHRcdGlmICghcmV0KVxuK1x0XHRcdHJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sXG4rXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnBhcnRpYWxfemVyb2VkKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTQ3NTQsNiArNDc5MywyMSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHQvKiBaZXJvIHJhbmdlIGV4Y2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovXG4gXHRhbGlnbl9zdGFydCA9IHJvdW5kX3VwKG9mZnNldCwgYmxvY2tzaXplKTtcbiBcdGFsaWduX2VuZCA9IHJvdW5kX2Rvd24oZW5kLCBibG9ja3NpemUpO1xuK1xuK1x0LypcbitcdCAqIEluIFdSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IHdlcmUgbm90IHBhcnRpYWwtemVyb2VkIChjbGVhblxuK1x0ICogdW53cml0dGVuIG9yIGhvbGUpIG11c3QgYmUgYWxsb2NhdGVkIGFuZCB6ZXJvZWQgYXMgd2hvbGUgYmxvY2tzLlxuK1x0ICogRXhwYW5kIHRoZSBhbGlnbmVkIHJhbmdlIG91dHdhcmQgdG8gY292ZXIgdGhlbS5cbitcdCAqL1xuK1x0aWYgKG1vZGUgXHUwMDI2IEZBTExPQ19GTF9XUklURV9aRVJPRVMpIHtcbitcdFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCwgYmxvY2tzaXplKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICEocGFydGlhbF96ZXJvZWQgXHUwMDI2IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUKSlcbitcdFx0XHRhbGlnbl9zdGFydCA9IHJvdW5kX2Rvd24ob2Zmc2V0LCBibG9ja3NpemUpO1xuK1x0XHRpZiAoIUlTX0FMSUdORUQoZW5kLCBibG9ja3NpemUpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIShwYXJ0aWFsX3plcm9lZCBcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKSlcbitcdFx0XHRhbGlnbl9lbmQgPSByb3VuZF91cChlbmQsIGJsb2Nrc2l6ZSk7XG4rXHR9XG4rXG4gXHRpZiAoYWxpZ25fZW5kIFx1MDAzZSBhbGlnbl9zdGFydCkge1xuIFx0XHRpZiAobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUylcbiBcdFx0XHRmbGFncyA9IEVYVDRfR0VUX0JMT0NLU19DUkVBVEVfWkVSTyB8IEVYVDRfRVhfTk9DQUNIRTtcbkBAIC00NzcwLDExICs0ODI0LDE1IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdGlmIChJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdC8qIFplcm8gb3V0IHBhcnRpYWwgYmxvY2sgYXQgdGhlIGVkZ2VzIG9mIHRoZSByYW5nZSAqL1xuLVx0cmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbiwgXHUwMDI2cGFydGlhbF96ZXJvZWQpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cdGlmICgoKGZpbGUtXHUwMDNlZl9mbGFncyBcdTAwMjYgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkgXHUwMDI2XHUwMDI2IHBhcnRpYWxfemVyb2VkKSB7XG4rXHQvKlxuK1x0ICogSW4gRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IGhhdmUgYmVlbiBwYXJ0aWFsbHlcbitcdCAqIHplcm9lZCBtdXN0IGJlIHdyaXR0ZW4gYmFjayB0byBlbnN1cmUgdGhlIGVudGlyZSB6ZXJvZWQgcmFuZ2VcbitcdCAqIGlzIGNvbnZlcnRlZCB0byB0aGUgd3JpdHRlbiBzdGF0ZS4gSW4gU1lOQyBtb2RlLCB3cml0ZWJhY2sgaXNcbitcdCAqIGFsc28gcmVxdWlyZWQgdG8gcGVyc2lzdCB0aGUgemVyb2VkIGRhdGEgdG8gZGlzay5cbitcdCAqL1xuK1x0aWYgKHBhcnRpYWxfemVyb2VkIFx1MDAyNlx1MDAyNlxuK1x0ICAgICgobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgfHxcbitcdCAgICAgKGZpbGUtXHUwMDNlZl9mbGFncyBcdTAwMjYgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkpIHtcbiBcdFx0cmV0ID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZShpbm9kZS1cdTAwM2VpX21hcHBpbmcsIG9mZnNldCxcbiBcdFx0XHRcdFx0XHQgICBlbmQgLSAxKTtcbiBcdFx0aWYgKHJldClcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGMyYzJkNmFjN2YzZDEzLi5hMTYxNTA4NGEzYjk5YiAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuKysrIGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNDAyNiw2ICs0MDI2LDEwIEBAIHZvaWQgZXh0NF9zZXRfYW9wcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuICAqIGJlY2F1c2UgaXQgbWlnaHQgaGF2ZSBkYXRhIGluIHBhZ2VjYWNoZSAoZWcsIGlmIGNhbGxlZCBmcm9tIGV4dDRfemVyb19yYW5nZSxcbiAgKiBleHQ0X3B1bmNoX2hvbGUsIGV0Yykgd2hpY2ggbmVlZHMgdG8gYmUgcHJvcGVybHkgemVyb2VkIG91dC4gT3RoZXJ3aXNlIGFcbiAgKiByYWNpbmcgd3JpdGViYWNrIGNhbiBjb21lIGxhdGVyIGFuZCBmbHVzaCB0aGUgc3RhbGUgcGFnZWNhY2hlIHRvIGRpc2suXG4rICpcbisgKiBSZXR1cm4gdGhlIGxvYWRlZCBiaCBpZiBpdCBhY3R1YWxseSBuZWVkcyB6ZXJvaW5nIC0gaW4gd3JpdHRlbiwgZGlydHlcbisgKiB1bndyaXR0ZW4sIG9yIGRlbGFsbG9jIHN0YXRlLiBSZXR1cm4gTlVMTCBpZiBpdCdzIGNsZWFuIChpLmUuLCBhIGhvbGUgb3JcbisgKiBhIGNsZWFuIHVud3JpdHRlbiBibG9jaykuXG4gICovXG4gc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pXG4ge1xuQEAgLTQwMzcsNyArNDA0MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxuIFx0aW50IGVyciA9IDA7XG4gXG4gXHRmb2xpbyA9IF9fZmlsZW1hcF9nZXRfZm9saW8obWFwcGluZywgZnJvbSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCxcbi1cdFx0XHRcdCAgICBGR1BfTE9DSyB8IEZHUF9BQ0NFU1NFRCB8IEZHUF9DUkVBVCxcbitcdFx0XHRcdCAgICBGR1BfV1JJVEVCRUdJTiB8IEZHUF9BQ0NFU1NFRCxcbiBcdFx0XHRcdCAgICBtYXBwaW5nX2dmcF9jb25zdHJhaW50KG1hcHBpbmcsIH5fX0dGUF9GUykpO1xuIFx0aWYgKElTX0VSUihmb2xpbykpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChmb2xpbyk7XG5AQCAtNDA2NCw4ICs0MDY4LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxuIFx0fVxuIFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xuIFx0XHRCVUZGRVJfVFJBQ0UoYmgsIFwidW5tYXBwZWRcIik7XG4tXHRcdGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTtcbi1cdFx0LyogdW5tYXBwZWQ/IEl0J3MgYSBob2xlIC0gbm90aGluZyB0byBkbyAqL1xuK1x0XHRlcnIgPSBleHQ0X2dldF9ibG9jayhpbm9kZSwgaWJsb2NrLCBiaCwgMCk7XG4rXHRcdGlmIChlcnIgXHUwMDNjIDApXG4rXHRcdFx0Z290byB1bmxvY2s7XG4rXHRcdC8qXG4rXHRcdCAqIEl0J3MgYSBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrIC0gbm90aGluZyB0byBkby5cbitcdFx0ICogTm90ZSB0aGF0IGEgbG9va3VwLW9ubHkgZ2V0X2Jsb2NrICh3aXRob3V0XG4rXHRcdCAqIEVYVDRfR0VUX0JMT0NLU19DUkVBVEUpIG5ldmVyIHNldHMgQkhfTWFwcGVkIGZvciBjbGVhblxuK1x0XHQgKiB1bndyaXR0ZW4gZXh0ZW50cy5cbitcdFx0ICovXG4gXHRcdGlmICghYnVmZmVyX21hcHBlZChiaCkpIHtcbiBcdFx0XHRCVUZGRVJfVFJBQ0UoYmgsIFwic3RpbGwgdW5tYXBwZWRcIik7XG4gXHRcdFx0Z290byB1bmxvY2s7XG5AQCAtNDIxOCw2ICs0MjI5LDE0IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKVxuIFx0b2Zmc2V0ID0gZnJvbSBcdTAwMjYgKGJsb2Nrc2l6ZSAtIDEpO1xuIFx0aWYgKCFvZmZzZXQgfHwgZnJvbSBcdTAwM2U9IGVuZClcbiBcdFx0cmV0dXJuIDA7XG4rXHQvKlxuK1x0ICogSW5saW5lIGRhdGEgaGFzIG5vIHRhaWwgYmxvY2sgdG8gemVybyBvdXQuICBOb3RlIHRoYXQgYSByYWNlIHdpdGhcbitcdCAqIGV4dDRfcGFnZV9ta3dyaXRlKCkgY29udmVydGluZyBpbmxpbmUgZGF0YSB0byBhbiBleHRlbnQgd2l0aG91dFxuK1x0ICogaG9sZGluZyBpX3J3c2VtIGlzIHNhZmUsIGFzIHRoYXQgcGF0aCB6ZXJvZXMgdGhlIGZ1bGwgYmxvY2sgYmVmb3JlXG4rXHQgKiBjb3B5aW5nIGluIHRoZSBpbmxpbmUgZGF0YS5cbitcdCAqL1xuK1x0aWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSlcbitcdFx0cmV0dXJuIDA7XG4gXHQvKiBJZiB3ZSBhcmUgcHJvY2Vzc2luZyBhbiBlbmNyeXB0ZWQgaW5vZGUgZHVyaW5nIG9ycGhhbiBsaXN0IGhhbmRsaW5nICovXG4gXHRpZiAoSVNfRU5DUllQVEVEKGlub2RlKSBcdTAwMjZcdTAwMjYgIWZzY3J5cHRfaGFzX2VuY3J5cHRpb25fa2V5KGlub2RlKSlcbiBcdFx0cmV0dXJuIDA7XG5AQCAtNDI1MiwxMyArNDI3MSwyNiBAQCBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZClcbiBcdHJldHVybiAwO1xuIH1cbiBcbisvKlxuKyAqIFplcm8gb3V0IHRoZSB1bmFsaWduZWQgaGVhZCBhbmQgdGFpbCBvZiB0aGUgW2xzdGFydCwgbHN0YXJ0K2xlbmd0aClcbisgKiByYW5nZS5cbisgKlxuKyAqIE9uIHJldHVybiwgQHBhcnRpYWxfemVyb2VkIHJlY29yZHMgd2hpY2ggZWRnZXMgYWN0dWFsbHkgZ290XG4rICogcGFydGlhbC16ZXJvZWQuICBTZXQgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQvRVhUNF9QQVJUSUFMX1pFUk9fRU5EIGlmXG4rICogdGhlIGhlYWQvdGFpbCBibG9jayBnb3QgYWN0dWFsbHkgcGFydGlhbGx5IHplcm9lZCAoaW4gd3JpdHRlbiwgZGlydHlcbisgKiB1bndyaXR0ZW4gb3IgZGVsYWxsb2Mgc3RhdGUpLiAgQ2xlYXJlZCBpZiB0aGUgaGVhZC90YWlsIGJsb2NrIGlzIGFcbisgKiBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrLCBpbiB3aGljaCBjYXNlIHRoZXJlIGlzIG5vdGhpbmcgdGhhdFxuKyAqIG5lZWRzIHplcm9pbmcuICBXaGVuIHRoZSBoZWFkIGFuZCB0YWlsIGxhbmQgaW4gdGhlIHNhbWUgYmxvY2ssIGJvdGhcbisgKiBiaXRzIGFyZSBzZXQgdG9nZXRoZXIgb24gYSBzdWNjZXNzZnVsIHplcm9pbmcuXG4rICovXG4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuLVx0XHRcdCAgICAgYm9vbCAqZGlkX3plcm8pXG4rXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKVxuIHtcbiBcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cdTAwM2VpX3NiO1xuIFx0dW5zaWduZWQgcGFydGlhbF9zdGFydCwgcGFydGlhbF9lbmQ7XG4gXHRleHQ0X2ZzYmxrX3Qgc3RhcnQsIGVuZDtcbiBcdGxvZmZfdCBieXRlX2VuZCA9IChsc3RhcnQgKyBsZW5ndGggLSAxKTtcbitcdGJvb2wgZGlkX3plcm8gPSBmYWxzZTtcbiBcdGludCBlcnIgPSAwO1xuIFxuIFx0cGFydGlhbF9zdGFydCA9IGxzdGFydCBcdTAwMjYgKHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSk7XG5AQCAtNDI3MCwyMSArNDMwMiwzMiBAQCBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5ndGgsXG4gXHQvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIHdpdGhpbiB0aGUgc2luZ2xlIGJsb2NrICovXG4gXHRpZiAoc3RhcnQgPT0gZW5kIFx1MDAyNlx1MDAyNlxuIFx0ICAgIChwYXJ0aWFsX3N0YXJ0IHx8IChwYXJ0aWFsX2VuZCAhPSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpKSkge1xuLVx0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBkaWRfemVybyxcbitcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgXHUwMDI2ZGlkX3plcm8sXG4gXHRcdFx0XHRcdCAgICBOVUxMKTtcbitcdFx0aWYgKGRpZF96ZXJvKVxuK1x0XHRcdCpwYXJ0aWFsX3plcm9lZCB8PSAoRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQgfFxuK1x0XHRcdFx0XHQgICAgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKTtcbiBcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gb3V0IG9uIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgKi9cbiBcdGlmIChwYXJ0aWFsX3N0YXJ0KSB7XG4gXHRcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSxcbi1cdFx0XHRcdFx0ICAgIGRpZF96ZXJvLCBOVUxMKTtcbitcdFx0XHRcdFx0ICAgIFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRpZiAoZGlkX3plcm8pXG4rXHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUO1xuIFx0fVxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKi9cbi1cdGlmIChwYXJ0aWFsX2VuZCAhPSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpXG4rXHRpZiAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSB7XG4rXHRcdGRpZF96ZXJvID0gZmFsc2U7XG4gXHRcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgYnl0ZV9lbmQgLSBwYXJ0aWFsX2VuZCxcbi1cdFx0XHRcdFx0ICAgIHBhcnRpYWxfZW5kICsgMSwgZGlkX3plcm8sIE5VTEwpO1xuK1x0XHRcdFx0XHQgICAgcGFydGlhbF9lbmQgKyAxLCBcdTAwMjZkaWRfemVybywgTlVMTCk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0aWYgKGRpZF96ZXJvKVxuK1x0XHRcdCpwYXJ0aWFsX3plcm9lZCB8PSBFWFQ0X1BBUlRJQUxfWkVST19FTkQ7XG4rXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbkBAIC00NDMzLDcgKzQ0NzYsNyBAQCBpbnQgZXh0NF9wdW5jaF9ob2xlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoKVxuIFx0bG9mZl90IGVuZCA9IG9mZnNldCArIGxlbmd0aDtcbiBcdGhhbmRsZV90ICpoYW5kbGU7XG4gXHR1bnNpZ25lZCBpbnQgY3JlZGl0cztcbi1cdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcbitcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0O1xuIFxuIFx0dHJhY2VfZXh0NF9wdW5jaF9ob2xlKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgMCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMjowNjowNS45MzM3NjI3MDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjYzNTE5MTM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogZXh0NCBGaWxlc3lzdGVtIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdGhhdCdzIGRpZ2dpbmcgaW50byB0aGUgZ3V0cyBvZiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmcy9leHQ0L2V4dGVudHMuY2AsIGBmcy9leHQ0L2lub2RlLmNgLCBhbmQgYGZzL2V4dDQvZXh0NC5oYC4gVGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgaG93IGBleHQ0X3plcm9fcmFuZ2VgIGFuZCBgZXh0NF9wdW5jaF9ob2xlYCBkZWFsIHdpdGggcGFydGlhbCBibG9jayB6ZXJvaW5nLCB1c2luZyBhIGJpdG1hc2sgKGBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVGAsIGBFWFQ0X1BBUlRJQUxfWkVST19FTkRgKSB0byBrZWVwIHRyYWNrIG9mIHRob3NlIGVkZ2UgY2FzZXMuIFRoZXJlIGFyZSBhbHNvIGNoYW5nZXMgdG8gYGV4dDRfYWxsb2NfZmlsZV9ibG9ja3NgIHdoaWNoIGFmZmVjdCBvcnBoYW4gbGlzdHMgYW5kIGVycm9yIGhhbmRsaW5nLCBhbmQgYGV4dDRfbG9hZF90YWlsX2JoYCBpcyBiZWluZyBtb2RpZmllZCB0byBoYW5kbGUgY2xlYW4gdW53cml0dGVuIGJsb2NrcyBiZXR0ZXIuXG5cbk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGV4dDQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggYGZhbGxvY2F0ZWAgb3BlcmF0aW9ucyBsaWtlIHplcm9pbmcgcmFuZ2VzIGFuZCBwdW5jaGluZyBob2xlcywgYXMgd2VsbCBhcyBibG9jayBhbGxvY2F0aW9uLlxuXG5JcyBpdCByZWFjaGFibGU/IEFic29sdXRlbHkuIEl04oCZcyB0cmlnZ2VyZWQgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXN0ZW0gY2FsbCwgc28gaXQncyBkaXJlY3RseSBleHBvc2VkIHRvIHVzZXJsYW5kIGFuZCBoZW5jZSwgZnV6emFibGUuIElzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFdpdGhvdXQgYSBkb3VidC4gQW55IG1vZGlmaWNhdGlvbiB0byBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgaXMgYSBwb3RlbnRpYWwgZ29sZG1pbmUgZm9yIGZpbmRpbmcgc3VidGxlLCBoYXJkLXRvLWZpbmQgYnVncy5cblxuU28sIGxldCdzIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMuIExvb2tpbmcgYXQgdGhlIHBhdGNoLCB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIGFyZTogYGV4dDRfYWxsb2NfZmlsZV9ibG9ja3NgLCBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfbG9hZF90YWlsX2JoYCwgYGV4dDRfYmxvY2tfemVyb19lb2ZgLCBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCwgYW5kIGBleHQ0X3B1bmNoX2hvbGVgLiBUaGF0J3Mgd2hlcmUgd2UgbmVlZCB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLlxuXG5JJ20gdGhpbmtpbmcsIGFyZSB0aGVzZSBob3QtcGF0aCBmdW5jdGlvbnM/IE5vdCBpbiB0aGUgc2Vuc2Ugb2YgYSBmcmVxdWVudCB3cml0ZSBvciByZWFkIHBhdGgsIGxpa2UgYGV4dDRfZmlsZV93cml0ZV9pdGVyYCBvciBgZXh0NF9tYXBfYmxvY2tzYCwgYnV0IGBleHQ0X3B1bmNoX2hvbGVgIGFuZCBgZXh0NF96ZXJvX3JhbmdlYCBhcmUgcGFydCBvZiBgZmFsbG9jYXRlYCBhbmQgdGhlcmVmb3JlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gb3VyIGZ1enogdGFyZ2V0LiBgZXh0NF9hbGxvY19maWxlX2Jsb2Nrc2AgaXMgaW52b2x2ZWQgaW4gemVybyByYW5nZS4gYGV4dDRfbG9hZF90YWlsX2JoYCBpcyB1c2VkIGR1cmluZyBFT0YgemVyb2luZy4gYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AgaXMgdXNlZCBpbiBwdW5jaCBob2xlIGFuZCB6ZXJvIHJhbmdlLiBUaGV5IGRlZmluaXRlbHkgd2FycmFudCBhdHRlbnRpb24uXG5cbk5vdywgbGV0J3MgdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbi4gYEVYVDRfRlNgIGlzIHRoZSBrZXkgY29uZmlnLCBhcyB2ZXJpZmllZCBpbiBgZnMvZXh0NC9LY29uZmlnYC4gVGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggdG91Y2hlcyBgZnMvZXh0NC9leHRlbnRzLmNgIGFuZCBgZnMvZXh0NC9pbm9kZS5jYCBjb25maXJtcyB0aGF0IHRoaXMgY29uZmlnIGlzIHN1ZmZpY2llbnQuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGF0IGBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzYCBpcyBpbmRlZWQgaW4gYGZzL2V4dDQvZXh0ZW50cy5jYCwgd2hpY2ggaXQgaXMuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5gYGBqc29uXG57XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWUsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfYWxsb2NfZmlsZV9ibG9ja3NcIixcbiAgICBcImV4dDRfemVyb19yYW5nZVwiLFxuICAgIFwiZXh0NF9sb2FkX3RhaWxfYmhcIixcbiAgICBcImV4dDRfYmxvY2tfemVyb19lb2ZcIixcbiAgICBcImV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF9wdW5jaF9ob2xlXCJcbiAgXSxcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGV4dDQgbG9naWMgZm9yIGhhbmRsaW5nIHBhcnRpYWwgYmxvY2sgemVyb2luZyBkdXJpbmcgZmFsbG9jYXRlIG9wZXJhdGlvbnMgKHplcm8gcmFuZ2UsIHB1bmNoIGhvbGUpIGFuZCBibG9jayBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHN5c3RlbSBjYWxscy5cIlxufVxuYGBgXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjIsIk91dHB1dFRva2VucyI6MTM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTI6MDY6MTguNTY4OTU4MDA2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIzMTM2NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzXCIsXG4gICAgXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgICBcImV4dDRfbG9hZF90YWlsX2JoXCIsXG4gICAgXCJleHQ0X2Jsb2NrX3plcm9fZW9mXCIsXG4gICAgXCJleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NcIixcbiAgICBcImV4dDRfcHVuY2hfaG9sZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZXh0NCBsb2dpYyBmb3IgaGFuZGxpbmcgcGFydGlhbCBibG9jayB6ZXJvaW5nIGR1cmluZyBmYWxsb2NhdGUgb3BlcmF0aW9ucyAoemVybyByYW5nZSwgcHVuY2ggaG9sZSkgYW5kIGJsb2NrIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgc3lzdGVtIGNhbGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzXCIsXG4gICAgXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgICBcImV4dDRfbG9hZF90YWlsX2JoXCIsXG4gICAgXCJleHQ0X2Jsb2NrX3plcm9fZW9mXCIsXG4gICAgXCJleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NcIixcbiAgICBcImV4dDRfcHVuY2hfaG9sZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZXh0NCBsb2dpYyBmb3IgaGFuZGxpbmcgcGFydGlhbCBibG9jayB6ZXJvaW5nIGR1cmluZyBmYWxsb2NhdGUgb3BlcmF0aW9ucyAoemVybyByYW5nZSwgcHVuY2ggaG9sZSkgYW5kIGJsb2NrIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgc3lzdGVtIGNhbGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow7q5n9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 11:43:24 +0000 UTC FinishedAt: 2026-07-14 12:06:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "adea84ee6cdea611146c4251d3c1616f5a09feca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "adea84ee6cdea611146c4251d3c1616f5a09feca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "49df6e82-4a94-4cab-ba27-6ebe3b43cac0" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_alloc_file_blocks", "ext4_zero_range", "ext4_load_tail_bh", "ext4_block_zero_eof", "ext4_zero_partial_blocks", "ext4_punch_hole" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19yYW5nZSYjMzQ7LAogICAgJiMzNDtleHQ0X2xvYWRfdGFpbF9iaCYjMzQ7LAogICAgJiMzNDtleHQ0X2Jsb2NrX3plcm9fZW9mJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3B1bmNoX2hvbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBleHQ0IGxvZ2ljIGZvciBoYW5kbGluZyBwYXJ0aWFsIGJsb2NrIHplcm9pbmcgZHVyaW5nIGZhbGxvY2F0ZSBvcGVyYXRpb25zICh6ZXJvIHJhbmdlLCBwdW5jaCBob2xlKSBhbmQgYmxvY2sgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gY2FsbHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTI6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmZTViZWEyMTVkYmQxODE2ZWQwMDAyNjU2NmZhNjYxZTdlNTVjYjM1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTI6MDY6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxuaW5kZXggOTQyODNhOTkxZTVjNGYuLmIyZTU1ODc2ZDBlMzUyIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMzA5OSw4ICYjNDM7MzA5OSwxMSBAQCBleHRlcm4gaW50IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2Nrcyk7XG4gZXh0ZXJuIGludCBleHQ0X21ldGFfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBsYmxvY2tzLFxuIFx0XHRcdFx0ICBpbnQgcGV4dGVudHMpO1xuIGV4dGVybiBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZCk7XG4mIzQzO1xuJiM0MzsjZGVmaW5lIEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUXHQweDFcbiYjNDM7I2RlZmluZSBFWFQ0X1BBUlRJQUxfWkVST19FTkRcdDB4MlxuIGV4dGVybiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsXG4tXHRcdFx0XHQgICAgbG9mZl90IGxlbmd0aCwgYm9vbCAqZGlkX3plcm8pO1xuJiM0MztcdFx0XHRcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcbiBleHRlcm4gdm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7XG4gZXh0ZXJuIHFzaXplX3QgKmV4dDRfZ2V0X3Jlc2VydmVkX3NwYWNlKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jXG5pbmRleCAxMjVmNjI4ZTczOGFiMS4uOWExYjA2YzhkZDk3OTcgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9leHRlbnRzLmNcbkBAIC00NTg1LDYgJiM0Mzs0NTg1LDcgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0bG9mZl90IGVwb3MgPSAwLCBvbGRfc2l6ZSA9IGlfc2l6ZV9yZWFkKGlub2RlKTtcbiBcdHVuc2lnbmVkIGludCBibGtiaXRzID0gaW5vZGUtXHUwMDNlaV9ibGtiaXRzO1xuIFx0Ym9vbCBhbGxvY196ZXJvID0gZmFsc2U7XG4mIzQzO1x0Ym9vbCBvcnBoYW4gPSBmYWxzZTtcbiBcbiBcdEJVR19PTighZXh0NF90ZXN0X2lub2RlX2ZsYWcoaW5vZGUsIEVYVDRfSU5PREVfRVhURU5UUykpO1xuIFx0bWFwLm1fbGJsayA9IG9mZnNldCBcdTAwM2VcdTAwM2UgYmxrYml0cztcbkBAIC00NjU5LDEyICYjNDM7NDY2MCwzNSBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXG4gXHRcdGlmIChhbGxvY196ZXJvIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKG1hcC5tX2ZsYWdzIFx1MDAyNiAoRVhUNF9NQVBfTUFQUEVEIHwgRVhUNF9NQVBfVU5XUklUVEVOKSkpIHtcbiYjNDM7XHRcdFx0V0FSTl9PTl9PTkNFKG1hcC5tX2xibGsgJiM0MzsgbWFwLm1fbGVuIFx1MDAzZVxuJiM0MztcdFx0XHRcdEVYVDRfQl9UT19MQkxLKGlub2RlLCBuZXdfc2l6ZSA/OiBvbGRfc2l6ZSkpO1xuJiM0MztcbiBcdFx0XHRyZXQgPSBleHQ0X2lzc3VlX3plcm9vdXQoaW5vZGUsIG1hcC5tX2xibGssIG1hcC5tX3BibGssXG4gXHRcdFx0XHRcdFx0IG1hcC5tX2xlbik7XG4tXHRcdFx0aWYgKGxpa2VseSghcmV0KSlcbi1cdFx0XHRcdHJldCA9IGV4dDRfY29udmVydF91bndyaXR0ZW5fZXh0ZW50cyhOVUxMLFxuJiM0MztcdFx0XHRpZiAodW5saWtlbHkocmV0KSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdGhhbmRsZSA9IGV4dDRfam91cm5hbF9zdGFydChpbm9kZSwgRVhUNF9IVF9NQVBfQkxPQ0tTLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgY3JlZGl0cyk7XG4mIzQzO1x0XHRcdGlmIChJU19FUlIoaGFuZGxlKSkge1xuJiM0MztcdFx0XHRcdHJldCA9IFBUUl9FUlIoaGFuZGxlKTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0aWYgKG5ld19zaXplKSB7XG4mIzQzO1x0XHRcdFx0cmV0ID0gZXh0NF9vcnBoYW5fYWRkKGhhbmRsZSwgaW5vZGUpO1xuJiM0MztcdFx0XHRcdG9ycGhhbiA9IHRydWU7XG4mIzQzO1x0XHRcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRcdFx0ZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcbiYjNDM7XHRcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdH1cbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0cmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKGhhbmRsZSxcbiBcdFx0XHRcdFx0aW5vZGUsIChsb2ZmX3QpbWFwLm1fbGJsayBcdTAwM2NcdTAwM2MgYmxrYml0cyxcbiBcdFx0XHRcdFx0KGxvZmZfdCltYXAubV9sZW4gXHUwMDNjXHUwMDNjIGJsa2JpdHMpO1xuJiM0MztcdFx0XHRyZXQyID0gZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcbiYjNDM7XHRcdFx0cmV0ID0gcmV0ID8gcmV0IDogcmV0MjtcbiBcdFx0XHRpZiAocmV0KVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdH1cbkBAIC00Njc4LDcgJiM0Mzs0NzAyLDcgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0XHRnb3RvIHJldHJ5O1xuIFxuIFx0aWYgKCFlcG9zIHx8ICFuZXdfc2l6ZSlcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFxuIFx0LypcbiBcdCAqIEFsbG9jYXRlIGJsb2NrcywgdXBkYXRlIHRoZSBmaWxlIHNpemUgdG8gbWF0Y2ggdGhlIHNpemUgb2YgdGhlXG5AQCAtNDY4NywxMiAmIzQzOzQ3MTEsMTYgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0aWYgKGVwb3MgXHUwMDNlIG5ld19zaXplKVxuIFx0XHRlcG9zID0gbmV3X3NpemU7XG4gXG4tXHRoYW5kbGUgPSBleHQ0X2pvdXJuYWxfc3RhcnQoaW5vZGUsIEVYVDRfSFRfTUlTQywgMSk7XG4tXHRpZiAoSVNfRVJSKGhhbmRsZSkpXG4tXHRcdHJldHVybiByZXQgPyByZXQgOiBQVFJfRVJSKGhhbmRsZSk7XG4mIzQzO1x0aGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDIpO1xuJiM0MztcdGlmIChJU19FUlIoaGFuZGxlKSkge1xuJiM0MztcdFx0cmV0ID0gcmV0ID8gcmV0IDogUFRSX0VSUihoYW5kbGUpO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuIFxuIFx0ZXh0NF91cGRhdGVfaW5vZGVfc2l6ZShpbm9kZSwgZXBvcyk7XG4gXHRyZXQyID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpO1xuJiM0MztcdGlmIChvcnBoYW4gXHUwMDI2XHUwMDI2IGlub2RlLVx1MDAzZWlfbmxpbmspXG4mIzQzO1x0XHRleHQ0X29ycGhhbl9kZWwoaGFuZGxlLCBpbm9kZSk7XG4gXHRleHQ0X3VwZGF0ZV9pbm9kZV9mc3luY190cmFucyhoYW5kbGUsIGlub2RlLCAxKTtcbiBcdHJldDMgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuIFx0cmV0MiA9IHJldDMgPyByZXQzIDogcmV0MjtcbkBAIC00NzAxLDYgJiM0Mzs0NzI5LDExIEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcbiBcdFx0cGFnZWNhY2hlX2lzaXplX2V4dGVuZGVkKGlub2RlLCBvbGRfc2l6ZSwgZXBvcyk7XG4gXG4gXHRyZXR1cm4gcmV0ID8gcmV0IDogcmV0MjtcbiYjNDM7XG4mIzQzO291dDpcbiYjNDM7XHRpZiAob3JwaGFuIFx1MDAyNlx1MDAyNiBpbm9kZS1cdTAwM2VpX25saW5rKVxuJiM0MztcdFx0ZXh0NF9vcnBoYW5fZGVsKE5VTEwsIGlub2RlKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGV4dDRfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pO1xuQEAgLTQ3MTUsNyAmIzQzOzQ3NDgsNyBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRsb2ZmX3QgYWxpZ25fc3RhcnQsIGFsaWduX2VuZCwgbmV3X3NpemUgPSAwO1xuIFx0bG9mZl90IGVuZCA9IG9mZnNldCAmIzQzOyBsZW47XG4gXHR1bnNpZ25lZCBpbnQgYmxvY2tzaXplID0gaV9ibG9ja3NpemUoaW5vZGUpO1xuLVx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xuJiM0MztcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0LCBmbGFncztcbiBcbiBcdHRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xuQEAgLTQ3MzQsMTAgJiM0Mzs0NzY3LDE2IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdH1cbiBcbiBcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9VTldSSVRfRVhUO1xuLVx0LyogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMsIGFuZCB6ZXJvXG4mIzQzO1x0ICogb3V0IHBhcnRpYWwgYmxvY2tzIGlmIHRoZXkgYWxyZWFkeSBjb250YWluIGRhdGEuXG4mIzQzO1x0ICovXG4gXHRpZiAoIUlTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKSB7XG4gXHRcdHJldCA9IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3MoZmlsZSwgb2Zmc2V0LCBsZW4sIG5ld19zaXplLFxuIFx0XHRcdFx0XHQgICAgIGZsYWdzKTtcbiYjNDM7XHRcdGlmICghcmV0KVxuJiM0MztcdFx0XHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2cGFydGlhbF96ZXJvZWQpO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG5AQCAtNDc1NCw2ICYjNDM7NDc5MywyMSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHQvKiBaZXJvIHJhbmdlIGV4Y2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovXG4gXHRhbGlnbl9zdGFydCA9IHJvdW5kX3VwKG9mZnNldCwgYmxvY2tzaXplKTtcbiBcdGFsaWduX2VuZCA9IHJvdW5kX2Rvd24oZW5kLCBibG9ja3NpemUpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEluIFdSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IHdlcmUgbm90IHBhcnRpYWwtemVyb2VkIChjbGVhblxuJiM0MztcdCAqIHVud3JpdHRlbiBvciBob2xlKSBtdXN0IGJlIGFsbG9jYXRlZCBhbmQgemVyb2VkIGFzIHdob2xlIGJsb2Nrcy5cbiYjNDM7XHQgKiBFeHBhbmQgdGhlIGFsaWduZWQgcmFuZ2Ugb3V0d2FyZCB0byBjb3ZlciB0aGVtLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB7XG4mIzQzO1x0XHRpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCBibG9ja3NpemUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICEocGFydGlhbF96ZXJvZWQgXHUwMDI2IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUKSlcbiYjNDM7XHRcdFx0YWxpZ25fc3RhcnQgPSByb3VuZF9kb3duKG9mZnNldCwgYmxvY2tzaXplKTtcbiYjNDM7XHRcdGlmICghSVNfQUxJR05FRChlbmQsIGJsb2Nrc2l6ZSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgIShwYXJ0aWFsX3plcm9lZCBcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKSlcbiYjNDM7XHRcdFx0YWxpZ25fZW5kID0gcm91bmRfdXAoZW5kLCBibG9ja3NpemUpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoYWxpZ25fZW5kIFx1MDAzZSBhbGlnbl9zdGFydCkge1xuIFx0XHRpZiAobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUylcbiBcdFx0XHRmbGFncyA9IEVYVDRfR0VUX0JMT0NLU19DUkVBVEVfWkVSTyB8IEVYVDRfRVhfTk9DQUNIRTtcbkBAIC00NzcwLDExICYjNDM7NDgyNCwxNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRpZiAoSVNfQUxJR05FRChvZmZzZXQgfCBlbmQsIGJsb2Nrc2l6ZSkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHQvKiBaZXJvIG91dCBwYXJ0aWFsIGJsb2NrIGF0IHRoZSBlZGdlcyBvZiB0aGUgcmFuZ2UgKi9cbi1cdHJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sIFx1MDAyNnBhcnRpYWxfemVyb2VkKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXHRpZiAoKChmaWxlLVx1MDAzZWZfZmxhZ3MgXHUwMDI2IE9fU1lOQykgfHwgSVNfU1lOQyhpbm9kZSkpIFx1MDAyNlx1MDAyNiBwYXJ0aWFsX3plcm9lZCkge1xuJiM0MztcdC8qXG4mIzQzO1x0ICogSW4gRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IGhhdmUgYmVlbiBwYXJ0aWFsbHlcbiYjNDM7XHQgKiB6ZXJvZWQgbXVzdCBiZSB3cml0dGVuIGJhY2sgdG8gZW5zdXJlIHRoZSBlbnRpcmUgemVyb2VkIHJhbmdlXG4mIzQzO1x0ICogaXMgY29udmVydGVkIHRvIHRoZSB3cml0dGVuIHN0YXRlLiBJbiBTWU5DIG1vZGUsIHdyaXRlYmFjayBpc1xuJiM0MztcdCAqIGFsc28gcmVxdWlyZWQgdG8gcGVyc2lzdCB0aGUgemVyb2VkIGRhdGEgdG8gZGlzay5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocGFydGlhbF96ZXJvZWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICgobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgfHxcbiYjNDM7XHQgICAgIChmaWxlLVx1MDAzZWZfZmxhZ3MgXHUwMDI2IE9fU1lOQykgfHwgSVNfU1lOQyhpbm9kZSkpKSB7XG4gXHRcdHJldCA9IGZpbGVtYXBfd3JpdGVfYW5kX3dhaXRfcmFuZ2UoaW5vZGUtXHUwMDNlaV9tYXBwaW5nLCBvZmZzZXQsXG4gXHRcdFx0XHRcdFx0ICAgZW5kIC0gMSk7XG4gXHRcdGlmIChyZXQpXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jXG5pbmRleCBjMmMyZDZhYzdmM2QxMy4uYTE2MTUwODRhM2I5OWIgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2lub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvaW5vZGUuY1xuQEAgLTQwMjYsNiAmIzQzOzQwMjYsMTAgQEAgdm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxuICAqIGV4dDRfcHVuY2hfaG9sZSwgZXRjKSB3aGljaCBuZWVkcyB0byBiZSBwcm9wZXJseSB6ZXJvZWQgb3V0LiBPdGhlcndpc2UgYVxuICAqIHJhY2luZyB3cml0ZWJhY2sgY2FuIGNvbWUgbGF0ZXIgYW5kIGZsdXNoIHRoZSBzdGFsZSBwYWdlY2FjaGUgdG8gZGlzay5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuIHRoZSBsb2FkZWQgYmggaWYgaXQgYWN0dWFsbHkgbmVlZHMgemVyb2luZyAtIGluIHdyaXR0ZW4sIGRpcnR5XG4mIzQzOyAqIHVud3JpdHRlbiwgb3IgZGVsYWxsb2Mgc3RhdGUuIFJldHVybiBOVUxMIGlmIGl0JiMzOTtzIGNsZWFuIChpLmUuLCBhIGhvbGUgb3JcbiYjNDM7ICogYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2spLlxuICAqL1xuIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxuIHtcbkBAIC00MDM3LDcgJiM0Mzs0MDQxLDcgQEAgc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pXG4gXHRpbnQgZXJyID0gMDtcbiBcbiBcdGZvbGlvID0gX19maWxlbWFwX2dldF9mb2xpbyhtYXBwaW5nLCBmcm9tIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZULFxuLVx0XHRcdFx0ICAgIEZHUF9MT0NLIHwgRkdQX0FDQ0VTU0VEIHwgRkdQX0NSRUFULFxuJiM0MztcdFx0XHRcdCAgICBGR1BfV1JJVEVCRUdJTiB8IEZHUF9BQ0NFU1NFRCxcbiBcdFx0XHRcdCAgICBtYXBwaW5nX2dmcF9jb25zdHJhaW50KG1hcHBpbmcsIH5fX0dGUF9GUykpO1xuIFx0aWYgKElTX0VSUihmb2xpbykpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChmb2xpbyk7XG5AQCAtNDA2NCw4ICYjNDM7NDA2OCwxNSBAQCBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcbiBcdH1cbiBcdGlmICghYnVmZmVyX21hcHBlZChiaCkpIHtcbiBcdFx0QlVGRkVSX1RSQUNFKGJoLCBcJiMzNDt1bm1hcHBlZFwmIzM0Oyk7XG4tXHRcdGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTtcbi1cdFx0LyogdW5tYXBwZWQ/IEl0JiMzOTtzIGEgaG9sZSAtIG5vdGhpbmcgdG8gZG8gKi9cbiYjNDM7XHRcdGVyciA9IGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTtcbiYjNDM7XHRcdGlmIChlcnIgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGdvdG8gdW5sb2NrO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEl0JiMzOTtzIGEgaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jayAtIG5vdGhpbmcgdG8gZG8uXG4mIzQzO1x0XHQgKiBOb3RlIHRoYXQgYSBsb29rdXAtb25seSBnZXRfYmxvY2sgKHdpdGhvdXRcbiYjNDM7XHRcdCAqIEVYVDRfR0VUX0JMT0NLU19DUkVBVEUpIG5ldmVyIHNldHMgQkhfTWFwcGVkIGZvciBjbGVhblxuJiM0MztcdFx0ICogdW53cml0dGVuIGV4dGVudHMuXG4mIzQzO1x0XHQgKi9cbiBcdFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xuIFx0XHRcdEJVRkZFUl9UUkFDRShiaCwgXCYjMzQ7c3RpbGwgdW5tYXBwZWRcJiMzNDspO1xuIFx0XHRcdGdvdG8gdW5sb2NrO1xuQEAgLTQyMTgsNiAmIzQzOzQyMjksMTQgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpXG4gXHRvZmZzZXQgPSBmcm9tIFx1MDAyNiAoYmxvY2tzaXplIC0gMSk7XG4gXHRpZiAoIW9mZnNldCB8fCBmcm9tIFx1MDAzZT0gZW5kKVxuIFx0XHRyZXR1cm4gMDtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIElubGluZSBkYXRhIGhhcyBubyB0YWlsIGJsb2NrIHRvIHplcm8gb3V0LiAgTm90ZSB0aGF0IGEgcmFjZSB3aXRoXG4mIzQzO1x0ICogZXh0NF9wYWdlX21rd3JpdGUoKSBjb252ZXJ0aW5nIGlubGluZSBkYXRhIHRvIGFuIGV4dGVudCB3aXRob3V0XG4mIzQzO1x0ICogaG9sZGluZyBpX3J3c2VtIGlzIHNhZmUsIGFzIHRoYXQgcGF0aCB6ZXJvZXMgdGhlIGZ1bGwgYmxvY2sgYmVmb3JlXG4mIzQzO1x0ICogY29weWluZyBpbiB0aGUgaW5saW5lIGRhdGEuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuIFx0LyogSWYgd2UgYXJlIHByb2Nlc3NpbmcgYW4gZW5jcnlwdGVkIGlub2RlIGR1cmluZyBvcnBoYW4gbGlzdCBoYW5kbGluZyAqL1xuIFx0aWYgKElTX0VOQ1JZUFRFRChpbm9kZSkgXHUwMDI2XHUwMDI2ICFmc2NyeXB0X2hhc19lbmNyeXB0aW9uX2tleShpbm9kZSkpXG4gXHRcdHJldHVybiAwO1xuQEAgLTQyNTIsMTMgJiM0Mzs0MjcxLDI2IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBaZXJvIG91dCB0aGUgdW5hbGlnbmVkIGhlYWQgYW5kIHRhaWwgb2YgdGhlIFtsc3RhcnQsIGxzdGFydCYjNDM7bGVuZ3RoKVxuJiM0MzsgKiByYW5nZS5cbiYjNDM7ICpcbiYjNDM7ICogT24gcmV0dXJuLCBAcGFydGlhbF96ZXJvZWQgcmVjb3JkcyB3aGljaCBlZGdlcyBhY3R1YWxseSBnb3RcbiYjNDM7ICogcGFydGlhbC16ZXJvZWQuICBTZXQgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQvRVhUNF9QQVJUSUFMX1pFUk9fRU5EIGlmXG4mIzQzOyAqIHRoZSBoZWFkL3RhaWwgYmxvY2sgZ290IGFjdHVhbGx5IHBhcnRpYWxseSB6ZXJvZWQgKGluIHdyaXR0ZW4sIGRpcnR5XG4mIzQzOyAqIHVud3JpdHRlbiBvciBkZWxhbGxvYyBzdGF0ZSkuICBDbGVhcmVkIGlmIHRoZSBoZWFkL3RhaWwgYmxvY2sgaXMgYVxuJiM0MzsgKiBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrLCBpbiB3aGljaCBjYXNlIHRoZXJlIGlzIG5vdGhpbmcgdGhhdFxuJiM0MzsgKiBuZWVkcyB6ZXJvaW5nLiAgV2hlbiB0aGUgaGVhZCBhbmQgdGFpbCBsYW5kIGluIHRoZSBzYW1lIGJsb2NrLCBib3RoXG4mIzQzOyAqIGJpdHMgYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyb2luZy5cbiYjNDM7ICovXG4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuLVx0XHRcdCAgICAgYm9vbCAqZGlkX3plcm8pXG4mIzQzO1x0XHRcdCAgICAgdW5zaWduZWQgaW50ICpwYXJ0aWFsX3plcm9lZClcbiB7XG4gXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtcbiBcdHVuc2lnbmVkIHBhcnRpYWxfc3RhcnQsIHBhcnRpYWxfZW5kO1xuIFx0ZXh0NF9mc2Jsa190IHN0YXJ0LCBlbmQ7XG4gXHRsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICYjNDM7IGxlbmd0aCAtIDEpO1xuJiM0MztcdGJvb2wgZGlkX3plcm8gPSBmYWxzZTtcbiBcdGludCBlcnIgPSAwO1xuIFxuIFx0cGFydGlhbF9zdGFydCA9IGxzdGFydCBcdTAwMjYgKHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSk7XG5AQCAtNDI3MCwyMSAmIzQzOzQzMDIsMzIgQEAgaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyB3aXRoaW4gdGhlIHNpbmdsZSBibG9jayAqL1xuIFx0aWYgKHN0YXJ0ID09IGVuZCBcdTAwMjZcdTAwMjZcbiBcdCAgICAocGFydGlhbF9zdGFydCB8fCAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSkpIHtcbi1cdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgZGlkX3plcm8sXG4mIzQzO1x0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBcdTAwMjZkaWRfemVybyxcbiBcdFx0XHRcdFx0ICAgIE5VTEwpO1xuJiM0MztcdFx0aWYgKGRpZF96ZXJvKVxuJiM0MztcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gKEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUIHxcbiYjNDM7XHRcdFx0XHRcdCAgICBFWFQ0X1BBUlRJQUxfWkVST19FTkQpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqL1xuIFx0aWYgKHBhcnRpYWxfc3RhcnQpIHtcbiBcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIHNiLVx1MDAzZXNfYmxvY2tzaXplLFxuLVx0XHRcdFx0XHQgICAgZGlkX3plcm8sIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0aWYgKGRpZF96ZXJvKVxuJiM0MztcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQ7XG4gXHR9XG4gXHQvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIG91dCBvbiB0aGUgZW5kIG9mIHRoZSByYW5nZSAqL1xuLVx0aWYgKHBhcnRpYWxfZW5kICE9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSlcbiYjNDM7XHRpZiAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSB7XG4mIzQzO1x0XHRkaWRfemVybyA9IGZhbHNlO1xuIFx0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGJ5dGVfZW5kIC0gcGFydGlhbF9lbmQsXG4tXHRcdFx0XHRcdCAgICBwYXJ0aWFsX2VuZCAmIzQzOyAxLCBkaWRfemVybywgTlVMTCk7XG4mIzQzO1x0XHRcdFx0XHQgICAgcGFydGlhbF9lbmQgJiM0MzsgMSwgXHUwMDI2ZGlkX3plcm8sIE5VTEwpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGlmIChkaWRfemVybylcbiYjNDM7XHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX0VORDtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbkBAIC00NDMzLDcgJiM0Mzs0NDc2LDcgQEAgaW50IGV4dDRfcHVuY2hfaG9sZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aClcbiBcdGxvZmZfdCBlbmQgPSBvZmZzZXQgJiM0MzsgbGVuZ3RoO1xuIFx0aGFuZGxlX3QgKmhhbmRsZTtcbiBcdHVuc2lnbmVkIGludCBjcmVkaXRzO1xuLVx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xuJiM0MztcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0O1xuIFxuIFx0dHJhY2VfZXh0NF9wdW5jaF9ob2xlKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTI6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfYWxsb2NfZmlsZV9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF96ZXJvX3JhbmdlJiMzNDssCiAgICAmIzM0O2V4dDRfbG9hZF90YWlsX2JoJiMzNDssCiAgICAmIzM0O2V4dDRfYmxvY2tfemVyb19lb2YmIzM0OywKICAgICYjMzQ7ZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzJiMzNDssCiAgICAmIzM0O2V4dDRfcHVuY2hfaG9sZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGV4dDQgbG9naWMgZm9yIGhhbmRsaW5nIHBhcnRpYWwgYmxvY2sgemVyb2luZyBkdXJpbmcgZmFsbG9jYXRlIG9wZXJhdGlvbnMgKHplcm8gcmFuZ2UsIHB1bmNoIGhvbGUpIGFuZCBibG9jayBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHN5c3RlbSBjYWxscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmU1YmVhMjE1ZGJkMTgxNmVkMDAwMjY1NjZmYTY2MWU3ZTU1Y2IzNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDEyOjA2OjAzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCA5NDI4M2E5OTFlNWM0Zi4uYjJlNTU4NzZkMGUzNTIgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvZXh0NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oCkBAIC0zMDk5LDggJiM0MzszMDk5LDExIEBAIGV4dGVybiBpbnQgZXh0NF9jaHVua190cmFuc19leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKTsKIGV4dGVybiBpbnQgZXh0NF9tZXRhX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbGJsb2NrcywKIAkJCQkgIGludCBwZXh0ZW50cyk7CiBleHRlcm4gaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpOwomIzQzOwomIzQzOyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQJMHgxCiYjNDM7I2RlZmluZSBFWFQ0X1BBUlRJQUxfWkVST19FTkQJMHgyCiBleHRlcm4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LAotCQkJCSAgICBsb2ZmX3QgbGVuZ3RoLCBib29sICpkaWRfemVybyk7CiYjNDM7CQkJCSAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTsKIGV4dGVybiB2bV9mYXVsdF90IGV4dDRfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKTsKIGV4dGVybiBxc2l6ZV90ICpleHQ0X2dldF9yZXNlcnZlZF9zcGFjZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0ZW50cy5jIGIvZnMvZXh0NC9leHRlbnRzLmMKaW5kZXggMTI1ZjYyOGU3MzhhYjEuLjlhMWIwNmM4ZGQ5Nzk3IDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dGVudHMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2V4dGVudHMuYwpAQCAtNDU4NSw2ICYjNDM7NDU4NSw3IEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwKIAlsb2ZmX3QgZXBvcyA9IDAsIG9sZF9zaXplID0gaV9zaXplX3JlYWQoaW5vZGUpOwogCXVuc2lnbmVkIGludCBibGtiaXRzID0gaW5vZGUtJmd0O2lfYmxrYml0czsKIAlib29sIGFsbG9jX3plcm8gPSBmYWxzZTsKJiM0MzsJYm9vbCBvcnBoYW4gPSBmYWxzZTsKIAogCUJVR19PTighZXh0NF90ZXN0X2lub2RlX2ZsYWcoaW5vZGUsIEVYVDRfSU5PREVfRVhURU5UUykpOwogCW1hcC5tX2xibGsgPSBvZmZzZXQgJmd0OyZndDsgYmxrYml0czsKQEAgLTQ2NTksMTIgJiM0Mzs0NjYwLDM1IEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwKIAogCQlpZiAoYWxsb2NfemVybyAmYW1wOyZhbXA7CiAJCSAgICAobWFwLm1fZmxhZ3MgJmFtcDsgKEVYVDRfTUFQX01BUFBFRCB8IEVYVDRfTUFQX1VOV1JJVFRFTikpKSB7CiYjNDM7CQkJV0FSTl9PTl9PTkNFKG1hcC5tX2xibGsgJiM0MzsgbWFwLm1fbGVuICZndDsKJiM0MzsJCQkJRVhUNF9CX1RPX0xCTEsoaW5vZGUsIG5ld19zaXplID86IG9sZF9zaXplKSk7CiYjNDM7CiAJCQlyZXQgPSBleHQ0X2lzc3VlX3plcm9vdXQoaW5vZGUsIG1hcC5tX2xibGssIG1hcC5tX3BibGssCiAJCQkJCQkgbWFwLm1fbGVuKTsKLQkJCWlmIChsaWtlbHkoIXJldCkpCi0JCQkJcmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKE5VTEwsCiYjNDM7CQkJaWYgKHVubGlrZWx5KHJldCkpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCWhhbmRsZSA9IGV4dDRfam91cm5hbF9zdGFydChpbm9kZSwgRVhUNF9IVF9NQVBfQkxPQ0tTLAomIzQzOwkJCQkJCSAgICBjcmVkaXRzKTsKJiM0MzsJCQlpZiAoSVNfRVJSKGhhbmRsZSkpIHsKJiM0MzsJCQkJcmV0ID0gUFRSX0VSUihoYW5kbGUpOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJaWYgKG5ld19zaXplKSB7CiYjNDM7CQkJCXJldCA9IGV4dDRfb3JwaGFuX2FkZChoYW5kbGUsIGlub2RlKTsKJiM0MzsJCQkJb3JwaGFuID0gdHJ1ZTsKJiM0MzsJCQkJaWYgKHJldCkgewomIzQzOwkJCQkJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKJiM0MzsJCQkJCWJyZWFrOwomIzQzOwkJCQl9CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCXJldCA9IGV4dDRfY29udmVydF91bndyaXR0ZW5fZXh0ZW50cyhoYW5kbGUsCiAJCQkJCWlub2RlLCAobG9mZl90KW1hcC5tX2xibGsgJmx0OyZsdDsgYmxrYml0cywKIAkJCQkJKGxvZmZfdCltYXAubV9sZW4gJmx0OyZsdDsgYmxrYml0cyk7CiYjNDM7CQkJcmV0MiA9IGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CiYjNDM7CQkJcmV0ID0gcmV0ID8gcmV0IDogcmV0MjsKIAkJCWlmIChyZXQpCiAJCQkJYnJlYWs7CiAJCX0KQEAgLTQ2NzgsNyAmIzQzOzQ3MDIsNyBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sCiAJCWdvdG8gcmV0cnk7CiAKIAlpZiAoIWVwb3MgfHwgIW5ld19zaXplKQotCQlyZXR1cm4gcmV0OwomIzQzOwkJZ290byBvdXQ7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGJsb2NrcywgdXBkYXRlIHRoZSBmaWxlIHNpemUgdG8gbWF0Y2ggdGhlIHNpemUgb2YgdGhlCkBAIC00Njg3LDEyICYjNDM7NDcxMSwxNiBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sCiAJaWYgKGVwb3MgJmd0OyBuZXdfc2l6ZSkKIAkJZXBvcyA9IG5ld19zaXplOwogCi0JaGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDEpOwotCWlmIChJU19FUlIoaGFuZGxlKSkKLQkJcmV0dXJuIHJldCA/IHJldCA6IFBUUl9FUlIoaGFuZGxlKTsKJiM0MzsJaGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDIpOwomIzQzOwlpZiAoSVNfRVJSKGhhbmRsZSkpIHsKJiM0MzsJCXJldCA9IHJldCA/IHJldCA6IFBUUl9FUlIoaGFuZGxlKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiAKIAlleHQ0X3VwZGF0ZV9pbm9kZV9zaXplKGlub2RlLCBlcG9zKTsKIAlyZXQyID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpOwomIzQzOwlpZiAob3JwaGFuICZhbXA7JmFtcDsgaW5vZGUtJmd0O2lfbmxpbmspCiYjNDM7CQlleHQ0X29ycGhhbl9kZWwoaGFuZGxlLCBpbm9kZSk7CiAJZXh0NF91cGRhdGVfaW5vZGVfZnN5bmNfdHJhbnMoaGFuZGxlLCBpbm9kZSwgMSk7CiAJcmV0MyA9IGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CiAJcmV0MiA9IHJldDMgPyByZXQzIDogcmV0MjsKQEAgLTQ3MDEsNiAmIzQzOzQ3MjksMTEgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLAogCQlwYWdlY2FjaGVfaXNpemVfZXh0ZW5kZWQoaW5vZGUsIG9sZF9zaXplLCBlcG9zKTsKIAogCXJldHVybiByZXQgPyByZXQgOiByZXQyOwomIzQzOwomIzQzO291dDoKJiM0MzsJaWYgKG9ycGhhbiAmYW1wOyZhbXA7IGlub2RlLSZndDtpX25saW5rKQomIzQzOwkJZXh0NF9vcnBoYW5fZGVsKE5VTEwsIGlub2RlKTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBleHQ0X2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTsKQEAgLTQ3MTUsNyAmIzQzOzQ3NDgsNyBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsCiAJbG9mZl90IGFsaWduX3N0YXJ0LCBhbGlnbl9lbmQsIG5ld19zaXplID0gMDsKIAlsb2ZmX3QgZW5kID0gb2Zmc2V0ICYjNDM7IGxlbjsKIAl1bnNpZ25lZCBpbnQgYmxvY2tzaXplID0gaV9ibG9ja3NpemUoaW5vZGUpOwotCWJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTsKJiM0MzsJdW5zaWduZWQgaW50IHBhcnRpYWxfemVyb2VkID0gMDsKIAlpbnQgcmV0LCBmbGFnczsKIAogCXRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpOwpAQCAtNDczNCwxMCAmIzQzOzQ3NjcsMTYgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAogCX0KIAogCWZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9VTldSSVRfRVhUOwotCS8qIFByZWFsbG9jYXRlIHRoZSByYW5nZSBpbmNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqLwomIzQzOwkvKgomIzQzOwkgKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMsIGFuZCB6ZXJvCiYjNDM7CSAqIG91dCBwYXJ0aWFsIGJsb2NrcyBpZiB0aGV5IGFscmVhZHkgY29udGFpbiBkYXRhLgomIzQzOwkgKi8KIAlpZiAoIUlTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKSB7CiAJCXJldCA9IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3MoZmlsZSwgb2Zmc2V0LCBsZW4sIG5ld19zaXplLAogCQkJCQkgICAgIGZsYWdzKTsKJiM0MzsJCWlmICghcmV0KQomIzQzOwkJCXJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sCiYjNDM7CQkJCQkJICAgICAgICZhbXA7cGFydGlhbF96ZXJvZWQpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CkBAIC00NzU0LDYgJiM0Mzs0NzkzLDIxIEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwKIAkvKiBaZXJvIHJhbmdlIGV4Y2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovCiAJYWxpZ25fc3RhcnQgPSByb3VuZF91cChvZmZzZXQsIGJsb2Nrc2l6ZSk7CiAJYWxpZ25fZW5kID0gcm91bmRfZG93bihlbmQsIGJsb2Nrc2l6ZSk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEluIFdSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IHdlcmUgbm90IHBhcnRpYWwtemVyb2VkIChjbGVhbgomIzQzOwkgKiB1bndyaXR0ZW4gb3IgaG9sZSkgbXVzdCBiZSBhbGxvY2F0ZWQgYW5kIHplcm9lZCBhcyB3aG9sZSBibG9ja3MuCiYjNDM7CSAqIEV4cGFuZCB0aGUgYWxpZ25lZCByYW5nZSBvdXR3YXJkIHRvIGNvdmVyIHRoZW0uCiYjNDM7CSAqLwomIzQzOwlpZiAobW9kZSAmYW1wOyBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB7CiYjNDM7CQlpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCBibG9ja3NpemUpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhKHBhcnRpYWxfemVyb2VkICZhbXA7IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUKSkKJiM0MzsJCQlhbGlnbl9zdGFydCA9IHJvdW5kX2Rvd24ob2Zmc2V0LCBibG9ja3NpemUpOwomIzQzOwkJaWYgKCFJU19BTElHTkVEKGVuZCwgYmxvY2tzaXplKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIShwYXJ0aWFsX3plcm9lZCAmYW1wOyBFWFQ0X1BBUlRJQUxfWkVST19FTkQpKQomIzQzOwkJCWFsaWduX2VuZCA9IHJvdW5kX3VwKGVuZCwgYmxvY2tzaXplKTsKJiM0MzsJfQomIzQzOwogCWlmIChhbGlnbl9lbmQgJmd0OyBhbGlnbl9zdGFydCkgewogCQlpZiAobW9kZSAmYW1wOyBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKQogCQkJZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1pFUk8gfCBFWFQ0X0VYX05PQ0FDSEU7CkBAIC00NzcwLDExICYjNDM7NDgyNCwxNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsCiAJaWYgKElTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKQogCQlyZXR1cm4gcmV0OwogCi0JLyogWmVybyBvdXQgcGFydGlhbCBibG9jayBhdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlICovCi0JcmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbiwgJmFtcDtwYXJ0aWFsX3plcm9lZCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQlpZiAoKChmaWxlLSZndDtmX2ZsYWdzICZhbXA7IE9fU1lOQykgfHwgSVNfU1lOQyhpbm9kZSkpICZhbXA7JmFtcDsgcGFydGlhbF96ZXJvZWQpIHsKJiM0MzsJLyoKJiM0MzsJICogSW4gRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IGhhdmUgYmVlbiBwYXJ0aWFsbHkKJiM0MzsJICogemVyb2VkIG11c3QgYmUgd3JpdHRlbiBiYWNrIHRvIGVuc3VyZSB0aGUgZW50aXJlIHplcm9lZCByYW5nZQomIzQzOwkgKiBpcyBjb252ZXJ0ZWQgdG8gdGhlIHdyaXR0ZW4gc3RhdGUuIEluIFNZTkMgbW9kZSwgd3JpdGViYWNrIGlzCiYjNDM7CSAqIGFsc28gcmVxdWlyZWQgdG8gcGVyc2lzdCB0aGUgemVyb2VkIGRhdGEgdG8gZGlzay4KJiM0MzsJICovCiYjNDM7CWlmIChwYXJ0aWFsX3plcm9lZCAmYW1wOyZhbXA7CiYjNDM7CSAgICAoKG1vZGUgJmFtcDsgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgfHwKJiM0MzsJICAgICAoZmlsZS0mZ3Q7Zl9mbGFncyAmYW1wOyBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSkgewogCQlyZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKGlub2RlLSZndDtpX21hcHBpbmcsIG9mZnNldCwKIAkJCQkJCSAgIGVuZCAtIDEpOwogCQlpZiAocmV0KQpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IGMyYzJkNmFjN2YzZDEzLi5hMTYxNTA4NGEzYjk5YiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9pbm9kZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvaW5vZGUuYwpAQCAtNDAyNiw2ICYjNDM7NDAyNiwxMCBAQCB2b2lkIGV4dDRfc2V0X2FvcHMoc3RydWN0IGlub2RlICppbm9kZSkKICAqIGJlY2F1c2UgaXQgbWlnaHQgaGF2ZSBkYXRhIGluIHBhZ2VjYWNoZSAoZWcsIGlmIGNhbGxlZCBmcm9tIGV4dDRfemVyb19yYW5nZSwKICAqIGV4dDRfcHVuY2hfaG9sZSwgZXRjKSB3aGljaCBuZWVkcyB0byBiZSBwcm9wZXJseSB6ZXJvZWQgb3V0LiBPdGhlcndpc2UgYQogICogcmFjaW5nIHdyaXRlYmFjayBjYW4gY29tZSBsYXRlciBhbmQgZmx1c2ggdGhlIHN0YWxlIHBhZ2VjYWNoZSB0byBkaXNrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuIHRoZSBsb2FkZWQgYmggaWYgaXQgYWN0dWFsbHkgbmVlZHMgemVyb2luZyAtIGluIHdyaXR0ZW4sIGRpcnR5CiYjNDM7ICogdW53cml0dGVuLCBvciBkZWxhbGxvYyBzdGF0ZS4gUmV0dXJuIE5VTEwgaWYgaXQmIzM5O3MgY2xlYW4gKGkuZS4sIGEgaG9sZSBvcgomIzQzOyAqIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrKS4KICAqLwogc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pCiB7CkBAIC00MDM3LDcgJiM0Mzs0MDQxLDcgQEAgc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pCiAJaW50IGVyciA9IDA7CiAKIAlmb2xpbyA9IF9fZmlsZW1hcF9nZXRfZm9saW8obWFwcGluZywgZnJvbSAmZ3Q7Jmd0OyBQQUdFX1NISUZULAotCQkJCSAgICBGR1BfTE9DSyB8IEZHUF9BQ0NFU1NFRCB8IEZHUF9DUkVBVCwKJiM0MzsJCQkJICAgIEZHUF9XUklURUJFR0lOIHwgRkdQX0FDQ0VTU0VELAogCQkJCSAgICBtYXBwaW5nX2dmcF9jb25zdHJhaW50KG1hcHBpbmcsIH5fX0dGUF9GUykpOwogCWlmIChJU19FUlIoZm9saW8pKQogCQlyZXR1cm4gRVJSX0NBU1QoZm9saW8pOwpAQCAtNDA2NCw4ICYjNDM7NDA2OCwxNSBAQCBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSkKIAl9CiAJaWYgKCFidWZmZXJfbWFwcGVkKGJoKSkgewogCQlCVUZGRVJfVFJBQ0UoYmgsICYjMzQ7dW5tYXBwZWQmIzM0Oyk7Ci0JCWV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTsKLQkJLyogdW5tYXBwZWQ/IEl0JiMzOTtzIGEgaG9sZSAtIG5vdGhpbmcgdG8gZG8gKi8KJiM0MzsJCWVyciA9IGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTsKJiM0MzsJCWlmIChlcnIgJmx0OyAwKQomIzQzOwkJCWdvdG8gdW5sb2NrOwomIzQzOwkJLyoKJiM0MzsJCSAqIEl0JiMzOTtzIGEgaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jayAtIG5vdGhpbmcgdG8gZG8uCiYjNDM7CQkgKiBOb3RlIHRoYXQgYSBsb29rdXAtb25seSBnZXRfYmxvY2sgKHdpdGhvdXQKJiM0MzsJCSAqIEVYVDRfR0VUX0JMT0NLU19DUkVBVEUpIG5ldmVyIHNldHMgQkhfTWFwcGVkIGZvciBjbGVhbgomIzQzOwkJICogdW53cml0dGVuIGV4dGVudHMuCiYjNDM7CQkgKi8KIAkJaWYgKCFidWZmZXJfbWFwcGVkKGJoKSkgewogCQkJQlVGRkVSX1RSQUNFKGJoLCAmIzM0O3N0aWxsIHVubWFwcGVkJiMzNDspOwogCQkJZ290byB1bmxvY2s7CkBAIC00MjE4LDYgJiM0Mzs0MjI5LDE0IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKQogCW9mZnNldCA9IGZyb20gJmFtcDsgKGJsb2Nrc2l6ZSAtIDEpOwogCWlmICghb2Zmc2V0IHx8IGZyb20gJmd0Oz0gZW5kKQogCQlyZXR1cm4gMDsKJiM0MzsJLyoKJiM0MzsJICogSW5saW5lIGRhdGEgaGFzIG5vIHRhaWwgYmxvY2sgdG8gemVybyBvdXQuICBOb3RlIHRoYXQgYSByYWNlIHdpdGgKJiM0MzsJICogZXh0NF9wYWdlX21rd3JpdGUoKSBjb252ZXJ0aW5nIGlubGluZSBkYXRhIHRvIGFuIGV4dGVudCB3aXRob3V0CiYjNDM7CSAqIGhvbGRpbmcgaV9yd3NlbSBpcyBzYWZlLCBhcyB0aGF0IHBhdGggemVyb2VzIHRoZSBmdWxsIGJsb2NrIGJlZm9yZQomIzQzOwkgKiBjb3B5aW5nIGluIHRoZSBpbmxpbmUgZGF0YS4KJiM0MzsJICovCiYjNDM7CWlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpCiYjNDM7CQlyZXR1cm4gMDsKIAkvKiBJZiB3ZSBhcmUgcHJvY2Vzc2luZyBhbiBlbmNyeXB0ZWQgaW5vZGUgZHVyaW5nIG9ycGhhbiBsaXN0IGhhbmRsaW5nICovCiAJaWYgKElTX0VOQ1JZUFRFRChpbm9kZSkgJmFtcDsmYW1wOyAhZnNjcnlwdF9oYXNfZW5jcnlwdGlvbl9rZXkoaW5vZGUpKQogCQlyZXR1cm4gMDsKQEAgLTQyNTIsMTMgJiM0Mzs0MjcxLDI2IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKQogCXJldHVybiAwOwogfQogCiYjNDM7LyoKJiM0MzsgKiBaZXJvIG91dCB0aGUgdW5hbGlnbmVkIGhlYWQgYW5kIHRhaWwgb2YgdGhlIFtsc3RhcnQsIGxzdGFydCYjNDM7bGVuZ3RoKQomIzQzOyAqIHJhbmdlLgomIzQzOyAqCiYjNDM7ICogT24gcmV0dXJuLCBAcGFydGlhbF96ZXJvZWQgcmVjb3JkcyB3aGljaCBlZGdlcyBhY3R1YWxseSBnb3QKJiM0MzsgKiBwYXJ0aWFsLXplcm9lZC4gIFNldCBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVC9FWFQ0X1BBUlRJQUxfWkVST19FTkQgaWYKJiM0MzsgKiB0aGUgaGVhZC90YWlsIGJsb2NrIGdvdCBhY3R1YWxseSBwYXJ0aWFsbHkgemVyb2VkIChpbiB3cml0dGVuLCBkaXJ0eQomIzQzOyAqIHVud3JpdHRlbiBvciBkZWxhbGxvYyBzdGF0ZSkuICBDbGVhcmVkIGlmIHRoZSBoZWFkL3RhaWwgYmxvY2sgaXMgYQomIzQzOyAqIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2ssIGluIHdoaWNoIGNhc2UgdGhlcmUgaXMgbm90aGluZyB0aGF0CiYjNDM7ICogbmVlZHMgemVyb2luZy4gIFdoZW4gdGhlIGhlYWQgYW5kIHRhaWwgbGFuZCBpbiB0aGUgc2FtZSBibG9jaywgYm90aAomIzQzOyAqIGJpdHMgYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyb2luZy4KJiM0MzsgKi8KIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCwKLQkJCSAgICAgYm9vbCAqZGlkX3plcm8pCiYjNDM7CQkJICAgICB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKQogewogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0mZ3Q7aV9zYjsKIAl1bnNpZ25lZCBwYXJ0aWFsX3N0YXJ0LCBwYXJ0aWFsX2VuZDsKIAlleHQ0X2ZzYmxrX3Qgc3RhcnQsIGVuZDsKIAlsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICYjNDM7IGxlbmd0aCAtIDEpOwomIzQzOwlib29sIGRpZF96ZXJvID0gZmFsc2U7CiAJaW50IGVyciA9IDA7CiAKIAlwYXJ0aWFsX3N0YXJ0ID0gbHN0YXJ0ICZhbXA7IChzYi0mZ3Q7c19ibG9ja3NpemUgLSAxKTsKQEAgLTQyNzAsMjEgJiM0Mzs0MzAyLDMyIEBAIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCwKIAkvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIHdpdGhpbiB0aGUgc2luZ2xlIGJsb2NrICovCiAJaWYgKHN0YXJ0ID09IGVuZCAmYW1wOyZhbXA7CiAJICAgIChwYXJ0aWFsX3N0YXJ0IHx8IChwYXJ0aWFsX2VuZCAhPSBzYi0mZ3Q7c19ibG9ja3NpemUgLSAxKSkpIHsKLQkJZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgZGlkX3plcm8sCiYjNDM7CQllcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCAmYW1wO2RpZF96ZXJvLAogCQkJCQkgICAgTlVMTCk7CiYjNDM7CQlpZiAoZGlkX3plcm8pCiYjNDM7CQkJKnBhcnRpYWxfemVyb2VkIHw9IChFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCB8CiYjNDM7CQkJCQkgICAgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKTsKIAkJcmV0dXJuIGVycjsKIAl9CiAJLyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqLwogCWlmIChwYXJ0aWFsX3N0YXJ0KSB7CiAJCWVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBzYi0mZ3Q7c19ibG9ja3NpemUsCi0JCQkJCSAgICBkaWRfemVybywgTlVMTCk7CiYjNDM7CQkJCQkgICAgJmFtcDtkaWRfemVybywgTlVMTCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJyOwomIzQzOwkJaWYgKGRpZF96ZXJvKQomIzQzOwkJCSpwYXJ0aWFsX3plcm9lZCB8PSBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVDsKIAl9CiAJLyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKi8KLQlpZiAocGFydGlhbF9lbmQgIT0gc2ItJmd0O3NfYmxvY2tzaXplIC0gMSkKJiM0MzsJaWYgKHBhcnRpYWxfZW5kICE9IHNiLSZndDtzX2Jsb2Nrc2l6ZSAtIDEpIHsKJiM0MzsJCWRpZF96ZXJvID0gZmFsc2U7CiAJCWVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgYnl0ZV9lbmQgLSBwYXJ0aWFsX2VuZCwKLQkJCQkJICAgIHBhcnRpYWxfZW5kICYjNDM7IDEsIGRpZF96ZXJvLCBOVUxMKTsKJiM0MzsJCQkJCSAgICBwYXJ0aWFsX2VuZCAmIzQzOyAxLCAmYW1wO2RpZF96ZXJvLCBOVUxMKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCWlmIChkaWRfemVybykKJiM0MzsJCQkqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fRU5EOwomIzQzOwl9CiAJcmV0dXJuIGVycjsKIH0KIApAQCAtNDQzMyw3ICYjNDM7NDQ3Niw3IEBAIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpCiAJbG9mZl90IGVuZCA9IG9mZnNldCAmIzQzOyBsZW5ndGg7CiAJaGFuZGxlX3QgKmhhbmRsZTsKIAl1bnNpZ25lZCBpbnQgY3JlZGl0czsKLQlib29sIHBhcnRpYWxfemVyb2VkID0gZmFsc2U7CiYjNDM7CXVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7CiAJaW50IHJldDsKIAogCXRyYWNlX2V4dDRfcHVuY2hfaG9sZShpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIDApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTIyCgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDc4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogZXh0NCBGaWxlc3lzdGVtIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIGRpZ2dpbmcgaW50byB0aGUgZ3V0cyBvZiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmcy9leHQ0L2V4dGVudHMuY2AsIGBmcy9leHQ0L2lub2RlLmNgLCBhbmQgYGZzL2V4dDQvZXh0NC5oYC4gVGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgaG93IGBleHQ0X3plcm9fcmFuZ2VgIGFuZCBgZXh0NF9wdW5jaF9ob2xlYCBkZWFsIHdpdGggcGFydGlhbCBibG9jayB6ZXJvaW5nLCB1c2luZyBhIGJpdG1hc2sgKGBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVGAsIGBFWFQ0X1BBUlRJQUxfWkVST19FTkRgKSB0byBrZWVwIHRyYWNrIG9mIHRob3NlIGVkZ2UgY2FzZXMuIFRoZXJlIGFyZSBhbHNvIGNoYW5nZXMgdG8gYGV4dDRfYWxsb2NfZmlsZV9ibG9ja3NgIHdoaWNoIGFmZmVjdCBvcnBoYW4gbGlzdHMgYW5kIGVycm9yIGhhbmRsaW5nLCBhbmQgYGV4dDRfbG9hZF90YWlsX2JoYCBpcyBiZWluZyBtb2RpZmllZCB0byBoYW5kbGUgY2xlYW4gdW53cml0dGVuIGJsb2NrcyBiZXR0ZXIuCgpNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgY29yZSBsb2dpYyBvZiBleHQ0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGBmYWxsb2NhdGVgIG9wZXJhdGlvbnMgbGlrZSB6ZXJvaW5nIHJhbmdlcyBhbmQgcHVuY2hpbmcgaG9sZXMsIGFzIHdlbGwgYXMgYmxvY2sgYWxsb2NhdGlvbi4KCklzIGl0IHJlYWNoYWJsZT8gQWJzb2x1dGVseS4gSXTigJlzIHRyaWdnZXJlZCB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c3RlbSBjYWxsLCBzbyBpdCYjMzk7cyBkaXJlY3RseSBleHBvc2VkIHRvIHVzZXJsYW5kIGFuZCBoZW5jZSwgZnV6emFibGUuIElzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFdpdGhvdXQgYSBkb3VidC4gQW55IG1vZGlmaWNhdGlvbiB0byBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgaXMgYSBwb3RlbnRpYWwgZ29sZG1pbmUgZm9yIGZpbmRpbmcgc3VidGxlLCBoYXJkLXRvLWZpbmQgYnVncy4KClNvLCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucy4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgYXJlOiBgZXh0NF9hbGxvY19maWxlX2Jsb2Nrc2AsIGBleHQ0X3plcm9fcmFuZ2VgLCBgZXh0NF9sb2FkX3RhaWxfYmhgLCBgZXh0NF9ibG9ja196ZXJvX2VvZmAsIGBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NgLCBhbmQgYGV4dDRfcHVuY2hfaG9sZWAuIFRoYXQmIzM5O3Mgd2hlcmUgd2UgbmVlZCB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLgoKSSYjMzk7bSB0aGlua2luZywgYXJlIHRoZXNlIGhvdC1wYXRoIGZ1bmN0aW9ucz8gTm90IGluIHRoZSBzZW5zZSBvZiBhIGZyZXF1ZW50IHdyaXRlIG9yIHJlYWQgcGF0aCwgbGlrZSBgZXh0NF9maWxlX3dyaXRlX2l0ZXJgIG9yIGBleHQ0X21hcF9ibG9ja3NgLCBidXQgYGV4dDRfcHVuY2hfaG9sZWAgYW5kIGBleHQ0X3plcm9fcmFuZ2VgIGFyZSBwYXJ0IG9mIGBmYWxsb2NhdGVgIGFuZCB0aGVyZWZvcmUgZGlyZWN0bHkgcmVsYXRlZCB0byBvdXIgZnV6eiB0YXJnZXQuIGBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzYCBpcyBpbnZvbHZlZCBpbiB6ZXJvIHJhbmdlLiBgZXh0NF9sb2FkX3RhaWxfYmhgIGlzIHVzZWQgZHVyaW5nIEVPRiB6ZXJvaW5nLiBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCBpcyB1c2VkIGluIHB1bmNoIGhvbGUgYW5kIHplcm8gcmFuZ2UuIFRoZXkgZGVmaW5pdGVseSB3YXJyYW50IGF0dGVudGlvbi4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24uIGBFWFQ0X0ZTYCBpcyB0aGUga2V5IGNvbmZpZywgYXMgdmVyaWZpZWQgaW4gYGZzL2V4dDQvS2NvbmZpZ2AuIFRoZSBmYWN0IHRoYXQgdGhlIHBhdGNoIHRvdWNoZXMgYGZzL2V4dDQvZXh0ZW50cy5jYCBhbmQgYGZzL2V4dDQvaW5vZGUuY2AgY29uZmlybXMgdGhhdCB0aGlzIGNvbmZpZyBpcyBzdWZmaWNpZW50LgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGF0IGBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzYCBpcyBpbmRlZWQgaW4gYGZzL2V4dDQvZXh0ZW50cy5jYCwgd2hpY2ggaXQgaXMuCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCmBgYGpzb24KewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19yYW5nZSYjMzQ7LAogICAgJiMzNDtleHQ0X2xvYWRfdGFpbF9iaCYjMzQ7LAogICAgJiMzNDtleHQ0X2Jsb2NrX3plcm9fZW9mJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3B1bmNoX2hvbGUmIzM0OwogIF0sCiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGV4dDQgbG9naWMgZm9yIGhhbmRsaW5nIHBhcnRpYWwgYmxvY2sgemVyb2luZyBkdXJpbmcgZmFsbG9jYXRlIG9wZXJhdGlvbnMgKHplcm8gcmFuZ2UsIHB1bmNoIGhvbGUpIGFuZCBibG9jayBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHN5c3RlbSBjYWxscy4mIzM0Owp9CmBgYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEyOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9hbGxvY19maWxlX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcmFuZ2UmIzM0OywKICAgICYjMzQ7ZXh0NF9sb2FkX3RhaWxfYmgmIzM0OywKICAgICYjMzQ7ZXh0NF9ibG9ja196ZXJvX2VvZiYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF9wdW5jaF9ob2xlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZXh0NCBsb2dpYyBmb3IgaGFuZGxpbmcgcGFydGlhbCBibG9jayB6ZXJvaW5nIGR1cmluZyBmYWxsb2NhdGUgb3BlcmF0aW9ucyAoemVybyByYW5nZSwgcHVuY2ggaG9sZSkgYW5kIGJsb2NrIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgc3lzdGVtIGNhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9hbGxvY19maWxlX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcmFuZ2UmIzM0OywKICAgICYjMzQ7ZXh0NF9sb2FkX3RhaWxfYmgmIzM0OywKICAgICYjMzQ7ZXh0NF9ibG9ja196ZXJvX2VvZiYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF9wdW5jaF9ob2xlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZXh0NCBsb2dpYyBmb3IgaGFuZGxpbmcgcGFydGlhbCBibG9jayB6ZXJvaW5nIGR1cmluZyBmYWxsb2NhdGUgb3BlcmF0aW9ucyAoemVybyByYW5nZSwgcHVuY2ggaG9sZSkgYW5kIGJsb2NrIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgc3lzdGVtIGNhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMTI6MDY6MDUuMjMzMDAyMDY4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MzgyOTA3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfYWxsb2NfZmlsZV9ibG9ja3NcIixcbiAgICBcImV4dDRfemVyb19yYW5nZVwiLFxuICAgIFwiZXh0NF9sb2FkX3RhaWxfYmhcIixcbiAgICBcImV4dDRfYmxvY2tfemVyb19lb2ZcIixcbiAgICBcImV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF9wdW5jaF9ob2xlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBleHQ0IGxvZ2ljIGZvciBoYW5kbGluZyBwYXJ0aWFsIGJsb2NrIHplcm9pbmcgZHVyaW5nIGZhbGxvY2F0ZSBvcGVyYXRpb25zICh6ZXJvIHJhbmdlLCBwdW5jaCBob2xlKSBhbmQgYmxvY2sgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gY2FsbHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEyOjA2OjA1LjIzMzAwNjkxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk5ODc2MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmU1YmVhMjE1ZGJkMTgxNmVkMDAwMjY1NjZmYTY2MWU3ZTU1Y2IzNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMjowNjowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXFxuaW5kZXggOTQyODNhOTkxZTVjNGYuLmIyZTU1ODc2ZDBlMzUyIDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcXG5AQCAtMzA5OSw4ICszMDk5LDExIEBAIGV4dGVybiBpbnQgZXh0NF9jaHVua190cmFuc19leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKTtcXG4gZXh0ZXJuIGludCBleHQ0X21ldGFfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBsYmxvY2tzLFxcbiBcXHRcXHRcXHRcXHQgIGludCBwZXh0ZW50cyk7XFxuIGV4dGVybiBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZCk7XFxuK1xcbisjZGVmaW5lIEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUXFx0MHgxXFxuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fRU5EXFx0MHgyXFxuIGV4dGVybiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsXFxuLVxcdFxcdFxcdFxcdCAgICBsb2ZmX3QgbGVuZ3RoLCBib29sICpkaWRfemVybyk7XFxuK1xcdFxcdFxcdFxcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcXG4gZXh0ZXJuIHZtX2ZhdWx0X3QgZXh0NF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpO1xcbiBleHRlcm4gcXNpemVfdCAqZXh0NF9nZXRfcmVzZXJ2ZWRfc3BhY2Uoc3RydWN0IGlub2RlICppbm9kZSk7XFxuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHRlbnRzLmMgYi9mcy9leHQ0L2V4dGVudHMuY1xcbmluZGV4IDEyNWY2MjhlNzM4YWIxLi45YTFiMDZjOGRkOTc5NyAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xcbisrKyBiL2ZzL2V4dDQvZXh0ZW50cy5jXFxuQEAgLTQ1ODUsNiArNDU4NSw3IEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcXG4gXFx0bG9mZl90IGVwb3MgPSAwLCBvbGRfc2l6ZSA9IGlfc2l6ZV9yZWFkKGlub2RlKTtcXG4gXFx0dW5zaWduZWQgaW50IGJsa2JpdHMgPSBpbm9kZS1cXHUwMDNlaV9ibGtiaXRzO1xcbiBcXHRib29sIGFsbG9jX3plcm8gPSBmYWxzZTtcXG4rXFx0Ym9vbCBvcnBoYW4gPSBmYWxzZTtcXG4gXFxuIFxcdEJVR19PTighZXh0NF90ZXN0X2lub2RlX2ZsYWcoaW5vZGUsIEVYVDRfSU5PREVfRVhURU5UUykpO1xcbiBcXHRtYXAubV9sYmxrID0gb2Zmc2V0IFxcdTAwM2VcXHUwMDNlIGJsa2JpdHM7XFxuQEAgLTQ2NTksMTIgKzQ2NjAsMzUgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbiBcXG4gXFx0XFx0aWYgKGFsbG9jX3plcm8gXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIChtYXAubV9mbGFncyBcXHUwMDI2IChFWFQ0X01BUF9NQVBQRUQgfCBFWFQ0X01BUF9VTldSSVRURU4pKSkge1xcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UobWFwLm1fbGJsayArIG1hcC5tX2xlbiBcXHUwMDNlXFxuK1xcdFxcdFxcdFxcdEVYVDRfQl9UT19MQkxLKGlub2RlLCBuZXdfc2l6ZSA/OiBvbGRfc2l6ZSkpO1xcbitcXG4gXFx0XFx0XFx0cmV0ID0gZXh0NF9pc3N1ZV96ZXJvb3V0KGlub2RlLCBtYXAubV9sYmxrLCBtYXAubV9wYmxrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgbWFwLm1fbGVuKTtcXG4tXFx0XFx0XFx0aWYgKGxpa2VseSghcmV0KSlcXG4tXFx0XFx0XFx0XFx0cmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKE5VTEwsXFxuK1xcdFxcdFxcdGlmICh1bmxpa2VseShyZXQpKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdFxcdGhhbmRsZSA9IGV4dDRfam91cm5hbF9zdGFydChpbm9kZSwgRVhUNF9IVF9NQVBfQkxPQ0tTLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgY3JlZGl0cyk7XFxuK1xcdFxcdFxcdGlmIChJU19FUlIoaGFuZGxlKSkge1xcbitcXHRcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGhhbmRsZSk7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRpZiAobmV3X3NpemUpIHtcXG4rXFx0XFx0XFx0XFx0cmV0ID0gZXh0NF9vcnBoYW5fYWRkKGhhbmRsZSwgaW5vZGUpO1xcbitcXHRcXHRcXHRcXHRvcnBoYW4gPSB0cnVlO1xcbitcXHRcXHRcXHRcXHRpZiAocmV0KSB7XFxuK1xcdFxcdFxcdFxcdFxcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XFxuK1xcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdHJldCA9IGV4dDRfY29udmVydF91bndyaXR0ZW5fZXh0ZW50cyhoYW5kbGUsXFxuIFxcdFxcdFxcdFxcdFxcdGlub2RlLCAobG9mZl90KW1hcC5tX2xibGsgXFx1MDAzY1xcdTAwM2MgYmxrYml0cyxcXG4gXFx0XFx0XFx0XFx0XFx0KGxvZmZfdCltYXAubV9sZW4gXFx1MDAzY1xcdTAwM2MgYmxrYml0cyk7XFxuK1xcdFxcdFxcdHJldDIgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xcbitcXHRcXHRcXHRyZXQgPSByZXQgPyByZXQgOiByZXQyO1xcbiBcXHRcXHRcXHRpZiAocmV0KVxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbkBAIC00Njc4LDcgKzQ3MDIsNyBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXFxuIFxcdFxcdGdvdG8gcmV0cnk7XFxuIFxcbiBcXHRpZiAoIWVwb3MgfHwgIW5ld19zaXplKVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRnb3RvIG91dDtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIEFsbG9jYXRlIGJsb2NrcywgdXBkYXRlIHRoZSBmaWxlIHNpemUgdG8gbWF0Y2ggdGhlIHNpemUgb2YgdGhlXFxuQEAgLTQ2ODcsMTIgKzQ3MTEsMTYgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbiBcXHRpZiAoZXBvcyBcXHUwMDNlIG5ld19zaXplKVxcbiBcXHRcXHRlcG9zID0gbmV3X3NpemU7XFxuIFxcbi1cXHRoYW5kbGUgPSBleHQ0X2pvdXJuYWxfc3RhcnQoaW5vZGUsIEVYVDRfSFRfTUlTQywgMSk7XFxuLVxcdGlmIChJU19FUlIoaGFuZGxlKSlcXG4tXFx0XFx0cmV0dXJuIHJldCA/IHJldCA6IFBUUl9FUlIoaGFuZGxlKTtcXG4rXFx0aGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDIpO1xcbitcXHRpZiAoSVNfRVJSKGhhbmRsZSkpIHtcXG4rXFx0XFx0cmV0ID0gcmV0ID8gcmV0IDogUFRSX0VSUihoYW5kbGUpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbiBcXG4gXFx0ZXh0NF91cGRhdGVfaW5vZGVfc2l6ZShpbm9kZSwgZXBvcyk7XFxuIFxcdHJldDIgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7XFxuK1xcdGlmIChvcnBoYW4gXFx1MDAyNlxcdTAwMjYgaW5vZGUtXFx1MDAzZWlfbmxpbmspXFxuK1xcdFxcdGV4dDRfb3JwaGFuX2RlbChoYW5kbGUsIGlub2RlKTtcXG4gXFx0ZXh0NF91cGRhdGVfaW5vZGVfZnN5bmNfdHJhbnMoaGFuZGxlLCBpbm9kZSwgMSk7XFxuIFxcdHJldDMgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xcbiBcXHRyZXQyID0gcmV0MyA/IHJldDMgOiByZXQyO1xcbkBAIC00NzAxLDYgKzQ3MjksMTEgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxcbiBcXHRcXHRwYWdlY2FjaGVfaXNpemVfZXh0ZW5kZWQoaW5vZGUsIG9sZF9zaXplLCBlcG9zKTtcXG4gXFxuIFxcdHJldHVybiByZXQgPyByZXQgOiByZXQyO1xcbitcXG4rb3V0OlxcbitcXHRpZiAob3JwaGFuIFxcdTAwMjZcXHUwMDI2IGlub2RlLVxcdTAwM2VpX25saW5rKVxcbitcXHRcXHRleHQ0X29ycGhhbl9kZWwoTlVMTCwgaW5vZGUpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGV4dDRfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pO1xcbkBAIC00NzE1LDcgKzQ3NDgsNyBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdGxvZmZfdCBhbGlnbl9zdGFydCwgYWxpZ25fZW5kLCBuZXdfc2l6ZSA9IDA7XFxuIFxcdGxvZmZfdCBlbmQgPSBvZmZzZXQgKyBsZW47XFxuIFxcdHVuc2lnbmVkIGludCBibG9ja3NpemUgPSBpX2Jsb2Nrc2l6ZShpbm9kZSk7XFxuLVxcdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcXG4rXFx0dW5zaWduZWQgaW50IHBhcnRpYWxfemVyb2VkID0gMDtcXG4gXFx0aW50IHJldCwgZmxhZ3M7XFxuIFxcbiBcXHR0cmFjZV9leHQ0X3plcm9fcmFuZ2UoaW5vZGUsIG9mZnNldCwgbGVuLCBtb2RlKTtcXG5AQCAtNDczNCwxMCArNDc2NywxNiBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdH1cXG4gXFxuIFxcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9VTldSSVRfRVhUO1xcbi1cXHQvKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMgKi9cXG4rXFx0LypcXG4rXFx0ICogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzLCBhbmQgemVyb1xcbitcXHQgKiBvdXQgcGFydGlhbCBibG9ja3MgaWYgdGhleSBhbHJlYWR5IGNvbnRhaW4gZGF0YS5cXG4rXFx0ICovXFxuIFxcdGlmICghSVNfQUxJR05FRChvZmZzZXQgfCBlbmQsIGJsb2Nrc2l6ZSkpIHtcXG4gXFx0XFx0cmV0ID0gZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhmaWxlLCBvZmZzZXQsIGxlbiwgbmV3X3NpemUsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgZmxhZ3MpO1xcbitcXHRcXHRpZiAoIXJldClcXG4rXFx0XFx0XFx0cmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtNDc1NCw2ICs0NzkzLDIxIEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0LyogWmVybyByYW5nZSBleGNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqL1xcbiBcXHRhbGlnbl9zdGFydCA9IHJvdW5kX3VwKG9mZnNldCwgYmxvY2tzaXplKTtcXG4gXFx0YWxpZ25fZW5kID0gcm91bmRfZG93bihlbmQsIGJsb2Nrc2l6ZSk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBJbiBXUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCB3ZXJlIG5vdCBwYXJ0aWFsLXplcm9lZCAoY2xlYW5cXG4rXFx0ICogdW53cml0dGVuIG9yIGhvbGUpIG11c3QgYmUgYWxsb2NhdGVkIGFuZCB6ZXJvZWQgYXMgd2hvbGUgYmxvY2tzLlxcbitcXHQgKiBFeHBhbmQgdGhlIGFsaWduZWQgcmFuZ2Ugb3V0d2FyZCB0byBjb3ZlciB0aGVtLlxcbitcXHQgKi9cXG4rXFx0aWYgKG1vZGUgXFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB7XFxuK1xcdFxcdGlmICghSVNfQUxJR05FRChvZmZzZXQsIGJsb2Nrc2l6ZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICEocGFydGlhbF96ZXJvZWQgXFx1MDAyNiBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCkpXFxuK1xcdFxcdFxcdGFsaWduX3N0YXJ0ID0gcm91bmRfZG93bihvZmZzZXQsIGJsb2Nrc2l6ZSk7XFxuK1xcdFxcdGlmICghSVNfQUxJR05FRChlbmQsIGJsb2Nrc2l6ZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICEocGFydGlhbF96ZXJvZWQgXFx1MDAyNiBFWFQ0X1BBUlRJQUxfWkVST19FTkQpKVxcbitcXHRcXHRcXHRhbGlnbl9lbmQgPSByb3VuZF91cChlbmQsIGJsb2Nrc2l6ZSk7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChhbGlnbl9lbmQgXFx1MDAzZSBhbGlnbl9zdGFydCkge1xcbiBcXHRcXHRpZiAobW9kZSBcXHUwMDI2IEZBTExPQ19GTF9XUklURV9aRVJPRVMpXFxuIFxcdFxcdFxcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9aRVJPIHwgRVhUNF9FWF9OT0NBQ0hFO1xcbkBAIC00NzcwLDExICs0ODI0LDE1IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0aWYgKElTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0LyogWmVybyBvdXQgcGFydGlhbCBibG9jayBhdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlICovXFxuLVxcdHJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sIFxcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcdGlmICgoKGZpbGUtXFx1MDAzZWZfZmxhZ3MgXFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSBcXHUwMDI2XFx1MDAyNiBwYXJ0aWFsX3plcm9lZCkge1xcbitcXHQvKlxcbitcXHQgKiBJbiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTIG1vZGUsIGVkZ2VzIHRoYXQgaGF2ZSBiZWVuIHBhcnRpYWxseVxcbitcXHQgKiB6ZXJvZWQgbXVzdCBiZSB3cml0dGVuIGJhY2sgdG8gZW5zdXJlIHRoZSBlbnRpcmUgemVyb2VkIHJhbmdlXFxuK1xcdCAqIGlzIGNvbnZlcnRlZCB0byB0aGUgd3JpdHRlbiBzdGF0ZS4gSW4gU1lOQyBtb2RlLCB3cml0ZWJhY2sgaXNcXG4rXFx0ICogYWxzbyByZXF1aXJlZCB0byBwZXJzaXN0IHRoZSB6ZXJvZWQgZGF0YSB0byBkaXNrLlxcbitcXHQgKi9cXG4rXFx0aWYgKHBhcnRpYWxfemVyb2VkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAoKG1vZGUgXFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB8fFxcbitcXHQgICAgIChmaWxlLVxcdTAwM2VmX2ZsYWdzIFxcdTAwMjYgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkpIHtcXG4gXFx0XFx0cmV0ID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZShpbm9kZS1cXHUwMDNlaV9tYXBwaW5nLCBvZmZzZXQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIGVuZCAtIDEpO1xcbiBcXHRcXHRpZiAocmV0KVxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcXG5pbmRleCBjMmMyZDZhYzdmM2QxMy4uYTE2MTUwODRhM2I5OWIgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9pbm9kZS5jXFxuKysrIGIvZnMvZXh0NC9pbm9kZS5jXFxuQEAgLTQwMjYsNiArNDAyNiwxMCBAQCB2b2lkIGV4dDRfc2V0X2FvcHMoc3RydWN0IGlub2RlICppbm9kZSlcXG4gICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxcbiAgKiBleHQ0X3B1bmNoX2hvbGUsIGV0Yykgd2hpY2ggbmVlZHMgdG8gYmUgcHJvcGVybHkgemVyb2VkIG91dC4gT3RoZXJ3aXNlIGFcXG4gICogcmFjaW5nIHdyaXRlYmFjayBjYW4gY29tZSBsYXRlciBhbmQgZmx1c2ggdGhlIHN0YWxlIHBhZ2VjYWNoZSB0byBkaXNrLlxcbisgKlxcbisgKiBSZXR1cm4gdGhlIGxvYWRlZCBiaCBpZiBpdCBhY3R1YWxseSBuZWVkcyB6ZXJvaW5nIC0gaW4gd3JpdHRlbiwgZGlydHlcXG4rICogdW53cml0dGVuLCBvciBkZWxhbGxvYyBzdGF0ZS4gUmV0dXJuIE5VTEwgaWYgaXQncyBjbGVhbiAoaS5lLiwgYSBob2xlIG9yXFxuKyAqIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrKS5cXG4gICovXFxuIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxcbiB7XFxuQEAgLTQwMzcsNyArNDA0MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxcbiBcXHRpbnQgZXJyID0gMDtcXG4gXFxuIFxcdGZvbGlvID0gX19maWxlbWFwX2dldF9mb2xpbyhtYXBwaW5nLCBmcm9tIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQsXFxuLVxcdFxcdFxcdFxcdCAgICBGR1BfTE9DSyB8IEZHUF9BQ0NFU1NFRCB8IEZHUF9DUkVBVCxcXG4rXFx0XFx0XFx0XFx0ICAgIEZHUF9XUklURUJFR0lOIHwgRkdQX0FDQ0VTU0VELFxcbiBcXHRcXHRcXHRcXHQgICAgbWFwcGluZ19nZnBfY29uc3RyYWludChtYXBwaW5nLCB+X19HRlBfRlMpKTtcXG4gXFx0aWYgKElTX0VSUihmb2xpbykpXFxuIFxcdFxcdHJldHVybiBFUlJfQ0FTVChmb2xpbyk7XFxuQEAgLTQwNjQsOCArNDA2OCwxNSBAQCBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcXG4gXFx0fVxcbiBcXHRpZiAoIWJ1ZmZlcl9tYXBwZWQoYmgpKSB7XFxuIFxcdFxcdEJVRkZFUl9UUkFDRShiaCwgXFxcInVubWFwcGVkXFxcIik7XFxuLVxcdFxcdGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTtcXG4tXFx0XFx0LyogdW5tYXBwZWQ/IEl0J3MgYSBob2xlIC0gbm90aGluZyB0byBkbyAqL1xcbitcXHRcXHRlcnIgPSBleHQ0X2dldF9ibG9jayhpbm9kZSwgaWJsb2NrLCBiaCwgMCk7XFxuK1xcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogSXQncyBhIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2sgLSBub3RoaW5nIHRvIGRvLlxcbitcXHRcXHQgKiBOb3RlIHRoYXQgYSBsb29rdXAtb25seSBnZXRfYmxvY2sgKHdpdGhvdXRcXG4rXFx0XFx0ICogRVhUNF9HRVRfQkxPQ0tTX0NSRUFURSkgbmV2ZXIgc2V0cyBCSF9NYXBwZWQgZm9yIGNsZWFuXFxuK1xcdFxcdCAqIHVud3JpdHRlbiBleHRlbnRzLlxcbitcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xcbiBcXHRcXHRcXHRCVUZGRVJfVFJBQ0UoYmgsIFxcXCJzdGlsbCB1bm1hcHBlZFxcXCIpO1xcbiBcXHRcXHRcXHRnb3RvIHVubG9jaztcXG5AQCAtNDIxOCw2ICs0MjI5LDE0IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKVxcbiBcXHRvZmZzZXQgPSBmcm9tIFxcdTAwMjYgKGJsb2Nrc2l6ZSAtIDEpO1xcbiBcXHRpZiAoIW9mZnNldCB8fCBmcm9tIFxcdTAwM2U9IGVuZClcXG4gXFx0XFx0cmV0dXJuIDA7XFxuK1xcdC8qXFxuK1xcdCAqIElubGluZSBkYXRhIGhhcyBubyB0YWlsIGJsb2NrIHRvIHplcm8gb3V0LiAgTm90ZSB0aGF0IGEgcmFjZSB3aXRoXFxuK1xcdCAqIGV4dDRfcGFnZV9ta3dyaXRlKCkgY29udmVydGluZyBpbmxpbmUgZGF0YSB0byBhbiBleHRlbnQgd2l0aG91dFxcbitcXHQgKiBob2xkaW5nIGlfcndzZW0gaXMgc2FmZSwgYXMgdGhhdCBwYXRoIHplcm9lcyB0aGUgZnVsbCBibG9jayBiZWZvcmVcXG4rXFx0ICogY29weWluZyBpbiB0aGUgaW5saW5lIGRhdGEuXFxuK1xcdCAqL1xcbitcXHRpZiAoZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFx0LyogSWYgd2UgYXJlIHByb2Nlc3NpbmcgYW4gZW5jcnlwdGVkIGlub2RlIGR1cmluZyBvcnBoYW4gbGlzdCBoYW5kbGluZyAqL1xcbiBcXHRpZiAoSVNfRU5DUllQVEVEKGlub2RlKSBcXHUwMDI2XFx1MDAyNiAhZnNjcnlwdF9oYXNfZW5jcnlwdGlvbl9rZXkoaW5vZGUpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG5AQCAtNDI1MiwxMyArNDI3MSwyNiBAQCBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIFplcm8gb3V0IHRoZSB1bmFsaWduZWQgaGVhZCBhbmQgdGFpbCBvZiB0aGUgW2xzdGFydCwgbHN0YXJ0K2xlbmd0aClcXG4rICogcmFuZ2UuXFxuKyAqXFxuKyAqIE9uIHJldHVybiwgQHBhcnRpYWxfemVyb2VkIHJlY29yZHMgd2hpY2ggZWRnZXMgYWN0dWFsbHkgZ290XFxuKyAqIHBhcnRpYWwtemVyb2VkLiAgU2V0IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUL0VYVDRfUEFSVElBTF9aRVJPX0VORCBpZlxcbisgKiB0aGUgaGVhZC90YWlsIGJsb2NrIGdvdCBhY3R1YWxseSBwYXJ0aWFsbHkgemVyb2VkIChpbiB3cml0dGVuLCBkaXJ0eVxcbisgKiB1bndyaXR0ZW4gb3IgZGVsYWxsb2Mgc3RhdGUpLiAgQ2xlYXJlZCBpZiB0aGUgaGVhZC90YWlsIGJsb2NrIGlzIGFcXG4rICogaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jaywgaW4gd2hpY2ggY2FzZSB0aGVyZSBpcyBub3RoaW5nIHRoYXRcXG4rICogbmVlZHMgemVyb2luZy4gIFdoZW4gdGhlIGhlYWQgYW5kIHRhaWwgbGFuZCBpbiB0aGUgc2FtZSBibG9jaywgYm90aFxcbisgKiBiaXRzIGFyZSBzZXQgdG9nZXRoZXIgb24gYSBzdWNjZXNzZnVsIHplcm9pbmcuXFxuKyAqL1xcbiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5ndGgsXFxuLVxcdFxcdFxcdCAgICAgYm9vbCAqZGlkX3plcm8pXFxuK1xcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50ICpwYXJ0aWFsX3plcm9lZClcXG4ge1xcbiBcXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXFx1MDAzZWlfc2I7XFxuIFxcdHVuc2lnbmVkIHBhcnRpYWxfc3RhcnQsIHBhcnRpYWxfZW5kO1xcbiBcXHRleHQ0X2ZzYmxrX3Qgc3RhcnQsIGVuZDtcXG4gXFx0bG9mZl90IGJ5dGVfZW5kID0gKGxzdGFydCArIGxlbmd0aCAtIDEpO1xcbitcXHRib29sIGRpZF96ZXJvID0gZmFsc2U7XFxuIFxcdGludCBlcnIgPSAwO1xcbiBcXG4gXFx0cGFydGlhbF9zdGFydCA9IGxzdGFydCBcXHUwMDI2IChzYi1cXHUwMDNlc19ibG9ja3NpemUgLSAxKTtcXG5AQCAtNDI3MCwyMSArNDMwMiwzMiBAQCBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5ndGgsXFxuIFxcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gd2l0aGluIHRoZSBzaW5nbGUgYmxvY2sgKi9cXG4gXFx0aWYgKHN0YXJ0ID09IGVuZCBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgKHBhcnRpYWxfc3RhcnQgfHwgKHBhcnRpYWxfZW5kICE9IHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpKSkge1xcbi1cXHRcXHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBkaWRfemVybyxcXG4rXFx0XFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgXFx1MDAyNmRpZF96ZXJvLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgTlVMTCk7XFxuK1xcdFxcdGlmIChkaWRfemVybylcXG4rXFx0XFx0XFx0KnBhcnRpYWxfemVyb2VkIHw9IChFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCB8XFxuK1xcdFxcdFxcdFxcdFxcdCAgICBFWFQ0X1BBUlRJQUxfWkVST19FTkQpO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gb3V0IG9uIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgKi9cXG4gXFx0aWYgKHBhcnRpYWxfc3RhcnQpIHtcXG4gXFx0XFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGRpZF96ZXJvLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZkaWRfemVybywgTlVMTCk7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGlmIChkaWRfemVybylcXG4rXFx0XFx0XFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUO1xcbiBcXHR9XFxuIFxcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gb3V0IG9uIHRoZSBlbmQgb2YgdGhlIHJhbmdlICovXFxuLVxcdGlmIChwYXJ0aWFsX2VuZCAhPSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLSAxKVxcbitcXHRpZiAocGFydGlhbF9lbmQgIT0gc2ItXFx1MDAzZXNfYmxvY2tzaXplIC0gMSkge1xcbitcXHRcXHRkaWRfemVybyA9IGZhbHNlO1xcbiBcXHRcXHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGJ5dGVfZW5kIC0gcGFydGlhbF9lbmQsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBwYXJ0aWFsX2VuZCArIDEsIGRpZF96ZXJvLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHBhcnRpYWxfZW5kICsgMSwgXFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0aWYgKGRpZF96ZXJvKVxcbitcXHRcXHRcXHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fRU5EO1xcbitcXHR9XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuQEAgLTQ0MzMsNyArNDQ3Niw3IEBAIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpXFxuIFxcdGxvZmZfdCBlbmQgPSBvZmZzZXQgKyBsZW5ndGg7XFxuIFxcdGhhbmRsZV90ICpoYW5kbGU7XFxuIFxcdHVuc2lnbmVkIGludCBjcmVkaXRzO1xcbi1cXHRib29sIHBhcnRpYWxfemVyb2VkID0gZmFsc2U7XFxuK1xcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHR0cmFjZV9leHQ0X3B1bmNoX2hvbGUoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTI6MDY6MDUuOTMzNzYwNTMxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjgzNzUxODk0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9hbGxvY19maWxlX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF96ZXJvX3JhbmdlXCIsXG4gICAgXCJleHQ0X2xvYWRfdGFpbF9iaFwiLFxuICAgIFwiZXh0NF9ibG9ja196ZXJvX2VvZlwiLFxuICAgIFwiZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzXCIsXG4gICAgXCJleHQ0X3B1bmNoX2hvbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGV4dDQgbG9naWMgZm9yIGhhbmRsaW5nIHBhcnRpYWwgYmxvY2sgemVyb2luZyBkdXJpbmcgZmFsbG9jYXRlIG9wZXJhdGlvbnMgKHplcm8gcmFuZ2UsIHB1bmNoIGhvbGUpIGFuZCBibG9jayBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHN5c3RlbSBjYWxscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmZTViZWEyMTVkYmQxODE2ZWQwMDAyNjU2NmZhNjYxZTdlNTVjYjM1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTI6MDY6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXG5pbmRleCA5NDI4M2E5OTFlNWM0Zi4uYjJlNTU4NzZkMGUzNTIgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dDQuaFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcbkBAIC0zMDk5LDggKzMwOTksMTEgQEAgZXh0ZXJuIGludCBleHQ0X2NodW5rX3RyYW5zX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbnJibG9ja3MpO1xuIGV4dGVybiBpbnQgZXh0NF9tZXRhX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbGJsb2NrcyxcbiBcdFx0XHRcdCAgaW50IHBleHRlbnRzKTtcbiBleHRlcm4gaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpO1xuK1xuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlRcdDB4MVxuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fRU5EXHQweDJcbiBleHRlcm4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LFxuLVx0XHRcdFx0ICAgIGxvZmZfdCBsZW5ndGgsIGJvb2wgKmRpZF96ZXJvKTtcbitcdFx0XHRcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcbiBleHRlcm4gdm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7XG4gZXh0ZXJuIHFzaXplX3QgKmV4dDRfZ2V0X3Jlc2VydmVkX3NwYWNlKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jXG5pbmRleCAxMjVmNjI4ZTczOGFiMS4uOWExYjA2YzhkZDk3OTcgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xuKysrIGIvZnMvZXh0NC9leHRlbnRzLmNcbkBAIC00NTg1LDYgKzQ1ODUsNyBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXHRsb2ZmX3QgZXBvcyA9IDAsIG9sZF9zaXplID0gaV9zaXplX3JlYWQoaW5vZGUpO1xuIFx0dW5zaWduZWQgaW50IGJsa2JpdHMgPSBpbm9kZS1cdTAwM2VpX2Jsa2JpdHM7XG4gXHRib29sIGFsbG9jX3plcm8gPSBmYWxzZTtcbitcdGJvb2wgb3JwaGFuID0gZmFsc2U7XG4gXG4gXHRCVUdfT04oIWV4dDRfdGVzdF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX0VYVEVOVFMpKTtcbiBcdG1hcC5tX2xibGsgPSBvZmZzZXQgXHUwMDNlXHUwMDNlIGJsa2JpdHM7XG5AQCAtNDY1OSwxMiArNDY2MCwzNSBAQCBzdGF0aWMgaW50IGV4dDRfYWxsb2NfZmlsZV9ibG9ja3Moc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sXG4gXG4gXHRcdGlmIChhbGxvY196ZXJvIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKG1hcC5tX2ZsYWdzIFx1MDAyNiAoRVhUNF9NQVBfTUFQUEVEIHwgRVhUNF9NQVBfVU5XUklUVEVOKSkpIHtcbitcdFx0XHRXQVJOX09OX09OQ0UobWFwLm1fbGJsayArIG1hcC5tX2xlbiBcdTAwM2VcbitcdFx0XHRcdEVYVDRfQl9UT19MQkxLKGlub2RlLCBuZXdfc2l6ZSA/OiBvbGRfc2l6ZSkpO1xuK1xuIFx0XHRcdHJldCA9IGV4dDRfaXNzdWVfemVyb291dChpbm9kZSwgbWFwLm1fbGJsaywgbWFwLm1fcGJsayxcbiBcdFx0XHRcdFx0XHQgbWFwLm1fbGVuKTtcbi1cdFx0XHRpZiAobGlrZWx5KCFyZXQpKVxuLVx0XHRcdFx0cmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKE5VTEwsXG4rXHRcdFx0aWYgKHVubGlrZWx5KHJldCkpXG4rXHRcdFx0XHRicmVhaztcbitcbitcdFx0XHRoYW5kbGUgPSBleHQ0X2pvdXJuYWxfc3RhcnQoaW5vZGUsIEVYVDRfSFRfTUFQX0JMT0NLUyxcbitcdFx0XHRcdFx0XHQgICAgY3JlZGl0cyk7XG4rXHRcdFx0aWYgKElTX0VSUihoYW5kbGUpKSB7XG4rXHRcdFx0XHRyZXQgPSBQVFJfRVJSKGhhbmRsZSk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4rXG4rXHRcdFx0aWYgKG5ld19zaXplKSB7XG4rXHRcdFx0XHRyZXQgPSBleHQ0X29ycGhhbl9hZGQoaGFuZGxlLCBpbm9kZSk7XG4rXHRcdFx0XHRvcnBoYW4gPSB0cnVlO1xuK1x0XHRcdFx0aWYgKHJldCkge1xuK1x0XHRcdFx0XHRleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuK1x0XHRcdFx0XHRicmVhaztcbitcdFx0XHRcdH1cbitcdFx0XHR9XG4rXG4rXHRcdFx0cmV0ID0gZXh0NF9jb252ZXJ0X3Vud3JpdHRlbl9leHRlbnRzKGhhbmRsZSxcbiBcdFx0XHRcdFx0aW5vZGUsIChsb2ZmX3QpbWFwLm1fbGJsayBcdTAwM2NcdTAwM2MgYmxrYml0cyxcbiBcdFx0XHRcdFx0KGxvZmZfdCltYXAubV9sZW4gXHUwMDNjXHUwMDNjIGJsa2JpdHMpO1xuK1x0XHRcdHJldDIgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuK1x0XHRcdHJldCA9IHJldCA/IHJldCA6IHJldDI7XG4gXHRcdFx0aWYgKHJldClcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHR9XG5AQCAtNDY3OCw3ICs0NzAyLDcgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0XHRnb3RvIHJldHJ5O1xuIFxuIFx0aWYgKCFlcG9zIHx8ICFuZXdfc2l6ZSlcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBvdXQ7XG4gXG4gXHQvKlxuIFx0ICogQWxsb2NhdGUgYmxvY2tzLCB1cGRhdGUgdGhlIGZpbGUgc2l6ZSB0byBtYXRjaCB0aGUgc2l6ZSBvZiB0aGVcbkBAIC00Njg3LDEyICs0NzExLDE2IEBAIHN0YXRpYyBpbnQgZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbixcbiBcdGlmIChlcG9zIFx1MDAzZSBuZXdfc2l6ZSlcbiBcdFx0ZXBvcyA9IG5ld19zaXplO1xuIFxuLVx0aGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDEpO1xuLVx0aWYgKElTX0VSUihoYW5kbGUpKVxuLVx0XHRyZXR1cm4gcmV0ID8gcmV0IDogUFRSX0VSUihoYW5kbGUpO1xuK1x0aGFuZGxlID0gZXh0NF9qb3VybmFsX3N0YXJ0KGlub2RlLCBFWFQ0X0hUX01JU0MsIDIpO1xuK1x0aWYgKElTX0VSUihoYW5kbGUpKSB7XG4rXHRcdHJldCA9IHJldCA/IHJldCA6IFBUUl9FUlIoaGFuZGxlKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4gXG4gXHRleHQ0X3VwZGF0ZV9pbm9kZV9zaXplKGlub2RlLCBlcG9zKTtcbiBcdHJldDIgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7XG4rXHRpZiAob3JwaGFuIFx1MDAyNlx1MDAyNiBpbm9kZS1cdTAwM2VpX25saW5rKVxuK1x0XHRleHQ0X29ycGhhbl9kZWwoaGFuZGxlLCBpbm9kZSk7XG4gXHRleHQ0X3VwZGF0ZV9pbm9kZV9mc3luY190cmFucyhoYW5kbGUsIGlub2RlLCAxKTtcbiBcdHJldDMgPSBleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuIFx0cmV0MiA9IHJldDMgPyByZXQzIDogcmV0MjtcbkBAIC00NzAxLDYgKzQ3MjksMTEgQEAgc3RhdGljIGludCBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuLFxuIFx0XHRwYWdlY2FjaGVfaXNpemVfZXh0ZW5kZWQoaW5vZGUsIG9sZF9zaXplLCBlcG9zKTtcbiBcbiBcdHJldHVybiByZXQgPyByZXQgOiByZXQyO1xuK1xuK291dDpcbitcdGlmIChvcnBoYW4gXHUwMDI2XHUwMDI2IGlub2RlLVx1MDAzZWlfbmxpbmspXG4rXHRcdGV4dDRfb3JwaGFuX2RlbChOVUxMLCBpbm9kZSk7XG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGV4dDRfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pO1xuQEAgLTQ3MTUsNyArNDc0OCw3IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdGxvZmZfdCBhbGlnbl9zdGFydCwgYWxpZ25fZW5kLCBuZXdfc2l6ZSA9IDA7XG4gXHRsb2ZmX3QgZW5kID0gb2Zmc2V0ICsgbGVuO1xuIFx0dW5zaWduZWQgaW50IGJsb2Nrc2l6ZSA9IGlfYmxvY2tzaXplKGlub2RlKTtcbi1cdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcbitcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0LCBmbGFncztcbiBcbiBcdHRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xuQEAgLTQ3MzQsMTAgKzQ3NjcsMTYgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0fVxuIFxuIFx0ZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1VOV1JJVF9FWFQ7XG4tXHQvKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMgKi9cbitcdC8qXG4rXHQgKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMsIGFuZCB6ZXJvXG4rXHQgKiBvdXQgcGFydGlhbCBibG9ja3MgaWYgdGhleSBhbHJlYWR5IGNvbnRhaW4gZGF0YS5cbitcdCAqL1xuIFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSkge1xuIFx0XHRyZXQgPSBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKGZpbGUsIG9mZnNldCwgbGVuLCBuZXdfc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICBmbGFncyk7XG4rXHRcdGlmICghcmV0KVxuK1x0XHRcdHJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sXG4rXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnBhcnRpYWxfemVyb2VkKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTQ3NTQsNiArNDc5MywyMSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHQvKiBaZXJvIHJhbmdlIGV4Y2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovXG4gXHRhbGlnbl9zdGFydCA9IHJvdW5kX3VwKG9mZnNldCwgYmxvY2tzaXplKTtcbiBcdGFsaWduX2VuZCA9IHJvdW5kX2Rvd24oZW5kLCBibG9ja3NpemUpO1xuK1xuK1x0LypcbitcdCAqIEluIFdSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IHdlcmUgbm90IHBhcnRpYWwtemVyb2VkIChjbGVhblxuK1x0ICogdW53cml0dGVuIG9yIGhvbGUpIG11c3QgYmUgYWxsb2NhdGVkIGFuZCB6ZXJvZWQgYXMgd2hvbGUgYmxvY2tzLlxuK1x0ICogRXhwYW5kIHRoZSBhbGlnbmVkIHJhbmdlIG91dHdhcmQgdG8gY292ZXIgdGhlbS5cbitcdCAqL1xuK1x0aWYgKG1vZGUgXHUwMDI2IEZBTExPQ19GTF9XUklURV9aRVJPRVMpIHtcbitcdFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCwgYmxvY2tzaXplKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICEocGFydGlhbF96ZXJvZWQgXHUwMDI2IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUKSlcbitcdFx0XHRhbGlnbl9zdGFydCA9IHJvdW5kX2Rvd24ob2Zmc2V0LCBibG9ja3NpemUpO1xuK1x0XHRpZiAoIUlTX0FMSUdORUQoZW5kLCBibG9ja3NpemUpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIShwYXJ0aWFsX3plcm9lZCBcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKSlcbitcdFx0XHRhbGlnbl9lbmQgPSByb3VuZF91cChlbmQsIGJsb2Nrc2l6ZSk7XG4rXHR9XG4rXG4gXHRpZiAoYWxpZ25fZW5kIFx1MDAzZSBhbGlnbl9zdGFydCkge1xuIFx0XHRpZiAobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUylcbiBcdFx0XHRmbGFncyA9IEVYVDRfR0VUX0JMT0NLU19DUkVBVEVfWkVSTyB8IEVYVDRfRVhfTk9DQUNIRTtcbkBAIC00NzcwLDExICs0ODI0LDE1IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdGlmIChJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdC8qIFplcm8gb3V0IHBhcnRpYWwgYmxvY2sgYXQgdGhlIGVkZ2VzIG9mIHRoZSByYW5nZSAqL1xuLVx0cmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbiwgXHUwMDI2cGFydGlhbF96ZXJvZWQpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cdGlmICgoKGZpbGUtXHUwMDNlZl9mbGFncyBcdTAwMjYgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkgXHUwMDI2XHUwMDI2IHBhcnRpYWxfemVyb2VkKSB7XG4rXHQvKlxuK1x0ICogSW4gRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IGhhdmUgYmVlbiBwYXJ0aWFsbHlcbitcdCAqIHplcm9lZCBtdXN0IGJlIHdyaXR0ZW4gYmFjayB0byBlbnN1cmUgdGhlIGVudGlyZSB6ZXJvZWQgcmFuZ2VcbitcdCAqIGlzIGNvbnZlcnRlZCB0byB0aGUgd3JpdHRlbiBzdGF0ZS4gSW4gU1lOQyBtb2RlLCB3cml0ZWJhY2sgaXNcbitcdCAqIGFsc28gcmVxdWlyZWQgdG8gcGVyc2lzdCB0aGUgemVyb2VkIGRhdGEgdG8gZGlzay5cbitcdCAqL1xuK1x0aWYgKHBhcnRpYWxfemVyb2VkIFx1MDAyNlx1MDAyNlxuK1x0ICAgICgobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgfHxcbitcdCAgICAgKGZpbGUtXHUwMDNlZl9mbGFncyBcdTAwMjYgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkpIHtcbiBcdFx0cmV0ID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZShpbm9kZS1cdTAwM2VpX21hcHBpbmcsIG9mZnNldCxcbiBcdFx0XHRcdFx0XHQgICBlbmQgLSAxKTtcbiBcdFx0aWYgKHJldClcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGMyYzJkNmFjN2YzZDEzLi5hMTYxNTA4NGEzYjk5YiAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuKysrIGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNDAyNiw2ICs0MDI2LDEwIEBAIHZvaWQgZXh0NF9zZXRfYW9wcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuICAqIGJlY2F1c2UgaXQgbWlnaHQgaGF2ZSBkYXRhIGluIHBhZ2VjYWNoZSAoZWcsIGlmIGNhbGxlZCBmcm9tIGV4dDRfemVyb19yYW5nZSxcbiAgKiBleHQ0X3B1bmNoX2hvbGUsIGV0Yykgd2hpY2ggbmVlZHMgdG8gYmUgcHJvcGVybHkgemVyb2VkIG91dC4gT3RoZXJ3aXNlIGFcbiAgKiByYWNpbmcgd3JpdGViYWNrIGNhbiBjb21lIGxhdGVyIGFuZCBmbHVzaCB0aGUgc3RhbGUgcGFnZWNhY2hlIHRvIGRpc2suXG4rICpcbisgKiBSZXR1cm4gdGhlIGxvYWRlZCBiaCBpZiBpdCBhY3R1YWxseSBuZWVkcyB6ZXJvaW5nIC0gaW4gd3JpdHRlbiwgZGlydHlcbisgKiB1bndyaXR0ZW4sIG9yIGRlbGFsbG9jIHN0YXRlLiBSZXR1cm4gTlVMTCBpZiBpdCdzIGNsZWFuIChpLmUuLCBhIGhvbGUgb3JcbisgKiBhIGNsZWFuIHVud3JpdHRlbiBibG9jaykuXG4gICovXG4gc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pXG4ge1xuQEAgLTQwMzcsNyArNDA0MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxuIFx0aW50IGVyciA9IDA7XG4gXG4gXHRmb2xpbyA9IF9fZmlsZW1hcF9nZXRfZm9saW8obWFwcGluZywgZnJvbSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCxcbi1cdFx0XHRcdCAgICBGR1BfTE9DSyB8IEZHUF9BQ0NFU1NFRCB8IEZHUF9DUkVBVCxcbitcdFx0XHRcdCAgICBGR1BfV1JJVEVCRUdJTiB8IEZHUF9BQ0NFU1NFRCxcbiBcdFx0XHRcdCAgICBtYXBwaW5nX2dmcF9jb25zdHJhaW50KG1hcHBpbmcsIH5fX0dGUF9GUykpO1xuIFx0aWYgKElTX0VSUihmb2xpbykpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChmb2xpbyk7XG5AQCAtNDA2NCw4ICs0MDY4LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxuIFx0fVxuIFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xuIFx0XHRCVUZGRVJfVFJBQ0UoYmgsIFwidW5tYXBwZWRcIik7XG4tXHRcdGV4dDRfZ2V0X2Jsb2NrKGlub2RlLCBpYmxvY2ssIGJoLCAwKTtcbi1cdFx0LyogdW5tYXBwZWQ/IEl0J3MgYSBob2xlIC0gbm90aGluZyB0byBkbyAqL1xuK1x0XHRlcnIgPSBleHQ0X2dldF9ibG9jayhpbm9kZSwgaWJsb2NrLCBiaCwgMCk7XG4rXHRcdGlmIChlcnIgXHUwMDNjIDApXG4rXHRcdFx0Z290byB1bmxvY2s7XG4rXHRcdC8qXG4rXHRcdCAqIEl0J3MgYSBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrIC0gbm90aGluZyB0byBkby5cbitcdFx0ICogTm90ZSB0aGF0IGEgbG9va3VwLW9ubHkgZ2V0X2Jsb2NrICh3aXRob3V0XG4rXHRcdCAqIEVYVDRfR0VUX0JMT0NLU19DUkVBVEUpIG5ldmVyIHNldHMgQkhfTWFwcGVkIGZvciBjbGVhblxuK1x0XHQgKiB1bndyaXR0ZW4gZXh0ZW50cy5cbitcdFx0ICovXG4gXHRcdGlmICghYnVmZmVyX21hcHBlZChiaCkpIHtcbiBcdFx0XHRCVUZGRVJfVFJBQ0UoYmgsIFwic3RpbGwgdW5tYXBwZWRcIik7XG4gXHRcdFx0Z290byB1bmxvY2s7XG5AQCAtNDIxOCw2ICs0MjI5LDE0IEBAIGludCBleHQ0X2Jsb2NrX3plcm9fZW9mKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tLCBsb2ZmX3QgZW5kKVxuIFx0b2Zmc2V0ID0gZnJvbSBcdTAwMjYgKGJsb2Nrc2l6ZSAtIDEpO1xuIFx0aWYgKCFvZmZzZXQgfHwgZnJvbSBcdTAwM2U9IGVuZClcbiBcdFx0cmV0dXJuIDA7XG4rXHQvKlxuK1x0ICogSW5saW5lIGRhdGEgaGFzIG5vIHRhaWwgYmxvY2sgdG8gemVybyBvdXQuICBOb3RlIHRoYXQgYSByYWNlIHdpdGhcbitcdCAqIGV4dDRfcGFnZV9ta3dyaXRlKCkgY29udmVydGluZyBpbmxpbmUgZGF0YSB0byBhbiBleHRlbnQgd2l0aG91dFxuK1x0ICogaG9sZGluZyBpX3J3c2VtIGlzIHNhZmUsIGFzIHRoYXQgcGF0aCB6ZXJvZXMgdGhlIGZ1bGwgYmxvY2sgYmVmb3JlXG4rXHQgKiBjb3B5aW5nIGluIHRoZSBpbmxpbmUgZGF0YS5cbitcdCAqL1xuK1x0aWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSlcbitcdFx0cmV0dXJuIDA7XG4gXHQvKiBJZiB3ZSBhcmUgcHJvY2Vzc2luZyBhbiBlbmNyeXB0ZWQgaW5vZGUgZHVyaW5nIG9ycGhhbiBsaXN0IGhhbmRsaW5nICovXG4gXHRpZiAoSVNfRU5DUllQVEVEKGlub2RlKSBcdTAwMjZcdTAwMjYgIWZzY3J5cHRfaGFzX2VuY3J5cHRpb25fa2V5KGlub2RlKSlcbiBcdFx0cmV0dXJuIDA7XG5AQCAtNDI1MiwxMyArNDI3MSwyNiBAQCBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZClcbiBcdHJldHVybiAwO1xuIH1cbiBcbisvKlxuKyAqIFplcm8gb3V0IHRoZSB1bmFsaWduZWQgaGVhZCBhbmQgdGFpbCBvZiB0aGUgW2xzdGFydCwgbHN0YXJ0K2xlbmd0aClcbisgKiByYW5nZS5cbisgKlxuKyAqIE9uIHJldHVybiwgQHBhcnRpYWxfemVyb2VkIHJlY29yZHMgd2hpY2ggZWRnZXMgYWN0dWFsbHkgZ290XG4rICogcGFydGlhbC16ZXJvZWQuICBTZXQgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQvRVhUNF9QQVJUSUFMX1pFUk9fRU5EIGlmXG4rICogdGhlIGhlYWQvdGFpbCBibG9jayBnb3QgYWN0dWFsbHkgcGFydGlhbGx5IHplcm9lZCAoaW4gd3JpdHRlbiwgZGlydHlcbisgKiB1bndyaXR0ZW4gb3IgZGVsYWxsb2Mgc3RhdGUpLiAgQ2xlYXJlZCBpZiB0aGUgaGVhZC90YWlsIGJsb2NrIGlzIGFcbisgKiBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrLCBpbiB3aGljaCBjYXNlIHRoZXJlIGlzIG5vdGhpbmcgdGhhdFxuKyAqIG5lZWRzIHplcm9pbmcuICBXaGVuIHRoZSBoZWFkIGFuZCB0YWlsIGxhbmQgaW4gdGhlIHNhbWUgYmxvY2ssIGJvdGhcbisgKiBiaXRzIGFyZSBzZXQgdG9nZXRoZXIgb24gYSBzdWNjZXNzZnVsIHplcm9pbmcuXG4rICovXG4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuLVx0XHRcdCAgICAgYm9vbCAqZGlkX3plcm8pXG4rXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKVxuIHtcbiBcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cdTAwM2VpX3NiO1xuIFx0dW5zaWduZWQgcGFydGlhbF9zdGFydCwgcGFydGlhbF9lbmQ7XG4gXHRleHQ0X2ZzYmxrX3Qgc3RhcnQsIGVuZDtcbiBcdGxvZmZfdCBieXRlX2VuZCA9IChsc3RhcnQgKyBsZW5ndGggLSAxKTtcbitcdGJvb2wgZGlkX3plcm8gPSBmYWxzZTtcbiBcdGludCBlcnIgPSAwO1xuIFxuIFx0cGFydGlhbF9zdGFydCA9IGxzdGFydCBcdTAwMjYgKHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSk7XG5AQCAtNDI3MCwyMSArNDMwMiwzMiBAQCBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5ndGgsXG4gXHQvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIHdpdGhpbiB0aGUgc2luZ2xlIGJsb2NrICovXG4gXHRpZiAoc3RhcnQgPT0gZW5kIFx1MDAyNlx1MDAyNlxuIFx0ICAgIChwYXJ0aWFsX3N0YXJ0IHx8IChwYXJ0aWFsX2VuZCAhPSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpKSkge1xuLVx0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBkaWRfemVybyxcbitcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgXHUwMDI2ZGlkX3plcm8sXG4gXHRcdFx0XHRcdCAgICBOVUxMKTtcbitcdFx0aWYgKGRpZF96ZXJvKVxuK1x0XHRcdCpwYXJ0aWFsX3plcm9lZCB8PSAoRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQgfFxuK1x0XHRcdFx0XHQgICAgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKTtcbiBcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gb3V0IG9uIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgKi9cbiBcdGlmIChwYXJ0aWFsX3N0YXJ0KSB7XG4gXHRcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSxcbi1cdFx0XHRcdFx0ICAgIGRpZF96ZXJvLCBOVUxMKTtcbitcdFx0XHRcdFx0ICAgIFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRpZiAoZGlkX3plcm8pXG4rXHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUO1xuIFx0fVxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKi9cbi1cdGlmIChwYXJ0aWFsX2VuZCAhPSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpXG4rXHRpZiAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSB7XG4rXHRcdGRpZF96ZXJvID0gZmFsc2U7XG4gXHRcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgYnl0ZV9lbmQgLSBwYXJ0aWFsX2VuZCxcbi1cdFx0XHRcdFx0ICAgIHBhcnRpYWxfZW5kICsgMSwgZGlkX3plcm8sIE5VTEwpO1xuK1x0XHRcdFx0XHQgICAgcGFydGlhbF9lbmQgKyAxLCBcdTAwMjZkaWRfemVybywgTlVMTCk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0aWYgKGRpZF96ZXJvKVxuK1x0XHRcdCpwYXJ0aWFsX3plcm9lZCB8PSBFWFQ0X1BBUlRJQUxfWkVST19FTkQ7XG4rXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbkBAIC00NDMzLDcgKzQ0NzYsNyBAQCBpbnQgZXh0NF9wdW5jaF9ob2xlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoKVxuIFx0bG9mZl90IGVuZCA9IG9mZnNldCArIGxlbmd0aDtcbiBcdGhhbmRsZV90ICpoYW5kbGU7XG4gXHR1bnNpZ25lZCBpbnQgY3JlZGl0cztcbi1cdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcbitcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0O1xuIFxuIFx0dHJhY2VfZXh0NF9wdW5jaF9ob2xlKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgMCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMjowNjowNS45MzM3NjI3MDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjYzNTE5MTM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogZXh0NCBGaWxlc3lzdGVtIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdGhhdCdzIGRpZ2dpbmcgaW50byB0aGUgZ3V0cyBvZiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmcy9leHQ0L2V4dGVudHMuY2AsIGBmcy9leHQ0L2lub2RlLmNgLCBhbmQgYGZzL2V4dDQvZXh0NC5oYC4gVGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgaG93IGBleHQ0X3plcm9fcmFuZ2VgIGFuZCBgZXh0NF9wdW5jaF9ob2xlYCBkZWFsIHdpdGggcGFydGlhbCBibG9jayB6ZXJvaW5nLCB1c2luZyBhIGJpdG1hc2sgKGBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVGAsIGBFWFQ0X1BBUlRJQUxfWkVST19FTkRgKSB0byBrZWVwIHRyYWNrIG9mIHRob3NlIGVkZ2UgY2FzZXMuIFRoZXJlIGFyZSBhbHNvIGNoYW5nZXMgdG8gYGV4dDRfYWxsb2NfZmlsZV9ibG9ja3NgIHdoaWNoIGFmZmVjdCBvcnBoYW4gbGlzdHMgYW5kIGVycm9yIGhhbmRsaW5nLCBhbmQgYGV4dDRfbG9hZF90YWlsX2JoYCBpcyBiZWluZyBtb2RpZmllZCB0byBoYW5kbGUgY2xlYW4gdW53cml0dGVuIGJsb2NrcyBiZXR0ZXIuXG5cbk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGV4dDQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggYGZhbGxvY2F0ZWAgb3BlcmF0aW9ucyBsaWtlIHplcm9pbmcgcmFuZ2VzIGFuZCBwdW5jaGluZyBob2xlcywgYXMgd2VsbCBhcyBibG9jayBhbGxvY2F0aW9uLlxuXG5JcyBpdCByZWFjaGFibGU/IEFic29sdXRlbHkuIEl04oCZcyB0cmlnZ2VyZWQgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXN0ZW0gY2FsbCwgc28gaXQncyBkaXJlY3RseSBleHBvc2VkIHRvIHVzZXJsYW5kIGFuZCBoZW5jZSwgZnV6emFibGUuIElzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFdpdGhvdXQgYSBkb3VidC4gQW55IG1vZGlmaWNhdGlvbiB0byBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgaXMgYSBwb3RlbnRpYWwgZ29sZG1pbmUgZm9yIGZpbmRpbmcgc3VidGxlLCBoYXJkLXRvLWZpbmQgYnVncy5cblxuU28sIGxldCdzIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMuIExvb2tpbmcgYXQgdGhlIHBhdGNoLCB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIGFyZTogYGV4dDRfYWxsb2NfZmlsZV9ibG9ja3NgLCBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfbG9hZF90YWlsX2JoYCwgYGV4dDRfYmxvY2tfemVyb19lb2ZgLCBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCwgYW5kIGBleHQ0X3B1bmNoX2hvbGVgLiBUaGF0J3Mgd2hlcmUgd2UgbmVlZCB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLlxuXG5JJ20gdGhpbmtpbmcsIGFyZSB0aGVzZSBob3QtcGF0aCBmdW5jdGlvbnM/IE5vdCBpbiB0aGUgc2Vuc2Ugb2YgYSBmcmVxdWVudCB3cml0ZSBvciByZWFkIHBhdGgsIGxpa2UgYGV4dDRfZmlsZV93cml0ZV9pdGVyYCBvciBgZXh0NF9tYXBfYmxvY2tzYCwgYnV0IGBleHQ0X3B1bmNoX2hvbGVgIGFuZCBgZXh0NF96ZXJvX3JhbmdlYCBhcmUgcGFydCBvZiBgZmFsbG9jYXRlYCBhbmQgdGhlcmVmb3JlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gb3VyIGZ1enogdGFyZ2V0LiBgZXh0NF9hbGxvY19maWxlX2Jsb2Nrc2AgaXMgaW52b2x2ZWQgaW4gemVybyByYW5nZS4gYGV4dDRfbG9hZF90YWlsX2JoYCBpcyB1c2VkIGR1cmluZyBFT0YgemVyb2luZy4gYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AgaXMgdXNlZCBpbiBwdW5jaCBob2xlIGFuZCB6ZXJvIHJhbmdlLiBUaGV5IGRlZmluaXRlbHkgd2FycmFudCBhdHRlbnRpb24uXG5cbk5vdywgbGV0J3MgdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbi4gYEVYVDRfRlNgIGlzIHRoZSBrZXkgY29uZmlnLCBhcyB2ZXJpZmllZCBpbiBgZnMvZXh0NC9LY29uZmlnYC4gVGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggdG91Y2hlcyBgZnMvZXh0NC9leHRlbnRzLmNgIGFuZCBgZnMvZXh0NC9pbm9kZS5jYCBjb25maXJtcyB0aGF0IHRoaXMgY29uZmlnIGlzIHN1ZmZpY2llbnQuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGF0IGBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzYCBpcyBpbmRlZWQgaW4gYGZzL2V4dDQvZXh0ZW50cy5jYCwgd2hpY2ggaXQgaXMuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5gYGBqc29uXG57XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWUsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfYWxsb2NfZmlsZV9ibG9ja3NcIixcbiAgICBcImV4dDRfemVyb19yYW5nZVwiLFxuICAgIFwiZXh0NF9sb2FkX3RhaWxfYmhcIixcbiAgICBcImV4dDRfYmxvY2tfemVyb19lb2ZcIixcbiAgICBcImV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF9wdW5jaF9ob2xlXCJcbiAgXSxcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGV4dDQgbG9naWMgZm9yIGhhbmRsaW5nIHBhcnRpYWwgYmxvY2sgemVyb2luZyBkdXJpbmcgZmFsbG9jYXRlIG9wZXJhdGlvbnMgKHplcm8gcmFuZ2UsIHB1bmNoIGhvbGUpIGFuZCBibG9jayBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHN5c3RlbSBjYWxscy5cIlxufVxuYGBgXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjIsIk91dHB1dFRva2VucyI6MTM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTI6MDY6MTguNTY4OTU4MDA2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIzMTM2NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzXCIsXG4gICAgXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgICBcImV4dDRfbG9hZF90YWlsX2JoXCIsXG4gICAgXCJleHQ0X2Jsb2NrX3plcm9fZW9mXCIsXG4gICAgXCJleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NcIixcbiAgICBcImV4dDRfcHVuY2hfaG9sZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZXh0NCBsb2dpYyBmb3IgaGFuZGxpbmcgcGFydGlhbCBibG9jayB6ZXJvaW5nIGR1cmluZyBmYWxsb2NhdGUgb3BlcmF0aW9ucyAoemVybyByYW5nZSwgcHVuY2ggaG9sZSkgYW5kIGJsb2NrIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgc3lzdGVtIGNhbGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzXCIsXG4gICAgXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgICBcImV4dDRfbG9hZF90YWlsX2JoXCIsXG4gICAgXCJleHQ0X2Jsb2NrX3plcm9fZW9mXCIsXG4gICAgXCJleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NcIixcbiAgICBcImV4dDRfcHVuY2hfaG9sZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZXh0NCBsb2dpYyBmb3IgaGFuZGxpbmcgcGFydGlhbCBibG9jayB6ZXJvaW5nIGR1cmluZyBmYWxsb2NhdGUgb3BlcmF0aW9ucyAoemVybyByYW5nZSwgcHVuY2ggaG9sZSkgYW5kIGJsb2NrIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgc3lzdGVtIGNhbGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow7q5n9[1] Phase: Succeeded StartedAt: 2026-07-14 12:06:29 +0000 UTC FinishedAt: 2026-07-14 12:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 12:06:29 +0000 UTC FinishedAt: 2026-07-14 12:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2] Phase: Succeeded StartedAt: 2026-07-14 12:06:29 +0000 UTC FinishedAt: 2026-07-14 16:15:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 12:06:29 +0000 UTC FinishedAt: 2026-07-14 16:15:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 12:06:29 +0000 UTC FinishedAt: 2026-07-14 12:06:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 12:06:29 +0000 UTC FinishedAt: 2026-07-14 12:06:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow7q5n9/series-workflow7q5n9-convert-artifact-2017455327/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 12:06:39 +0000 UTC FinishedAt: 2026-07-14 12:39:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 12:06:39 +0000 UTC FinishedAt: 2026-07-14 12:39:28 +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:*e229e943-0a03-48bd-a6c8-2edecd37931f,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-workflow7q5n9/series-workflow7q5n9-convert-artifact-2017455327/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": "d011f3fb-e93f-41d5-bdca-060f8ac4f626", "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-workflow7q5n9/series-workflow7q5n9-build-action-89313765/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 12:06:39 +0000 UTC FinishedAt: 2026-07-14 12:39:18 +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:*e229e943-0a03-48bd-a6c8-2edecd37931f,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-workflow7q5n9/series-workflow7q5n9-convert-artifact-2017455327/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": "d011f3fb-e93f-41d5-bdca-060f8ac4f626", "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-workflow7q5n9/series-workflow7q5n9-build-action-89313765/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 12:39:28 +0000 UTC FinishedAt: 2026-07-14 12:39:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 12:39:28 +0000 UTC FinishedAt: 2026-07-14 12:39:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 12:39:28 +0000 UTC FinishedAt: 2026-07-14 12:39:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 12:39:28 +0000 UTC FinishedAt: 2026-07-14 12:39:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow7q5n9/series-workflow7q5n9-convert-artifact-2180448878/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 12:39:38 +0000 UTC FinishedAt: 2026-07-14 12:41:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 12:39:38 +0000 UTC FinishedAt: 2026-07-14 12:41:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d011f3fb-e93f-41d5-bdca-060f8ac4f626,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-workflow7q5n9/series-workflow7q5n9-build-action-89313765/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-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 12:41:55 +0000 UTC FinishedAt: 2026-07-14 12:41:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 12:41:55 +0000 UTC FinishedAt: 2026-07-14 12:41:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 12:41:55 +0000 UTC FinishedAt: 2026-07-14 13:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 12:41:55 +0000 UTC FinishedAt: 2026-07-14 13:11:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e229e943-0a03-48bd-a6c8-2edecd37931f,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-workflow7q5n9/series-workflow7q5n9-convert-artifact-2180448878/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": "219d53e6-c53c-4171-ad19-7517e45550ea", "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-workflow7q5n9/series-workflow7q5n9-build-action-2015417218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 12:41:55 +0000 UTC FinishedAt: 2026-07-14 13:10:52 +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:*e229e943-0a03-48bd-a6c8-2edecd37931f,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-workflow7q5n9/series-workflow7q5n9-convert-artifact-2180448878/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": "219d53e6-c53c-4171-ad19-7517e45550ea", "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-workflow7q5n9/series-workflow7q5n9-build-action-2015417218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 13:11:02 +0000 UTC FinishedAt: 2026-07-14 13:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 13:11:02 +0000 UTC FinishedAt: 2026-07-14 13:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 13:11:02 +0000 UTC FinishedAt: 2026-07-14 13:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 13:11:02 +0000 UTC FinishedAt: 2026-07-14 13:13:08 +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:*219d53e6-c53c-4171-ad19-7517e45550ea,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-workflow7q5n9/series-workflow7q5n9-build-action-2015417218/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-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 13:13:18 +0000 UTC FinishedAt: 2026-07-14 16:15:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 13:13:18 +0000 UTC FinishedAt: 2026-07-14 16:15:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"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:*d011f3fb-e93f-41d5-bdca-060f8ac4f626,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*219d53e6-c53c-4171-ad19-7517e45550ea,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-workflow7q5n9/series-workflow7q5n9-build-action-89313765/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-workflow7q5n9/series-workflow7q5n9-build-action-2015417218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 13:13:18 +0000 UTC FinishedAt: 2026-07-14 13:13:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 13:13:18 +0000 UTC FinishedAt: 2026-07-14 13:13:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"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-workflow7q5n9/series-workflow7q5n9-convert-artifact-4016610835/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 13:13:18 +0000 UTC FinishedAt: 2026-07-14 13:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 13:13:18 +0000 UTC FinishedAt: 2026-07-14 13:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 13:13:18 +0000 UTC FinishedAt: 2026-07-14 13:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 13:13:28 +0000 UTC FinishedAt: 2026-07-14 16:15:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q5n9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_alloc_file_blocks","ext4_zero_range","ext4_load_tail_bh","ext4_block_zero_eof","ext4_zero_partial_blocks","ext4_punch_hole"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"49df6e82-4a94-4cab-ba27-6ebe3b43cac0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 13:13:28 +0000 UTC FinishedAt: 2026-07-14 16:14:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d011f3fb-e93f-41d5-bdca-060f8ac4f626,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*219d53e6-c53c-4171-ad19-7517e45550ea,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-workflow7q5n9/series-workflow7q5n9-build-action-89313765/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-workflow7q5n9/series-workflow7q5n9-build-action-2015417218/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-workflow7q5n9/series-workflow7q5n9-convert-artifact-4016610835/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,}