Name: series-workflowv5mwv Phase: Succeeded StartedAt: 2026-07-09 06:36:23 +0000 UTC FinishedAt: 2026-07-09 11:02:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[0] Phase: Succeeded StartedAt: 2026-07-09 06:36:23 +0000 UTC FinishedAt: 2026-07-09 06:58:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 06:36:23 +0000 UTC FinishedAt: 2026-07-09 06:58:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_LRU_SORT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_LRU_SORT" ], "series_id": "c23b5281-6a7c-4d3f-94e2-a8b27767cfe8" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_set_attrs", "damon_update_monitoring_results", "damon_update_monitoring_result", "damon_update_probe_hits", "damon_probe_hits_mvsum", "damon_lru_sort_apply_parameters", "damon_hot_score" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2V0X2F0dHJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMmIzM0OywKICAgICYjMzQ7ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0JiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzJiMzNDssCiAgICAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9ob3Rfc2NvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZWM0ZDQzNzRkOWVmNDFkODA3NmE2NjZkMmE1NzAyZDEzMzhiYTNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAwNjo1NzozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IDE5YjdlODM5YmRlMGI0Li42M2Y1OTY5NTdjMWYxZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTA1NiwxNSAmIzQzOzEwNTYsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGRhbW9uX3RhcmdldF9oYXNfcGlkKGNvbnN0IHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdHJldHVybiBjdHgtXHUwMDNlb3BzLmlkID09IERBTU9OX09QU19WQUREUiB8fCBjdHgtXHUwMDNlb3BzLmlkID09IERBTU9OX09QU19GVkFERFI7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuJiM0MzsvKiBSZXR1cm5zIG51bWJlciBvZiBzYW1wbGVzIHBlciBhZ2dyZWdhdGlvbiBpbnRlcnZhbCAqL1xuJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyKFxuJiM0MztcdFx0Y29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHNhbXBsZV9pbnRlcnZhbDtcbi1cdHVuc2lnbmVkIGxvbmcgbWF4X25yX2FjY2Vzc2VzO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgbnJfc2FtcGxlcztcbiBcbiBcdHNhbXBsZV9pbnRlcnZhbCA9IGF0dHJzLVx1MDAzZXNhbXBsZV9pbnRlcnZhbCA/IDogMTtcbi1cdG1heF9ucl9hY2Nlc3NlcyA9IG1pbihhdHRycy1cdTAwM2VhZ2dyX2ludGVydmFsIC8gc2FtcGxlX2ludGVydmFsLFxuJiM0MztcdG5yX3NhbXBsZXMgPSBtaW4oYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbCAvIHNhbXBsZV9pbnRlcnZhbCxcbiBcdFx0XHQodW5zaWduZWQgbG9uZylVSU5UX01BWCk7XG4tXHRyZXR1cm4gbWF4X25yX2FjY2Vzc2VzID8gOiAxO1xuJiM0MztcdHJldHVybiBucl9zYW1wbGVzID8gOiAxO1xuIH1cbiBcbiBcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDM5MGUwMGIzNjg1ZWZjLi4xMTQ3M2FhMWY3MGY0MSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMjkwLDYgJiM0MzsyOTAsOSBAQCB1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdFx0XHRjdHgtXHUwMDNlcGFzc2VkX3NhbXBsZV9pbnRlcnZhbHM7XG4gXHRsZWZ0X3dpbmRvd19icCA9IG11bHRfZnJhYyhsZWZ0X3dpbmRvdywgMTAwMDAsIHdpbmRvd19sZW4pO1xuIFxuJiM0MztcdGlmIChsZWZ0X3dpbmRvd19icCA9PSAxMDAwMClcbiYjNDM7XHRcdHJldHVybiByLVx1MDAzZWxhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdO1xuJiM0MztcbiBcdHJldHVybiBkYW1vbl9tdnN1bShyLVx1MDAzZXByb2JlX2hpdHNbcHJvYmVfaWR4XSxcbiBcdFx0XHRyLVx1MDAzZWxhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdLCBsZWZ0X3dpbmRvd19icCk7XG4gfVxuQEAgLTg3Niw0MyAmIzQzOzg3OSw1NyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXG4gXHRyZXR1cm4gYWdlICogb2xkX2F0dHJzLVx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBuZXdfYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbDtcbiB9XG4gXG4tLyogY29udmVydCBhY2Nlc3MgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApIHRvIG5yX2FjY2Vzc2VzICovXG4tc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9hY2Nlc3Nlc19icF90b19ucl9hY2Nlc3Nlcyhcbi1cdFx0dW5zaWduZWQgaW50IGFjY2Vzc2VzX2JwLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuJiM0MzsvKiBjb252ZXJ0IHNhbXBsZSByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgdG8gY291bnQgKi9cbiYjNDM7c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4ge1xuLVx0cmV0dXJuIGFjY2Vzc2VzX2JwICogZGFtb25fbWF4X25yX2FjY2Vzc2VzKGF0dHJzKSAvIDEwMDAwO1xuJiM0MztcdHJldHVybiBicCAqIGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoYXR0cnMpIC8gMTAwMDA7XG4gfVxuIFxuLS8qXG4tICogQ29udmVydCBucl9hY2Nlc3NlcyB0byBhY2Nlc3MgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApLlxuLSAqXG4tICogQ2FsbGVycyBzaG91bGQgZW5zdXJlIGF0dHJzLmFnZ3JfaW50ZXJ2YWwgaXMgbm90IHplcm8sIGxpa2Vcbi0gKiBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKCkgZG9lcyAuICBPdGhlcndpc2UsIGRpdmlkZS1ieS16ZXJvIHdvdWxkXG4tICogaGFwcGVuLlxuLSAqL1xuLXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoXG4tXHRcdHVuc2lnbmVkIGludCBucl9hY2Nlc3Nlcywgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbiYjNDM7LyogY29udmVydCBzYW1wbGUgY291bnQgdG8gcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApICovXG4mIzQzO3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKFxuJiM0MztcdFx0dW5zaWduZWQgaW50IGNvdW50LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuIHtcbi1cdHJldHVybiBtdWx0X2ZyYWMobnJfYWNjZXNzZXMsIDEwMDAwLCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoYXR0cnMpKTtcbiYjNDM7XHRyZXR1cm4gbXVsdF9mcmFjKGNvdW50LCAxMDAwMCwgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihhdHRycykpO1xuIH1cbiBcbi1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnModW5zaWduZWQgaW50IG5yX2FjY2Vzc2VzLFxuJiM0MztzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXG4gXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycylcbiB7XG4tXHRyZXR1cm4gZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoXG4tXHRcdFx0ZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoXG4tXHRcdFx0XHRucl9hY2Nlc3Nlcywgb2xkX2F0dHJzKSxcbi1cdFx0XHRuZXdfYXR0cnMpO1xuJiM0MztcdHJldHVybiBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXG4mIzQzO1x0XHRcdGRhbW9uX3NhbXBsZV9jb3VudF90b19icChuciwgb2xkX2F0dHJzKSwgbmV3X2F0dHJzKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiYjNDM7XHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcbiYjNDM7XHRcdGJvb2wgYWdncmVnYXRpbmcsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9wcm9iZSAqcDtcbiYjNDM7XHRpbnQgaSA9IDA7XG4mIzQzO1xuJiM0MztcdGRhbW9uX2Zvcl9lYWNoX3Byb2JlKHAsIGN0eCkge1xuJiM0MztcdFx0ci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNbaV0gPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoXG4mIzQzO1x0XHRcdFx0ci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNbaV0sIG9sZF9hdHRycywgbmV3X2F0dHJzKTtcbiYjNDM7XHRcdGlmICghYWdncmVnYXRpbmcpXG4mIzQzO1x0XHRcdHItXHUwMDNlcHJvYmVfaGl0c1tpXSA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyhcbiYjNDM7XHRcdFx0XHRcdHItXHUwMDNlcHJvYmVfaGl0c1tpXSwgb2xkX2F0dHJzLFxuJiM0MztcdFx0XHRcdFx0bmV3X2F0dHJzKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ci1cdTAwM2Vwcm9iZV9oaXRzW2ldID0gMDtcbiYjNDM7XHRcdGkmIzQzOyYjNDM7O1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcbi1cdFx0Ym9vbCBhZ2dyZWdhdGluZylcbiYjNDM7XHRcdGJvb2wgYWdncmVnYXRpbmcsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiB7XG4tXHRyLVx1MDAzZWxhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKFxuJiM0MztcdGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZywgY3R4KTtcbiYjNDM7XG4mIzQzO1x0ci1cdTAwM2VsYXN0X25yX2FjY2Vzc2VzID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKFxuIFx0XHRcdHItXHUwMDNlbGFzdF9ucl9hY2Nlc3Nlcywgb2xkX2F0dHJzLCBuZXdfYXR0cnMpO1xuIFx0aWYgKCFhZ2dyZWdhdGluZylcbi1cdFx0ci1cdTAwM2Vucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnMoXG4mIzQzO1x0XHRyLVx1MDAzZW5yX2FjY2Vzc2VzID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKFxuIFx0XHRcdFx0ci1cdTAwM2Vucl9hY2Nlc3Nlcywgb2xkX2F0dHJzLCBuZXdfYXR0cnMpO1xuIFx0ZWxzZVxuIFx0XHQvKlxuQEAgLTk0OCw4ICYjNDM7OTY1LDggQEAgc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXG4gXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodCwgY3R4KVxuIFx0XHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcbi1cdFx0XHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoXG4tXHRcdFx0XHRcdHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZyk7XG4mIzQzO1x0XHRcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBvbGRfYXR0cnMsIG5ld19hdHRycyxcbiYjNDM7XHRcdFx0XHRcdGFnZ3JlZ2F0aW5nLCBjdHgpO1xuIH1cbiBcbiAvKlxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCBlOGMzODlhZDMyMjZmNy4uN2UwNzcwODRjYjAzYWEgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtMzAzLDcgJiM0MzszMDMsNyBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRlcnIgPSAtRU5PTUVNO1xuLVx0aG90X3RocmVzID0gZGFtb25fbWF4X25yX2FjY2Vzc2VzKFx1MDAyNmF0dHJzKSAqXG4mIzQzO1x0aG90X3RocmVzID0gZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihcdTAwMjZhdHRycykgKlxuIFx0XHRob3RfdGhyZXNfYWNjZXNzX2ZyZXEgLyAxMDAwO1xuIFx0aG90X3NjaGVtZSA9IGRhbW9uX2xydV9zb3J0X25ld19ob3Rfc2NoZW1lKGhvdF90aHJlcyk7XG4gXHRpZiAoIWhvdF9zY2hlbWUpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXG5pbmRleCA2YmRkMWNmZDM4NjNhMy4uODljNjk0ZjZlNGZhODkgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9vcHMtY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL29wcy1jb21tb24uY1xuQEAgLTExMiw3ICYjNDM7MTEyLDcgQEAgaW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFx0aW50IGhvdG5lc3M7XG4gXG4gXHRmcmVxX3N1YnNjb3JlID0gci1cdTAwM2Vucl9hY2Nlc3NlcyAqIERBTU9OX01BWF9TVUJTQ09SRSAvXG4tXHRcdGRhbW9uX21heF9ucl9hY2Nlc3NlcyhcdTAwMjZjLVx1MDAzZWF0dHJzKTtcbiYjNDM7XHRcdGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoXHUwMDI2Yy1cdTAwM2VhdHRycyk7XG4gXG4gXHRhZ2VfaW5fc2VjID0gKHVuc2lnbmVkIGxvbmcpci1cdTAwM2VhZ2UgKiBjLVx1MDAzZWF0dHJzLmFnZ3JfaW50ZXJ2YWwgLyAxMDAwMDAwO1xuIFx0aWYgKGFnZV9pbl9zZWMpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXG5pbmRleCAwMTI0ZjgzYjM5YjgzOS4uZDk3MjgwMjcwYzI3YjggMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxuQEAgLTU3NSw2MCAmIzQzOzU3NSw0NSBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3NldF9yZWdpb25zKHN0cnVjdCBrdW5pdCAqdGVzdClcbiBcdFx0XHR9LCAzKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZGFtb25fdGVzdF9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4te1xuLVx0c3RydWN0IGRhbW9uX2F0dHJzIGF0dHJzID0ge1xuLVx0XHQuc2FtcGxlX2ludGVydmFsID0gMTAsXG4tXHRcdC5hZ2dyX2ludGVydmFsID0gKCh1bnNpZ25lZCBsb25nKVVJTlRfTUFYICYjNDM7IDEpICogMTBcbi1cdH07XG4tXG4tXHQvKlxuLVx0ICogSW4gc29tZSBjYXNlcyBzdWNoIGFzIDMyYml0IGFyY2hpdGVjdHVyZXMgd2hlcmUgVUlOVF9NQVggaXNcbi1cdCAqIFVMT05HX01BWCwgYXR0cnMuYWdncl9pbnRlcnZhbCBiZWNvbWVzIHplcm8uICBDYWxsaW5nXG4tXHQgKiBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgpIGluIHRoZSBjYXNlIHdpbGwgY2F1c2Vcbi1cdCAqIGRpdmlkZS1ieS16ZXJvLiAgU3VjaCBjYXNlIGlzIHByb2hpYml0ZWQgaW4gbm9ybWFsIGV4ZWN1dGlvbiBzaW5jZVxuLVx0ICogdGhlIGNhdXRpb24gaXMgZG9jdW1lbnRlZCBvbiB0aGUgY29tbWVudCBmb3IgdGhlIGZ1bmN0aW9uLCBhbmRcbi1cdCAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIHRoZSBjaGVjay4gIFNraXAgdGhlIHRlc3QgaW5cbi1cdCAqIHRoZSBjYXNlLlxuLVx0ICovXG4tXHRpZiAoIWF0dHJzLmFnZ3JfaW50ZXJ2YWwpXG4tXHRcdGt1bml0X3NraXAodGVzdCwgXCYjMzQ7YWdncl9pbnRlcnZhbCBpcyB6ZXJvLlwmIzM0Oyk7XG4tXG4tXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoMTIzLCBcdTAwMjZhdHRycyksIDApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4ge1xuIFx0c3RydWN0IGRhbW9uX2F0dHJzIG9sZF9hdHRycyA9IHtcbiBcdFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEwLCAuYWdncl9pbnRlcnZhbCA9IDEwMDAsfTtcbiBcdHN0cnVjdCBkYW1vbl9hdHRycyBuZXdfYXR0cnM7XG4gXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyID0gZGFtb25fbmV3X3JlZ2lvbigzLCA3KTtcbiYjNDM7XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XG4gXG4gXHRpZiAoIXIpXG4gXHRcdGt1bml0X3NraXAodGVzdCwgXCYjMzQ7cmVnaW9uIGFsbG9jIGZhaWxcJiMzNDspO1xuJiM0MztcdGN0eCA9IGRhbW9uX25ld19jdHgoKTtcbiYjNDM7XHRpZiAoIWN0eCkge1xuJiM0MztcdFx0ZGFtb25fZnJlZV9yZWdpb24ocik7XG4mIzQzO1x0XHRrdW5pdF9za2lwKHRlc3QsIFwmIzM0O2N0eCBhbGxvYyBmYWlsXCYjMzQ7KTtcbiYjNDM7XHR9XG4gXG4gXHRyLVx1MDAzZW5yX2FjY2Vzc2VzID0gMTU7XG4gXHRyLVx1MDAzZWFnZSA9IDIwO1xuIFxuIFx0bmV3X2F0dHJzID0gKHN0cnVjdCBkYW1vbl9hdHRycyl7XG4gXHRcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxMDAsIC5hZ2dyX2ludGVydmFsID0gMTAwMDAsfTtcbi1cdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xuJiM0MztcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUpO1xuIFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlYWdlLCAyKTtcbiBcbiBcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcbi1cdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xuJiM0MztcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcbiBcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVx1MDAzZWFnZSwgMik7XG4gXG4gXHRuZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXtcbiBcdFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEsIC5hZ2dyX2ludGVydmFsID0gMTAwfTtcbi1cdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xuJiM0MztcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcbiBcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVx1MDAzZWFnZSwgMjApO1xuIFxuIFx0ZGFtb25fZnJlZV9yZWdpb24ocik7XG4mIzQzO1x0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KVxuQEAgLTE1NzIsNyAmIzQzOzE1NTcsNiBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3NwbGl0X2Fib3ZlX2hhbGZfcHJvZ3Jlc3NlcyksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfb3BzX3JlZ2lzdHJhdGlvbiksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc2V0X3JlZ2lvbnMpLFxuLVx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQpLFxuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3NldF9hdHRycyksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfbXZzdW0pLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2V0X2F0dHJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMmIzM0OywKICAgICYjMzQ7ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0JiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzJiMzNDssCiAgICAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9ob3Rfc2NvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVlYzRkNDM3NGQ5ZWY0MWQ4MDc2YTY2NmQyYTU3MDJkMTMzOGJhM2QKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCA5IDA2OjU3OjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oCmluZGV4IDE5YjdlODM5YmRlMGI0Li42M2Y1OTY5NTdjMWYxZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaApAQCAtMTA1NiwxNSAmIzQzOzEwNTYsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGRhbW9uX3RhcmdldF9oYXNfcGlkKGNvbnN0IHN0cnVjdCBkYW1vbl9jdHggKmN0eCkKIAlyZXR1cm4gY3R4LSZndDtvcHMuaWQgPT0gREFNT05fT1BTX1ZBRERSIHx8IGN0eC0mZ3Q7b3BzLmlkID09IERBTU9OX09QU19GVkFERFI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKQomIzQzOy8qIFJldHVybnMgbnVtYmVyIG9mIHNhbXBsZXMgcGVyIGFnZ3JlZ2F0aW9uIGludGVydmFsICovCiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncigKJiM0MzsJCWNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpCiB7CiAJdW5zaWduZWQgbG9uZyBzYW1wbGVfaW50ZXJ2YWw7Ci0JdW5zaWduZWQgbG9uZyBtYXhfbnJfYWNjZXNzZXM7CiYjNDM7CXVuc2lnbmVkIGxvbmcgbnJfc2FtcGxlczsKIAogCXNhbXBsZV9pbnRlcnZhbCA9IGF0dHJzLSZndDtzYW1wbGVfaW50ZXJ2YWwgPyA6IDE7Ci0JbWF4X25yX2FjY2Vzc2VzID0gbWluKGF0dHJzLSZndDthZ2dyX2ludGVydmFsIC8gc2FtcGxlX2ludGVydmFsLAomIzQzOwlucl9zYW1wbGVzID0gbWluKGF0dHJzLSZndDthZ2dyX2ludGVydmFsIC8gc2FtcGxlX2ludGVydmFsLAogCQkJKHVuc2lnbmVkIGxvbmcpVUlOVF9NQVgpOwotCXJldHVybiBtYXhfbnJfYWNjZXNzZXMgPyA6IDE7CiYjNDM7CXJldHVybiBucl9zYW1wbGVzID8gOiAxOwogfQogCiAKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCAzOTBlMDBiMzY4NWVmYy4uMTE0NzNhYTFmNzBmNDEgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTI5MCw2ICYjNDM7MjkwLDkgQEAgdW5zaWduZWQgY2hhciBkYW1vbl9wcm9iZV9oaXRzX212c3VtKGludCBwcm9iZV9pZHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsCiAJCQljdHgtJmd0O3Bhc3NlZF9zYW1wbGVfaW50ZXJ2YWxzOwogCWxlZnRfd2luZG93X2JwID0gbXVsdF9mcmFjKGxlZnRfd2luZG93LCAxMDAwMCwgd2luZG93X2xlbik7CiAKJiM0MzsJaWYgKGxlZnRfd2luZG93X2JwID09IDEwMDAwKQomIzQzOwkJcmV0dXJuIHItJmd0O2xhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdOwomIzQzOwogCXJldHVybiBkYW1vbl9tdnN1bShyLSZndDtwcm9iZV9oaXRzW3Byb2JlX2lkeF0sCiAJCQlyLSZndDtsYXN0X3Byb2JlX2hpdHNbcHJvYmVfaWR4XSwgbGVmdF93aW5kb3dfYnApOwogfQpAQCAtODc2LDQzICYjNDM7ODc5LDU3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fYWdlX2Zvcl9uZXdfYXR0cnModW5zaWduZWQgaW50IGFnZSwKIAlyZXR1cm4gYWdlICogb2xkX2F0dHJzLSZndDthZ2dyX2ludGVydmFsIC8gbmV3X2F0dHJzLSZndDthZ2dyX2ludGVydmFsOwogfQogCi0vKiBjb252ZXJ0IGFjY2VzcyByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgdG8gbnJfYWNjZXNzZXMgKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoCi0JCXVuc2lnbmVkIGludCBhY2Nlc3Nlc19icCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycykKJiM0MzsvKiBjb252ZXJ0IHNhbXBsZSByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgdG8gY291bnQgKi8KJiM0MztzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX3NhbXBsZV9icF90b19jb3VudCgKJiM0MzsJCXVuc2lnbmVkIGludCBicCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycykKIHsKLQlyZXR1cm4gYWNjZXNzZXNfYnAgKiBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoYXR0cnMpIC8gMTAwMDA7CiYjNDM7CXJldHVybiBicCAqIGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoYXR0cnMpIC8gMTAwMDA7CiB9CiAKLS8qCi0gKiBDb252ZXJ0IG5yX2FjY2Vzc2VzIHRvIGFjY2VzcyByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkuCi0gKgotICogQ2FsbGVycyBzaG91bGQgZW5zdXJlIGF0dHJzLmFnZ3JfaW50ZXJ2YWwgaXMgbm90IHplcm8sIGxpa2UKLSAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIC4gIE90aGVyd2lzZSwgZGl2aWRlLWJ5LXplcm8gd291bGQKLSAqIGhhcHBlbi4KLSAqLwotc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgKLQkJdW5zaWduZWQgaW50IG5yX2FjY2Vzc2VzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKQomIzQzOy8qIGNvbnZlcnQgc2FtcGxlIGNvdW50IHRvIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSAqLwomIzQzO3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKAomIzQzOwkJdW5zaWduZWQgaW50IGNvdW50LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKQogewotCXJldHVybiBtdWx0X2ZyYWMobnJfYWNjZXNzZXMsIDEwMDAwLCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoYXR0cnMpKTsKJiM0MzsJcmV0dXJuIG11bHRfZnJhYyhjb3VudCwgMTAwMDAsIGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoYXR0cnMpKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBucl9hY2Nlc3NlcywKJiM0MztzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsCiAJCXN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycykKIHsKLQlyZXR1cm4gZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoCi0JCQlkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgKLQkJCQlucl9hY2Nlc3Nlcywgb2xkX2F0dHJzKSwKLQkJCW5ld19hdHRycyk7CiYjNDM7CXJldHVybiBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoCiYjNDM7CQkJZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKG5yLCBvbGRfYXR0cnMpLCBuZXdfYXR0cnMpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfcHJvYmVfaGl0cyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAomIzQzOwkJc3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLAomIzQzOwkJYm9vbCBhZ2dyZWdhdGluZywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IGRhbW9uX3Byb2JlICpwOwomIzQzOwlpbnQgaSA9IDA7CiYjNDM7CiYjNDM7CWRhbW9uX2Zvcl9lYWNoX3Byb2JlKHAsIGN0eCkgewomIzQzOwkJci0mZ3Q7bGFzdF9wcm9iZV9oaXRzW2ldID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKAomIzQzOwkJCQlyLSZndDtsYXN0X3Byb2JlX2hpdHNbaV0sIG9sZF9hdHRycywgbmV3X2F0dHJzKTsKJiM0MzsJCWlmICghYWdncmVnYXRpbmcpCiYjNDM7CQkJci0mZ3Q7cHJvYmVfaGl0c1tpXSA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycygKJiM0MzsJCQkJCXItJmd0O3Byb2JlX2hpdHNbaV0sIG9sZF9hdHRycywKJiM0MzsJCQkJCW5ld19hdHRycyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJci0mZ3Q7cHJvYmVfaGl0c1tpXSA9IDA7CiYjNDM7CQlpJiM0MzsmIzQzOzsKJiM0MzsJfQogfQogCiBzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwKIAkJc3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLAotCQlib29sIGFnZ3JlZ2F0aW5nKQomIzQzOwkJYm9vbCBhZ2dyZWdhdGluZywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogewotCXItJmd0O2xhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKAomIzQzOwlkYW1vbl91cGRhdGVfcHJvYmVfaGl0cyhyLCBvbGRfYXR0cnMsIG5ld19hdHRycywgYWdncmVnYXRpbmcsIGN0eCk7CiYjNDM7CiYjNDM7CXItJmd0O2xhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoCiAJCQlyLSZndDtsYXN0X25yX2FjY2Vzc2VzLCBvbGRfYXR0cnMsIG5ld19hdHRycyk7CiAJaWYgKCFhZ2dyZWdhdGluZykKLQkJci0mZ3Q7bnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKAomIzQzOwkJci0mZ3Q7bnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoCiAJCQkJci0mZ3Q7bnJfYWNjZXNzZXMsIG9sZF9hdHRycywgbmV3X2F0dHJzKTsKIAllbHNlCiAJCS8qCkBAIC05NDgsOCAmIzQzOzk2NSw4IEBAIHN0YXRpYyB2b2lkIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LAogCiAJZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHQsIGN0eCkKIAkJZGFtb25fZm9yX2VhY2hfcmVnaW9uKHIsIHQpCi0JCQlkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoCi0JCQkJCXIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZyk7CiYjNDM7CQkJZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLAomIzQzOwkJCQkJYWdncmVnYXRpbmcsIGN0eCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuYwppbmRleCBlOGMzODlhZDMyMjZmNy4uN2UwNzcwODRjYjAzYWEgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vbHJ1X3NvcnQuYwpAQCAtMzAzLDcgJiM0MzszMDMsNyBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZCkKIAkJZ290byBvdXQ7CiAKIAllcnIgPSAtRU5PTUVNOwotCWhvdF90aHJlcyA9IGRhbW9uX21heF9ucl9hY2Nlc3NlcygmYW1wO2F0dHJzKSAqCiYjNDM7CWhvdF90aHJlcyA9IGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoJmFtcDthdHRycykgKgogCQlob3RfdGhyZXNfYWNjZXNzX2ZyZXEgLyAxMDAwOwogCWhvdF9zY2hlbWUgPSBkYW1vbl9scnVfc29ydF9uZXdfaG90X3NjaGVtZShob3RfdGhyZXMpOwogCWlmICghaG90X3NjaGVtZSkKZGlmZiAtLWdpdCBhL21tL2RhbW9uL29wcy1jb21tb24uYyBiL21tL2RhbW9uL29wcy1jb21tb24uYwppbmRleCA2YmRkMWNmZDM4NjNhMy4uODljNjk0ZjZlNGZhODkgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL29wcy1jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmMKQEAgLTExMiw3ICYjNDM7MTEyLDcgQEAgaW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCWludCBob3RuZXNzOwogCiAJZnJlcV9zdWJzY29yZSA9IHItJmd0O25yX2FjY2Vzc2VzICogREFNT05fTUFYX1NVQlNDT1JFIC8KLQkJZGFtb25fbWF4X25yX2FjY2Vzc2VzKCZhbXA7Yy0mZ3Q7YXR0cnMpOwomIzQzOwkJZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncigmYW1wO2MtJmd0O2F0dHJzKTsKIAogCWFnZV9pbl9zZWMgPSAodW5zaWduZWQgbG9uZylyLSZndDthZ2UgKiBjLSZndDthdHRycy5hZ2dyX2ludGVydmFsIC8gMTAwMDAwMDsKIAlpZiAoYWdlX2luX3NlYykKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaCBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaAppbmRleCAwMTI0ZjgzYjM5YjgzOS4uZDk3MjgwMjcwYzI3YjggMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaAomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgKQEAgLTU3NSw2MCAmIzQzOzU3NSw0NSBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3NldF9yZWdpb25zKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkJCX0sIDMpOwogfQogCi1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKHN0cnVjdCBrdW5pdCAqdGVzdCkKLXsKLQlzdHJ1Y3QgZGFtb25fYXR0cnMgYXR0cnMgPSB7Ci0JCS5zYW1wbGVfaW50ZXJ2YWwgPSAxMCwKLQkJLmFnZ3JfaW50ZXJ2YWwgPSAoKHVuc2lnbmVkIGxvbmcpVUlOVF9NQVggJiM0MzsgMSkgKiAxMAotCX07Ci0KLQkvKgotCSAqIEluIHNvbWUgY2FzZXMgc3VjaCBhcyAzMmJpdCBhcmNoaXRlY3R1cmVzIHdoZXJlIFVJTlRfTUFYIGlzCi0JICogVUxPTkdfTUFYLCBhdHRycy5hZ2dyX2ludGVydmFsIGJlY29tZXMgemVyby4gIENhbGxpbmcKLQkgKiBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgpIGluIHRoZSBjYXNlIHdpbGwgY2F1c2UKLQkgKiBkaXZpZGUtYnktemVyby4gIFN1Y2ggY2FzZSBpcyBwcm9oaWJpdGVkIGluIG5vcm1hbCBleGVjdXRpb24gc2luY2UKLQkgKiB0aGUgY2F1dGlvbiBpcyBkb2N1bWVudGVkIG9uIHRoZSBjb21tZW50IGZvciB0aGUgZnVuY3Rpb24sIGFuZAotCSAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIHRoZSBjaGVjay4gIFNraXAgdGhlIHRlc3QgaW4KLQkgKiB0aGUgY2FzZS4KLQkgKi8KLQlpZiAoIWF0dHJzLmFnZ3JfaW50ZXJ2YWwpCi0JCWt1bml0X3NraXAodGVzdCwgJiMzNDthZ2dyX2ludGVydmFsIGlzIHplcm8uJiMzNDspOwotCi0JS1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKDEyMywgJmFtcDthdHRycyksIDApOwotfQotCiBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc3RydWN0IGRhbW9uX2F0dHJzIG9sZF9hdHRycyA9IHsKIAkJLnNhbXBsZV9pbnRlcnZhbCA9IDEwLCAuYWdncl9pbnRlcnZhbCA9IDEwMDAsfTsKIAlzdHJ1Y3QgZGFtb25fYXR0cnMgbmV3X2F0dHJzOwogCXN0cnVjdCBkYW1vbl9yZWdpb24gKnIgPSBkYW1vbl9uZXdfcmVnaW9uKDMsIDcpOwomIzQzOwlzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7CiAKIAlpZiAoIXIpCiAJCWt1bml0X3NraXAodGVzdCwgJiMzNDtyZWdpb24gYWxsb2MgZmFpbCYjMzQ7KTsKJiM0MzsJY3R4ID0gZGFtb25fbmV3X2N0eCgpOwomIzQzOwlpZiAoIWN0eCkgewomIzQzOwkJZGFtb25fZnJlZV9yZWdpb24ocik7CiYjNDM7CQlrdW5pdF9za2lwKHRlc3QsICYjMzQ7Y3R4IGFsbG9jIGZhaWwmIzM0Oyk7CiYjNDM7CX0KIAogCXItJmd0O25yX2FjY2Vzc2VzID0gMTU7CiAJci0mZ3Q7YWdlID0gMjA7CiAKIAluZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXsKIAkJLnNhbXBsZV9pbnRlcnZhbCA9IDEwMCwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwMCx9OwotCWRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCAmYW1wO29sZF9hdHRycywgJmFtcDtuZXdfYXR0cnMsIGZhbHNlKTsKJiM0MzsJZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsICZhbXA7b2xkX2F0dHJzLCAmYW1wO25ld19hdHRycywgZmFsc2UsIGN0eCk7CiAJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItJmd0O25yX2FjY2Vzc2VzLCAxNSk7CiAJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItJmd0O2FnZSwgMik7CiAKIAluZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXsKIAkJLnNhbXBsZV9pbnRlcnZhbCA9IDEsIC5hZ2dyX2ludGVydmFsID0gMTAwMH07Ci0JZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsICZhbXA7b2xkX2F0dHJzLCAmYW1wO25ld19hdHRycywgZmFsc2UpOwomIzQzOwlkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgJmFtcDtvbGRfYXR0cnMsICZhbXA7bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTsKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci0mZ3Q7bnJfYWNjZXNzZXMsIDE1MCk7CiAJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItJmd0O2FnZSwgMik7CiAKIAluZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXsKIAkJLnNhbXBsZV9pbnRlcnZhbCA9IDEsIC5hZ2dyX2ludGVydmFsID0gMTAwfTsKLQlkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgJmFtcDtvbGRfYXR0cnMsICZhbXA7bmV3X2F0dHJzLCBmYWxzZSk7CiYjNDM7CWRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCAmYW1wO29sZF9hdHRycywgJmFtcDtuZXdfYXR0cnMsIGZhbHNlLCBjdHgpOwogCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLSZndDtucl9hY2Nlc3NlcywgMTUwKTsKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci0mZ3Q7YWdlLCAyMCk7CiAKIAlkYW1vbl9mcmVlX3JlZ2lvbihyKTsKJiM0MzsJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKIH0KIAogc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KQpAQCAtMTU3Miw3ICYjNDM7MTU1Nyw2IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBkYW1vbl90ZXN0X2Nhc2VzW10gPSB7CiAJS1VOSVRfQ0FTRShkYW1vbl90ZXN0X3NwbGl0X2Fib3ZlX2hhbGZfcHJvZ3Jlc3NlcyksCiAJS1VOSVRfQ0FTRShkYW1vbl90ZXN0X29wc19yZWdpc3RyYXRpb24pLAogCUtVTklUX0NBU0UoZGFtb25fdGVzdF9zZXRfcmVnaW9ucyksCi0JS1VOSVRfQ0FTRShkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKSwKIAlLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KSwKIAlLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc2V0X2F0dHJzKSwKIAlLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfbXZzdW0pLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERBTU9OIENvcmUgTG9naWMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBEQU1PTiBjb3JlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlIGlzIHRoZSByZW5hbWluZyBvZiBgZGFtb25fbWF4X25yX2FjY2Vzc2VzYCB0byBgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncmAuIFNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgbmFtZSBjaGFuZ2UsIHByb2JhYmx5IGZvciBjbGFyaXR5LiBJdCYjMzk7cyBnb29kIHRvIHNlZSB0aGVzZSBpbnRlcm5hbCB2YXJpYWJsZXMgYmVpbmcgcmVmYWN0b3JlZCBmb3IgYmV0dGVyIHVuZGVyc3RhbmRpbmcuCgpUaGVuLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YCwgZm9jdXNpbmcgb24gdXBkYXRpbmcgcHJvYmUgaGl0cyDigJMgYHItJmd0O3Byb2JlX2hpdHNbaV1gIGFuZCBgci0mZ3Q7bGFzdF9wcm9iZV9oaXRzW2ldYC4gT2theSwgc28gd2UmIzM5O3JlIHJlZmluaW5nIGhvdyBwcm9iZSBoaXQgZGF0YSBpcyBoYW5kbGVkLiBBIG5ldyBmdW5jdGlvbiwgYGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzYCwgaGFzIGJlZW4gYWRkZWQsIHdoaWNoIHN1Z2dlc3RzIGEgcG9zc2libGUgcmVmYWN0b3JpbmcgdG8gZW5jYXBzdWxhdGUgc29tZSBvZiB0aGF0IGxvZ2ljLgoKVGhlIGNoYW5nZSB0byBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAgdG8gcmV0dXJuIGByLSZndDtsYXN0X3Byb2JlX2hpdHNbcHJvYmVfaWR4XWAgdW5kZXIgdGhlIGNvbmRpdGlvbiB0aGF0IGBsZWZ0X3dpbmRvd19icCA9PSAxMDAwMGAgaXMgaW50ZXJlc3RpbmcuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbnRleHQgb2YgdGhhdCBzcGVjaWZpYyBjb25kaXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIHRoZXJlLiBJdCBsaWtlbHkgcmVsYXRlcyB0byBob3cgdGhlIGFnZ3JlZ2F0aW9uIHdpbmRvdyBvciBiYXNlIHBvaW50ZXIgY2FsY3VsYXRpb25zIGFyZSBiZWhhdmluZyBpbiB0aGF0IGVkZ2UgY2FzZS4KCk5leHQsIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgIGFuZCBgZGFtb25fdGVzdF91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLCBib3RoIG5vdyB0YWtpbmcgdGhlIGBjdHhgIGFyZ3VtZW50LiBUaGF0IHNpZ25hbHMgc29tZSBjb250ZXh0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHRvIHRoZXNlIGZ1bmN0aW9ucy4gVGhpcyBpcyBwcm9iYWJseSB0byBmYWNpbGl0YXRlIHBhc3Npbmcgc29tZSBjcnVjaWFsIHJ1bnRpbWUgaW5mb3JtYXRpb24gaW50byB0aGUgbW9uaXRvcmluZyB1cGRhdGUgcGF0aC4KCkFuZCBmaW5hbGx5LCB0aGUgcmVtb3ZhbCBvZiBgZGFtb25fdGVzdF9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icGAuIFRoaXMgc3VnZ2VzdHMgc29tZSB0ZXN0IGNvZGUgaGFzIGJlZW4gcmVtb3ZlZC4gSG9wZWZ1bGx5LCB0aGUgZnVuY3Rpb25hbGl0eSBpcyBtYWludGFpbmVkIHZpYSBvdGhlciwgbW9yZSBlZmZpY2llbnQgdGVzdCBwYXRocy4KCkJlZm9yZSBJIGRpdmUgZGVlcGVyIGludG8gdGhlIGNvZGUsIEkgbmVlZCB0byBjb25maXJtIERBTU9OIGlzIGV2ZW4gYWN0aXZlIGFuZCB0ZXN0YWJsZS4gT2YgY291cnNlLCBpdCBpcy4gQXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZlYXR1cmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBJIGtub3cgREFNT04gaGFzIHRoZSBzeXNmcyBpbnRlcmZhY2UsIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSwgYW5kIGlzIHVzZWQgYnkgbW9kdWxlcyBsaWtlIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9yZWNsYWltYC4gSXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gREFNT04mIzM5O3MgYmVoYXZpb3IgdGhhdCBtaWdodCBiZSBoZWxwZnVsIGluIHVuZGVyc3RhbmRpbmcgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9Mz1tZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbm1tL2RhbW9uL0tjb25maWctNC1cbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cbm1tL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xNC1cbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctMzctXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxubW0vZGFtb24vS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy00Ni1cbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy04Ny1cbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTE1LVxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFJlY2VudCBEQU1PTiBLZXJuZWwgTW9kaWZpY2F0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBEQU1PTiBjaGFuZ2VzLiBGaXJzdCwgSSBzZWUgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkIGFyZSBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGFuZCBgREFNT05fTFJVX1NPUlRgLiBJbW1lZGlhdGVseSwgYERBTU9OYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBqdW1wIG91dCBhcyB0aGUgbW9zdCByZWxldmFudCwgZ2l2ZW4gdGhlIGZpbGVzIG1vZGlmaWVkOiBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYW5kIHRoZSBLVW5pdCBoZWFkZXIuCgpOb3csIGxldCYjMzk7cyBleGFtaW5lIHRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIHRvdWNoZWQuIEkmIzM5O3ZlIGdvdDogYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBgZGFtb25fc2FtcGxlX2JwX3RvX2NvdW50YCwgYGRhbW9uX3NhbXBsZV9jb3VudF90b19icGAsIGBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnNgLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgLCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgLCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGFuZCBgZGFtb25faG90X3Njb3JlYC4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgYXJlIGFueSBvZiB0aGVzZSBmdW5jdGlvbnMgZXhwb3NlZCB0byB1c2Vyc3BhY2U/IFRoYXQmIzM5O3Mgd2hhdCByZWFsbHkgbWF0dGVycyB3aGVuIHlvdSYjMzk7cmUgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGludGVyYWN0aW9uLiBPa2F5LCBzbyBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AgaXMgY2FsbGVkIGZyb20gYGtkYW1vbmRfZm5gLCB3aGljaCBpcyB0aGUgREFNT04gbWFpbiB0aHJlYWQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AgaXMgY2FsbGVkIGZyb20gdGhlIGBkYW1vbl9scnVfc29ydF90aW1lcmAgb3IgYGRhbW9uX2xydV9zb3J0X3R1cm5vbmAgcm91dGluZXMsIHdoaWNoIGltcGxpZXMgdGhlc2UgYXJlIHByb2JhYmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gQW5kIGBkYW1vbl9ob3Rfc2NvcmVgIGlzIGludm9rZWQgdmlhIG9wcy4KCkkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGUgYWNjZXNzaWJpbGl0eSBvZiBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZGlnIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz05MjM9c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vY29yZS5jLTk1Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo5NTM6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9jb3JlLmMtOTU0LVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTAxMT1pbnQgZGFtb25fc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTA0MC1cbm1tL2RhbW9uL2NvcmUuYzoxMDQxOlx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhjdHgsIGF0dHJzLCBhZ2dyZWdhdGluZyk7XG5tbS9kYW1vbi9jb3JlLmMtMTA0Mi1cdGN0eC1cdTAwM2VhdHRycyA9ICphdHRycztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODY5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYSBhbmQgdGhpbmtpbmcgdGhpcyB0aHJvdWdoOgoKKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2s6IGBkYW1vbl9zZXRfYXR0cnNgIGFuZCBJdHMgT3JpZ2lucyoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZmxvdyBoZXJlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGBkYW1vbl9zZXRfYXR0cnNgLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpIGZyYW1ld29yay4gVGhlIGltcG9ydGFudCB0aGluZyB0byBub3RlIGlzIHRoYXQgYGRhbW9uX3NldF9hdHRyc2AgaXMgYmVpbmcgdHJpZ2dlcmVkIGZyb20gZWl0aGVyIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgIG9yIGEgZnVuY3Rpb24gc2ltaWxhciB0byBpdC4gVGhpcyBjb25uZWN0aW9uIGlzIGtleSBiZWNhdXNlIGl0IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IGFjdGluZyB1cG9uIHVzZXIgaW5wdXQgb3IgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBwcm9iYWJseSB0aHJvdWdoIGEgc3lzZnMgaW50ZXJmYWNlLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdmVyaWZ5IGlmIGl0JiMzOTtzIHRoZSBvbmx5IHBhdGgsIGJlY2F1c2Ugb3RoZXIgcGF0aHMgd291bGQgY2hhbmdlIHRoZSBuYXR1cmUgb2YgdGhpcyB0aG91Z2h0LiBUaGF0IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gaGFuZGxpbmcgYW5kIGFwcGx5aW5nIGNoYW5nZXMgdG8gREFNT04mIzM5O3MgYmVoYXZpb3IgdGhhdCBhcmUgZHJpdmVuIGJ5IGV4dGVybmFsIGludGVyYWN0aW9ucywgc3VjaCBhcyB0aG9zZSBpbml0aWF0ZWQgdGhyb3VnaCB0aGUgc3lzdGVtIGZpbGUgc3lzdGVtLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoYXQga2luZCBvZiBhdHRyaWJ1dGVzIGFyZSBiZWluZyBzZXQuIElzIGl0IHJhdGUsIHRocmVzaG9sZHMsIHNpemUsIHJlZ2lvbiwgdGFyZ2V0LCBvciBzb21lIG90aGVyIGNvbmZpZ3VyYWJsZSBzZXR0aW5nPyBBbHNvLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZSBiZWluZyBpbXBsZW1lbnRlZCBkeW5hbWljYWxseT8gQXJlIHRoZXJlIGFueSB0aHJlYWQgc2FmZXR5IGNvbmNlcm5zPyBBbnkgcmFjZSBjb25kaXRpb25zIHRvIGNvbnNpZGVyIGJlY2F1c2Ugb2YgdGhpcz8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHRyYWNlIGl0cyBpbnRlcmFjdGlvbnMgdG8gZnVsbHkgZ3Jhc3AgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9zZXRfYXR0cnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTk3Nj1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy05OTEtLyoqXG5tbS9kYW1vbi9jb3JlLmM6OTkyOiAqIGRhbW9uX3NldF9hdHRycygpIC0gU2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBtb25pdG9yaW5nLlxubW0vZGFtb24vY29yZS5jLTk5My0gKiBAY3R4Olx0XHRtb25pdG9yaW5nIGNvbnRleHRcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTAxMC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMDExOmludCBkYW1vbl9zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxubW0vZGFtb24vY29yZS5jLTEwMTIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNjg0PXN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzE0LVx0ICogc2NoZW1lcyBhbmQgdGFyZ2V0cyBzaG91bGQgYmUgdXBkYXRlZCBmaXJzdCwgc2luY2Vcbm1tL2RhbW9uL2NvcmUuYzoxNzE1Olx0ICogMS4gZGFtb25fc2V0X2F0dHJzKCkgdXBkYXRlcyBtb25pdG9yaW5nIHJlc3VsdHMgb2YgdGFyZ2V0cyBhbmRcbm1tL2RhbW9uL2NvcmUuYy0xNzE2LVx0ICogbmV4dF9hcHBseV9zaXMgb2Ygc2NoZW1lcywgYW5kXG4tLVxubW0vZGFtb24vY29yZS5jLTE3MjAtXHRpZiAoIWRhbW9uX2F0dHJzX2VxdWFscyhcdTAwMjZkc3QtXHUwMDNlYXR0cnMsIFx1MDAyNnNyYy1cdTAwM2VhdHRycykpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzIxOlx0XHRlcnIgPSBkYW1vbl9zZXRfYXR0cnMoZHN0LCBcdTAwMjZzcmMtXHUwMDNlYXR0cnMpO1xubW0vZGFtb24vY29yZS5jLTE3MjItXHRcdGlmIChlcnIpIHtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjE4Mj1zdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIHZvaWQga2RhbW9uZF90dW5lX2ludGVydmFscyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMjAwLVx0dHJhY2VfZGFtb25fbW9uaXRvcl9pbnRlcnZhbHNfdHVuZShuZXdfYXR0cnMuc2FtcGxlX2ludGVydmFsKTtcbm1tL2RhbW9uL2NvcmUuYzoyMjAxOlx0ZGFtb25fc2V0X2F0dHJzKGMsIFx1MDAyNm5ld19hdHRycyk7XG5tbS9kYW1vbi9jb3JlLmMtMjIwMi19XG4tLVxubW0vZGFtb24vY29yZS5jPTM2NDM9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpXG4tLVxubW0vZGFtb24vY29yZS5jLTM2NzItXHRcdCAqIGJlIGNoYW5nZWQgZnJvbSBrZGFtb25kX2NhbGwoKS4gIFJlYWQgdGhlIHZhbHVlcyBoZXJlLCBhbmRcbm1tL2RhbW9uL2NvcmUuYzozNjczOlx0XHQgKiB1c2UgdGhvc2UgZm9yIHRoaXMgaXRlcmF0aW9uLiAgVGhhdCBpcywgZGFtb25fc2V0X2F0dHJzKClcbm1tL2RhbW9uL2NvcmUuYy0zNjc0LVx0XHQgKiB1cGRhdGVkIG5ldyB2YWx1ZXMgYXJlIHJlc3BlY3RlZCBmcm9tIG5leHQgaXRlcmF0aW9uLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNzMzLVx0XHRcdFx0ICogZnJvbSBrZGFtb25kX2NhbGwoKS4gIEluIHRoZSBjYXNlLFxubW0vZGFtb24vY29yZS5jOjM3MzQ6XHRcdFx0XHQgKiBkYW1vbl9zZXRfYXR0cnMoKSB3aGljaCB3aWxsIGJlIGNhbGxlZCBmcm9tXG5tbS9kYW1vbi9jb3JlLmMtMzczNS1cdFx0XHRcdCAqIGtkYW1vbmRfdHVuZV9pbnRlcnZhbCgpIG1heSB3cm9uZ2x5IHRoaW5rXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0yNzE9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMDAtXHR9XG5tbS9kYW1vbi9scnVfc29ydC5jOjMwMTpcdGVyciA9IGRhbW9uX3NldF9hdHRycyhwYXJhbV9jdHgsIFx1MDAyNmF0dHJzKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzAyLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9MTk0PXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTIyNC1cdH1cbm1tL2RhbW9uL3JlY2xhaW0uYzoyMjU6XHRlcnIgPSBkYW1vbl9zZXRfYXR0cnMocGFyYW1fY3R4LCBcdTAwMjZhdHRycyk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMjI2LVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9zdGF0LmM9MTUxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zdGF0X2J1aWxkX2N0eCh2b2lkKVxuLS1cbm1tL2RhbW9uL3N0YXQuYy0xNzUtXHR9O1xubW0vZGFtb24vc3RhdC5jOjE3NjpcdGlmIChkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycykpXG5tbS9kYW1vbi9zdGF0LmMtMTc3LVx0XHRnb3RvIGZyZWVfb3V0O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTg4OT1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4tLVxubW0vZGFtb24vc3lzZnMuYy0xOTA4LVx0fTtcbm1tL2RhbW9uL3N5c2ZzLmM6MTkwOTpcdHJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycyk7XG5tbS9kYW1vbi9zeXNmcy5jLTE5MTAtfVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD02MTk9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MjktXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjMwOlx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcdTAwMjZ2YWxpZF9hdHRycyksIDApO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYzMS1cbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjMzLVx0aW52YWxpZF9hdHRycy5taW5fbnJfcmVnaW9ucyA9IDE7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjM0Olx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcdTAwMjZpbnZhbGlkX2F0dHJzKSwgLUVJTlZBTCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjM1LVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MzctXHRpbnZhbGlkX2F0dHJzLm1heF9ucl9yZWdpb25zID0gOTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2Mzg6XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fc2V0X2F0dHJzKGMsIFx1MDAyNmludmFsaWRfYXR0cnMpLCAtRUlOVkFMKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MzktXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTY0MS1cdGludmFsaWRfYXR0cnMuYWdncl9pbnRlcnZhbCA9IDQ5OTk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjQyOlx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcdTAwMjZpbnZhbGlkX2F0dHJzKSwgLUVJTlZBTCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjQzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEYW1vbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2guIFRoZSBrZXkgdGhpbmcganVtcGluZyBvdXQgYXQgbWUgaXMgdGhhdCBgZGFtb25fc2V0X2F0dHJzYCBpcyBhY2Nlc3NpYmxlIHZpYSBzeXNmcy4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGNoYW5nZSBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtLCBhbmQgd2hhdCBleHRlcm5hbCBjb250cm9sIHdlIGhhdmUuCgpUaGUgY29yZSBvZiB0aGUgZnVuY3Rpb25hbGl0eSBzZWVtcyB0byBiZSBpbiB0aGUgbW9kaWZpY2F0aW9uIG9mIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLiBOb3csIGl04oCZcyBub3Qgb25seSB1cGRhdGluZyB0aGUgcmVzdWx0cywgYnV0IGFsc28gaW5jbHVkZXMgdXBkYXRlcyBmb3IgYHItJmd0O3Byb2JlX2hpdHNgIGFuZCBgci0mZ3Q7bGFzdF9wcm9iZV9oaXRzYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgc2hpZnQ7IHRoaXMgaXMgbW9yZSB0aGFuIGp1c3QgcmVmYWN0b3JpbmcuIEl0JiMzOTtzIGNoYW5naW5nICp3aGF0KiBkYXRhIGlzIGJlaW5nIHRyYWNrZWQsIHdoaWNoIHdpbGwgaGF2ZSBkb3duc3RyZWFtIGVmZmVjdHMuCgpJIGFsc28gc2VlIGEgcmVuYW1lIOKAkyBgZGFtb25fbWF4X25yX2FjY2Vzc2VzYCBoYXMgYmVjb21lIGBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyYC4gT2theSwgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlIGZvciBjbGFyaXR5LCBhbmQgaXQmIzM5O3MgbGVzcyBsaWtlbHkgdG8gYnJlYWsgYW55dGhpbmcsIGJ1dCB0aGUgc2VtYW50aWNzIHdpbGwgaGF2ZSBjaGFuZ2VkIGluIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGVyZSB0aGF0IHZhcmlhYmxlIGlzIHVzZWQgYW5kIG1ha2Ugc3VyZSB0aGUgbmV3IG5hbWUgcmVmbGVjdHMgdGhlIG1lYW5pbmcsIGVzcGVjaWFsbHkgaW4gcmVsYXRpb24gdG8gdGhlIGFnZ3JlZ2F0aW9uIHByb2Nlc3MuCgpGaW5hbGx5LCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYC4gVGhpcyBpcyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbiBuZXh0LiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAgcmlnaHQgYXdheS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjaGFuZ2VzIHRvIGBwcm9iZV9oaXRzYCBhbmQgYGxhc3RfcHJvYmVfaGl0c2AgaW1wYWN0IHRoYXQgZnVuY3Rpb24uIEl0JiMzOTtzIHRoZSBtb3N0IGxpa2VseSBwbGFjZSBmb3Igc3VidGxlIHNpZGUgZWZmZWN0cyBvciBiZWhhdmlvcmFsIGRpZmZlcmVuY2VzIHJlbGF0ZWQgdG8gdGhlIGFjY2VzcyBwYXR0ZXJuIHRyYWNraW5nLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgaWYgdGhlIGNoYW5nZXMgYXJlIGdvaW5nIHRvIGltcGFjdCB0aGUgc3RhdGlzdGljcyB0aGF0IHRoZSBhbGdvcml0aG0gdXNlcyB0byBkZXRlcm1pbmUgbWVtb3J5IGFsbG9jYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTI1Mj11bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc1LVxubW0vZGFtb24vY29yZS5jOjI3Njp1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0yNzctXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9OTA9c3RhdGljIGludCBkYW1vc19zeXNmc19wcm9iZXNfYWRkX2RpcnMoc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlcyAqcHJvYmVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTMtXHRcdHN5c19wcm9iZSA9IGRhbW9zX3N5c2ZzX3Byb2JlX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjExNDpcdFx0XHRcdGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaSwgcmVnaW9uLCBjdHgpKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTUtXHRcdGlmICghc3lzX3Byb2JlKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2ggZm9yIFByb2JlIEhpdCBVcGRhdGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBzcGVjaWZpY2FsbHkgaG93IGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCB0aWVzIGludG8gYGRhbW9zX3N5c2ZzX3Byb2Jlc19hZGRfZGlyc2AuIEl0IHNlZW1zIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAuIFRoZSBtYWluIGNvbmNlcm4gaGVyZSBpcyBjb3JyZWN0bHkgc2NhbGluZyB0aGUgcHJvYmUgaGl0IGNvdW50cyB3aGVuIHRoZSBtb25pdG9yaW5nIHBhcmFtZXRlcnMsIHN1Y2ggYXMgdGhlIGFnZ3JlZ2F0aW9uIG9yIHNhbXBsZSBpbnRlcnZhbHMsIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRqdXN0bWVudCB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHksIHdoaWNoIGlzIGdvb2QuCgpOb3csIGxldCYjMzk7cyByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIHNlZSB3ZSBoYXZlIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9MUlVfU09SVGAsIGBEQU1PTl9SRUNMQUlNYCwgYERBTU9OX1ZBRERSYCwgYW5kIGBEQU1PTl9QQUREUmAuIExvb2tpbmcgYXQgdGhlIGFmZmVjdGVkIGZpbGVzLCBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBhbmQgYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIHRoZSBwYXRjaCB0b3VjaGVzLiBJIGtub3cgdGhhdCBgREFNT05fTFJVX1NPUlRgIGludGVyYWN0cyB3aXRoIGBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyYCwgYW5kIGBEQU1PTl9TWVNGU2AgaXMgdXNlZCB0byB0cmlnZ2VyIGBkYW1vbl9zZXRfYXR0cnNgLiBCYXNlZCBvbiB0aGlzLCBpdCBtYWtlcyBzZW5zZSB0byBlbmFibGUgYERBTU9OYCBhbmQgYERBTU9OX1NZU0ZTYC4KCkkmIzM5O2xsIHF1aWNrbHkgcmV2aWV3IHRoZSBhc3NvY2lhdGVkIHN5bWJvbHMuIEkmIzM5O20gZm9jdXNpbmcgb24gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAsIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCwgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCwgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBhbmQgYGRhbW9uX2hvdF9zY29yZWAuIE5vdywgSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGUgYmVoYXZpb3Igb2YgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBnaXZlbiB0aGVzZSBjaGFuZ2VzLiBJdCYjMzk7cyBjcnVjaWFsIHdlJiMzOTtyZSBub3QgaW50cm9kdWNpbmcgYW55IHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2l0aCB0aGUgdXBkYXRlZCBoaXQgdHJhY2tpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9OTAzPXN0YXRpYyB2b2lkIGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vY29yZS5jLTkyMi1cbm1tL2RhbW9uL2NvcmUuYzo5MjM6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtOTI0LVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXG4tLVxubW0vZGFtb24vY29yZS5jLTk1Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo5NTM6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9jb3JlLmMtOTU0LVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTY3LVx0XHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcbm1tL2RhbW9uL2NvcmUuYzo5Njg6XHRcdFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLFxubW0vZGFtb24vY29yZS5jLTk2OS1cdFx0XHRcdFx0YWdncmVnYXRpbmcsIGN0eCk7XG4tLVxubW0vZGFtb24vY29yZS5jPTEwMTE9aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEwNDAtXG5tbS9kYW1vbi9jb3JlLmM6MTA0MTpcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoY3R4LCBhdHRycywgYWdncmVnYXRpbmcpO1xubW0vZGFtb24vY29yZS5jLTEwNDItXHRjdHgtXHUwMDNlYXR0cnMgPSAqYXR0cnM7XG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTU3OD1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTU5OC1cdFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEwMCwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwMCx9O1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjU5OTpcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjAwLVx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlbnJfYWNjZXNzZXMsIDE1KTtcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjA0LVx0XHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2MDU6XHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXHUwMDI2b2xkX2F0dHJzLCBcdTAwMjZuZXdfYXR0cnMsIGZhbHNlLCBjdHgpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYwNi1cdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVx1MDAzZW5yX2FjY2Vzc2VzLCAxNTApO1xuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MTAtXHRcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxLCAuYWdncl9pbnRlcnZhbCA9IDEwMH07XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjExOlx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFx1MDAyNm9sZF9hdHRycywgXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MTItXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyMzAKCQkJCQkJCW91dHB1dDogMjM4CgkJCQkJCQl0aG91Z2h0czogODIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIENvZGUgQW5hbHlzaXMgZm9yIEZvY3VzZWQgRnV6emluZyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBzb21lIGNvcmUgY2hhbmdlcyB0byBob3cgREFNT04gaGFuZGxlcyBwcm9iZSBoaXRzIGFuZCBhdHRyaWJ1dGUgdXBkYXRlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgbWVtb3J5IG1vbml0b3JpbmcgZnJhbWV3b3JrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGVzZSBjaGFuZ2VzIGZvciBmdXp6aW5nLCBnaXZlbiB0aGVpciBwb3RlbnRpYWwgaW1wYWN0IG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB0aGUga2VybmVsJiMzOTtzIGludGVyYWN0aW9uIHdpdGggdXNlciBzcGFjZS4KClRoZSBwcmltYXJ5IG1vZGlmaWNhdGlvbiBpbnZvbHZlcyB1cGRhdGluZyB0aGUgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBmdW5jdGlvbnMgdG8gaW5jbHVkZSBhIGBjdHhgIHBhcmFtZXRlci4gVGhpcyBsb29rcyBsaWtlIGEgY29udGV4dCBvYmplY3QsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgZnVuY3Rpb25zIGNvbW11bmljYXRlIGFuZCBzaGFyZSBkYXRhLiBBbHNvLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgIGhhcyBiZWVuIGFkZGVkIGFuZCBjYWxsZWQgZnJvbSBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YC4gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgIGlzIGNhbGxlZCBmcm9tIGBkYW1vbl9zZXRfYXR0cnNgLCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGlzIHRoZSBlbnRyeSBwb2ludCB2aWEgc3lzZnMuIFNvLCBhdHRyaWJ1dGUgdXBkYXRlcyBhcmUgZGVmaW5pdGVseSBhIGtleSBhcmVhIG9mIGludGVyZXN0LgoKVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAsIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2AsIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCwgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBhbmQgYGRhbW9uX2hvdF9zY29yZWAgaW4gbXkgZm9jdXMgc3ltYm9scy4KCk5vdywgbGV0IG1lIGNvbmZpcm0gdGhlIHN0YXRpYy9nbG9iYWwgbmF0dXJlIG9mIHRoZXNlIGZ1bmN0aW9ucy4gT2theSwgYGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzYCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBhcmUgc3RhdGljLiBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBhbmQgYGRhbW9uX2hvdF9zY29yZWAgYXJlIGdsb2JhbCwgYW5kIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCBpcyBzdGF0aWMuIFRoaXMgaGVscHMgbWUgbmFycm93IGRvd24gdGhlIGNhbGwgZ3JhcGggYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBwb2ludHMgb2YgZGF0YSBzaGFyaW5nLgoKQmFzZWQgb24gdGhpcywgSSYjMzk7bSBjb25maXJtaW5nIHRoYXQgSSBuZWVkIHRvIGluY2x1ZGUgdGhlc2UgZnVuY3Rpb25zIGluIG15IGZ1enppbmcgdGFyZ2V0IGxpc3Q6CgoqICAgYGRhbW9uX3NldF9hdHRyc2AKKiAgIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYAoqICAgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAKKiAgIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2AKKiAgIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYAoqICAgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgCiogICBgZGFtb25faG90X3Njb3JlYAoKRm9yIGNvbmZpZ3MsIEkmIzM5O2xsIGZvY3VzIG9uIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGFuZCBgREFNT05fTFJVX1NPUlRgLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgREFNT05fTFJVX1NPUlRgIHVzZXMgYERBTU9OX1BBRERSYCwgYnV0IGxldCYjMzk7cyBzdGljayB3aXRoIHRoZSBjb3JlIGNvbmZpZyBzeW1ib2xzIGZvciBub3cuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9uIG5hbWVzLiBZZXAsIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2AsIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCwgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgIGFuZCBgZGFtb25faG90X3Njb3JlYCBhcmUgYWxsIGNvcnJlY3QuCgpJbiBzaG9ydCwgdGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIHByb2JlIGhpdCBzY2FsaW5nIGxvZ2ljIGluIHJlc3BvbnNlIHRvIGNoYW5nZXMgaW4gbW9uaXRvcmluZyBhdHRyaWJ1dGVzIGFjY2Vzc2libGUgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UuIFNwZWNpZmljYWxseSwgbW9kaWZpY2F0aW9ucyB0byBhdHRyaWJ1dGUgdXBkYXRlcyBhbmQgdGhlIGFmZmVjdGVkIHNjb3JpbmcvcHJvYmUgaGl0IGZ1bmN0aW9ucyBzZWVtIHRvIGJlIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBgZGFtb25fbHJ1X3NvcnRgIGtlcm5lbCBtb2R1bGUgaXMgYWxzbyBpbXBvcnRhbnQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2V0X2F0dHJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMmIzM0OywKICAgICYjMzQ7ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0JiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzJiMzNDssCiAgICAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9ob3Rfc2NvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2V0X2F0dHJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMmIzM0OywKICAgICYjMzQ7ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0JiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzJiMzNDssCiAgICAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9ob3Rfc2NvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1NzozNi45NzA5ODIwMDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTAyMjk2NzgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc2V0X2F0dHJzXCIsXG4gICAgXCJkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzXCIsXG4gICAgXCJkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzXCIsXG4gICAgXCJkYW1vbl9wcm9iZV9oaXRzX212c3VtXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gICAgXCJkYW1vbl9ob3Rfc2NvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gY29yZSBsb2dpYyB0byBjb3JyZWN0bHkgc2NhbGUgcHJvYmUgaGl0cyB3aGVuIG1vbml0b3JpbmcgYXR0cmlidXRlcyAobGlrZSBhZ2dyZWdhdGlvbiBpbnRlcnZhbCBvciBzYW1wbGUgaW50ZXJ2YWwpIGFyZSB1cGRhdGVkLiBJdCBhbHNvIHJlbmFtZXMgYSBmdW5jdGlvbiBhbmQgdXBkYXRlcyBpdHMgdXNhZ2UgaW4gYGRhbW9uX2xydV9zb3J0YCBhbmQgYGRhbW9uX2hvdF9zY29yZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IG1vbml0b3JpbmcgZnJhbWV3b3JrIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBhbmQga2VybmVsIG1vZHVsZXMgbGlrZSBgZGFtb25fbHJ1X3NvcnRgLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBhdHRyaWJ1dGUgdXBkYXRlcyBhbmQgdGhlIGFmZmVjdGVkIHNjb3JpbmcvcHJvYmUgaGl0IGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTc6MzYuOTcwOTg4NTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDQ2Mjc1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZWM0ZDQzNzRkOWVmNDFkODA3NmE2NjZkMmE1NzAyZDEzMzhiYTNkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMDY6NTc6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuaW5kZXggMTliN2U4MzliZGUwYjQuLjYzZjU5Njk1N2MxZjFmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbkBAIC0xMDU2LDE1ICsxMDU2LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkYW1vbl90YXJnZXRfaGFzX3BpZChjb25zdCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuIFxcdHJldHVybiBjdHgtXFx1MDAzZW9wcy5pZCA9PSBEQU1PTl9PUFNfVkFERFIgfHwgY3R4LVxcdTAwM2VvcHMuaWQgPT0gREFNT05fT1BTX0ZWQUREUjtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbWF4X25yX2FjY2Vzc2VzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuKy8qIFJldHVybnMgbnVtYmVyIG9mIHNhbXBsZXMgcGVyIGFnZ3JlZ2F0aW9uIGludGVydmFsICovXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoXFxuK1xcdFxcdGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBzYW1wbGVfaW50ZXJ2YWw7XFxuLVxcdHVuc2lnbmVkIGxvbmcgbWF4X25yX2FjY2Vzc2VzO1xcbitcXHR1bnNpZ25lZCBsb25nIG5yX3NhbXBsZXM7XFxuIFxcbiBcXHRzYW1wbGVfaW50ZXJ2YWwgPSBhdHRycy1cXHUwMDNlc2FtcGxlX2ludGVydmFsID8gOiAxO1xcbi1cXHRtYXhfbnJfYWNjZXNzZXMgPSBtaW4oYXR0cnMtXFx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBzYW1wbGVfaW50ZXJ2YWwsXFxuK1xcdG5yX3NhbXBsZXMgPSBtaW4oYXR0cnMtXFx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBzYW1wbGVfaW50ZXJ2YWwsXFxuIFxcdFxcdFxcdCh1bnNpZ25lZCBsb25nKVVJTlRfTUFYKTtcXG4tXFx0cmV0dXJuIG1heF9ucl9hY2Nlc3NlcyA/IDogMTtcXG4rXFx0cmV0dXJuIG5yX3NhbXBsZXMgPyA6IDE7XFxuIH1cXG4gXFxuIFxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcXG5pbmRleCAzOTBlMDBiMzY4NWVmYy4uMTE0NzNhYTFmNzBmNDEgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXFxuKysrIGIvbW0vZGFtb24vY29yZS5jXFxuQEAgLTI5MCw2ICsyOTAsOSBAQCB1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4gXFx0XFx0XFx0Y3R4LVxcdTAwM2VwYXNzZWRfc2FtcGxlX2ludGVydmFscztcXG4gXFx0bGVmdF93aW5kb3dfYnAgPSBtdWx0X2ZyYWMobGVmdF93aW5kb3csIDEwMDAwLCB3aW5kb3dfbGVuKTtcXG4gXFxuK1xcdGlmIChsZWZ0X3dpbmRvd19icCA9PSAxMDAwMClcXG4rXFx0XFx0cmV0dXJuIHItXFx1MDAzZWxhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdO1xcbitcXG4gXFx0cmV0dXJuIGRhbW9uX212c3VtKHItXFx1MDAzZXByb2JlX2hpdHNbcHJvYmVfaWR4XSxcXG4gXFx0XFx0XFx0ci1cXHUwMDNlbGFzdF9wcm9iZV9oaXRzW3Byb2JlX2lkeF0sIGxlZnRfd2luZG93X2JwKTtcXG4gfVxcbkBAIC04NzYsNDMgKzg3OSw1NyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXFxuIFxcdHJldHVybiBhZ2UgKiBvbGRfYXR0cnMtXFx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBuZXdfYXR0cnMtXFx1MDAzZWFnZ3JfaW50ZXJ2YWw7XFxuIH1cXG4gXFxuLS8qIGNvbnZlcnQgYWNjZXNzIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBucl9hY2Nlc3NlcyAqL1xcbi1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FjY2Vzc2VzX2JwX3RvX25yX2FjY2Vzc2VzKFxcbi1cXHRcXHR1bnNpZ25lZCBpbnQgYWNjZXNzZXNfYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuKy8qIGNvbnZlcnQgc2FtcGxlIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBjb3VudCAqL1xcbitzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX3NhbXBsZV9icF90b19jb3VudChcXG4rXFx0XFx0dW5zaWduZWQgaW50IGJwLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbiB7XFxuLVxcdHJldHVybiBhY2Nlc3Nlc19icCAqIGRhbW9uX21heF9ucl9hY2Nlc3NlcyhhdHRycykgLyAxMDAwMDtcXG4rXFx0cmV0dXJuIGJwICogZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihhdHRycykgLyAxMDAwMDtcXG4gfVxcbiBcXG4tLypcXG4tICogQ29udmVydCBucl9hY2Nlc3NlcyB0byBhY2Nlc3MgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApLlxcbi0gKlxcbi0gKiBDYWxsZXJzIHNob3VsZCBlbnN1cmUgYXR0cnMuYWdncl9pbnRlcnZhbCBpcyBub3QgemVybywgbGlrZVxcbi0gKiBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKCkgZG9lcyAuICBPdGhlcndpc2UsIGRpdmlkZS1ieS16ZXJvIHdvdWxkXFxuLSAqIGhhcHBlbi5cXG4tICovXFxuLXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoXFxuLVxcdFxcdHVuc2lnbmVkIGludCBucl9hY2Nlc3Nlcywgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcXG4rLyogY29udmVydCBzYW1wbGUgY291bnQgdG8gcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApICovXFxuK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKFxcbitcXHRcXHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuIHtcXG4tXFx0cmV0dXJuIG11bHRfZnJhYyhucl9hY2Nlc3NlcywgMTAwMDAsIGRhbW9uX21heF9ucl9hY2Nlc3NlcyhhdHRycykpO1xcbitcXHRyZXR1cm4gbXVsdF9mcmFjKGNvdW50LCAxMDAwMCwgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihhdHRycykpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnModW5zaWduZWQgaW50IG5yX2FjY2Vzc2VzLFxcbitzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXFxuIFxcdFxcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycylcXG4ge1xcbi1cXHRyZXR1cm4gZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoXFxuLVxcdFxcdFxcdGRhbW9uX25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKFxcbi1cXHRcXHRcXHRcXHRucl9hY2Nlc3Nlcywgb2xkX2F0dHJzKSxcXG4tXFx0XFx0XFx0bmV3X2F0dHJzKTtcXG4rXFx0cmV0dXJuIGRhbW9uX3NhbXBsZV9icF90b19jb3VudChcXG4rXFx0XFx0XFx0ZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKG5yLCBvbGRfYXR0cnMpLCBuZXdfYXR0cnMpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfcHJvYmVfaGl0cyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbitcXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuK1xcdFxcdGJvb2wgYWdncmVnYXRpbmcsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnA7XFxuK1xcdGludCBpID0gMDtcXG4rXFxuK1xcdGRhbW9uX2Zvcl9lYWNoX3Byb2JlKHAsIGN0eCkge1xcbitcXHRcXHRyLVxcdTAwM2VsYXN0X3Byb2JlX2hpdHNbaV0gPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoXFxuK1xcdFxcdFxcdFxcdHItXFx1MDAzZWxhc3RfcHJvYmVfaGl0c1tpXSwgb2xkX2F0dHJzLCBuZXdfYXR0cnMpO1xcbitcXHRcXHRpZiAoIWFnZ3JlZ2F0aW5nKVxcbitcXHRcXHRcXHRyLVxcdTAwM2Vwcm9iZV9oaXRzW2ldID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKFxcbitcXHRcXHRcXHRcXHRcXHRyLVxcdTAwM2Vwcm9iZV9oaXRzW2ldLCBvbGRfYXR0cnMsXFxuK1xcdFxcdFxcdFxcdFxcdG5ld19hdHRycyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ci1cXHUwMDNlcHJvYmVfaGl0c1tpXSA9IDA7XFxuK1xcdFxcdGkrKztcXG4rXFx0fVxcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4gXFx0XFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLFxcbi1cXHRcXHRib29sIGFnZ3JlZ2F0aW5nKVxcbitcXHRcXHRib29sIGFnZ3JlZ2F0aW5nLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuIHtcXG4tXFx0ci1cXHUwMDNlbGFzdF9ucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnMoXFxuK1xcdGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZywgY3R4KTtcXG4rXFxuK1xcdHItXFx1MDAzZWxhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoXFxuIFxcdFxcdFxcdHItXFx1MDAzZWxhc3RfbnJfYWNjZXNzZXMsIG9sZF9hdHRycywgbmV3X2F0dHJzKTtcXG4gXFx0aWYgKCFhZ2dyZWdhdGluZylcXG4tXFx0XFx0ci1cXHUwMDNlbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKFxcbitcXHRcXHRyLVxcdTAwM2Vucl9hY2Nlc3NlcyA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyhcXG4gXFx0XFx0XFx0XFx0ci1cXHUwMDNlbnJfYWNjZXNzZXMsIG9sZF9hdHRycywgbmV3X2F0dHJzKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHQvKlxcbkBAIC05NDgsOCArOTY1LDggQEAgc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuIFxcbiBcXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodCwgY3R4KVxcbiBcXHRcXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcXG4tXFx0XFx0XFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KFxcbi1cXHRcXHRcXHRcXHRcXHRyLCBvbGRfYXR0cnMsIG5ld19hdHRycywgYWdncmVnYXRpbmcpO1xcbitcXHRcXHRcXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgb2xkX2F0dHJzLCBuZXdfYXR0cnMsXFxuK1xcdFxcdFxcdFxcdFxcdGFnZ3JlZ2F0aW5nLCBjdHgpO1xcbiB9XFxuIFxcbiAvKlxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbmluZGV4IGU4YzM4OWFkMzIyNmY3Li43ZTA3NzA4NGNiMDNhYSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXFxuKysrIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbkBAIC0zMDMsNyArMzAzLDcgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0ZXJyID0gLUVOT01FTTtcXG4tXFx0aG90X3RocmVzID0gZGFtb25fbWF4X25yX2FjY2Vzc2VzKFxcdTAwMjZhdHRycykgKlxcbitcXHRob3RfdGhyZXMgPSBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyKFxcdTAwMjZhdHRycykgKlxcbiBcXHRcXHRob3RfdGhyZXNfYWNjZXNzX2ZyZXEgLyAxMDAwO1xcbiBcXHRob3Rfc2NoZW1lID0gZGFtb25fbHJ1X3NvcnRfbmV3X2hvdF9zY2hlbWUoaG90X3RocmVzKTtcXG4gXFx0aWYgKCFob3Rfc2NoZW1lKVxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9vcHMtY29tbW9uLmMgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcXG5pbmRleCA2YmRkMWNmZDM4NjNhMy4uODljNjk0ZjZlNGZhODkgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jXFxuKysrIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXFxuQEAgLTExMiw3ICsxMTIsNyBAQCBpbnQgZGFtb25faG90X3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuIFxcdGludCBob3RuZXNzO1xcbiBcXG4gXFx0ZnJlcV9zdWJzY29yZSA9IHItXFx1MDAzZW5yX2FjY2Vzc2VzICogREFNT05fTUFYX1NVQlNDT1JFIC9cXG4tXFx0XFx0ZGFtb25fbWF4X25yX2FjY2Vzc2VzKFxcdTAwMjZjLVxcdTAwM2VhdHRycyk7XFxuK1xcdFxcdGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoXFx1MDAyNmMtXFx1MDAzZWF0dHJzKTtcXG4gXFxuIFxcdGFnZV9pbl9zZWMgPSAodW5zaWduZWQgbG9uZylyLVxcdTAwM2VhZ2UgKiBjLVxcdTAwM2VhdHRycy5hZ2dyX2ludGVydmFsIC8gMTAwMDAwMDtcXG4gXFx0aWYgKGFnZV9pbl9zZWMpXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaCBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxcbmluZGV4IDAxMjRmODNiMzliODM5Li5kOTcyODAyNzBjMjdiOCAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcXG4rKysgYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcXG5AQCAtNTc1LDYwICs1NzUsNDUgQEAgc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfcmVnaW9ucyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuIFxcdFxcdFxcdH0sIDMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4te1xcbi1cXHRzdHJ1Y3QgZGFtb25fYXR0cnMgYXR0cnMgPSB7XFxuLVxcdFxcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxMCxcXG4tXFx0XFx0LmFnZ3JfaW50ZXJ2YWwgPSAoKHVuc2lnbmVkIGxvbmcpVUlOVF9NQVggKyAxKSAqIDEwXFxuLVxcdH07XFxuLVxcbi1cXHQvKlxcbi1cXHQgKiBJbiBzb21lIGNhc2VzIHN1Y2ggYXMgMzJiaXQgYXJjaGl0ZWN0dXJlcyB3aGVyZSBVSU5UX01BWCBpc1xcbi1cXHQgKiBVTE9OR19NQVgsIGF0dHJzLmFnZ3JfaW50ZXJ2YWwgYmVjb21lcyB6ZXJvLiAgQ2FsbGluZ1xcbi1cXHQgKiBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgpIGluIHRoZSBjYXNlIHdpbGwgY2F1c2VcXG4tXFx0ICogZGl2aWRlLWJ5LXplcm8uICBTdWNoIGNhc2UgaXMgcHJvaGliaXRlZCBpbiBub3JtYWwgZXhlY3V0aW9uIHNpbmNlXFxuLVxcdCAqIHRoZSBjYXV0aW9uIGlzIGRvY3VtZW50ZWQgb24gdGhlIGNvbW1lbnQgZm9yIHRoZSBmdW5jdGlvbiwgYW5kXFxuLVxcdCAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIHRoZSBjaGVjay4gIFNraXAgdGhlIHRlc3QgaW5cXG4tXFx0ICogdGhlIGNhc2UuXFxuLVxcdCAqL1xcbi1cXHRpZiAoIWF0dHJzLmFnZ3JfaW50ZXJ2YWwpXFxuLVxcdFxcdGt1bml0X3NraXAodGVzdCwgXFxcImFnZ3JfaW50ZXJ2YWwgaXMgemVyby5cXFwiKTtcXG4tXFxuLVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgxMjMsIFxcdTAwMjZhdHRycyksIDApO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuIHtcXG4gXFx0c3RydWN0IGRhbW9uX2F0dHJzIG9sZF9hdHRycyA9IHtcXG4gXFx0XFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEwLCAuYWdncl9pbnRlcnZhbCA9IDEwMDAsfTtcXG4gXFx0c3RydWN0IGRhbW9uX2F0dHJzIG5ld19hdHRycztcXG4gXFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciA9IGRhbW9uX25ld19yZWdpb24oMywgNyk7XFxuK1xcdHN0cnVjdCBkYW1vbl9jdHggKmN0eDtcXG4gXFxuIFxcdGlmICghcilcXG4gXFx0XFx0a3VuaXRfc2tpcCh0ZXN0LCBcXFwicmVnaW9uIGFsbG9jIGZhaWxcXFwiKTtcXG4rXFx0Y3R4ID0gZGFtb25fbmV3X2N0eCgpO1xcbitcXHRpZiAoIWN0eCkge1xcbitcXHRcXHRkYW1vbl9mcmVlX3JlZ2lvbihyKTtcXG4rXFx0XFx0a3VuaXRfc2tpcCh0ZXN0LCBcXFwiY3R4IGFsbG9jIGZhaWxcXFwiKTtcXG4rXFx0fVxcbiBcXG4gXFx0ci1cXHUwMDNlbnJfYWNjZXNzZXMgPSAxNTtcXG4gXFx0ci1cXHUwMDNlYWdlID0gMjA7XFxuIFxcbiBcXHRuZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXtcXG4gXFx0XFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEwMCwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwMCx9O1xcbi1cXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXFx1MDAyNm9sZF9hdHRycywgXFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xcbitcXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXFx1MDAyNm9sZF9hdHRycywgXFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XFxuIFxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2Vucl9hY2Nlc3NlcywgMTUpO1xcbiBcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cXHUwMDNlYWdlLCAyKTtcXG4gXFxuIFxcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xcbiBcXHRcXHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcXG4tXFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFxcdTAwMjZvbGRfYXR0cnMsIFxcdTAwMjZuZXdfYXR0cnMsIGZhbHNlKTtcXG4rXFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFxcdTAwMjZvbGRfYXR0cnMsIFxcdTAwMjZuZXdfYXR0cnMsIGZhbHNlLCBjdHgpO1xcbiBcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cXHUwMDNlbnJfYWNjZXNzZXMsIDE1MCk7XFxuIFxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2VhZ2UsIDIpO1xcbiBcXG4gXFx0bmV3X2F0dHJzID0gKHN0cnVjdCBkYW1vbl9hdHRycyl7XFxuIFxcdFxcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxLCAuYWdncl9pbnRlcnZhbCA9IDEwMH07XFxuLVxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSk7XFxuK1xcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcXG4gXFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXFx1MDAzZW5yX2FjY2Vzc2VzLCAxNTApO1xcbiBcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cXHUwMDNlYWdlLCAyMCk7XFxuIFxcbiBcXHRkYW1vbl9mcmVlX3JlZ2lvbihyKTtcXG4rXFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbkBAIC0xNTcyLDcgKzE1NTcsNiBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc3BsaXRfYWJvdmVfaGFsZl9wcm9ncmVzc2VzKSxcXG4gXFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X29wc19yZWdpc3RyYXRpb24pLFxcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc2V0X3JlZ2lvbnMpLFxcbi1cXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnApLFxcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KSxcXG4gXFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3NldF9hdHRycyksXFxuIFxcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9tdnN1bSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjU3OjM3LjYxNzM1OTkyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQzNzY1Nzk4MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3NldF9hdHRyc1wiLFxuICAgIFwiZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c1wiLFxuICAgIFwiZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0XCIsXG4gICAgXCJkYW1vbl91cGRhdGVfcHJvYmVfaGl0c1wiLFxuICAgIFwiZGFtb25fcHJvYmVfaGl0c19tdnN1bVwiLFxuICAgIFwiZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc1wiLFxuICAgIFwiZGFtb25faG90X3Njb3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWVjNGQ0Mzc0ZDllZjQxZDgwNzZhNjY2ZDJhNTcwMmQxMzM4YmEzZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDY6NTc6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IDE5YjdlODM5YmRlMGI0Li42M2Y1OTY5NTdjMWYxZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTA1NiwxNSArMTA1NiwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZGFtb25fdGFyZ2V0X2hhc19waWQoY29uc3Qgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIFx0cmV0dXJuIGN0eC1cdTAwM2VvcHMuaWQgPT0gREFNT05fT1BTX1ZBRERSIHx8IGN0eC1cdTAwM2VvcHMuaWQgPT0gREFNT05fT1BTX0ZWQUREUjtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbWF4X25yX2FjY2Vzc2VzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4rLyogUmV0dXJucyBudW1iZXIgb2Ygc2FtcGxlcyBwZXIgYWdncmVnYXRpb24gaW50ZXJ2YWwgKi9cbitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyKFxuK1x0XHRjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgc2FtcGxlX2ludGVydmFsO1xuLVx0dW5zaWduZWQgbG9uZyBtYXhfbnJfYWNjZXNzZXM7XG4rXHR1bnNpZ25lZCBsb25nIG5yX3NhbXBsZXM7XG4gXG4gXHRzYW1wbGVfaW50ZXJ2YWwgPSBhdHRycy1cdTAwM2VzYW1wbGVfaW50ZXJ2YWwgPyA6IDE7XG4tXHRtYXhfbnJfYWNjZXNzZXMgPSBtaW4oYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbCAvIHNhbXBsZV9pbnRlcnZhbCxcbitcdG5yX3NhbXBsZXMgPSBtaW4oYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbCAvIHNhbXBsZV9pbnRlcnZhbCxcbiBcdFx0XHQodW5zaWduZWQgbG9uZylVSU5UX01BWCk7XG4tXHRyZXR1cm4gbWF4X25yX2FjY2Vzc2VzID8gOiAxO1xuK1x0cmV0dXJuIG5yX3NhbXBsZXMgPyA6IDE7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggMzkwZTAwYjM2ODVlZmMuLjExNDczYWExZjcwZjQxIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0yOTAsNiArMjkwLDkgQEAgdW5zaWduZWQgY2hhciBkYW1vbl9wcm9iZV9oaXRzX212c3VtKGludCBwcm9iZV9pZHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdFx0Y3R4LVx1MDAzZXBhc3NlZF9zYW1wbGVfaW50ZXJ2YWxzO1xuIFx0bGVmdF93aW5kb3dfYnAgPSBtdWx0X2ZyYWMobGVmdF93aW5kb3csIDEwMDAwLCB3aW5kb3dfbGVuKTtcbiBcbitcdGlmIChsZWZ0X3dpbmRvd19icCA9PSAxMDAwMClcbitcdFx0cmV0dXJuIHItXHUwMDNlbGFzdF9wcm9iZV9oaXRzW3Byb2JlX2lkeF07XG4rXG4gXHRyZXR1cm4gZGFtb25fbXZzdW0oci1cdTAwM2Vwcm9iZV9oaXRzW3Byb2JlX2lkeF0sXG4gXHRcdFx0ci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNbcHJvYmVfaWR4XSwgbGVmdF93aW5kb3dfYnApO1xuIH1cbkBAIC04NzYsNDMgKzg3OSw1NyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXG4gXHRyZXR1cm4gYWdlICogb2xkX2F0dHJzLVx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBuZXdfYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbDtcbiB9XG4gXG4tLyogY29udmVydCBhY2Nlc3MgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApIHRvIG5yX2FjY2Vzc2VzICovXG4tc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9hY2Nlc3Nlc19icF90b19ucl9hY2Nlc3Nlcyhcbi1cdFx0dW5zaWduZWQgaW50IGFjY2Vzc2VzX2JwLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuKy8qIGNvbnZlcnQgc2FtcGxlIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBjb3VudCAqL1xuK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2JwX3RvX2NvdW50KFxuK1x0XHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4ge1xuLVx0cmV0dXJuIGFjY2Vzc2VzX2JwICogZGFtb25fbWF4X25yX2FjY2Vzc2VzKGF0dHJzKSAvIDEwMDAwO1xuK1x0cmV0dXJuIGJwICogZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihhdHRycykgLyAxMDAwMDtcbiB9XG4gXG4tLypcbi0gKiBDb252ZXJ0IG5yX2FjY2Vzc2VzIHRvIGFjY2VzcyByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkuXG4tICpcbi0gKiBDYWxsZXJzIHNob3VsZCBlbnN1cmUgYXR0cnMuYWdncl9pbnRlcnZhbCBpcyBub3QgemVybywgbGlrZVxuLSAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIC4gIE90aGVyd2lzZSwgZGl2aWRlLWJ5LXplcm8gd291bGRcbi0gKiBoYXBwZW4uXG4tICovXG4tc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icChcbi1cdFx0dW5zaWduZWQgaW50IG5yX2FjY2Vzc2VzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuKy8qIGNvbnZlcnQgc2FtcGxlIGNvdW50IHRvIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSAqL1xuK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKFxuK1x0XHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4ge1xuLVx0cmV0dXJuIG11bHRfZnJhYyhucl9hY2Nlc3NlcywgMTAwMDAsIGRhbW9uX21heF9ucl9hY2Nlc3NlcyhhdHRycykpO1xuK1x0cmV0dXJuIG11bHRfZnJhYyhjb3VudCwgMTAwMDAsIGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoYXR0cnMpKTtcbiB9XG4gXG4tc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBucl9hY2Nlc3NlcyxcbitzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXG4gXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycylcbiB7XG4tXHRyZXR1cm4gZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoXG4tXHRcdFx0ZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoXG4tXHRcdFx0XHRucl9hY2Nlc3Nlcywgb2xkX2F0dHJzKSxcbi1cdFx0XHRuZXdfYXR0cnMpO1xuK1x0cmV0dXJuIGRhbW9uX3NhbXBsZV9icF90b19jb3VudChcbitcdFx0XHRkYW1vbl9zYW1wbGVfY291bnRfdG9fYnAobnIsIG9sZF9hdHRycyksIG5ld19hdHRycyk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4rXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcbitcdFx0Ym9vbCBhZ2dyZWdhdGluZywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuK3tcbitcdHN0cnVjdCBkYW1vbl9wcm9iZSAqcDtcbitcdGludCBpID0gMDtcbitcbitcdGRhbW9uX2Zvcl9lYWNoX3Byb2JlKHAsIGN0eCkge1xuK1x0XHRyLVx1MDAzZWxhc3RfcHJvYmVfaGl0c1tpXSA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyhcbitcdFx0XHRcdHItXHUwMDNlbGFzdF9wcm9iZV9oaXRzW2ldLCBvbGRfYXR0cnMsIG5ld19hdHRycyk7XG4rXHRcdGlmICghYWdncmVnYXRpbmcpXG4rXHRcdFx0ci1cdTAwM2Vwcm9iZV9oaXRzW2ldID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKFxuK1x0XHRcdFx0XHRyLVx1MDAzZXByb2JlX2hpdHNbaV0sIG9sZF9hdHRycyxcbitcdFx0XHRcdFx0bmV3X2F0dHJzKTtcbitcdFx0ZWxzZVxuK1x0XHRcdHItXHUwMDNlcHJvYmVfaGl0c1tpXSA9IDA7XG4rXHRcdGkrKztcbitcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcbi1cdFx0Ym9vbCBhZ2dyZWdhdGluZylcbitcdFx0Ym9vbCBhZ2dyZWdhdGluZywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbi1cdHItXHUwMDNlbGFzdF9ucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnMoXG4rXHRkYW1vbl91cGRhdGVfcHJvYmVfaGl0cyhyLCBvbGRfYXR0cnMsIG5ld19hdHRycywgYWdncmVnYXRpbmcsIGN0eCk7XG4rXG4rXHRyLVx1MDAzZWxhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoXG4gXHRcdFx0ci1cdTAwM2VsYXN0X25yX2FjY2Vzc2VzLCBvbGRfYXR0cnMsIG5ld19hdHRycyk7XG4gXHRpZiAoIWFnZ3JlZ2F0aW5nKVxuLVx0XHRyLVx1MDAzZW5yX2FjY2Vzc2VzID0gZGFtb25fbnJfYWNjZXNzZXNfZm9yX25ld19hdHRycyhcbitcdFx0ci1cdTAwM2Vucl9hY2Nlc3NlcyA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyhcbiBcdFx0XHRcdHItXHUwMDNlbnJfYWNjZXNzZXMsIG9sZF9hdHRycywgbmV3X2F0dHJzKTtcbiBcdGVsc2VcbiBcdFx0LypcbkBAIC05NDgsOCArOTY1LDggQEAgc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXG4gXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodCwgY3R4KVxuIFx0XHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcbi1cdFx0XHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoXG4tXHRcdFx0XHRcdHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZyk7XG4rXHRcdFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLFxuK1x0XHRcdFx0XHRhZ2dyZWdhdGluZywgY3R4KTtcbiB9XG4gXG4gLypcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuaW5kZXggZThjMzg5YWQzMjI2ZjcuLjdlMDc3MDg0Y2IwM2FhIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xuKysrIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuQEAgLTMwMyw3ICszMDMsNyBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRlcnIgPSAtRU5PTUVNO1xuLVx0aG90X3RocmVzID0gZGFtb25fbWF4X25yX2FjY2Vzc2VzKFx1MDAyNmF0dHJzKSAqXG4rXHRob3RfdGhyZXMgPSBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyKFx1MDAyNmF0dHJzKSAqXG4gXHRcdGhvdF90aHJlc19hY2Nlc3NfZnJlcSAvIDEwMDA7XG4gXHRob3Rfc2NoZW1lID0gZGFtb25fbHJ1X3NvcnRfbmV3X2hvdF9zY2hlbWUoaG90X3RocmVzKTtcbiBcdGlmICghaG90X3NjaGVtZSlcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9vcHMtY29tbW9uLmMgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcbmluZGV4IDZiZGQxY2ZkMzg2M2EzLi44OWM2OTRmNmU0ZmE4OSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL29wcy1jb21tb24uY1xuKysrIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXG5AQCAtMTEyLDcgKzExMiw3IEBAIGludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdGludCBob3RuZXNzO1xuIFxuIFx0ZnJlcV9zdWJzY29yZSA9IHItXHUwMDNlbnJfYWNjZXNzZXMgKiBEQU1PTl9NQVhfU1VCU0NPUkUgL1xuLVx0XHRkYW1vbl9tYXhfbnJfYWNjZXNzZXMoXHUwMDI2Yy1cdTAwM2VhdHRycyk7XG4rXHRcdGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoXHUwMDI2Yy1cdTAwM2VhdHRycyk7XG4gXG4gXHRhZ2VfaW5fc2VjID0gKHVuc2lnbmVkIGxvbmcpci1cdTAwM2VhZ2UgKiBjLVx1MDAzZWF0dHJzLmFnZ3JfaW50ZXJ2YWwgLyAxMDAwMDAwO1xuIFx0aWYgKGFnZV9pbl9zZWMpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXG5pbmRleCAwMTI0ZjgzYjM5YjgzOS4uZDk3MjgwMjcwYzI3YjggMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcbisrKyBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxuQEAgLTU3NSw2MCArNTc1LDQ1IEBAIHN0YXRpYyB2b2lkIGRhbW9uX3Rlc3Rfc2V0X3JlZ2lvbnMoc3RydWN0IGt1bml0ICp0ZXN0KVxuIFx0XHRcdH0sIDMpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKHN0cnVjdCBrdW5pdCAqdGVzdClcbi17XG4tXHRzdHJ1Y3QgZGFtb25fYXR0cnMgYXR0cnMgPSB7XG4tXHRcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxMCxcbi1cdFx0LmFnZ3JfaW50ZXJ2YWwgPSAoKHVuc2lnbmVkIGxvbmcpVUlOVF9NQVggKyAxKSAqIDEwXG4tXHR9O1xuLVxuLVx0Lypcbi1cdCAqIEluIHNvbWUgY2FzZXMgc3VjaCBhcyAzMmJpdCBhcmNoaXRlY3R1cmVzIHdoZXJlIFVJTlRfTUFYIGlzXG4tXHQgKiBVTE9OR19NQVgsIGF0dHJzLmFnZ3JfaW50ZXJ2YWwgYmVjb21lcyB6ZXJvLiAgQ2FsbGluZ1xuLVx0ICogZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoKSBpbiB0aGUgY2FzZSB3aWxsIGNhdXNlXG4tXHQgKiBkaXZpZGUtYnktemVyby4gIFN1Y2ggY2FzZSBpcyBwcm9oaWJpdGVkIGluIG5vcm1hbCBleGVjdXRpb24gc2luY2Vcbi1cdCAqIHRoZSBjYXV0aW9uIGlzIGRvY3VtZW50ZWQgb24gdGhlIGNvbW1lbnQgZm9yIHRoZSBmdW5jdGlvbiwgYW5kXG4tXHQgKiBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKCkgZG9lcyB0aGUgY2hlY2suICBTa2lwIHRoZSB0ZXN0IGluXG4tXHQgKiB0aGUgY2FzZS5cbi1cdCAqL1xuLVx0aWYgKCFhdHRycy5hZ2dyX2ludGVydmFsKVxuLVx0XHRrdW5pdF9za2lwKHRlc3QsIFwiYWdncl9pbnRlcnZhbCBpcyB6ZXJvLlwiKTtcbi1cbi1cdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgxMjMsIFx1MDAyNmF0dHJzKSwgMCk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBrdW5pdCAqdGVzdClcbiB7XG4gXHRzdHJ1Y3QgZGFtb25fYXR0cnMgb2xkX2F0dHJzID0ge1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMTAsIC5hZ2dyX2ludGVydmFsID0gMTAwMCx9O1xuIFx0c3RydWN0IGRhbW9uX2F0dHJzIG5ld19hdHRycztcbiBcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIgPSBkYW1vbl9uZXdfcmVnaW9uKDMsIDcpO1xuK1x0c3RydWN0IGRhbW9uX2N0eCAqY3R4O1xuIFxuIFx0aWYgKCFyKVxuIFx0XHRrdW5pdF9za2lwKHRlc3QsIFwicmVnaW9uIGFsbG9jIGZhaWxcIik7XG4rXHRjdHggPSBkYW1vbl9uZXdfY3R4KCk7XG4rXHRpZiAoIWN0eCkge1xuK1x0XHRkYW1vbl9mcmVlX3JlZ2lvbihyKTtcbitcdFx0a3VuaXRfc2tpcCh0ZXN0LCBcImN0eCBhbGxvYyBmYWlsXCIpO1xuK1x0fVxuIFxuIFx0ci1cdTAwM2Vucl9hY2Nlc3NlcyA9IDE1O1xuIFx0ci1cdTAwM2VhZ2UgPSAyMDtcbiBcbiBcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMTAwLCAuYWdncl9pbnRlcnZhbCA9IDEwMDAwLH07XG4tXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXHUwMDI2b2xkX2F0dHJzLCBcdTAwMjZuZXdfYXR0cnMsIGZhbHNlKTtcbitcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUpO1xuIFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlYWdlLCAyKTtcbiBcbiBcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcbi1cdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xuK1x0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFx1MDAyNm9sZF9hdHRycywgXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcbiBcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVx1MDAzZW5yX2FjY2Vzc2VzLCAxNTApO1xuIFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlYWdlLCAyKTtcbiBcbiBcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDB9O1xuLVx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFx1MDAyNm9sZF9hdHRycywgXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSk7XG4rXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXHUwMDI2b2xkX2F0dHJzLCBcdTAwMjZuZXdfYXR0cnMsIGZhbHNlLCBjdHgpO1xuIFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlbnJfYWNjZXNzZXMsIDE1MCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2VhZ2UsIDIwKTtcbiBcbiBcdGRhbW9uX2ZyZWVfcmVnaW9uKHIpO1xuK1x0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KVxuQEAgLTE1NzIsNyArMTU1Nyw2IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBkYW1vbl90ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc3BsaXRfYWJvdmVfaGFsZl9wcm9ncmVzc2VzKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9vcHNfcmVnaXN0cmF0aW9uKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9zZXRfcmVnaW9ucyksXG4tXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnApLFxuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdCksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc2V0X2F0dHJzKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9tdnN1bSksXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1NzozNy42MTczNjIyMThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjgwMjQ5NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERBTU9OIENvcmUgTG9naWMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgREFNT04gY29yZSwgYW5kIHRoZSBmaXJzdCB0aGluZyBJIG5vdGljZSBpcyB0aGUgcmVuYW1pbmcgb2YgYGRhbW9uX21heF9ucl9hY2Nlc3Nlc2AgdG8gYGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3JgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIG5hbWUgY2hhbmdlLCBwcm9iYWJseSBmb3IgY2xhcml0eS4gSXQncyBnb29kIHRvIHNlZSB0aGVzZSBpbnRlcm5hbCB2YXJpYWJsZXMgYmVpbmcgcmVmYWN0b3JlZCBmb3IgYmV0dGVyIHVuZGVyc3RhbmRpbmcuXG5cblRoZW4sIHRoZXJlJ3MgYSBtb2RpZmljYXRpb24gdG8gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAsIGZvY3VzaW5nIG9uIHVwZGF0aW5nIHByb2JlIGhpdHMg4oCTIGByLVx1MDAzZXByb2JlX2hpdHNbaV1gIGFuZCBgci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNbaV1gLiBPa2F5LCBzbyB3ZSdyZSByZWZpbmluZyBob3cgcHJvYmUgaGl0IGRhdGEgaXMgaGFuZGxlZC4gQSBuZXcgZnVuY3Rpb24sIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2AsIGhhcyBiZWVuIGFkZGVkLCB3aGljaCBzdWdnZXN0cyBhIHBvc3NpYmxlIHJlZmFjdG9yaW5nIHRvIGVuY2Fwc3VsYXRlIHNvbWUgb2YgdGhhdCBsb2dpYy5cblxuVGhlIGNoYW5nZSB0byBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAgdG8gcmV0dXJuIGByLVx1MDAzZWxhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdYCB1bmRlciB0aGUgY29uZGl0aW9uIHRoYXQgYGxlZnRfd2luZG93X2JwID09IDEwMDAwYCBpcyBpbnRlcmVzdGluZy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb250ZXh0IG9mIHRoYXQgc3BlY2lmaWMgY29uZGl0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSB0aGVyZS4gSXQgbGlrZWx5IHJlbGF0ZXMgdG8gaG93IHRoZSBhZ2dyZWdhdGlvbiB3aW5kb3cgb3IgYmFzZSBwb2ludGVyIGNhbGN1bGF0aW9ucyBhcmUgYmVoYXZpbmcgaW4gdGhhdCBlZGdlIGNhc2UuXG5cbk5leHQsIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgIGFuZCBgZGFtb25fdGVzdF91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLCBib3RoIG5vdyB0YWtpbmcgdGhlIGBjdHhgIGFyZ3VtZW50LiBUaGF0IHNpZ25hbHMgc29tZSBjb250ZXh0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHRvIHRoZXNlIGZ1bmN0aW9ucy4gVGhpcyBpcyBwcm9iYWJseSB0byBmYWNpbGl0YXRlIHBhc3Npbmcgc29tZSBjcnVjaWFsIHJ1bnRpbWUgaW5mb3JtYXRpb24gaW50byB0aGUgbW9uaXRvcmluZyB1cGRhdGUgcGF0aC5cblxuQW5kIGZpbmFsbHksIHRoZSByZW1vdmFsIG9mIGBkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwYC4gVGhpcyBzdWdnZXN0cyBzb21lIHRlc3QgY29kZSBoYXMgYmVlbiByZW1vdmVkLiBIb3BlZnVsbHksIHRoZSBmdW5jdGlvbmFsaXR5IGlzIG1haW50YWluZWQgdmlhIG90aGVyLCBtb3JlIGVmZmljaWVudCB0ZXN0IHBhdGhzLlxuXG5CZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIG5lZWQgdG8gY29uZmlybSBEQU1PTiBpcyBldmVuIGFjdGl2ZSBhbmQgdGVzdGFibGUuIE9mIGNvdXJzZSwgaXQgaXMuIEFzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmZWF0dXJlLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBJIGtub3cgREFNT04gaGFzIHRoZSBzeXNmcyBpbnRlcmZhY2UsIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSwgYW5kIGlzIHVzZWQgYnkgbW9kdWxlcyBsaWtlIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9yZWNsYWltYC4gSXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgY29uZmlnIG9wdGlvbnMgcmVsYXRlZCB0byBEQU1PTidzIGJlaGF2aW9yIHRoYXQgbWlnaHQgYmUgaGVscGZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1Nzo0NC4yOTc2MTM4NjhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NzMxNjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9Mz1tZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbm1tL2RhbW9uL0tjb25maWctNC1cXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXFxubW0vZGFtb24vS2NvbmZpZy02LVxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTQtXFxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxubW0vZGFtb24vS2NvbmZpZy0xNi1cXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMjUtXFxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMzctXFxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNDYtXFxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxcbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNjctXFxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcXG5tbS9kYW1vbi9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNzUtXFxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNzctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxcbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy05OS1cXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMDctXFxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMTUtXFxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXFxubW0vZGFtb24vS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTc6NDQuNDA3MzUxNTQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ2ODc0NzM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVjZW50IERBTU9OIEtlcm5lbCBNb2RpZmljYXRpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGVzZSBEQU1PTiBjaGFuZ2VzLiBGaXJzdCwgSSBzZWUgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkIGFyZSBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGFuZCBgREFNT05fTFJVX1NPUlRgLiBJbW1lZGlhdGVseSwgYERBTU9OYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBqdW1wIG91dCBhcyB0aGUgbW9zdCByZWxldmFudCwgZ2l2ZW4gdGhlIGZpbGVzIG1vZGlmaWVkOiBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYW5kIHRoZSBLVW5pdCBoZWFkZXIuXG5cbk5vdywgbGV0J3MgZXhhbWluZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSB0b3VjaGVkLiBJJ3ZlIGdvdDogYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBgZGFtb25fc2FtcGxlX2JwX3RvX2NvdW50YCwgYGRhbW9uX3NhbXBsZV9jb3VudF90b19icGAsIGBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnNgLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgLCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgLCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGFuZCBgZGFtb25faG90X3Njb3JlYC4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzLCBhcmUgYW55IG9mIHRoZXNlIGZ1bmN0aW9ucyBleHBvc2VkIHRvIHVzZXJzcGFjZT8gVGhhdCdzIHdoYXQgcmVhbGx5IG1hdHRlcnMgd2hlbiB5b3UncmUgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGludGVyYWN0aW9uLiBPa2F5LCBzbyBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AgaXMgY2FsbGVkIGZyb20gYGtkYW1vbmRfZm5gLCB3aGljaCBpcyB0aGUgREFNT04gbWFpbiB0aHJlYWQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCBpcyBjYWxsZWQgZnJvbSB0aGUgYGRhbW9uX2xydV9zb3J0X3RpbWVyYCBvciBgZGFtb25fbHJ1X3NvcnRfdHVybm9uYCByb3V0aW5lcywgd2hpY2ggaW1wbGllcyB0aGVzZSBhcmUgcHJvYmFibHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LiBBbmQgYGRhbW9uX2hvdF9zY29yZWAgaXMgaW52b2tlZCB2aWEgb3BzLlxuXG5JJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGUgYWNjZXNzaWJpbGl0eSBvZiBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AuIFRoaXMgaXMgd2hlcmUgSSdsbCBkaWcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjU3OjUwLjg3NjEwMjE1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI5MjU0ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTkyMz1zdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NTItICovXFxubW0vZGFtb24vY29yZS5jOjk1MzpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9jb3JlLmMtOTU0LVxcdFxcdHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLCBib29sIGFnZ3JlZ2F0aW5nKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTEwMTE9aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTA0MC1cXG5tbS9kYW1vbi9jb3JlLmM6MTA0MTpcXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKGN0eCwgYXR0cnMsIGFnZ3JlZ2F0aW5nKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTA0Mi1cXHRjdHgtXFx1MDAzZWF0dHJzID0gKmF0dHJzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1Nzo1MC45ODkwMzQyNjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjYyNTUzMTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhIGFuZCB0aGlua2luZyB0aGlzIHRocm91Z2g6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrOiBgZGFtb25fc2V0X2F0dHJzYCBhbmQgSXRzIE9yaWdpbnMqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBmbG93IGhlcmUuIEknbSBmb2N1c2luZyBvbiBgZGFtb25fc2V0X2F0dHJzYC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpIGZyYW1ld29yay4gVGhlIGltcG9ydGFudCB0aGluZyB0byBub3RlIGlzIHRoYXQgYGRhbW9uX3NldF9hdHRyc2AgaXMgYmVpbmcgdHJpZ2dlcmVkIGZyb20gZWl0aGVyIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgIG9yIGEgZnVuY3Rpb24gc2ltaWxhciB0byBpdC4gVGhpcyBjb25uZWN0aW9uIGlzIGtleSBiZWNhdXNlIGl0IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IGFjdGluZyB1cG9uIHVzZXIgaW5wdXQgb3IgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBwcm9iYWJseSB0aHJvdWdoIGEgc3lzZnMgaW50ZXJmYWNlLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdmVyaWZ5IGlmIGl0J3MgdGhlIG9ubHkgcGF0aCwgYmVjYXVzZSBvdGhlciBwYXRocyB3b3VsZCBjaGFuZ2UgdGhlIG5hdHVyZSBvZiB0aGlzIHRob3VnaHQuIFRoYXQgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyBmdW5kYW1lbnRhbCB0byBoYW5kbGluZyBhbmQgYXBwbHlpbmcgY2hhbmdlcyB0byBEQU1PTidzIGJlaGF2aW9yIHRoYXQgYXJlIGRyaXZlbiBieSBleHRlcm5hbCBpbnRlcmFjdGlvbnMsIHN1Y2ggYXMgdGhvc2UgaW5pdGlhdGVkIHRocm91Z2ggdGhlIHN5c3RlbSBmaWxlIHN5c3RlbS4gVGhlIHF1ZXN0aW9uIG5vdyBpcyB3aGF0IGtpbmQgb2YgYXR0cmlidXRlcyBhcmUgYmVpbmcgc2V0LiBJcyBpdCByYXRlLCB0aHJlc2hvbGRzLCBzaXplLCByZWdpb24sIHRhcmdldCwgb3Igc29tZSBvdGhlciBjb25maWd1cmFibGUgc2V0dGluZz8gQWxzbywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2UgYmVpbmcgaW1wbGVtZW50ZWQgZHluYW1pY2FsbHk/IEFyZSB0aGVyZSBhbnkgdGhyZWFkIHNhZmV0eSBjb25jZXJucz8gQW55IHJhY2UgY29uZGl0aW9ucyB0byBjb25zaWRlciBiZWNhdXNlIG9mIHRoaXM/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmIGFuZCB0cmFjZSBpdHMgaW50ZXJhY3Rpb25zIHRvIGZ1bGx5IGdyYXNwIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NjksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1Nzo1NC42NTE1ODk4ODFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MjM1NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3NldF9hdHRyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTk3Nj1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTk5MS0vKipcXG5tbS9kYW1vbi9jb3JlLmM6OTkyOiAqIGRhbW9uX3NldF9hdHRycygpIC0gU2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBtb25pdG9yaW5nLlxcbm1tL2RhbW9uL2NvcmUuYy05OTMtICogQGN0eDpcXHRcXHRtb25pdG9yaW5nIGNvbnRleHRcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMDEwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMDExOmludCBkYW1vbl9zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMDEyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNjg0PXN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3MTQtXFx0ICogc2NoZW1lcyBhbmQgdGFyZ2V0cyBzaG91bGQgYmUgdXBkYXRlZCBmaXJzdCwgc2luY2VcXG5tbS9kYW1vbi9jb3JlLmM6MTcxNTpcXHQgKiAxLiBkYW1vbl9zZXRfYXR0cnMoKSB1cGRhdGVzIG1vbml0b3JpbmcgcmVzdWx0cyBvZiB0YXJnZXRzIGFuZFxcbm1tL2RhbW9uL2NvcmUuYy0xNzE2LVxcdCAqIG5leHRfYXBwbHlfc2lzIG9mIHNjaGVtZXMsIGFuZFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3MjAtXFx0aWYgKCFkYW1vbl9hdHRyc19lcXVhbHMoXFx1MDAyNmRzdC1cXHUwMDNlYXR0cnMsIFxcdTAwMjZzcmMtXFx1MDAzZWF0dHJzKSkge1xcbm1tL2RhbW9uL2NvcmUuYzoxNzIxOlxcdFxcdGVyciA9IGRhbW9uX3NldF9hdHRycyhkc3QsIFxcdTAwMjZzcmMtXFx1MDAzZWF0dHJzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTcyMi1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjE4Mj1zdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIHZvaWQga2RhbW9uZF90dW5lX2ludGVydmFscyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIyMDAtXFx0dHJhY2VfZGFtb25fbW9uaXRvcl9pbnRlcnZhbHNfdHVuZShuZXdfYXR0cnMuc2FtcGxlX2ludGVydmFsKTtcXG5tbS9kYW1vbi9jb3JlLmM6MjIwMTpcXHRkYW1vbl9zZXRfYXR0cnMoYywgXFx1MDAyNm5ld19hdHRycyk7XFxubW0vZGFtb24vY29yZS5jLTIyMDItfVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTM2NDM9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzY3Mi1cXHRcXHQgKiBiZSBjaGFuZ2VkIGZyb20ga2RhbW9uZF9jYWxsKCkuICBSZWFkIHRoZSB2YWx1ZXMgaGVyZSwgYW5kXFxubW0vZGFtb24vY29yZS5jOjM2NzM6XFx0XFx0ICogdXNlIHRob3NlIGZvciB0aGlzIGl0ZXJhdGlvbi4gIFRoYXQgaXMsIGRhbW9uX3NldF9hdHRycygpXFxubW0vZGFtb24vY29yZS5jLTM2NzQtXFx0XFx0ICogdXBkYXRlZCBuZXcgdmFsdWVzIGFyZSByZXNwZWN0ZWQgZnJvbSBuZXh0IGl0ZXJhdGlvbi5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zNzMzLVxcdFxcdFxcdFxcdCAqIGZyb20ga2RhbW9uZF9jYWxsKCkuICBJbiB0aGUgY2FzZSxcXG5tbS9kYW1vbi9jb3JlLmM6MzczNDpcXHRcXHRcXHRcXHQgKiBkYW1vbl9zZXRfYXR0cnMoKSB3aGljaCB3aWxsIGJlIGNhbGxlZCBmcm9tXFxubW0vZGFtb24vY29yZS5jLTM3MzUtXFx0XFx0XFx0XFx0ICoga2RhbW9uZF90dW5lX2ludGVydmFsKCkgbWF5IHdyb25nbHkgdGhpbmtcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MjcxPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMDAtXFx0fVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MzAxOlxcdGVyciA9IGRhbW9uX3NldF9hdHRycyhwYXJhbV9jdHgsIFxcdTAwMjZhdHRycyk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMDItXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYz0xOTQ9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnModm9pZClcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMjQtXFx0fVxcbm1tL2RhbW9uL3JlY2xhaW0uYzoyMjU6XFx0ZXJyID0gZGFtb25fc2V0X2F0dHJzKHBhcmFtX2N0eCwgXFx1MDAyNmF0dHJzKTtcXG5tbS9kYW1vbi9yZWNsYWltLmMtMjI2LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9zdGF0LmM9MTUxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zdGF0X2J1aWxkX2N0eCh2b2lkKVxcbi0tXFxubW0vZGFtb24vc3RhdC5jLTE3NS1cXHR9O1xcbm1tL2RhbW9uL3N0YXQuYzoxNzY6XFx0aWYgKGRhbW9uX3NldF9hdHRycyhjdHgsIFxcdTAwMjZhdHRycykpXFxubW0vZGFtb24vc3RhdC5jLTE3Ny1cXHRcXHRnb3RvIGZyZWVfb3V0O1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xODg5PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTkwOC1cXHR9O1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTkwOTpcXHRyZXR1cm4gZGFtb25fc2V0X2F0dHJzKGN0eCwgXFx1MDAyNmF0dHJzKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTE5MTAtfVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTYxOT1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3NldF9hdHRycyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjI5LVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2MzA6XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcXHUwMDI2dmFsaWRfYXR0cnMpLCAwKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjMxLVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYzMy1cXHRpbnZhbGlkX2F0dHJzLm1pbl9ucl9yZWdpb25zID0gMTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjM0OlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9zZXRfYXR0cnMoYywgXFx1MDAyNmludmFsaWRfYXR0cnMpLCAtRUlOVkFMKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjM1LVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYzNy1cXHRpbnZhbGlkX2F0dHJzLm1heF9ucl9yZWdpb25zID0gOTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjM4OlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9zZXRfYXR0cnMoYywgXFx1MDAyNmludmFsaWRfYXR0cnMpLCAtRUlOVkFMKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjM5LVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTY0MS1cXHRpbnZhbGlkX2F0dHJzLmFnZ3JfaW50ZXJ2YWwgPSA0OTk5O1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2NDI6XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcXHUwMDI2aW52YWxpZF9hdHRycyksIC1FSU5WQUwpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02NDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjU3OjU0Ljc4MDg4NTYxOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MDIwMTE5NzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGFtb24gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2guIFRoZSBrZXkgdGhpbmcganVtcGluZyBvdXQgYXQgbWUgaXMgdGhhdCBgZGFtb25fc2V0X2F0dHJzYCBpcyBhY2Nlc3NpYmxlIHZpYSBzeXNmcy4gVGhhdCdzIGEgY3JpdGljYWwgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgY2hhbmdlIGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0sIGFuZCB3aGF0IGV4dGVybmFsIGNvbnRyb2wgd2UgaGF2ZS5cblxuVGhlIGNvcmUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgc2VlbXMgdG8gYmUgaW4gdGhlIG1vZGlmaWNhdGlvbiBvZiBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YC4gTm93LCBpdOKAmXMgbm90IG9ubHkgdXBkYXRpbmcgdGhlIHJlc3VsdHMsIGJ1dCBhbHNvIGluY2x1ZGVzIHVwZGF0ZXMgZm9yIGByLVx1MDAzZXByb2JlX2hpdHNgIGFuZCBgci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNgLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBzaGlmdDsgdGhpcyBpcyBtb3JlIHRoYW4ganVzdCByZWZhY3RvcmluZy4gSXQncyBjaGFuZ2luZyAqd2hhdCogZGF0YSBpcyBiZWluZyB0cmFja2VkLCB3aGljaCB3aWxsIGhhdmUgZG93bnN0cmVhbSBlZmZlY3RzLlxuXG5JIGFsc28gc2VlIGEgcmVuYW1lIOKAkyBgZGFtb25fbWF4X25yX2FjY2Vzc2VzYCBoYXMgYmVjb21lIGBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyYC4gT2theSwgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlIGZvciBjbGFyaXR5LCBhbmQgaXQncyBsZXNzIGxpa2VseSB0byBicmVhayBhbnl0aGluZywgYnV0IHRoZSBzZW1hbnRpY3Mgd2lsbCBoYXZlIGNoYW5nZWQgaW4gdGhlIGNvZGUuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgd2hlcmUgdGhhdCB2YXJpYWJsZSBpcyB1c2VkIGFuZCBtYWtlIHN1cmUgdGhlIG5ldyBuYW1lIHJlZmxlY3RzIHRoZSBtZWFuaW5nLCBlc3BlY2lhbGx5IGluIHJlbGF0aW9uIHRvIHRoZSBhZ2dyZWdhdGlvbiBwcm9jZXNzLlxuXG5GaW5hbGx5LCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYC4gVGhpcyBpcyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbiBuZXh0LiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCByaWdodCBhd2F5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNoYW5nZXMgdG8gYHByb2JlX2hpdHNgIGFuZCBgbGFzdF9wcm9iZV9oaXRzYCBpbXBhY3QgdGhhdCBmdW5jdGlvbi4gSXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgZm9yIHN1YnRsZSBzaWRlIGVmZmVjdHMgb3IgYmVoYXZpb3JhbCBkaWZmZXJlbmNlcyByZWxhdGVkIHRvIHRoZSBhY2Nlc3MgcGF0dGVybiB0cmFja2luZy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZpbmQgaWYgdGhlIGNoYW5nZXMgYXJlIGdvaW5nIHRvIGltcGFjdCB0aGUgc3RhdGlzdGljcyB0aGF0IHRoZSBhbGdvcml0aG0gdXNlcyB0byBkZXRlcm1pbmUgbWVtb3J5IGFsbG9jYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTg6MTIuODAxMDA3NDYxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU1NzQ4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fcHJvYmVfaGl0c19tdnN1bVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI1Mj11bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzUtXFxubW0vZGFtb24vY29yZS5jOjI3Njp1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMjc3LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz05MD1zdGF0aWMgaW50IGRhbW9zX3N5c2ZzX3Byb2Jlc19hZGRfZGlycyhzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpwcm9iZXMsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTEzLVxcdFxcdHN5c19wcm9iZSA9IGRhbW9zX3N5c2ZzX3Byb2JlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMTQ6XFx0XFx0XFx0XFx0ZGFtb25fcHJvYmVfaGl0c19tdnN1bShpLCByZWdpb24sIGN0eCkpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTUtXFx0XFx0aWYgKCFzeXNfcHJvYmUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTg6MTIuOTA2NTkwNDg5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5ODAxMTQwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCBmb3IgUHJvYmUgSGl0IFVwZGF0ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBzcGVjaWZpY2FsbHkgaG93IGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCB0aWVzIGludG8gYGRhbW9zX3N5c2ZzX3Byb2Jlc19hZGRfZGlyc2AuIEl0IHNlZW1zIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAuIFRoZSBtYWluIGNvbmNlcm4gaGVyZSBpcyBjb3JyZWN0bHkgc2NhbGluZyB0aGUgcHJvYmUgaGl0IGNvdW50cyB3aGVuIHRoZSBtb25pdG9yaW5nIHBhcmFtZXRlcnMsIHN1Y2ggYXMgdGhlIGFnZ3JlZ2F0aW9uIG9yIHNhbXBsZSBpbnRlcnZhbHMsIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRqdXN0bWVudCB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHksIHdoaWNoIGlzIGdvb2QuXG5cbk5vdywgbGV0J3MgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBzZWUgd2UgaGF2ZSBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fTFJVX1NPUlRgLCBgREFNT05fUkVDTEFJTWAsIGBEQU1PTl9WQUREUmAsIGFuZCBgREFNT05fUEFERFJgLiBMb29raW5nIGF0IHRoZSBhZmZlY3RlZCBmaWxlcywgYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYW5kIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCB0aGUgcGF0Y2ggdG91Y2hlcy4gSSBrbm93IHRoYXQgYERBTU9OX0xSVV9TT1JUYCBpbnRlcmFjdHMgd2l0aCBgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncmAsIGFuZCBgREFNT05fU1lTRlNgIGlzIHVzZWQgdG8gdHJpZ2dlciBgZGFtb25fc2V0X2F0dHJzYC4gQmFzZWQgb24gdGhpcywgaXQgbWFrZXMgc2Vuc2UgdG8gZW5hYmxlIGBEQU1PTmAgYW5kIGBEQU1PTl9TWVNGU2AuXG5cbkknbGwgcXVpY2tseSByZXZpZXcgdGhlIGFzc29jaWF0ZWQgc3ltYm9scy4gSSdtIGZvY3VzaW5nIG9uIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAsIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBOb3csIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhlIGJlaGF2aW9yIG9mIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgIGFuZCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AgZ2l2ZW4gdGhlc2UgY2hhbmdlcy4gSXQncyBjcnVjaWFsIHdlJ3JlIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aXRoIHRoZSB1cGRhdGVkIGhpdCB0cmFja2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTg6MTguODg2NzA4NDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDgzMDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz05MDM9c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05MjItXFxubW0vZGFtb24vY29yZS5jOjkyMzpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtOTI0LVxcdFxcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NTItICovXFxubW0vZGFtb24vY29yZS5jOjk1MzpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9jb3JlLmMtOTU0LVxcdFxcdHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLCBib29sIGFnZ3JlZ2F0aW5nKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTk2Ny1cXHRcXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcXG5tbS9kYW1vbi9jb3JlLmM6OTY4OlxcdFxcdFxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBvbGRfYXR0cnMsIG5ld19hdHRycyxcXG5tbS9kYW1vbi9jb3JlLmMtOTY5LVxcdFxcdFxcdFxcdFxcdGFnZ3JlZ2F0aW5nLCBjdHgpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTEwMTE9aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTA0MC1cXG5tbS9kYW1vbi9jb3JlLmM6MTA0MTpcXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKGN0eCwgYXR0cnMsIGFnZ3JlZ2F0aW5nKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTA0Mi1cXHRjdHgtXFx1MDAzZWF0dHJzID0gKmF0dHJzO1xcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTU3OD1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNTk4LVxcdFxcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxMDAsIC5hZ2dyX2ludGVydmFsID0gMTAwMDAsfTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NTk5OlxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjAwLVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2Vucl9hY2Nlc3NlcywgMTUpO1xcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYwNC1cXHRcXHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjA1OlxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjA2LVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MTAtXFx0XFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEsIC5hZ2dyX2ludGVydmFsID0gMTAwfTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjExOlxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjEyLVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTg6MTkuMDAxNTQ0MzU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyODMzMzkxMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIENvZGUgQW5hbHlzaXMgZm9yIEZvY3VzZWQgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbWFraW5nIHNvbWUgY29yZSBjaGFuZ2VzIHRvIGhvdyBEQU1PTiBoYW5kbGVzIHByb2JlIGhpdHMgYW5kIGF0dHJpYnV0ZSB1cGRhdGVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBtZW1vcnkgbW9uaXRvcmluZyBmcmFtZXdvcmsuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIGNoYW5nZXMgZm9yIGZ1enppbmcsIGdpdmVuIHRoZWlyIHBvdGVudGlhbCBpbXBhY3Qgb24gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHRoZSBrZXJuZWwncyBpbnRlcmFjdGlvbiB3aXRoIHVzZXIgc3BhY2UuXG5cblRoZSBwcmltYXJ5IG1vZGlmaWNhdGlvbiBpbnZvbHZlcyB1cGRhdGluZyB0aGUgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBmdW5jdGlvbnMgdG8gaW5jbHVkZSBhIGBjdHhgIHBhcmFtZXRlci4gVGhpcyBsb29rcyBsaWtlIGEgY29udGV4dCBvYmplY3QsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgZnVuY3Rpb25zIGNvbW11bmljYXRlIGFuZCBzaGFyZSBkYXRhLiBBbHNvLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgIGhhcyBiZWVuIGFkZGVkIGFuZCBjYWxsZWQgZnJvbSBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YC4gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgIGlzIGNhbGxlZCBmcm9tIGBkYW1vbl9zZXRfYXR0cnNgLCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGlzIHRoZSBlbnRyeSBwb2ludCB2aWEgc3lzZnMuIFNvLCBhdHRyaWJ1dGUgdXBkYXRlcyBhcmUgZGVmaW5pdGVseSBhIGtleSBhcmVhIG9mIGludGVyZXN0LlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBpbmNsdWRlIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AsIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgLCBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAsIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgIGluIG15IGZvY3VzIHN5bWJvbHMuXG5cbk5vdywgbGV0IG1lIGNvbmZpcm0gdGhlIHN0YXRpYy9nbG9iYWwgbmF0dXJlIG9mIHRoZXNlIGZ1bmN0aW9ucy4gT2theSwgYGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzYCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBhcmUgc3RhdGljLiBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBhbmQgYGRhbW9uX2hvdF9zY29yZWAgYXJlIGdsb2JhbCwgYW5kIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCBpcyBzdGF0aWMuIFRoaXMgaGVscHMgbWUgbmFycm93IGRvd24gdGhlIGNhbGwgZ3JhcGggYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBwb2ludHMgb2YgZGF0YSBzaGFyaW5nLlxuXG5CYXNlZCBvbiB0aGlzLCBJJ20gY29uZmlybWluZyB0aGF0IEkgbmVlZCB0byBpbmNsdWRlIHRoZXNlIGZ1bmN0aW9ucyBpbiBteSBmdXp6aW5nIHRhcmdldCBsaXN0OlxuXG4qICAgYGRhbW9uX3NldF9hdHRyc2BcbiogICBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2BcbiogICBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YFxuKiAgIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2BcbiogICBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWBcbiogICBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2BcbiogICBgZGFtb25faG90X3Njb3JlYFxuXG5Gb3IgY29uZmlncywgSSdsbCBmb2N1cyBvbiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBhbmQgYERBTU9OX0xSVV9TT1JUYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYERBTU9OX0xSVV9TT1JUYCB1c2VzIGBEQU1PTl9QQUREUmAsIGJ1dCBsZXQncyBzdGljayB3aXRoIHRoZSBjb3JlIGNvbmZpZyBzeW1ib2xzIGZvciBub3cuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb24gbmFtZXMuIFllcCwgYGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzYCwgYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgIGFyZSBhbGwgY29ycmVjdC5cblxuSW4gc2hvcnQsIHRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgY29yZSBwcm9iZSBoaXQgc2NhbGluZyBsb2dpYyBpbiByZXNwb25zZSB0byBjaGFuZ2VzIGluIG1vbml0b3JpbmcgYXR0cmlidXRlcyBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIG1vZGlmaWNhdGlvbnMgdG8gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMgc2VlbSB0byBiZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgYGRhbW9uX2xydV9zb3J0YCBrZXJuZWwgbW9kdWxlIGlzIGFsc28gaW1wb3J0YW50IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjMwLCJPdXRwdXRUb2tlbnMiOjIzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1ODozMS44MzQ5Mzg5MjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg5OTQ4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zZXRfYXR0cnNcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdFwiLFxuICAgIFwiZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNcIixcbiAgICBcImRhbW9uX3Byb2JlX2hpdHNfbXZzdW1cIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX2hvdF9zY29yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQU1PTiBjb3JlIGxvZ2ljIHRvIGNvcnJlY3RseSBzY2FsZSBwcm9iZSBoaXRzIHdoZW4gbW9uaXRvcmluZyBhdHRyaWJ1dGVzIChsaWtlIGFnZ3JlZ2F0aW9uIGludGVydmFsIG9yIHNhbXBsZSBpbnRlcnZhbCkgYXJlIHVwZGF0ZWQuIEl0IGFsc28gcmVuYW1lcyBhIGZ1bmN0aW9uIGFuZCB1cGRhdGVzIGl0cyB1c2FnZSBpbiBgZGFtb25fbHJ1X3NvcnRgIGFuZCBgZGFtb25faG90X3Njb3JlYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgbW9uaXRvcmluZyBmcmFtZXdvcmsgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGFuZCBrZXJuZWwgbW9kdWxlcyBsaWtlIGBkYW1vbl9scnVfc29ydGAuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGF0dHJpYnV0ZSB1cGRhdGVzIGFuZCB0aGUgYWZmZWN0ZWQgc2NvcmluZy9wcm9iZSBoaXQgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zZXRfYXR0cnNcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdFwiLFxuICAgIFwiZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNcIixcbiAgICBcImRhbW9uX3Byb2JlX2hpdHNfbXZzdW1cIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX2hvdF9zY29yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQU1PTiBjb3JlIGxvZ2ljIHRvIGNvcnJlY3RseSBzY2FsZSBwcm9iZSBoaXRzIHdoZW4gbW9uaXRvcmluZyBhdHRyaWJ1dGVzIChsaWtlIGFnZ3JlZ2F0aW9uIGludGVydmFsIG9yIHNhbXBsZSBpbnRlcnZhbCkgYXJlIHVwZGF0ZWQuIEl0IGFsc28gcmVuYW1lcyBhIGZ1bmN0aW9uIGFuZCB1cGRhdGVzIGl0cyB1c2FnZSBpbiBgZGFtb25fbHJ1X3NvcnRgIGFuZCBgZGFtb25faG90X3Njb3JlYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgbW9uaXRvcmluZyBmcmFtZXdvcmsgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGFuZCBrZXJuZWwgbW9kdWxlcyBsaWtlIGBkYW1vbl9scnVfc29ydGAuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGF0dHJpYnV0ZSB1cGRhdGVzIGFuZCB0aGUgYWZmZWN0ZWQgc2NvcmluZy9wcm9iZSBoaXQgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowv5mwv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 06:36:23 +0000 UTC FinishedAt: 2026-07-09 06:58:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_LRU_SORT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_LRU_SORT" ], "series_id": "c23b5281-6a7c-4d3f-94e2-a8b27767cfe8" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_set_attrs", "damon_update_monitoring_results", "damon_update_monitoring_result", "damon_update_probe_hits", "damon_probe_hits_mvsum", "damon_lru_sort_apply_parameters", "damon_hot_score" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2V0X2F0dHJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMmIzM0OywKICAgICYjMzQ7ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0JiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzJiMzNDssCiAgICAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9ob3Rfc2NvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZWM0ZDQzNzRkOWVmNDFkODA3NmE2NjZkMmE1NzAyZDEzMzhiYTNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAwNjo1NzozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IDE5YjdlODM5YmRlMGI0Li42M2Y1OTY5NTdjMWYxZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTA1NiwxNSAmIzQzOzEwNTYsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGRhbW9uX3RhcmdldF9oYXNfcGlkKGNvbnN0IHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdHJldHVybiBjdHgtXHUwMDNlb3BzLmlkID09IERBTU9OX09QU19WQUREUiB8fCBjdHgtXHUwMDNlb3BzLmlkID09IERBTU9OX09QU19GVkFERFI7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuJiM0MzsvKiBSZXR1cm5zIG51bWJlciBvZiBzYW1wbGVzIHBlciBhZ2dyZWdhdGlvbiBpbnRlcnZhbCAqL1xuJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyKFxuJiM0MztcdFx0Y29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHNhbXBsZV9pbnRlcnZhbDtcbi1cdHVuc2lnbmVkIGxvbmcgbWF4X25yX2FjY2Vzc2VzO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgbnJfc2FtcGxlcztcbiBcbiBcdHNhbXBsZV9pbnRlcnZhbCA9IGF0dHJzLVx1MDAzZXNhbXBsZV9pbnRlcnZhbCA/IDogMTtcbi1cdG1heF9ucl9hY2Nlc3NlcyA9IG1pbihhdHRycy1cdTAwM2VhZ2dyX2ludGVydmFsIC8gc2FtcGxlX2ludGVydmFsLFxuJiM0MztcdG5yX3NhbXBsZXMgPSBtaW4oYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbCAvIHNhbXBsZV9pbnRlcnZhbCxcbiBcdFx0XHQodW5zaWduZWQgbG9uZylVSU5UX01BWCk7XG4tXHRyZXR1cm4gbWF4X25yX2FjY2Vzc2VzID8gOiAxO1xuJiM0MztcdHJldHVybiBucl9zYW1wbGVzID8gOiAxO1xuIH1cbiBcbiBcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDM5MGUwMGIzNjg1ZWZjLi4xMTQ3M2FhMWY3MGY0MSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMjkwLDYgJiM0MzsyOTAsOSBAQCB1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdFx0XHRjdHgtXHUwMDNlcGFzc2VkX3NhbXBsZV9pbnRlcnZhbHM7XG4gXHRsZWZ0X3dpbmRvd19icCA9IG11bHRfZnJhYyhsZWZ0X3dpbmRvdywgMTAwMDAsIHdpbmRvd19sZW4pO1xuIFxuJiM0MztcdGlmIChsZWZ0X3dpbmRvd19icCA9PSAxMDAwMClcbiYjNDM7XHRcdHJldHVybiByLVx1MDAzZWxhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdO1xuJiM0MztcbiBcdHJldHVybiBkYW1vbl9tdnN1bShyLVx1MDAzZXByb2JlX2hpdHNbcHJvYmVfaWR4XSxcbiBcdFx0XHRyLVx1MDAzZWxhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdLCBsZWZ0X3dpbmRvd19icCk7XG4gfVxuQEAgLTg3Niw0MyAmIzQzOzg3OSw1NyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXG4gXHRyZXR1cm4gYWdlICogb2xkX2F0dHJzLVx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBuZXdfYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbDtcbiB9XG4gXG4tLyogY29udmVydCBhY2Nlc3MgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApIHRvIG5yX2FjY2Vzc2VzICovXG4tc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9hY2Nlc3Nlc19icF90b19ucl9hY2Nlc3Nlcyhcbi1cdFx0dW5zaWduZWQgaW50IGFjY2Vzc2VzX2JwLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuJiM0MzsvKiBjb252ZXJ0IHNhbXBsZSByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgdG8gY291bnQgKi9cbiYjNDM7c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4ge1xuLVx0cmV0dXJuIGFjY2Vzc2VzX2JwICogZGFtb25fbWF4X25yX2FjY2Vzc2VzKGF0dHJzKSAvIDEwMDAwO1xuJiM0MztcdHJldHVybiBicCAqIGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoYXR0cnMpIC8gMTAwMDA7XG4gfVxuIFxuLS8qXG4tICogQ29udmVydCBucl9hY2Nlc3NlcyB0byBhY2Nlc3MgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApLlxuLSAqXG4tICogQ2FsbGVycyBzaG91bGQgZW5zdXJlIGF0dHJzLmFnZ3JfaW50ZXJ2YWwgaXMgbm90IHplcm8sIGxpa2Vcbi0gKiBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKCkgZG9lcyAuICBPdGhlcndpc2UsIGRpdmlkZS1ieS16ZXJvIHdvdWxkXG4tICogaGFwcGVuLlxuLSAqL1xuLXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoXG4tXHRcdHVuc2lnbmVkIGludCBucl9hY2Nlc3Nlcywgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbiYjNDM7LyogY29udmVydCBzYW1wbGUgY291bnQgdG8gcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApICovXG4mIzQzO3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKFxuJiM0MztcdFx0dW5zaWduZWQgaW50IGNvdW50LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuIHtcbi1cdHJldHVybiBtdWx0X2ZyYWMobnJfYWNjZXNzZXMsIDEwMDAwLCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoYXR0cnMpKTtcbiYjNDM7XHRyZXR1cm4gbXVsdF9mcmFjKGNvdW50LCAxMDAwMCwgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihhdHRycykpO1xuIH1cbiBcbi1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnModW5zaWduZWQgaW50IG5yX2FjY2Vzc2VzLFxuJiM0MztzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXG4gXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycylcbiB7XG4tXHRyZXR1cm4gZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoXG4tXHRcdFx0ZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoXG4tXHRcdFx0XHRucl9hY2Nlc3Nlcywgb2xkX2F0dHJzKSxcbi1cdFx0XHRuZXdfYXR0cnMpO1xuJiM0MztcdHJldHVybiBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXG4mIzQzO1x0XHRcdGRhbW9uX3NhbXBsZV9jb3VudF90b19icChuciwgb2xkX2F0dHJzKSwgbmV3X2F0dHJzKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiYjNDM7XHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcbiYjNDM7XHRcdGJvb2wgYWdncmVnYXRpbmcsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9wcm9iZSAqcDtcbiYjNDM7XHRpbnQgaSA9IDA7XG4mIzQzO1xuJiM0MztcdGRhbW9uX2Zvcl9lYWNoX3Byb2JlKHAsIGN0eCkge1xuJiM0MztcdFx0ci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNbaV0gPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoXG4mIzQzO1x0XHRcdFx0ci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNbaV0sIG9sZF9hdHRycywgbmV3X2F0dHJzKTtcbiYjNDM7XHRcdGlmICghYWdncmVnYXRpbmcpXG4mIzQzO1x0XHRcdHItXHUwMDNlcHJvYmVfaGl0c1tpXSA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyhcbiYjNDM7XHRcdFx0XHRcdHItXHUwMDNlcHJvYmVfaGl0c1tpXSwgb2xkX2F0dHJzLFxuJiM0MztcdFx0XHRcdFx0bmV3X2F0dHJzKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ci1cdTAwM2Vwcm9iZV9oaXRzW2ldID0gMDtcbiYjNDM7XHRcdGkmIzQzOyYjNDM7O1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcbi1cdFx0Ym9vbCBhZ2dyZWdhdGluZylcbiYjNDM7XHRcdGJvb2wgYWdncmVnYXRpbmcsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiB7XG4tXHRyLVx1MDAzZWxhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKFxuJiM0MztcdGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZywgY3R4KTtcbiYjNDM7XG4mIzQzO1x0ci1cdTAwM2VsYXN0X25yX2FjY2Vzc2VzID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKFxuIFx0XHRcdHItXHUwMDNlbGFzdF9ucl9hY2Nlc3Nlcywgb2xkX2F0dHJzLCBuZXdfYXR0cnMpO1xuIFx0aWYgKCFhZ2dyZWdhdGluZylcbi1cdFx0ci1cdTAwM2Vucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnMoXG4mIzQzO1x0XHRyLVx1MDAzZW5yX2FjY2Vzc2VzID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKFxuIFx0XHRcdFx0ci1cdTAwM2Vucl9hY2Nlc3Nlcywgb2xkX2F0dHJzLCBuZXdfYXR0cnMpO1xuIFx0ZWxzZVxuIFx0XHQvKlxuQEAgLTk0OCw4ICYjNDM7OTY1LDggQEAgc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXG4gXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodCwgY3R4KVxuIFx0XHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcbi1cdFx0XHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoXG4tXHRcdFx0XHRcdHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZyk7XG4mIzQzO1x0XHRcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBvbGRfYXR0cnMsIG5ld19hdHRycyxcbiYjNDM7XHRcdFx0XHRcdGFnZ3JlZ2F0aW5nLCBjdHgpO1xuIH1cbiBcbiAvKlxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCBlOGMzODlhZDMyMjZmNy4uN2UwNzcwODRjYjAzYWEgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtMzAzLDcgJiM0MzszMDMsNyBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRlcnIgPSAtRU5PTUVNO1xuLVx0aG90X3RocmVzID0gZGFtb25fbWF4X25yX2FjY2Vzc2VzKFx1MDAyNmF0dHJzKSAqXG4mIzQzO1x0aG90X3RocmVzID0gZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihcdTAwMjZhdHRycykgKlxuIFx0XHRob3RfdGhyZXNfYWNjZXNzX2ZyZXEgLyAxMDAwO1xuIFx0aG90X3NjaGVtZSA9IGRhbW9uX2xydV9zb3J0X25ld19ob3Rfc2NoZW1lKGhvdF90aHJlcyk7XG4gXHRpZiAoIWhvdF9zY2hlbWUpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXG5pbmRleCA2YmRkMWNmZDM4NjNhMy4uODljNjk0ZjZlNGZhODkgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9vcHMtY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL29wcy1jb21tb24uY1xuQEAgLTExMiw3ICYjNDM7MTEyLDcgQEAgaW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFx0aW50IGhvdG5lc3M7XG4gXG4gXHRmcmVxX3N1YnNjb3JlID0gci1cdTAwM2Vucl9hY2Nlc3NlcyAqIERBTU9OX01BWF9TVUJTQ09SRSAvXG4tXHRcdGRhbW9uX21heF9ucl9hY2Nlc3NlcyhcdTAwMjZjLVx1MDAzZWF0dHJzKTtcbiYjNDM7XHRcdGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoXHUwMDI2Yy1cdTAwM2VhdHRycyk7XG4gXG4gXHRhZ2VfaW5fc2VjID0gKHVuc2lnbmVkIGxvbmcpci1cdTAwM2VhZ2UgKiBjLVx1MDAzZWF0dHJzLmFnZ3JfaW50ZXJ2YWwgLyAxMDAwMDAwO1xuIFx0aWYgKGFnZV9pbl9zZWMpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXG5pbmRleCAwMTI0ZjgzYjM5YjgzOS4uZDk3MjgwMjcwYzI3YjggMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxuQEAgLTU3NSw2MCAmIzQzOzU3NSw0NSBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3NldF9yZWdpb25zKHN0cnVjdCBrdW5pdCAqdGVzdClcbiBcdFx0XHR9LCAzKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZGFtb25fdGVzdF9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4te1xuLVx0c3RydWN0IGRhbW9uX2F0dHJzIGF0dHJzID0ge1xuLVx0XHQuc2FtcGxlX2ludGVydmFsID0gMTAsXG4tXHRcdC5hZ2dyX2ludGVydmFsID0gKCh1bnNpZ25lZCBsb25nKVVJTlRfTUFYICYjNDM7IDEpICogMTBcbi1cdH07XG4tXG4tXHQvKlxuLVx0ICogSW4gc29tZSBjYXNlcyBzdWNoIGFzIDMyYml0IGFyY2hpdGVjdHVyZXMgd2hlcmUgVUlOVF9NQVggaXNcbi1cdCAqIFVMT05HX01BWCwgYXR0cnMuYWdncl9pbnRlcnZhbCBiZWNvbWVzIHplcm8uICBDYWxsaW5nXG4tXHQgKiBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgpIGluIHRoZSBjYXNlIHdpbGwgY2F1c2Vcbi1cdCAqIGRpdmlkZS1ieS16ZXJvLiAgU3VjaCBjYXNlIGlzIHByb2hpYml0ZWQgaW4gbm9ybWFsIGV4ZWN1dGlvbiBzaW5jZVxuLVx0ICogdGhlIGNhdXRpb24gaXMgZG9jdW1lbnRlZCBvbiB0aGUgY29tbWVudCBmb3IgdGhlIGZ1bmN0aW9uLCBhbmRcbi1cdCAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIHRoZSBjaGVjay4gIFNraXAgdGhlIHRlc3QgaW5cbi1cdCAqIHRoZSBjYXNlLlxuLVx0ICovXG4tXHRpZiAoIWF0dHJzLmFnZ3JfaW50ZXJ2YWwpXG4tXHRcdGt1bml0X3NraXAodGVzdCwgXCYjMzQ7YWdncl9pbnRlcnZhbCBpcyB6ZXJvLlwmIzM0Oyk7XG4tXG4tXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoMTIzLCBcdTAwMjZhdHRycyksIDApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4ge1xuIFx0c3RydWN0IGRhbW9uX2F0dHJzIG9sZF9hdHRycyA9IHtcbiBcdFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEwLCAuYWdncl9pbnRlcnZhbCA9IDEwMDAsfTtcbiBcdHN0cnVjdCBkYW1vbl9hdHRycyBuZXdfYXR0cnM7XG4gXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyID0gZGFtb25fbmV3X3JlZ2lvbigzLCA3KTtcbiYjNDM7XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XG4gXG4gXHRpZiAoIXIpXG4gXHRcdGt1bml0X3NraXAodGVzdCwgXCYjMzQ7cmVnaW9uIGFsbG9jIGZhaWxcJiMzNDspO1xuJiM0MztcdGN0eCA9IGRhbW9uX25ld19jdHgoKTtcbiYjNDM7XHRpZiAoIWN0eCkge1xuJiM0MztcdFx0ZGFtb25fZnJlZV9yZWdpb24ocik7XG4mIzQzO1x0XHRrdW5pdF9za2lwKHRlc3QsIFwmIzM0O2N0eCBhbGxvYyBmYWlsXCYjMzQ7KTtcbiYjNDM7XHR9XG4gXG4gXHRyLVx1MDAzZW5yX2FjY2Vzc2VzID0gMTU7XG4gXHRyLVx1MDAzZWFnZSA9IDIwO1xuIFxuIFx0bmV3X2F0dHJzID0gKHN0cnVjdCBkYW1vbl9hdHRycyl7XG4gXHRcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxMDAsIC5hZ2dyX2ludGVydmFsID0gMTAwMDAsfTtcbi1cdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xuJiM0MztcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUpO1xuIFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlYWdlLCAyKTtcbiBcbiBcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcbi1cdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xuJiM0MztcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcbiBcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVx1MDAzZWFnZSwgMik7XG4gXG4gXHRuZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXtcbiBcdFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEsIC5hZ2dyX2ludGVydmFsID0gMTAwfTtcbi1cdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xuJiM0MztcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcbiBcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVx1MDAzZWFnZSwgMjApO1xuIFxuIFx0ZGFtb25fZnJlZV9yZWdpb24ocik7XG4mIzQzO1x0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KVxuQEAgLTE1NzIsNyAmIzQzOzE1NTcsNiBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3NwbGl0X2Fib3ZlX2hhbGZfcHJvZ3Jlc3NlcyksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfb3BzX3JlZ2lzdHJhdGlvbiksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc2V0X3JlZ2lvbnMpLFxuLVx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQpLFxuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3NldF9hdHRycyksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfbXZzdW0pLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2V0X2F0dHJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMmIzM0OywKICAgICYjMzQ7ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0JiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzJiMzNDssCiAgICAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9ob3Rfc2NvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVlYzRkNDM3NGQ5ZWY0MWQ4MDc2YTY2NmQyYTU3MDJkMTMzOGJhM2QKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCA5IDA2OjU3OjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oCmluZGV4IDE5YjdlODM5YmRlMGI0Li42M2Y1OTY5NTdjMWYxZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaApAQCAtMTA1NiwxNSAmIzQzOzEwNTYsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGRhbW9uX3RhcmdldF9oYXNfcGlkKGNvbnN0IHN0cnVjdCBkYW1vbl9jdHggKmN0eCkKIAlyZXR1cm4gY3R4LSZndDtvcHMuaWQgPT0gREFNT05fT1BTX1ZBRERSIHx8IGN0eC0mZ3Q7b3BzLmlkID09IERBTU9OX09QU19GVkFERFI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKQomIzQzOy8qIFJldHVybnMgbnVtYmVyIG9mIHNhbXBsZXMgcGVyIGFnZ3JlZ2F0aW9uIGludGVydmFsICovCiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncigKJiM0MzsJCWNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpCiB7CiAJdW5zaWduZWQgbG9uZyBzYW1wbGVfaW50ZXJ2YWw7Ci0JdW5zaWduZWQgbG9uZyBtYXhfbnJfYWNjZXNzZXM7CiYjNDM7CXVuc2lnbmVkIGxvbmcgbnJfc2FtcGxlczsKIAogCXNhbXBsZV9pbnRlcnZhbCA9IGF0dHJzLSZndDtzYW1wbGVfaW50ZXJ2YWwgPyA6IDE7Ci0JbWF4X25yX2FjY2Vzc2VzID0gbWluKGF0dHJzLSZndDthZ2dyX2ludGVydmFsIC8gc2FtcGxlX2ludGVydmFsLAomIzQzOwlucl9zYW1wbGVzID0gbWluKGF0dHJzLSZndDthZ2dyX2ludGVydmFsIC8gc2FtcGxlX2ludGVydmFsLAogCQkJKHVuc2lnbmVkIGxvbmcpVUlOVF9NQVgpOwotCXJldHVybiBtYXhfbnJfYWNjZXNzZXMgPyA6IDE7CiYjNDM7CXJldHVybiBucl9zYW1wbGVzID8gOiAxOwogfQogCiAKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCAzOTBlMDBiMzY4NWVmYy4uMTE0NzNhYTFmNzBmNDEgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTI5MCw2ICYjNDM7MjkwLDkgQEAgdW5zaWduZWQgY2hhciBkYW1vbl9wcm9iZV9oaXRzX212c3VtKGludCBwcm9iZV9pZHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsCiAJCQljdHgtJmd0O3Bhc3NlZF9zYW1wbGVfaW50ZXJ2YWxzOwogCWxlZnRfd2luZG93X2JwID0gbXVsdF9mcmFjKGxlZnRfd2luZG93LCAxMDAwMCwgd2luZG93X2xlbik7CiAKJiM0MzsJaWYgKGxlZnRfd2luZG93X2JwID09IDEwMDAwKQomIzQzOwkJcmV0dXJuIHItJmd0O2xhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdOwomIzQzOwogCXJldHVybiBkYW1vbl9tdnN1bShyLSZndDtwcm9iZV9oaXRzW3Byb2JlX2lkeF0sCiAJCQlyLSZndDtsYXN0X3Byb2JlX2hpdHNbcHJvYmVfaWR4XSwgbGVmdF93aW5kb3dfYnApOwogfQpAQCAtODc2LDQzICYjNDM7ODc5LDU3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fYWdlX2Zvcl9uZXdfYXR0cnModW5zaWduZWQgaW50IGFnZSwKIAlyZXR1cm4gYWdlICogb2xkX2F0dHJzLSZndDthZ2dyX2ludGVydmFsIC8gbmV3X2F0dHJzLSZndDthZ2dyX2ludGVydmFsOwogfQogCi0vKiBjb252ZXJ0IGFjY2VzcyByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgdG8gbnJfYWNjZXNzZXMgKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoCi0JCXVuc2lnbmVkIGludCBhY2Nlc3Nlc19icCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycykKJiM0MzsvKiBjb252ZXJ0IHNhbXBsZSByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgdG8gY291bnQgKi8KJiM0MztzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX3NhbXBsZV9icF90b19jb3VudCgKJiM0MzsJCXVuc2lnbmVkIGludCBicCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycykKIHsKLQlyZXR1cm4gYWNjZXNzZXNfYnAgKiBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoYXR0cnMpIC8gMTAwMDA7CiYjNDM7CXJldHVybiBicCAqIGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoYXR0cnMpIC8gMTAwMDA7CiB9CiAKLS8qCi0gKiBDb252ZXJ0IG5yX2FjY2Vzc2VzIHRvIGFjY2VzcyByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkuCi0gKgotICogQ2FsbGVycyBzaG91bGQgZW5zdXJlIGF0dHJzLmFnZ3JfaW50ZXJ2YWwgaXMgbm90IHplcm8sIGxpa2UKLSAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIC4gIE90aGVyd2lzZSwgZGl2aWRlLWJ5LXplcm8gd291bGQKLSAqIGhhcHBlbi4KLSAqLwotc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgKLQkJdW5zaWduZWQgaW50IG5yX2FjY2Vzc2VzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKQomIzQzOy8qIGNvbnZlcnQgc2FtcGxlIGNvdW50IHRvIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSAqLwomIzQzO3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKAomIzQzOwkJdW5zaWduZWQgaW50IGNvdW50LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKQogewotCXJldHVybiBtdWx0X2ZyYWMobnJfYWNjZXNzZXMsIDEwMDAwLCBkYW1vbl9tYXhfbnJfYWNjZXNzZXMoYXR0cnMpKTsKJiM0MzsJcmV0dXJuIG11bHRfZnJhYyhjb3VudCwgMTAwMDAsIGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoYXR0cnMpKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBucl9hY2Nlc3NlcywKJiM0MztzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsCiAJCXN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycykKIHsKLQlyZXR1cm4gZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoCi0JCQlkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgKLQkJCQlucl9hY2Nlc3Nlcywgb2xkX2F0dHJzKSwKLQkJCW5ld19hdHRycyk7CiYjNDM7CXJldHVybiBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoCiYjNDM7CQkJZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKG5yLCBvbGRfYXR0cnMpLCBuZXdfYXR0cnMpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfcHJvYmVfaGl0cyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAomIzQzOwkJc3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLAomIzQzOwkJYm9vbCBhZ2dyZWdhdGluZywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IGRhbW9uX3Byb2JlICpwOwomIzQzOwlpbnQgaSA9IDA7CiYjNDM7CiYjNDM7CWRhbW9uX2Zvcl9lYWNoX3Byb2JlKHAsIGN0eCkgewomIzQzOwkJci0mZ3Q7bGFzdF9wcm9iZV9oaXRzW2ldID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKAomIzQzOwkJCQlyLSZndDtsYXN0X3Byb2JlX2hpdHNbaV0sIG9sZF9hdHRycywgbmV3X2F0dHJzKTsKJiM0MzsJCWlmICghYWdncmVnYXRpbmcpCiYjNDM7CQkJci0mZ3Q7cHJvYmVfaGl0c1tpXSA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycygKJiM0MzsJCQkJCXItJmd0O3Byb2JlX2hpdHNbaV0sIG9sZF9hdHRycywKJiM0MzsJCQkJCW5ld19hdHRycyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJci0mZ3Q7cHJvYmVfaGl0c1tpXSA9IDA7CiYjNDM7CQlpJiM0MzsmIzQzOzsKJiM0MzsJfQogfQogCiBzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwKIAkJc3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLAotCQlib29sIGFnZ3JlZ2F0aW5nKQomIzQzOwkJYm9vbCBhZ2dyZWdhdGluZywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogewotCXItJmd0O2xhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKAomIzQzOwlkYW1vbl91cGRhdGVfcHJvYmVfaGl0cyhyLCBvbGRfYXR0cnMsIG5ld19hdHRycywgYWdncmVnYXRpbmcsIGN0eCk7CiYjNDM7CiYjNDM7CXItJmd0O2xhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoCiAJCQlyLSZndDtsYXN0X25yX2FjY2Vzc2VzLCBvbGRfYXR0cnMsIG5ld19hdHRycyk7CiAJaWYgKCFhZ2dyZWdhdGluZykKLQkJci0mZ3Q7bnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKAomIzQzOwkJci0mZ3Q7bnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoCiAJCQkJci0mZ3Q7bnJfYWNjZXNzZXMsIG9sZF9hdHRycywgbmV3X2F0dHJzKTsKIAllbHNlCiAJCS8qCkBAIC05NDgsOCAmIzQzOzk2NSw4IEBAIHN0YXRpYyB2b2lkIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LAogCiAJZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHQsIGN0eCkKIAkJZGFtb25fZm9yX2VhY2hfcmVnaW9uKHIsIHQpCi0JCQlkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoCi0JCQkJCXIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZyk7CiYjNDM7CQkJZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLAomIzQzOwkJCQkJYWdncmVnYXRpbmcsIGN0eCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuYwppbmRleCBlOGMzODlhZDMyMjZmNy4uN2UwNzcwODRjYjAzYWEgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vbHJ1X3NvcnQuYwpAQCAtMzAzLDcgJiM0MzszMDMsNyBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZCkKIAkJZ290byBvdXQ7CiAKIAllcnIgPSAtRU5PTUVNOwotCWhvdF90aHJlcyA9IGRhbW9uX21heF9ucl9hY2Nlc3NlcygmYW1wO2F0dHJzKSAqCiYjNDM7CWhvdF90aHJlcyA9IGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoJmFtcDthdHRycykgKgogCQlob3RfdGhyZXNfYWNjZXNzX2ZyZXEgLyAxMDAwOwogCWhvdF9zY2hlbWUgPSBkYW1vbl9scnVfc29ydF9uZXdfaG90X3NjaGVtZShob3RfdGhyZXMpOwogCWlmICghaG90X3NjaGVtZSkKZGlmZiAtLWdpdCBhL21tL2RhbW9uL29wcy1jb21tb24uYyBiL21tL2RhbW9uL29wcy1jb21tb24uYwppbmRleCA2YmRkMWNmZDM4NjNhMy4uODljNjk0ZjZlNGZhODkgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL29wcy1jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmMKQEAgLTExMiw3ICYjNDM7MTEyLDcgQEAgaW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCWludCBob3RuZXNzOwogCiAJZnJlcV9zdWJzY29yZSA9IHItJmd0O25yX2FjY2Vzc2VzICogREFNT05fTUFYX1NVQlNDT1JFIC8KLQkJZGFtb25fbWF4X25yX2FjY2Vzc2VzKCZhbXA7Yy0mZ3Q7YXR0cnMpOwomIzQzOwkJZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncigmYW1wO2MtJmd0O2F0dHJzKTsKIAogCWFnZV9pbl9zZWMgPSAodW5zaWduZWQgbG9uZylyLSZndDthZ2UgKiBjLSZndDthdHRycy5hZ2dyX2ludGVydmFsIC8gMTAwMDAwMDsKIAlpZiAoYWdlX2luX3NlYykKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaCBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaAppbmRleCAwMTI0ZjgzYjM5YjgzOS4uZDk3MjgwMjcwYzI3YjggMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaAomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgKQEAgLTU3NSw2MCAmIzQzOzU3NSw0NSBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3NldF9yZWdpb25zKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkJCX0sIDMpOwogfQogCi1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKHN0cnVjdCBrdW5pdCAqdGVzdCkKLXsKLQlzdHJ1Y3QgZGFtb25fYXR0cnMgYXR0cnMgPSB7Ci0JCS5zYW1wbGVfaW50ZXJ2YWwgPSAxMCwKLQkJLmFnZ3JfaW50ZXJ2YWwgPSAoKHVuc2lnbmVkIGxvbmcpVUlOVF9NQVggJiM0MzsgMSkgKiAxMAotCX07Ci0KLQkvKgotCSAqIEluIHNvbWUgY2FzZXMgc3VjaCBhcyAzMmJpdCBhcmNoaXRlY3R1cmVzIHdoZXJlIFVJTlRfTUFYIGlzCi0JICogVUxPTkdfTUFYLCBhdHRycy5hZ2dyX2ludGVydmFsIGJlY29tZXMgemVyby4gIENhbGxpbmcKLQkgKiBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgpIGluIHRoZSBjYXNlIHdpbGwgY2F1c2UKLQkgKiBkaXZpZGUtYnktemVyby4gIFN1Y2ggY2FzZSBpcyBwcm9oaWJpdGVkIGluIG5vcm1hbCBleGVjdXRpb24gc2luY2UKLQkgKiB0aGUgY2F1dGlvbiBpcyBkb2N1bWVudGVkIG9uIHRoZSBjb21tZW50IGZvciB0aGUgZnVuY3Rpb24sIGFuZAotCSAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIHRoZSBjaGVjay4gIFNraXAgdGhlIHRlc3QgaW4KLQkgKiB0aGUgY2FzZS4KLQkgKi8KLQlpZiAoIWF0dHJzLmFnZ3JfaW50ZXJ2YWwpCi0JCWt1bml0X3NraXAodGVzdCwgJiMzNDthZ2dyX2ludGVydmFsIGlzIHplcm8uJiMzNDspOwotCi0JS1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKDEyMywgJmFtcDthdHRycyksIDApOwotfQotCiBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc3RydWN0IGRhbW9uX2F0dHJzIG9sZF9hdHRycyA9IHsKIAkJLnNhbXBsZV9pbnRlcnZhbCA9IDEwLCAuYWdncl9pbnRlcnZhbCA9IDEwMDAsfTsKIAlzdHJ1Y3QgZGFtb25fYXR0cnMgbmV3X2F0dHJzOwogCXN0cnVjdCBkYW1vbl9yZWdpb24gKnIgPSBkYW1vbl9uZXdfcmVnaW9uKDMsIDcpOwomIzQzOwlzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7CiAKIAlpZiAoIXIpCiAJCWt1bml0X3NraXAodGVzdCwgJiMzNDtyZWdpb24gYWxsb2MgZmFpbCYjMzQ7KTsKJiM0MzsJY3R4ID0gZGFtb25fbmV3X2N0eCgpOwomIzQzOwlpZiAoIWN0eCkgewomIzQzOwkJZGFtb25fZnJlZV9yZWdpb24ocik7CiYjNDM7CQlrdW5pdF9za2lwKHRlc3QsICYjMzQ7Y3R4IGFsbG9jIGZhaWwmIzM0Oyk7CiYjNDM7CX0KIAogCXItJmd0O25yX2FjY2Vzc2VzID0gMTU7CiAJci0mZ3Q7YWdlID0gMjA7CiAKIAluZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXsKIAkJLnNhbXBsZV9pbnRlcnZhbCA9IDEwMCwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwMCx9OwotCWRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCAmYW1wO29sZF9hdHRycywgJmFtcDtuZXdfYXR0cnMsIGZhbHNlKTsKJiM0MzsJZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsICZhbXA7b2xkX2F0dHJzLCAmYW1wO25ld19hdHRycywgZmFsc2UsIGN0eCk7CiAJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItJmd0O25yX2FjY2Vzc2VzLCAxNSk7CiAJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItJmd0O2FnZSwgMik7CiAKIAluZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXsKIAkJLnNhbXBsZV9pbnRlcnZhbCA9IDEsIC5hZ2dyX2ludGVydmFsID0gMTAwMH07Ci0JZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsICZhbXA7b2xkX2F0dHJzLCAmYW1wO25ld19hdHRycywgZmFsc2UpOwomIzQzOwlkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgJmFtcDtvbGRfYXR0cnMsICZhbXA7bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTsKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci0mZ3Q7bnJfYWNjZXNzZXMsIDE1MCk7CiAJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItJmd0O2FnZSwgMik7CiAKIAluZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXsKIAkJLnNhbXBsZV9pbnRlcnZhbCA9IDEsIC5hZ2dyX2ludGVydmFsID0gMTAwfTsKLQlkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgJmFtcDtvbGRfYXR0cnMsICZhbXA7bmV3X2F0dHJzLCBmYWxzZSk7CiYjNDM7CWRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCAmYW1wO29sZF9hdHRycywgJmFtcDtuZXdfYXR0cnMsIGZhbHNlLCBjdHgpOwogCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLSZndDtucl9hY2Nlc3NlcywgMTUwKTsKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci0mZ3Q7YWdlLCAyMCk7CiAKIAlkYW1vbl9mcmVlX3JlZ2lvbihyKTsKJiM0MzsJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKIH0KIAogc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KQpAQCAtMTU3Miw3ICYjNDM7MTU1Nyw2IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBkYW1vbl90ZXN0X2Nhc2VzW10gPSB7CiAJS1VOSVRfQ0FTRShkYW1vbl90ZXN0X3NwbGl0X2Fib3ZlX2hhbGZfcHJvZ3Jlc3NlcyksCiAJS1VOSVRfQ0FTRShkYW1vbl90ZXN0X29wc19yZWdpc3RyYXRpb24pLAogCUtVTklUX0NBU0UoZGFtb25fdGVzdF9zZXRfcmVnaW9ucyksCi0JS1VOSVRfQ0FTRShkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKSwKIAlLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KSwKIAlLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc2V0X2F0dHJzKSwKIAlLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfbXZzdW0pLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERBTU9OIENvcmUgTG9naWMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBEQU1PTiBjb3JlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlIGlzIHRoZSByZW5hbWluZyBvZiBgZGFtb25fbWF4X25yX2FjY2Vzc2VzYCB0byBgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncmAuIFNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgbmFtZSBjaGFuZ2UsIHByb2JhYmx5IGZvciBjbGFyaXR5LiBJdCYjMzk7cyBnb29kIHRvIHNlZSB0aGVzZSBpbnRlcm5hbCB2YXJpYWJsZXMgYmVpbmcgcmVmYWN0b3JlZCBmb3IgYmV0dGVyIHVuZGVyc3RhbmRpbmcuCgpUaGVuLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YCwgZm9jdXNpbmcgb24gdXBkYXRpbmcgcHJvYmUgaGl0cyDigJMgYHItJmd0O3Byb2JlX2hpdHNbaV1gIGFuZCBgci0mZ3Q7bGFzdF9wcm9iZV9oaXRzW2ldYC4gT2theSwgc28gd2UmIzM5O3JlIHJlZmluaW5nIGhvdyBwcm9iZSBoaXQgZGF0YSBpcyBoYW5kbGVkLiBBIG5ldyBmdW5jdGlvbiwgYGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzYCwgaGFzIGJlZW4gYWRkZWQsIHdoaWNoIHN1Z2dlc3RzIGEgcG9zc2libGUgcmVmYWN0b3JpbmcgdG8gZW5jYXBzdWxhdGUgc29tZSBvZiB0aGF0IGxvZ2ljLgoKVGhlIGNoYW5nZSB0byBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAgdG8gcmV0dXJuIGByLSZndDtsYXN0X3Byb2JlX2hpdHNbcHJvYmVfaWR4XWAgdW5kZXIgdGhlIGNvbmRpdGlvbiB0aGF0IGBsZWZ0X3dpbmRvd19icCA9PSAxMDAwMGAgaXMgaW50ZXJlc3RpbmcuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbnRleHQgb2YgdGhhdCBzcGVjaWZpYyBjb25kaXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIHRoZXJlLiBJdCBsaWtlbHkgcmVsYXRlcyB0byBob3cgdGhlIGFnZ3JlZ2F0aW9uIHdpbmRvdyBvciBiYXNlIHBvaW50ZXIgY2FsY3VsYXRpb25zIGFyZSBiZWhhdmluZyBpbiB0aGF0IGVkZ2UgY2FzZS4KCk5leHQsIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgIGFuZCBgZGFtb25fdGVzdF91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLCBib3RoIG5vdyB0YWtpbmcgdGhlIGBjdHhgIGFyZ3VtZW50LiBUaGF0IHNpZ25hbHMgc29tZSBjb250ZXh0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHRvIHRoZXNlIGZ1bmN0aW9ucy4gVGhpcyBpcyBwcm9iYWJseSB0byBmYWNpbGl0YXRlIHBhc3Npbmcgc29tZSBjcnVjaWFsIHJ1bnRpbWUgaW5mb3JtYXRpb24gaW50byB0aGUgbW9uaXRvcmluZyB1cGRhdGUgcGF0aC4KCkFuZCBmaW5hbGx5LCB0aGUgcmVtb3ZhbCBvZiBgZGFtb25fdGVzdF9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icGAuIFRoaXMgc3VnZ2VzdHMgc29tZSB0ZXN0IGNvZGUgaGFzIGJlZW4gcmVtb3ZlZC4gSG9wZWZ1bGx5LCB0aGUgZnVuY3Rpb25hbGl0eSBpcyBtYWludGFpbmVkIHZpYSBvdGhlciwgbW9yZSBlZmZpY2llbnQgdGVzdCBwYXRocy4KCkJlZm9yZSBJIGRpdmUgZGVlcGVyIGludG8gdGhlIGNvZGUsIEkgbmVlZCB0byBjb25maXJtIERBTU9OIGlzIGV2ZW4gYWN0aXZlIGFuZCB0ZXN0YWJsZS4gT2YgY291cnNlLCBpdCBpcy4gQXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZlYXR1cmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBJIGtub3cgREFNT04gaGFzIHRoZSBzeXNmcyBpbnRlcmZhY2UsIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSwgYW5kIGlzIHVzZWQgYnkgbW9kdWxlcyBsaWtlIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9yZWNsYWltYC4gSXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gREFNT04mIzM5O3MgYmVoYXZpb3IgdGhhdCBtaWdodCBiZSBoZWxwZnVsIGluIHVuZGVyc3RhbmRpbmcgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9Mz1tZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbm1tL2RhbW9uL0tjb25maWctNC1cbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cbm1tL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xNC1cbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctMzctXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxubW0vZGFtb24vS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy00Ni1cbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy04Ny1cbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTE1LVxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFJlY2VudCBEQU1PTiBLZXJuZWwgTW9kaWZpY2F0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBEQU1PTiBjaGFuZ2VzLiBGaXJzdCwgSSBzZWUgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkIGFyZSBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGFuZCBgREFNT05fTFJVX1NPUlRgLiBJbW1lZGlhdGVseSwgYERBTU9OYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBqdW1wIG91dCBhcyB0aGUgbW9zdCByZWxldmFudCwgZ2l2ZW4gdGhlIGZpbGVzIG1vZGlmaWVkOiBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYW5kIHRoZSBLVW5pdCBoZWFkZXIuCgpOb3csIGxldCYjMzk7cyBleGFtaW5lIHRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIHRvdWNoZWQuIEkmIzM5O3ZlIGdvdDogYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBgZGFtb25fc2FtcGxlX2JwX3RvX2NvdW50YCwgYGRhbW9uX3NhbXBsZV9jb3VudF90b19icGAsIGBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnNgLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgLCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgLCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGFuZCBgZGFtb25faG90X3Njb3JlYC4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgYXJlIGFueSBvZiB0aGVzZSBmdW5jdGlvbnMgZXhwb3NlZCB0byB1c2Vyc3BhY2U/IFRoYXQmIzM5O3Mgd2hhdCByZWFsbHkgbWF0dGVycyB3aGVuIHlvdSYjMzk7cmUgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGludGVyYWN0aW9uLiBPa2F5LCBzbyBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AgaXMgY2FsbGVkIGZyb20gYGtkYW1vbmRfZm5gLCB3aGljaCBpcyB0aGUgREFNT04gbWFpbiB0aHJlYWQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AgaXMgY2FsbGVkIGZyb20gdGhlIGBkYW1vbl9scnVfc29ydF90aW1lcmAgb3IgYGRhbW9uX2xydV9zb3J0X3R1cm5vbmAgcm91dGluZXMsIHdoaWNoIGltcGxpZXMgdGhlc2UgYXJlIHByb2JhYmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gQW5kIGBkYW1vbl9ob3Rfc2NvcmVgIGlzIGludm9rZWQgdmlhIG9wcy4KCkkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGUgYWNjZXNzaWJpbGl0eSBvZiBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZGlnIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz05MjM9c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vY29yZS5jLTk1Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo5NTM6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9jb3JlLmMtOTU0LVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTAxMT1pbnQgZGFtb25fc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTA0MC1cbm1tL2RhbW9uL2NvcmUuYzoxMDQxOlx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhjdHgsIGF0dHJzLCBhZ2dyZWdhdGluZyk7XG5tbS9kYW1vbi9jb3JlLmMtMTA0Mi1cdGN0eC1cdTAwM2VhdHRycyA9ICphdHRycztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODY5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYSBhbmQgdGhpbmtpbmcgdGhpcyB0aHJvdWdoOgoKKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2s6IGBkYW1vbl9zZXRfYXR0cnNgIGFuZCBJdHMgT3JpZ2lucyoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZmxvdyBoZXJlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGBkYW1vbl9zZXRfYXR0cnNgLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpIGZyYW1ld29yay4gVGhlIGltcG9ydGFudCB0aGluZyB0byBub3RlIGlzIHRoYXQgYGRhbW9uX3NldF9hdHRyc2AgaXMgYmVpbmcgdHJpZ2dlcmVkIGZyb20gZWl0aGVyIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgIG9yIGEgZnVuY3Rpb24gc2ltaWxhciB0byBpdC4gVGhpcyBjb25uZWN0aW9uIGlzIGtleSBiZWNhdXNlIGl0IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IGFjdGluZyB1cG9uIHVzZXIgaW5wdXQgb3IgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBwcm9iYWJseSB0aHJvdWdoIGEgc3lzZnMgaW50ZXJmYWNlLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdmVyaWZ5IGlmIGl0JiMzOTtzIHRoZSBvbmx5IHBhdGgsIGJlY2F1c2Ugb3RoZXIgcGF0aHMgd291bGQgY2hhbmdlIHRoZSBuYXR1cmUgb2YgdGhpcyB0aG91Z2h0LiBUaGF0IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gaGFuZGxpbmcgYW5kIGFwcGx5aW5nIGNoYW5nZXMgdG8gREFNT04mIzM5O3MgYmVoYXZpb3IgdGhhdCBhcmUgZHJpdmVuIGJ5IGV4dGVybmFsIGludGVyYWN0aW9ucywgc3VjaCBhcyB0aG9zZSBpbml0aWF0ZWQgdGhyb3VnaCB0aGUgc3lzdGVtIGZpbGUgc3lzdGVtLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoYXQga2luZCBvZiBhdHRyaWJ1dGVzIGFyZSBiZWluZyBzZXQuIElzIGl0IHJhdGUsIHRocmVzaG9sZHMsIHNpemUsIHJlZ2lvbiwgdGFyZ2V0LCBvciBzb21lIG90aGVyIGNvbmZpZ3VyYWJsZSBzZXR0aW5nPyBBbHNvLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZSBiZWluZyBpbXBsZW1lbnRlZCBkeW5hbWljYWxseT8gQXJlIHRoZXJlIGFueSB0aHJlYWQgc2FmZXR5IGNvbmNlcm5zPyBBbnkgcmFjZSBjb25kaXRpb25zIHRvIGNvbnNpZGVyIGJlY2F1c2Ugb2YgdGhpcz8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHRyYWNlIGl0cyBpbnRlcmFjdGlvbnMgdG8gZnVsbHkgZ3Jhc3AgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9zZXRfYXR0cnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTk3Nj1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy05OTEtLyoqXG5tbS9kYW1vbi9jb3JlLmM6OTkyOiAqIGRhbW9uX3NldF9hdHRycygpIC0gU2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBtb25pdG9yaW5nLlxubW0vZGFtb24vY29yZS5jLTk5My0gKiBAY3R4Olx0XHRtb25pdG9yaW5nIGNvbnRleHRcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTAxMC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMDExOmludCBkYW1vbl9zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxubW0vZGFtb24vY29yZS5jLTEwMTIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNjg0PXN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzE0LVx0ICogc2NoZW1lcyBhbmQgdGFyZ2V0cyBzaG91bGQgYmUgdXBkYXRlZCBmaXJzdCwgc2luY2Vcbm1tL2RhbW9uL2NvcmUuYzoxNzE1Olx0ICogMS4gZGFtb25fc2V0X2F0dHJzKCkgdXBkYXRlcyBtb25pdG9yaW5nIHJlc3VsdHMgb2YgdGFyZ2V0cyBhbmRcbm1tL2RhbW9uL2NvcmUuYy0xNzE2LVx0ICogbmV4dF9hcHBseV9zaXMgb2Ygc2NoZW1lcywgYW5kXG4tLVxubW0vZGFtb24vY29yZS5jLTE3MjAtXHRpZiAoIWRhbW9uX2F0dHJzX2VxdWFscyhcdTAwMjZkc3QtXHUwMDNlYXR0cnMsIFx1MDAyNnNyYy1cdTAwM2VhdHRycykpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzIxOlx0XHRlcnIgPSBkYW1vbl9zZXRfYXR0cnMoZHN0LCBcdTAwMjZzcmMtXHUwMDNlYXR0cnMpO1xubW0vZGFtb24vY29yZS5jLTE3MjItXHRcdGlmIChlcnIpIHtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjE4Mj1zdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIHZvaWQga2RhbW9uZF90dW5lX2ludGVydmFscyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMjAwLVx0dHJhY2VfZGFtb25fbW9uaXRvcl9pbnRlcnZhbHNfdHVuZShuZXdfYXR0cnMuc2FtcGxlX2ludGVydmFsKTtcbm1tL2RhbW9uL2NvcmUuYzoyMjAxOlx0ZGFtb25fc2V0X2F0dHJzKGMsIFx1MDAyNm5ld19hdHRycyk7XG5tbS9kYW1vbi9jb3JlLmMtMjIwMi19XG4tLVxubW0vZGFtb24vY29yZS5jPTM2NDM9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpXG4tLVxubW0vZGFtb24vY29yZS5jLTM2NzItXHRcdCAqIGJlIGNoYW5nZWQgZnJvbSBrZGFtb25kX2NhbGwoKS4gIFJlYWQgdGhlIHZhbHVlcyBoZXJlLCBhbmRcbm1tL2RhbW9uL2NvcmUuYzozNjczOlx0XHQgKiB1c2UgdGhvc2UgZm9yIHRoaXMgaXRlcmF0aW9uLiAgVGhhdCBpcywgZGFtb25fc2V0X2F0dHJzKClcbm1tL2RhbW9uL2NvcmUuYy0zNjc0LVx0XHQgKiB1cGRhdGVkIG5ldyB2YWx1ZXMgYXJlIHJlc3BlY3RlZCBmcm9tIG5leHQgaXRlcmF0aW9uLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNzMzLVx0XHRcdFx0ICogZnJvbSBrZGFtb25kX2NhbGwoKS4gIEluIHRoZSBjYXNlLFxubW0vZGFtb24vY29yZS5jOjM3MzQ6XHRcdFx0XHQgKiBkYW1vbl9zZXRfYXR0cnMoKSB3aGljaCB3aWxsIGJlIGNhbGxlZCBmcm9tXG5tbS9kYW1vbi9jb3JlLmMtMzczNS1cdFx0XHRcdCAqIGtkYW1vbmRfdHVuZV9pbnRlcnZhbCgpIG1heSB3cm9uZ2x5IHRoaW5rXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0yNzE9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMDAtXHR9XG5tbS9kYW1vbi9scnVfc29ydC5jOjMwMTpcdGVyciA9IGRhbW9uX3NldF9hdHRycyhwYXJhbV9jdHgsIFx1MDAyNmF0dHJzKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzAyLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9MTk0PXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTIyNC1cdH1cbm1tL2RhbW9uL3JlY2xhaW0uYzoyMjU6XHRlcnIgPSBkYW1vbl9zZXRfYXR0cnMocGFyYW1fY3R4LCBcdTAwMjZhdHRycyk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMjI2LVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9zdGF0LmM9MTUxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zdGF0X2J1aWxkX2N0eCh2b2lkKVxuLS1cbm1tL2RhbW9uL3N0YXQuYy0xNzUtXHR9O1xubW0vZGFtb24vc3RhdC5jOjE3NjpcdGlmIChkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycykpXG5tbS9kYW1vbi9zdGF0LmMtMTc3LVx0XHRnb3RvIGZyZWVfb3V0O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTg4OT1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4tLVxubW0vZGFtb24vc3lzZnMuYy0xOTA4LVx0fTtcbm1tL2RhbW9uL3N5c2ZzLmM6MTkwOTpcdHJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycyk7XG5tbS9kYW1vbi9zeXNmcy5jLTE5MTAtfVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD02MTk9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MjktXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjMwOlx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcdTAwMjZ2YWxpZF9hdHRycyksIDApO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYzMS1cbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjMzLVx0aW52YWxpZF9hdHRycy5taW5fbnJfcmVnaW9ucyA9IDE7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjM0Olx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcdTAwMjZpbnZhbGlkX2F0dHJzKSwgLUVJTlZBTCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjM1LVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MzctXHRpbnZhbGlkX2F0dHJzLm1heF9ucl9yZWdpb25zID0gOTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2Mzg6XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fc2V0X2F0dHJzKGMsIFx1MDAyNmludmFsaWRfYXR0cnMpLCAtRUlOVkFMKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MzktXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTY0MS1cdGludmFsaWRfYXR0cnMuYWdncl9pbnRlcnZhbCA9IDQ5OTk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjQyOlx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcdTAwMjZpbnZhbGlkX2F0dHJzKSwgLUVJTlZBTCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjQzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEYW1vbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2guIFRoZSBrZXkgdGhpbmcganVtcGluZyBvdXQgYXQgbWUgaXMgdGhhdCBgZGFtb25fc2V0X2F0dHJzYCBpcyBhY2Nlc3NpYmxlIHZpYSBzeXNmcy4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGNoYW5nZSBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtLCBhbmQgd2hhdCBleHRlcm5hbCBjb250cm9sIHdlIGhhdmUuCgpUaGUgY29yZSBvZiB0aGUgZnVuY3Rpb25hbGl0eSBzZWVtcyB0byBiZSBpbiB0aGUgbW9kaWZpY2F0aW9uIG9mIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLiBOb3csIGl04oCZcyBub3Qgb25seSB1cGRhdGluZyB0aGUgcmVzdWx0cywgYnV0IGFsc28gaW5jbHVkZXMgdXBkYXRlcyBmb3IgYHItJmd0O3Byb2JlX2hpdHNgIGFuZCBgci0mZ3Q7bGFzdF9wcm9iZV9oaXRzYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgc2hpZnQ7IHRoaXMgaXMgbW9yZSB0aGFuIGp1c3QgcmVmYWN0b3JpbmcuIEl0JiMzOTtzIGNoYW5naW5nICp3aGF0KiBkYXRhIGlzIGJlaW5nIHRyYWNrZWQsIHdoaWNoIHdpbGwgaGF2ZSBkb3duc3RyZWFtIGVmZmVjdHMuCgpJIGFsc28gc2VlIGEgcmVuYW1lIOKAkyBgZGFtb25fbWF4X25yX2FjY2Vzc2VzYCBoYXMgYmVjb21lIGBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyYC4gT2theSwgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlIGZvciBjbGFyaXR5LCBhbmQgaXQmIzM5O3MgbGVzcyBsaWtlbHkgdG8gYnJlYWsgYW55dGhpbmcsIGJ1dCB0aGUgc2VtYW50aWNzIHdpbGwgaGF2ZSBjaGFuZ2VkIGluIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGVyZSB0aGF0IHZhcmlhYmxlIGlzIHVzZWQgYW5kIG1ha2Ugc3VyZSB0aGUgbmV3IG5hbWUgcmVmbGVjdHMgdGhlIG1lYW5pbmcsIGVzcGVjaWFsbHkgaW4gcmVsYXRpb24gdG8gdGhlIGFnZ3JlZ2F0aW9uIHByb2Nlc3MuCgpGaW5hbGx5LCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYC4gVGhpcyBpcyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbiBuZXh0LiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAgcmlnaHQgYXdheS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjaGFuZ2VzIHRvIGBwcm9iZV9oaXRzYCBhbmQgYGxhc3RfcHJvYmVfaGl0c2AgaW1wYWN0IHRoYXQgZnVuY3Rpb24uIEl0JiMzOTtzIHRoZSBtb3N0IGxpa2VseSBwbGFjZSBmb3Igc3VidGxlIHNpZGUgZWZmZWN0cyBvciBiZWhhdmlvcmFsIGRpZmZlcmVuY2VzIHJlbGF0ZWQgdG8gdGhlIGFjY2VzcyBwYXR0ZXJuIHRyYWNraW5nLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgaWYgdGhlIGNoYW5nZXMgYXJlIGdvaW5nIHRvIGltcGFjdCB0aGUgc3RhdGlzdGljcyB0aGF0IHRoZSBhbGdvcml0aG0gdXNlcyB0byBkZXRlcm1pbmUgbWVtb3J5IGFsbG9jYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTI1Mj11bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc1LVxubW0vZGFtb24vY29yZS5jOjI3Njp1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0yNzctXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9OTA9c3RhdGljIGludCBkYW1vc19zeXNmc19wcm9iZXNfYWRkX2RpcnMoc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlcyAqcHJvYmVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTMtXHRcdHN5c19wcm9iZSA9IGRhbW9zX3N5c2ZzX3Byb2JlX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjExNDpcdFx0XHRcdGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaSwgcmVnaW9uLCBjdHgpKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTUtXHRcdGlmICghc3lzX3Byb2JlKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2ggZm9yIFByb2JlIEhpdCBVcGRhdGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBzcGVjaWZpY2FsbHkgaG93IGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCB0aWVzIGludG8gYGRhbW9zX3N5c2ZzX3Byb2Jlc19hZGRfZGlyc2AuIEl0IHNlZW1zIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAuIFRoZSBtYWluIGNvbmNlcm4gaGVyZSBpcyBjb3JyZWN0bHkgc2NhbGluZyB0aGUgcHJvYmUgaGl0IGNvdW50cyB3aGVuIHRoZSBtb25pdG9yaW5nIHBhcmFtZXRlcnMsIHN1Y2ggYXMgdGhlIGFnZ3JlZ2F0aW9uIG9yIHNhbXBsZSBpbnRlcnZhbHMsIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRqdXN0bWVudCB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHksIHdoaWNoIGlzIGdvb2QuCgpOb3csIGxldCYjMzk7cyByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIHNlZSB3ZSBoYXZlIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9MUlVfU09SVGAsIGBEQU1PTl9SRUNMQUlNYCwgYERBTU9OX1ZBRERSYCwgYW5kIGBEQU1PTl9QQUREUmAuIExvb2tpbmcgYXQgdGhlIGFmZmVjdGVkIGZpbGVzLCBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBhbmQgYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIHRoZSBwYXRjaCB0b3VjaGVzLiBJIGtub3cgdGhhdCBgREFNT05fTFJVX1NPUlRgIGludGVyYWN0cyB3aXRoIGBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyYCwgYW5kIGBEQU1PTl9TWVNGU2AgaXMgdXNlZCB0byB0cmlnZ2VyIGBkYW1vbl9zZXRfYXR0cnNgLiBCYXNlZCBvbiB0aGlzLCBpdCBtYWtlcyBzZW5zZSB0byBlbmFibGUgYERBTU9OYCBhbmQgYERBTU9OX1NZU0ZTYC4KCkkmIzM5O2xsIHF1aWNrbHkgcmV2aWV3IHRoZSBhc3NvY2lhdGVkIHN5bWJvbHMuIEkmIzM5O20gZm9jdXNpbmcgb24gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAsIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCwgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCwgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBhbmQgYGRhbW9uX2hvdF9zY29yZWAuIE5vdywgSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGUgYmVoYXZpb3Igb2YgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBnaXZlbiB0aGVzZSBjaGFuZ2VzLiBJdCYjMzk7cyBjcnVjaWFsIHdlJiMzOTtyZSBub3QgaW50cm9kdWNpbmcgYW55IHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2l0aCB0aGUgdXBkYXRlZCBoaXQgdHJhY2tpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9OTAzPXN0YXRpYyB2b2lkIGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vY29yZS5jLTkyMi1cbm1tL2RhbW9uL2NvcmUuYzo5MjM6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtOTI0LVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXG4tLVxubW0vZGFtb24vY29yZS5jLTk1Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo5NTM6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9jb3JlLmMtOTU0LVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTY3LVx0XHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcbm1tL2RhbW9uL2NvcmUuYzo5Njg6XHRcdFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLFxubW0vZGFtb24vY29yZS5jLTk2OS1cdFx0XHRcdFx0YWdncmVnYXRpbmcsIGN0eCk7XG4tLVxubW0vZGFtb24vY29yZS5jPTEwMTE9aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEwNDAtXG5tbS9kYW1vbi9jb3JlLmM6MTA0MTpcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoY3R4LCBhdHRycywgYWdncmVnYXRpbmcpO1xubW0vZGFtb24vY29yZS5jLTEwNDItXHRjdHgtXHUwMDNlYXR0cnMgPSAqYXR0cnM7XG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTU3OD1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTU5OC1cdFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEwMCwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwMCx9O1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjU5OTpcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjAwLVx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlbnJfYWNjZXNzZXMsIDE1KTtcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjA0LVx0XHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2MDU6XHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXHUwMDI2b2xkX2F0dHJzLCBcdTAwMjZuZXdfYXR0cnMsIGZhbHNlLCBjdHgpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYwNi1cdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVx1MDAzZW5yX2FjY2Vzc2VzLCAxNTApO1xuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MTAtXHRcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxLCAuYWdncl9pbnRlcnZhbCA9IDEwMH07XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjExOlx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFx1MDAyNm9sZF9hdHRycywgXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MTItXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyMzAKCQkJCQkJCW91dHB1dDogMjM4CgkJCQkJCQl0aG91Z2h0czogODIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIENvZGUgQW5hbHlzaXMgZm9yIEZvY3VzZWQgRnV6emluZyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBzb21lIGNvcmUgY2hhbmdlcyB0byBob3cgREFNT04gaGFuZGxlcyBwcm9iZSBoaXRzIGFuZCBhdHRyaWJ1dGUgdXBkYXRlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgbWVtb3J5IG1vbml0b3JpbmcgZnJhbWV3b3JrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGVzZSBjaGFuZ2VzIGZvciBmdXp6aW5nLCBnaXZlbiB0aGVpciBwb3RlbnRpYWwgaW1wYWN0IG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB0aGUga2VybmVsJiMzOTtzIGludGVyYWN0aW9uIHdpdGggdXNlciBzcGFjZS4KClRoZSBwcmltYXJ5IG1vZGlmaWNhdGlvbiBpbnZvbHZlcyB1cGRhdGluZyB0aGUgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBmdW5jdGlvbnMgdG8gaW5jbHVkZSBhIGBjdHhgIHBhcmFtZXRlci4gVGhpcyBsb29rcyBsaWtlIGEgY29udGV4dCBvYmplY3QsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgZnVuY3Rpb25zIGNvbW11bmljYXRlIGFuZCBzaGFyZSBkYXRhLiBBbHNvLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgIGhhcyBiZWVuIGFkZGVkIGFuZCBjYWxsZWQgZnJvbSBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YC4gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgIGlzIGNhbGxlZCBmcm9tIGBkYW1vbl9zZXRfYXR0cnNgLCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGlzIHRoZSBlbnRyeSBwb2ludCB2aWEgc3lzZnMuIFNvLCBhdHRyaWJ1dGUgdXBkYXRlcyBhcmUgZGVmaW5pdGVseSBhIGtleSBhcmVhIG9mIGludGVyZXN0LgoKVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAsIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2AsIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCwgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBhbmQgYGRhbW9uX2hvdF9zY29yZWAgaW4gbXkgZm9jdXMgc3ltYm9scy4KCk5vdywgbGV0IG1lIGNvbmZpcm0gdGhlIHN0YXRpYy9nbG9iYWwgbmF0dXJlIG9mIHRoZXNlIGZ1bmN0aW9ucy4gT2theSwgYGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzYCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBhcmUgc3RhdGljLiBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBhbmQgYGRhbW9uX2hvdF9zY29yZWAgYXJlIGdsb2JhbCwgYW5kIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCBpcyBzdGF0aWMuIFRoaXMgaGVscHMgbWUgbmFycm93IGRvd24gdGhlIGNhbGwgZ3JhcGggYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBwb2ludHMgb2YgZGF0YSBzaGFyaW5nLgoKQmFzZWQgb24gdGhpcywgSSYjMzk7bSBjb25maXJtaW5nIHRoYXQgSSBuZWVkIHRvIGluY2x1ZGUgdGhlc2UgZnVuY3Rpb25zIGluIG15IGZ1enppbmcgdGFyZ2V0IGxpc3Q6CgoqICAgYGRhbW9uX3NldF9hdHRyc2AKKiAgIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYAoqICAgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAKKiAgIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2AKKiAgIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYAoqICAgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgCiogICBgZGFtb25faG90X3Njb3JlYAoKRm9yIGNvbmZpZ3MsIEkmIzM5O2xsIGZvY3VzIG9uIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGFuZCBgREFNT05fTFJVX1NPUlRgLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgREFNT05fTFJVX1NPUlRgIHVzZXMgYERBTU9OX1BBRERSYCwgYnV0IGxldCYjMzk7cyBzdGljayB3aXRoIHRoZSBjb3JlIGNvbmZpZyBzeW1ib2xzIGZvciBub3cuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9uIG5hbWVzLiBZZXAsIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2AsIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCwgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgIGFuZCBgZGFtb25faG90X3Njb3JlYCBhcmUgYWxsIGNvcnJlY3QuCgpJbiBzaG9ydCwgdGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIHByb2JlIGhpdCBzY2FsaW5nIGxvZ2ljIGluIHJlc3BvbnNlIHRvIGNoYW5nZXMgaW4gbW9uaXRvcmluZyBhdHRyaWJ1dGVzIGFjY2Vzc2libGUgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UuIFNwZWNpZmljYWxseSwgbW9kaWZpY2F0aW9ucyB0byBhdHRyaWJ1dGUgdXBkYXRlcyBhbmQgdGhlIGFmZmVjdGVkIHNjb3JpbmcvcHJvYmUgaGl0IGZ1bmN0aW9ucyBzZWVtIHRvIGJlIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBgZGFtb25fbHJ1X3NvcnRgIGtlcm5lbCBtb2R1bGUgaXMgYWxzbyBpbXBvcnRhbnQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2V0X2F0dHJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMmIzM0OywKICAgICYjMzQ7ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0JiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzJiMzNDssCiAgICAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9ob3Rfc2NvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2V0X2F0dHJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMmIzM0OywKICAgICYjMzQ7ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0JiMzNDssCiAgICAmIzM0O2RhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzJiMzNDssCiAgICAmIzM0O2RhbW9uX3Byb2JlX2hpdHNfbXZzdW0mIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9ob3Rfc2NvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1NzozNi45NzA5ODIwMDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTAyMjk2NzgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc2V0X2F0dHJzXCIsXG4gICAgXCJkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzXCIsXG4gICAgXCJkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzXCIsXG4gICAgXCJkYW1vbl9wcm9iZV9oaXRzX212c3VtXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gICAgXCJkYW1vbl9ob3Rfc2NvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFNT04gY29yZSBsb2dpYyB0byBjb3JyZWN0bHkgc2NhbGUgcHJvYmUgaGl0cyB3aGVuIG1vbml0b3JpbmcgYXR0cmlidXRlcyAobGlrZSBhZ2dyZWdhdGlvbiBpbnRlcnZhbCBvciBzYW1wbGUgaW50ZXJ2YWwpIGFyZSB1cGRhdGVkLiBJdCBhbHNvIHJlbmFtZXMgYSBmdW5jdGlvbiBhbmQgdXBkYXRlcyBpdHMgdXNhZ2UgaW4gYGRhbW9uX2xydV9zb3J0YCBhbmQgYGRhbW9uX2hvdF9zY29yZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IG1vbml0b3JpbmcgZnJhbWV3b3JrIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBhbmQga2VybmVsIG1vZHVsZXMgbGlrZSBgZGFtb25fbHJ1X3NvcnRgLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBhdHRyaWJ1dGUgdXBkYXRlcyBhbmQgdGhlIGFmZmVjdGVkIHNjb3JpbmcvcHJvYmUgaGl0IGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTc6MzYuOTcwOTg4NTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDQ2Mjc1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZWM0ZDQzNzRkOWVmNDFkODA3NmE2NjZkMmE1NzAyZDEzMzhiYTNkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMDY6NTc6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuaW5kZXggMTliN2U4MzliZGUwYjQuLjYzZjU5Njk1N2MxZjFmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbkBAIC0xMDU2LDE1ICsxMDU2LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkYW1vbl90YXJnZXRfaGFzX3BpZChjb25zdCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuIFxcdHJldHVybiBjdHgtXFx1MDAzZW9wcy5pZCA9PSBEQU1PTl9PUFNfVkFERFIgfHwgY3R4LVxcdTAwM2VvcHMuaWQgPT0gREFNT05fT1BTX0ZWQUREUjtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbWF4X25yX2FjY2Vzc2VzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuKy8qIFJldHVybnMgbnVtYmVyIG9mIHNhbXBsZXMgcGVyIGFnZ3JlZ2F0aW9uIGludGVydmFsICovXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoXFxuK1xcdFxcdGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBzYW1wbGVfaW50ZXJ2YWw7XFxuLVxcdHVuc2lnbmVkIGxvbmcgbWF4X25yX2FjY2Vzc2VzO1xcbitcXHR1bnNpZ25lZCBsb25nIG5yX3NhbXBsZXM7XFxuIFxcbiBcXHRzYW1wbGVfaW50ZXJ2YWwgPSBhdHRycy1cXHUwMDNlc2FtcGxlX2ludGVydmFsID8gOiAxO1xcbi1cXHRtYXhfbnJfYWNjZXNzZXMgPSBtaW4oYXR0cnMtXFx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBzYW1wbGVfaW50ZXJ2YWwsXFxuK1xcdG5yX3NhbXBsZXMgPSBtaW4oYXR0cnMtXFx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBzYW1wbGVfaW50ZXJ2YWwsXFxuIFxcdFxcdFxcdCh1bnNpZ25lZCBsb25nKVVJTlRfTUFYKTtcXG4tXFx0cmV0dXJuIG1heF9ucl9hY2Nlc3NlcyA/IDogMTtcXG4rXFx0cmV0dXJuIG5yX3NhbXBsZXMgPyA6IDE7XFxuIH1cXG4gXFxuIFxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcXG5pbmRleCAzOTBlMDBiMzY4NWVmYy4uMTE0NzNhYTFmNzBmNDEgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXFxuKysrIGIvbW0vZGFtb24vY29yZS5jXFxuQEAgLTI5MCw2ICsyOTAsOSBAQCB1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4gXFx0XFx0XFx0Y3R4LVxcdTAwM2VwYXNzZWRfc2FtcGxlX2ludGVydmFscztcXG4gXFx0bGVmdF93aW5kb3dfYnAgPSBtdWx0X2ZyYWMobGVmdF93aW5kb3csIDEwMDAwLCB3aW5kb3dfbGVuKTtcXG4gXFxuK1xcdGlmIChsZWZ0X3dpbmRvd19icCA9PSAxMDAwMClcXG4rXFx0XFx0cmV0dXJuIHItXFx1MDAzZWxhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdO1xcbitcXG4gXFx0cmV0dXJuIGRhbW9uX212c3VtKHItXFx1MDAzZXByb2JlX2hpdHNbcHJvYmVfaWR4XSxcXG4gXFx0XFx0XFx0ci1cXHUwMDNlbGFzdF9wcm9iZV9oaXRzW3Byb2JlX2lkeF0sIGxlZnRfd2luZG93X2JwKTtcXG4gfVxcbkBAIC04NzYsNDMgKzg3OSw1NyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXFxuIFxcdHJldHVybiBhZ2UgKiBvbGRfYXR0cnMtXFx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBuZXdfYXR0cnMtXFx1MDAzZWFnZ3JfaW50ZXJ2YWw7XFxuIH1cXG4gXFxuLS8qIGNvbnZlcnQgYWNjZXNzIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBucl9hY2Nlc3NlcyAqL1xcbi1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FjY2Vzc2VzX2JwX3RvX25yX2FjY2Vzc2VzKFxcbi1cXHRcXHR1bnNpZ25lZCBpbnQgYWNjZXNzZXNfYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuKy8qIGNvbnZlcnQgc2FtcGxlIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBjb3VudCAqL1xcbitzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX3NhbXBsZV9icF90b19jb3VudChcXG4rXFx0XFx0dW5zaWduZWQgaW50IGJwLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbiB7XFxuLVxcdHJldHVybiBhY2Nlc3Nlc19icCAqIGRhbW9uX21heF9ucl9hY2Nlc3NlcyhhdHRycykgLyAxMDAwMDtcXG4rXFx0cmV0dXJuIGJwICogZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihhdHRycykgLyAxMDAwMDtcXG4gfVxcbiBcXG4tLypcXG4tICogQ29udmVydCBucl9hY2Nlc3NlcyB0byBhY2Nlc3MgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApLlxcbi0gKlxcbi0gKiBDYWxsZXJzIHNob3VsZCBlbnN1cmUgYXR0cnMuYWdncl9pbnRlcnZhbCBpcyBub3QgemVybywgbGlrZVxcbi0gKiBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKCkgZG9lcyAuICBPdGhlcndpc2UsIGRpdmlkZS1ieS16ZXJvIHdvdWxkXFxuLSAqIGhhcHBlbi5cXG4tICovXFxuLXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoXFxuLVxcdFxcdHVuc2lnbmVkIGludCBucl9hY2Nlc3Nlcywgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcXG4rLyogY29udmVydCBzYW1wbGUgY291bnQgdG8gcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApICovXFxuK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKFxcbitcXHRcXHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuIHtcXG4tXFx0cmV0dXJuIG11bHRfZnJhYyhucl9hY2Nlc3NlcywgMTAwMDAsIGRhbW9uX21heF9ucl9hY2Nlc3NlcyhhdHRycykpO1xcbitcXHRyZXR1cm4gbXVsdF9mcmFjKGNvdW50LCAxMDAwMCwgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihhdHRycykpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnModW5zaWduZWQgaW50IG5yX2FjY2Vzc2VzLFxcbitzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXFxuIFxcdFxcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycylcXG4ge1xcbi1cXHRyZXR1cm4gZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoXFxuLVxcdFxcdFxcdGRhbW9uX25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKFxcbi1cXHRcXHRcXHRcXHRucl9hY2Nlc3Nlcywgb2xkX2F0dHJzKSxcXG4tXFx0XFx0XFx0bmV3X2F0dHJzKTtcXG4rXFx0cmV0dXJuIGRhbW9uX3NhbXBsZV9icF90b19jb3VudChcXG4rXFx0XFx0XFx0ZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKG5yLCBvbGRfYXR0cnMpLCBuZXdfYXR0cnMpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfcHJvYmVfaGl0cyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbitcXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuK1xcdFxcdGJvb2wgYWdncmVnYXRpbmcsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnA7XFxuK1xcdGludCBpID0gMDtcXG4rXFxuK1xcdGRhbW9uX2Zvcl9lYWNoX3Byb2JlKHAsIGN0eCkge1xcbitcXHRcXHRyLVxcdTAwM2VsYXN0X3Byb2JlX2hpdHNbaV0gPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoXFxuK1xcdFxcdFxcdFxcdHItXFx1MDAzZWxhc3RfcHJvYmVfaGl0c1tpXSwgb2xkX2F0dHJzLCBuZXdfYXR0cnMpO1xcbitcXHRcXHRpZiAoIWFnZ3JlZ2F0aW5nKVxcbitcXHRcXHRcXHRyLVxcdTAwM2Vwcm9iZV9oaXRzW2ldID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKFxcbitcXHRcXHRcXHRcXHRcXHRyLVxcdTAwM2Vwcm9iZV9oaXRzW2ldLCBvbGRfYXR0cnMsXFxuK1xcdFxcdFxcdFxcdFxcdG5ld19hdHRycyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ci1cXHUwMDNlcHJvYmVfaGl0c1tpXSA9IDA7XFxuK1xcdFxcdGkrKztcXG4rXFx0fVxcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4gXFx0XFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLFxcbi1cXHRcXHRib29sIGFnZ3JlZ2F0aW5nKVxcbitcXHRcXHRib29sIGFnZ3JlZ2F0aW5nLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuIHtcXG4tXFx0ci1cXHUwMDNlbGFzdF9ucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnMoXFxuK1xcdGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZywgY3R4KTtcXG4rXFxuK1xcdHItXFx1MDAzZWxhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoXFxuIFxcdFxcdFxcdHItXFx1MDAzZWxhc3RfbnJfYWNjZXNzZXMsIG9sZF9hdHRycywgbmV3X2F0dHJzKTtcXG4gXFx0aWYgKCFhZ2dyZWdhdGluZylcXG4tXFx0XFx0ci1cXHUwMDNlbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKFxcbitcXHRcXHRyLVxcdTAwM2Vucl9hY2Nlc3NlcyA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyhcXG4gXFx0XFx0XFx0XFx0ci1cXHUwMDNlbnJfYWNjZXNzZXMsIG9sZF9hdHRycywgbmV3X2F0dHJzKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHQvKlxcbkBAIC05NDgsOCArOTY1LDggQEAgc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuIFxcbiBcXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodCwgY3R4KVxcbiBcXHRcXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcXG4tXFx0XFx0XFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KFxcbi1cXHRcXHRcXHRcXHRcXHRyLCBvbGRfYXR0cnMsIG5ld19hdHRycywgYWdncmVnYXRpbmcpO1xcbitcXHRcXHRcXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgb2xkX2F0dHJzLCBuZXdfYXR0cnMsXFxuK1xcdFxcdFxcdFxcdFxcdGFnZ3JlZ2F0aW5nLCBjdHgpO1xcbiB9XFxuIFxcbiAvKlxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbmluZGV4IGU4YzM4OWFkMzIyNmY3Li43ZTA3NzA4NGNiMDNhYSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXFxuKysrIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbkBAIC0zMDMsNyArMzAzLDcgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0ZXJyID0gLUVOT01FTTtcXG4tXFx0aG90X3RocmVzID0gZGFtb25fbWF4X25yX2FjY2Vzc2VzKFxcdTAwMjZhdHRycykgKlxcbitcXHRob3RfdGhyZXMgPSBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyKFxcdTAwMjZhdHRycykgKlxcbiBcXHRcXHRob3RfdGhyZXNfYWNjZXNzX2ZyZXEgLyAxMDAwO1xcbiBcXHRob3Rfc2NoZW1lID0gZGFtb25fbHJ1X3NvcnRfbmV3X2hvdF9zY2hlbWUoaG90X3RocmVzKTtcXG4gXFx0aWYgKCFob3Rfc2NoZW1lKVxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9vcHMtY29tbW9uLmMgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcXG5pbmRleCA2YmRkMWNmZDM4NjNhMy4uODljNjk0ZjZlNGZhODkgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jXFxuKysrIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXFxuQEAgLTExMiw3ICsxMTIsNyBAQCBpbnQgZGFtb25faG90X3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuIFxcdGludCBob3RuZXNzO1xcbiBcXG4gXFx0ZnJlcV9zdWJzY29yZSA9IHItXFx1MDAzZW5yX2FjY2Vzc2VzICogREFNT05fTUFYX1NVQlNDT1JFIC9cXG4tXFx0XFx0ZGFtb25fbWF4X25yX2FjY2Vzc2VzKFxcdTAwMjZjLVxcdTAwM2VhdHRycyk7XFxuK1xcdFxcdGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoXFx1MDAyNmMtXFx1MDAzZWF0dHJzKTtcXG4gXFxuIFxcdGFnZV9pbl9zZWMgPSAodW5zaWduZWQgbG9uZylyLVxcdTAwM2VhZ2UgKiBjLVxcdTAwM2VhdHRycy5hZ2dyX2ludGVydmFsIC8gMTAwMDAwMDtcXG4gXFx0aWYgKGFnZV9pbl9zZWMpXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaCBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxcbmluZGV4IDAxMjRmODNiMzliODM5Li5kOTcyODAyNzBjMjdiOCAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcXG4rKysgYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcXG5AQCAtNTc1LDYwICs1NzUsNDUgQEAgc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfcmVnaW9ucyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuIFxcdFxcdFxcdH0sIDMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4te1xcbi1cXHRzdHJ1Y3QgZGFtb25fYXR0cnMgYXR0cnMgPSB7XFxuLVxcdFxcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxMCxcXG4tXFx0XFx0LmFnZ3JfaW50ZXJ2YWwgPSAoKHVuc2lnbmVkIGxvbmcpVUlOVF9NQVggKyAxKSAqIDEwXFxuLVxcdH07XFxuLVxcbi1cXHQvKlxcbi1cXHQgKiBJbiBzb21lIGNhc2VzIHN1Y2ggYXMgMzJiaXQgYXJjaGl0ZWN0dXJlcyB3aGVyZSBVSU5UX01BWCBpc1xcbi1cXHQgKiBVTE9OR19NQVgsIGF0dHJzLmFnZ3JfaW50ZXJ2YWwgYmVjb21lcyB6ZXJvLiAgQ2FsbGluZ1xcbi1cXHQgKiBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgpIGluIHRoZSBjYXNlIHdpbGwgY2F1c2VcXG4tXFx0ICogZGl2aWRlLWJ5LXplcm8uICBTdWNoIGNhc2UgaXMgcHJvaGliaXRlZCBpbiBub3JtYWwgZXhlY3V0aW9uIHNpbmNlXFxuLVxcdCAqIHRoZSBjYXV0aW9uIGlzIGRvY3VtZW50ZWQgb24gdGhlIGNvbW1lbnQgZm9yIHRoZSBmdW5jdGlvbiwgYW5kXFxuLVxcdCAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIHRoZSBjaGVjay4gIFNraXAgdGhlIHRlc3QgaW5cXG4tXFx0ICogdGhlIGNhc2UuXFxuLVxcdCAqL1xcbi1cXHRpZiAoIWF0dHJzLmFnZ3JfaW50ZXJ2YWwpXFxuLVxcdFxcdGt1bml0X3NraXAodGVzdCwgXFxcImFnZ3JfaW50ZXJ2YWwgaXMgemVyby5cXFwiKTtcXG4tXFxuLVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgxMjMsIFxcdTAwMjZhdHRycyksIDApO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuIHtcXG4gXFx0c3RydWN0IGRhbW9uX2F0dHJzIG9sZF9hdHRycyA9IHtcXG4gXFx0XFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEwLCAuYWdncl9pbnRlcnZhbCA9IDEwMDAsfTtcXG4gXFx0c3RydWN0IGRhbW9uX2F0dHJzIG5ld19hdHRycztcXG4gXFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciA9IGRhbW9uX25ld19yZWdpb24oMywgNyk7XFxuK1xcdHN0cnVjdCBkYW1vbl9jdHggKmN0eDtcXG4gXFxuIFxcdGlmICghcilcXG4gXFx0XFx0a3VuaXRfc2tpcCh0ZXN0LCBcXFwicmVnaW9uIGFsbG9jIGZhaWxcXFwiKTtcXG4rXFx0Y3R4ID0gZGFtb25fbmV3X2N0eCgpO1xcbitcXHRpZiAoIWN0eCkge1xcbitcXHRcXHRkYW1vbl9mcmVlX3JlZ2lvbihyKTtcXG4rXFx0XFx0a3VuaXRfc2tpcCh0ZXN0LCBcXFwiY3R4IGFsbG9jIGZhaWxcXFwiKTtcXG4rXFx0fVxcbiBcXG4gXFx0ci1cXHUwMDNlbnJfYWNjZXNzZXMgPSAxNTtcXG4gXFx0ci1cXHUwMDNlYWdlID0gMjA7XFxuIFxcbiBcXHRuZXdfYXR0cnMgPSAoc3RydWN0IGRhbW9uX2F0dHJzKXtcXG4gXFx0XFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEwMCwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwMCx9O1xcbi1cXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXFx1MDAyNm9sZF9hdHRycywgXFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xcbitcXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXFx1MDAyNm9sZF9hdHRycywgXFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XFxuIFxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2Vucl9hY2Nlc3NlcywgMTUpO1xcbiBcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cXHUwMDNlYWdlLCAyKTtcXG4gXFxuIFxcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xcbiBcXHRcXHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcXG4tXFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFxcdTAwMjZvbGRfYXR0cnMsIFxcdTAwMjZuZXdfYXR0cnMsIGZhbHNlKTtcXG4rXFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFxcdTAwMjZvbGRfYXR0cnMsIFxcdTAwMjZuZXdfYXR0cnMsIGZhbHNlLCBjdHgpO1xcbiBcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cXHUwMDNlbnJfYWNjZXNzZXMsIDE1MCk7XFxuIFxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2VhZ2UsIDIpO1xcbiBcXG4gXFx0bmV3X2F0dHJzID0gKHN0cnVjdCBkYW1vbl9hdHRycyl7XFxuIFxcdFxcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxLCAuYWdncl9pbnRlcnZhbCA9IDEwMH07XFxuLVxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSk7XFxuK1xcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcXG4gXFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXFx1MDAzZW5yX2FjY2Vzc2VzLCAxNTApO1xcbiBcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cXHUwMDNlYWdlLCAyMCk7XFxuIFxcbiBcXHRkYW1vbl9mcmVlX3JlZ2lvbihyKTtcXG4rXFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbkBAIC0xNTcyLDcgKzE1NTcsNiBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc3BsaXRfYWJvdmVfaGFsZl9wcm9ncmVzc2VzKSxcXG4gXFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X29wc19yZWdpc3RyYXRpb24pLFxcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc2V0X3JlZ2lvbnMpLFxcbi1cXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnApLFxcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KSxcXG4gXFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3NldF9hdHRycyksXFxuIFxcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9tdnN1bSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjU3OjM3LjYxNzM1OTkyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQzNzY1Nzk4MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3NldF9hdHRyc1wiLFxuICAgIFwiZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c1wiLFxuICAgIFwiZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0XCIsXG4gICAgXCJkYW1vbl91cGRhdGVfcHJvYmVfaGl0c1wiLFxuICAgIFwiZGFtb25fcHJvYmVfaGl0c19tdnN1bVwiLFxuICAgIFwiZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc1wiLFxuICAgIFwiZGFtb25faG90X3Njb3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBTU9OIGNvcmUgbG9naWMgdG8gY29ycmVjdGx5IHNjYWxlIHByb2JlIGhpdHMgd2hlbiBtb25pdG9yaW5nIGF0dHJpYnV0ZXMgKGxpa2UgYWdncmVnYXRpb24gaW50ZXJ2YWwgb3Igc2FtcGxlIGludGVydmFsKSBhcmUgdXBkYXRlZC4gSXQgYWxzbyByZW5hbWVzIGEgZnVuY3Rpb24gYW5kIHVwZGF0ZXMgaXRzIHVzYWdlIGluIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb25pdG9yaW5nIGZyYW1ld29yayB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgYW5kIGtlcm5lbCBtb2R1bGVzIGxpa2UgYGRhbW9uX2xydV9zb3J0YC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWVjNGQ0Mzc0ZDllZjQxZDgwNzZhNjY2ZDJhNTcwMmQxMzM4YmEzZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDY6NTc6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IDE5YjdlODM5YmRlMGI0Li42M2Y1OTY5NTdjMWYxZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTA1NiwxNSArMTA1NiwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZGFtb25fdGFyZ2V0X2hhc19waWQoY29uc3Qgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIFx0cmV0dXJuIGN0eC1cdTAwM2VvcHMuaWQgPT0gREFNT05fT1BTX1ZBRERSIHx8IGN0eC1cdTAwM2VvcHMuaWQgPT0gREFNT05fT1BTX0ZWQUREUjtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbWF4X25yX2FjY2Vzc2VzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4rLyogUmV0dXJucyBudW1iZXIgb2Ygc2FtcGxlcyBwZXIgYWdncmVnYXRpb24gaW50ZXJ2YWwgKi9cbitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyKFxuK1x0XHRjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgc2FtcGxlX2ludGVydmFsO1xuLVx0dW5zaWduZWQgbG9uZyBtYXhfbnJfYWNjZXNzZXM7XG4rXHR1bnNpZ25lZCBsb25nIG5yX3NhbXBsZXM7XG4gXG4gXHRzYW1wbGVfaW50ZXJ2YWwgPSBhdHRycy1cdTAwM2VzYW1wbGVfaW50ZXJ2YWwgPyA6IDE7XG4tXHRtYXhfbnJfYWNjZXNzZXMgPSBtaW4oYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbCAvIHNhbXBsZV9pbnRlcnZhbCxcbitcdG5yX3NhbXBsZXMgPSBtaW4oYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbCAvIHNhbXBsZV9pbnRlcnZhbCxcbiBcdFx0XHQodW5zaWduZWQgbG9uZylVSU5UX01BWCk7XG4tXHRyZXR1cm4gbWF4X25yX2FjY2Vzc2VzID8gOiAxO1xuK1x0cmV0dXJuIG5yX3NhbXBsZXMgPyA6IDE7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggMzkwZTAwYjM2ODVlZmMuLjExNDczYWExZjcwZjQxIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0yOTAsNiArMjkwLDkgQEAgdW5zaWduZWQgY2hhciBkYW1vbl9wcm9iZV9oaXRzX212c3VtKGludCBwcm9iZV9pZHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdFx0Y3R4LVx1MDAzZXBhc3NlZF9zYW1wbGVfaW50ZXJ2YWxzO1xuIFx0bGVmdF93aW5kb3dfYnAgPSBtdWx0X2ZyYWMobGVmdF93aW5kb3csIDEwMDAwLCB3aW5kb3dfbGVuKTtcbiBcbitcdGlmIChsZWZ0X3dpbmRvd19icCA9PSAxMDAwMClcbitcdFx0cmV0dXJuIHItXHUwMDNlbGFzdF9wcm9iZV9oaXRzW3Byb2JlX2lkeF07XG4rXG4gXHRyZXR1cm4gZGFtb25fbXZzdW0oci1cdTAwM2Vwcm9iZV9oaXRzW3Byb2JlX2lkeF0sXG4gXHRcdFx0ci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNbcHJvYmVfaWR4XSwgbGVmdF93aW5kb3dfYnApO1xuIH1cbkBAIC04NzYsNDMgKzg3OSw1NyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXG4gXHRyZXR1cm4gYWdlICogb2xkX2F0dHJzLVx1MDAzZWFnZ3JfaW50ZXJ2YWwgLyBuZXdfYXR0cnMtXHUwMDNlYWdncl9pbnRlcnZhbDtcbiB9XG4gXG4tLyogY29udmVydCBhY2Nlc3MgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApIHRvIG5yX2FjY2Vzc2VzICovXG4tc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9hY2Nlc3Nlc19icF90b19ucl9hY2Nlc3Nlcyhcbi1cdFx0dW5zaWduZWQgaW50IGFjY2Vzc2VzX2JwLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuKy8qIGNvbnZlcnQgc2FtcGxlIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBjb3VudCAqL1xuK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2JwX3RvX2NvdW50KFxuK1x0XHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4ge1xuLVx0cmV0dXJuIGFjY2Vzc2VzX2JwICogZGFtb25fbWF4X25yX2FjY2Vzc2VzKGF0dHJzKSAvIDEwMDAwO1xuK1x0cmV0dXJuIGJwICogZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncihhdHRycykgLyAxMDAwMDtcbiB9XG4gXG4tLypcbi0gKiBDb252ZXJ0IG5yX2FjY2Vzc2VzIHRvIGFjY2VzcyByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkuXG4tICpcbi0gKiBDYWxsZXJzIHNob3VsZCBlbnN1cmUgYXR0cnMuYWdncl9pbnRlcnZhbCBpcyBub3QgemVybywgbGlrZVxuLSAqIGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHMoKSBkb2VzIC4gIE90aGVyd2lzZSwgZGl2aWRlLWJ5LXplcm8gd291bGRcbi0gKiBoYXBwZW4uXG4tICovXG4tc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icChcbi1cdFx0dW5zaWduZWQgaW50IG5yX2FjY2Vzc2VzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuKy8qIGNvbnZlcnQgc2FtcGxlIGNvdW50IHRvIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSAqL1xuK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKFxuK1x0XHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4ge1xuLVx0cmV0dXJuIG11bHRfZnJhYyhucl9hY2Nlc3NlcywgMTAwMDAsIGRhbW9uX21heF9ucl9hY2Nlc3NlcyhhdHRycykpO1xuK1x0cmV0dXJuIG11bHRfZnJhYyhjb3VudCwgMTAwMDAsIGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoYXR0cnMpKTtcbiB9XG4gXG4tc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc19mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBucl9hY2Nlc3NlcyxcbitzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXG4gXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycylcbiB7XG4tXHRyZXR1cm4gZGFtb25fYWNjZXNzZXNfYnBfdG9fbnJfYWNjZXNzZXMoXG4tXHRcdFx0ZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoXG4tXHRcdFx0XHRucl9hY2Nlc3Nlcywgb2xkX2F0dHJzKSxcbi1cdFx0XHRuZXdfYXR0cnMpO1xuK1x0cmV0dXJuIGRhbW9uX3NhbXBsZV9icF90b19jb3VudChcbitcdFx0XHRkYW1vbl9zYW1wbGVfY291bnRfdG9fYnAobnIsIG9sZF9hdHRycyksIG5ld19hdHRycyk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4rXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcbitcdFx0Ym9vbCBhZ2dyZWdhdGluZywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuK3tcbitcdHN0cnVjdCBkYW1vbl9wcm9iZSAqcDtcbitcdGludCBpID0gMDtcbitcbitcdGRhbW9uX2Zvcl9lYWNoX3Byb2JlKHAsIGN0eCkge1xuK1x0XHRyLVx1MDAzZWxhc3RfcHJvYmVfaGl0c1tpXSA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyhcbitcdFx0XHRcdHItXHUwMDNlbGFzdF9wcm9iZV9oaXRzW2ldLCBvbGRfYXR0cnMsIG5ld19hdHRycyk7XG4rXHRcdGlmICghYWdncmVnYXRpbmcpXG4rXHRcdFx0ci1cdTAwM2Vwcm9iZV9oaXRzW2ldID0gZGFtb25fbnJfc2FtcGxlc19mb3JfbmV3X2F0dHJzKFxuK1x0XHRcdFx0XHRyLVx1MDAzZXByb2JlX2hpdHNbaV0sIG9sZF9hdHRycyxcbitcdFx0XHRcdFx0bmV3X2F0dHJzKTtcbitcdFx0ZWxzZVxuK1x0XHRcdHItXHUwMDNlcHJvYmVfaGl0c1tpXSA9IDA7XG4rXHRcdGkrKztcbitcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcbi1cdFx0Ym9vbCBhZ2dyZWdhdGluZylcbitcdFx0Ym9vbCBhZ2dyZWdhdGluZywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbi1cdHItXHUwMDNlbGFzdF9ucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX2Zvcl9uZXdfYXR0cnMoXG4rXHRkYW1vbl91cGRhdGVfcHJvYmVfaGl0cyhyLCBvbGRfYXR0cnMsIG5ld19hdHRycywgYWdncmVnYXRpbmcsIGN0eCk7XG4rXG4rXHRyLVx1MDAzZWxhc3RfbnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnMoXG4gXHRcdFx0ci1cdTAwM2VsYXN0X25yX2FjY2Vzc2VzLCBvbGRfYXR0cnMsIG5ld19hdHRycyk7XG4gXHRpZiAoIWFnZ3JlZ2F0aW5nKVxuLVx0XHRyLVx1MDAzZW5yX2FjY2Vzc2VzID0gZGFtb25fbnJfYWNjZXNzZXNfZm9yX25ld19hdHRycyhcbitcdFx0ci1cdTAwM2Vucl9hY2Nlc3NlcyA9IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyhcbiBcdFx0XHRcdHItXHUwMDNlbnJfYWNjZXNzZXMsIG9sZF9hdHRycywgbmV3X2F0dHJzKTtcbiBcdGVsc2VcbiBcdFx0LypcbkBAIC05NDgsOCArOTY1LDggQEAgc3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXG4gXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodCwgY3R4KVxuIFx0XHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcbi1cdFx0XHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoXG4tXHRcdFx0XHRcdHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLCBhZ2dyZWdhdGluZyk7XG4rXHRcdFx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIG9sZF9hdHRycywgbmV3X2F0dHJzLFxuK1x0XHRcdFx0XHRhZ2dyZWdhdGluZywgY3R4KTtcbiB9XG4gXG4gLypcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuaW5kZXggZThjMzg5YWQzMjI2ZjcuLjdlMDc3MDg0Y2IwM2FhIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xuKysrIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuQEAgLTMwMyw3ICszMDMsNyBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRlcnIgPSAtRU5PTUVNO1xuLVx0aG90X3RocmVzID0gZGFtb25fbWF4X25yX2FjY2Vzc2VzKFx1MDAyNmF0dHJzKSAqXG4rXHRob3RfdGhyZXMgPSBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyKFx1MDAyNmF0dHJzKSAqXG4gXHRcdGhvdF90aHJlc19hY2Nlc3NfZnJlcSAvIDEwMDA7XG4gXHRob3Rfc2NoZW1lID0gZGFtb25fbHJ1X3NvcnRfbmV3X2hvdF9zY2hlbWUoaG90X3RocmVzKTtcbiBcdGlmICghaG90X3NjaGVtZSlcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9vcHMtY29tbW9uLmMgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcbmluZGV4IDZiZGQxY2ZkMzg2M2EzLi44OWM2OTRmNmU0ZmE4OSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL29wcy1jb21tb24uY1xuKysrIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXG5AQCAtMTEyLDcgKzExMiw3IEBAIGludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdGludCBob3RuZXNzO1xuIFxuIFx0ZnJlcV9zdWJzY29yZSA9IHItXHUwMDNlbnJfYWNjZXNzZXMgKiBEQU1PTl9NQVhfU1VCU0NPUkUgL1xuLVx0XHRkYW1vbl9tYXhfbnJfYWNjZXNzZXMoXHUwMDI2Yy1cdTAwM2VhdHRycyk7XG4rXHRcdGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3IoXHUwMDI2Yy1cdTAwM2VhdHRycyk7XG4gXG4gXHRhZ2VfaW5fc2VjID0gKHVuc2lnbmVkIGxvbmcpci1cdTAwM2VhZ2UgKiBjLVx1MDAzZWF0dHJzLmFnZ3JfaW50ZXJ2YWwgLyAxMDAwMDAwO1xuIFx0aWYgKGFnZV9pbl9zZWMpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXG5pbmRleCAwMTI0ZjgzYjM5YjgzOS4uZDk3MjgwMjcwYzI3YjggMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcbisrKyBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxuQEAgLTU3NSw2MCArNTc1LDQ1IEBAIHN0YXRpYyB2b2lkIGRhbW9uX3Rlc3Rfc2V0X3JlZ2lvbnMoc3RydWN0IGt1bml0ICp0ZXN0KVxuIFx0XHRcdH0sIDMpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwKHN0cnVjdCBrdW5pdCAqdGVzdClcbi17XG4tXHRzdHJ1Y3QgZGFtb25fYXR0cnMgYXR0cnMgPSB7XG4tXHRcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxMCxcbi1cdFx0LmFnZ3JfaW50ZXJ2YWwgPSAoKHVuc2lnbmVkIGxvbmcpVUlOVF9NQVggKyAxKSAqIDEwXG4tXHR9O1xuLVxuLVx0Lypcbi1cdCAqIEluIHNvbWUgY2FzZXMgc3VjaCBhcyAzMmJpdCBhcmNoaXRlY3R1cmVzIHdoZXJlIFVJTlRfTUFYIGlzXG4tXHQgKiBVTE9OR19NQVgsIGF0dHJzLmFnZ3JfaW50ZXJ2YWwgYmVjb21lcyB6ZXJvLiAgQ2FsbGluZ1xuLVx0ICogZGFtb25fbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnAoKSBpbiB0aGUgY2FzZSB3aWxsIGNhdXNlXG4tXHQgKiBkaXZpZGUtYnktemVyby4gIFN1Y2ggY2FzZSBpcyBwcm9oaWJpdGVkIGluIG5vcm1hbCBleGVjdXRpb24gc2luY2Vcbi1cdCAqIHRoZSBjYXV0aW9uIGlzIGRvY3VtZW50ZWQgb24gdGhlIGNvbW1lbnQgZm9yIHRoZSBmdW5jdGlvbiwgYW5kXG4tXHQgKiBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKCkgZG9lcyB0aGUgY2hlY2suICBTa2lwIHRoZSB0ZXN0IGluXG4tXHQgKiB0aGUgY2FzZS5cbi1cdCAqL1xuLVx0aWYgKCFhdHRycy5hZ2dyX2ludGVydmFsKVxuLVx0XHRrdW5pdF9za2lwKHRlc3QsIFwiYWdncl9pbnRlcnZhbCBpcyB6ZXJvLlwiKTtcbi1cbi1cdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9ucl9hY2Nlc3Nlc190b19hY2Nlc3Nlc19icCgxMjMsIFx1MDAyNmF0dHJzKSwgMCk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBrdW5pdCAqdGVzdClcbiB7XG4gXHRzdHJ1Y3QgZGFtb25fYXR0cnMgb2xkX2F0dHJzID0ge1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMTAsIC5hZ2dyX2ludGVydmFsID0gMTAwMCx9O1xuIFx0c3RydWN0IGRhbW9uX2F0dHJzIG5ld19hdHRycztcbiBcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIgPSBkYW1vbl9uZXdfcmVnaW9uKDMsIDcpO1xuK1x0c3RydWN0IGRhbW9uX2N0eCAqY3R4O1xuIFxuIFx0aWYgKCFyKVxuIFx0XHRrdW5pdF9za2lwKHRlc3QsIFwicmVnaW9uIGFsbG9jIGZhaWxcIik7XG4rXHRjdHggPSBkYW1vbl9uZXdfY3R4KCk7XG4rXHRpZiAoIWN0eCkge1xuK1x0XHRkYW1vbl9mcmVlX3JlZ2lvbihyKTtcbitcdFx0a3VuaXRfc2tpcCh0ZXN0LCBcImN0eCBhbGxvYyBmYWlsXCIpO1xuK1x0fVxuIFxuIFx0ci1cdTAwM2Vucl9hY2Nlc3NlcyA9IDE1O1xuIFx0ci1cdTAwM2VhZ2UgPSAyMDtcbiBcbiBcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMTAwLCAuYWdncl9pbnRlcnZhbCA9IDEwMDAwLH07XG4tXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXHUwMDI2b2xkX2F0dHJzLCBcdTAwMjZuZXdfYXR0cnMsIGZhbHNlKTtcbitcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UsIGN0eCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2Vucl9hY2Nlc3NlcywgMTUpO1xuIFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlYWdlLCAyKTtcbiBcbiBcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcbi1cdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcdTAwMjZvbGRfYXR0cnMsIFx1MDAyNm5ld19hdHRycywgZmFsc2UpO1xuK1x0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFx1MDAyNm9sZF9hdHRycywgXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcbiBcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVx1MDAzZW5yX2FjY2Vzc2VzLCAxNTApO1xuIFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlYWdlLCAyKTtcbiBcbiBcdG5ld19hdHRycyA9IChzdHJ1Y3QgZGFtb25fYXR0cnMpe1xuIFx0XHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDB9O1xuLVx0ZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHIsIFx1MDAyNm9sZF9hdHRycywgXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSk7XG4rXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQociwgXHUwMDI2b2xkX2F0dHJzLCBcdTAwMjZuZXdfYXR0cnMsIGZhbHNlLCBjdHgpO1xuIFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHItXHUwMDNlbnJfYWNjZXNzZXMsIDE1MCk7XG4gXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgci1cdTAwM2VhZ2UsIDIwKTtcbiBcbiBcdGRhbW9uX2ZyZWVfcmVnaW9uKHIpO1xuK1x0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZGFtb25fdGVzdF9zZXRfYXR0cnMoc3RydWN0IGt1bml0ICp0ZXN0KVxuQEAgLTE1NzIsNyArMTU1Nyw2IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBkYW1vbl90ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc3BsaXRfYWJvdmVfaGFsZl9wcm9ncmVzc2VzKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9vcHNfcmVnaXN0cmF0aW9uKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9zZXRfcmVnaW9ucyksXG4tXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfbnJfYWNjZXNzZXNfdG9fYWNjZXNzZXNfYnApLFxuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdCksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfc2V0X2F0dHJzKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9tdnN1bSksXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1NzozNy42MTczNjIyMThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjgwMjQ5NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERBTU9OIENvcmUgTG9naWMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgREFNT04gY29yZSwgYW5kIHRoZSBmaXJzdCB0aGluZyBJIG5vdGljZSBpcyB0aGUgcmVuYW1pbmcgb2YgYGRhbW9uX21heF9ucl9hY2Nlc3Nlc2AgdG8gYGRhbW9uX25yX3NhbXBsZXNfcGVyX2FnZ3JgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIG5hbWUgY2hhbmdlLCBwcm9iYWJseSBmb3IgY2xhcml0eS4gSXQncyBnb29kIHRvIHNlZSB0aGVzZSBpbnRlcm5hbCB2YXJpYWJsZXMgYmVpbmcgcmVmYWN0b3JlZCBmb3IgYmV0dGVyIHVuZGVyc3RhbmRpbmcuXG5cblRoZW4sIHRoZXJlJ3MgYSBtb2RpZmljYXRpb24gdG8gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAsIGZvY3VzaW5nIG9uIHVwZGF0aW5nIHByb2JlIGhpdHMg4oCTIGByLVx1MDAzZXByb2JlX2hpdHNbaV1gIGFuZCBgci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNbaV1gLiBPa2F5LCBzbyB3ZSdyZSByZWZpbmluZyBob3cgcHJvYmUgaGl0IGRhdGEgaXMgaGFuZGxlZC4gQSBuZXcgZnVuY3Rpb24sIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2AsIGhhcyBiZWVuIGFkZGVkLCB3aGljaCBzdWdnZXN0cyBhIHBvc3NpYmxlIHJlZmFjdG9yaW5nIHRvIGVuY2Fwc3VsYXRlIHNvbWUgb2YgdGhhdCBsb2dpYy5cblxuVGhlIGNoYW5nZSB0byBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAgdG8gcmV0dXJuIGByLVx1MDAzZWxhc3RfcHJvYmVfaGl0c1twcm9iZV9pZHhdYCB1bmRlciB0aGUgY29uZGl0aW9uIHRoYXQgYGxlZnRfd2luZG93X2JwID09IDEwMDAwYCBpcyBpbnRlcmVzdGluZy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb250ZXh0IG9mIHRoYXQgc3BlY2lmaWMgY29uZGl0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSB0aGVyZS4gSXQgbGlrZWx5IHJlbGF0ZXMgdG8gaG93IHRoZSBhZ2dyZWdhdGlvbiB3aW5kb3cgb3IgYmFzZSBwb2ludGVyIGNhbGN1bGF0aW9ucyBhcmUgYmVoYXZpbmcgaW4gdGhhdCBlZGdlIGNhc2UuXG5cbk5leHQsIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgIGFuZCBgZGFtb25fdGVzdF91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLCBib3RoIG5vdyB0YWtpbmcgdGhlIGBjdHhgIGFyZ3VtZW50LiBUaGF0IHNpZ25hbHMgc29tZSBjb250ZXh0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHRvIHRoZXNlIGZ1bmN0aW9ucy4gVGhpcyBpcyBwcm9iYWJseSB0byBmYWNpbGl0YXRlIHBhc3Npbmcgc29tZSBjcnVjaWFsIHJ1bnRpbWUgaW5mb3JtYXRpb24gaW50byB0aGUgbW9uaXRvcmluZyB1cGRhdGUgcGF0aC5cblxuQW5kIGZpbmFsbHksIHRoZSByZW1vdmFsIG9mIGBkYW1vbl90ZXN0X25yX2FjY2Vzc2VzX3RvX2FjY2Vzc2VzX2JwYC4gVGhpcyBzdWdnZXN0cyBzb21lIHRlc3QgY29kZSBoYXMgYmVlbiByZW1vdmVkLiBIb3BlZnVsbHksIHRoZSBmdW5jdGlvbmFsaXR5IGlzIG1haW50YWluZWQgdmlhIG90aGVyLCBtb3JlIGVmZmljaWVudCB0ZXN0IHBhdGhzLlxuXG5CZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIG5lZWQgdG8gY29uZmlybSBEQU1PTiBpcyBldmVuIGFjdGl2ZSBhbmQgdGVzdGFibGUuIE9mIGNvdXJzZSwgaXQgaXMuIEFzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmZWF0dXJlLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBJIGtub3cgREFNT04gaGFzIHRoZSBzeXNmcyBpbnRlcmZhY2UsIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSwgYW5kIGlzIHVzZWQgYnkgbW9kdWxlcyBsaWtlIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9yZWNsYWltYC4gSXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgY29uZmlnIG9wdGlvbnMgcmVsYXRlZCB0byBEQU1PTidzIGJlaGF2aW9yIHRoYXQgbWlnaHQgYmUgaGVscGZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1Nzo0NC4yOTc2MTM4NjhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NzMxNjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9Mz1tZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbm1tL2RhbW9uL0tjb25maWctNC1cXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXFxubW0vZGFtb24vS2NvbmZpZy02LVxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTQtXFxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxubW0vZGFtb24vS2NvbmZpZy0xNi1cXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMjUtXFxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMzctXFxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNDYtXFxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxcbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNjctXFxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcXG5tbS9kYW1vbi9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNzUtXFxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNzctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxcbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy05OS1cXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMDctXFxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMTUtXFxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXFxubW0vZGFtb24vS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTc6NDQuNDA3MzUxNTQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ2ODc0NzM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVjZW50IERBTU9OIEtlcm5lbCBNb2RpZmljYXRpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGVzZSBEQU1PTiBjaGFuZ2VzLiBGaXJzdCwgSSBzZWUgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkIGFyZSBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGFuZCBgREFNT05fTFJVX1NPUlRgLiBJbW1lZGlhdGVseSwgYERBTU9OYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBqdW1wIG91dCBhcyB0aGUgbW9zdCByZWxldmFudCwgZ2l2ZW4gdGhlIGZpbGVzIG1vZGlmaWVkOiBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYW5kIHRoZSBLVW5pdCBoZWFkZXIuXG5cbk5vdywgbGV0J3MgZXhhbWluZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSB0b3VjaGVkLiBJJ3ZlIGdvdDogYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBgZGFtb25fc2FtcGxlX2JwX3RvX2NvdW50YCwgYGRhbW9uX3NhbXBsZV9jb3VudF90b19icGAsIGBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnNgLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgLCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgLCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGFuZCBgZGFtb25faG90X3Njb3JlYC4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzLCBhcmUgYW55IG9mIHRoZXNlIGZ1bmN0aW9ucyBleHBvc2VkIHRvIHVzZXJzcGFjZT8gVGhhdCdzIHdoYXQgcmVhbGx5IG1hdHRlcnMgd2hlbiB5b3UncmUgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGludGVyYWN0aW9uLiBPa2F5LCBzbyBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AgaXMgY2FsbGVkIGZyb20gYGtkYW1vbmRfZm5gLCB3aGljaCBpcyB0aGUgREFNT04gbWFpbiB0aHJlYWQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCBpcyBjYWxsZWQgZnJvbSB0aGUgYGRhbW9uX2xydV9zb3J0X3RpbWVyYCBvciBgZGFtb25fbHJ1X3NvcnRfdHVybm9uYCByb3V0aW5lcywgd2hpY2ggaW1wbGllcyB0aGVzZSBhcmUgcHJvYmFibHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LiBBbmQgYGRhbW9uX2hvdF9zY29yZWAgaXMgaW52b2tlZCB2aWEgb3BzLlxuXG5JJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGUgYWNjZXNzaWJpbGl0eSBvZiBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AuIFRoaXMgaXMgd2hlcmUgSSdsbCBkaWcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjU3OjUwLjg3NjEwMjE1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI5MjU0ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTkyMz1zdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NTItICovXFxubW0vZGFtb24vY29yZS5jOjk1MzpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9jb3JlLmMtOTU0LVxcdFxcdHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLCBib29sIGFnZ3JlZ2F0aW5nKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTEwMTE9aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTA0MC1cXG5tbS9kYW1vbi9jb3JlLmM6MTA0MTpcXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKGN0eCwgYXR0cnMsIGFnZ3JlZ2F0aW5nKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTA0Mi1cXHRjdHgtXFx1MDAzZWF0dHJzID0gKmF0dHJzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1Nzo1MC45ODkwMzQyNjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjYyNTUzMTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhIGFuZCB0aGlua2luZyB0aGlzIHRocm91Z2g6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrOiBgZGFtb25fc2V0X2F0dHJzYCBhbmQgSXRzIE9yaWdpbnMqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBmbG93IGhlcmUuIEknbSBmb2N1c2luZyBvbiBgZGFtb25fc2V0X2F0dHJzYC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpIGZyYW1ld29yay4gVGhlIGltcG9ydGFudCB0aGluZyB0byBub3RlIGlzIHRoYXQgYGRhbW9uX3NldF9hdHRyc2AgaXMgYmVpbmcgdHJpZ2dlcmVkIGZyb20gZWl0aGVyIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgIG9yIGEgZnVuY3Rpb24gc2ltaWxhciB0byBpdC4gVGhpcyBjb25uZWN0aW9uIGlzIGtleSBiZWNhdXNlIGl0IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IGFjdGluZyB1cG9uIHVzZXIgaW5wdXQgb3IgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBwcm9iYWJseSB0aHJvdWdoIGEgc3lzZnMgaW50ZXJmYWNlLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdmVyaWZ5IGlmIGl0J3MgdGhlIG9ubHkgcGF0aCwgYmVjYXVzZSBvdGhlciBwYXRocyB3b3VsZCBjaGFuZ2UgdGhlIG5hdHVyZSBvZiB0aGlzIHRob3VnaHQuIFRoYXQgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyBmdW5kYW1lbnRhbCB0byBoYW5kbGluZyBhbmQgYXBwbHlpbmcgY2hhbmdlcyB0byBEQU1PTidzIGJlaGF2aW9yIHRoYXQgYXJlIGRyaXZlbiBieSBleHRlcm5hbCBpbnRlcmFjdGlvbnMsIHN1Y2ggYXMgdGhvc2UgaW5pdGlhdGVkIHRocm91Z2ggdGhlIHN5c3RlbSBmaWxlIHN5c3RlbS4gVGhlIHF1ZXN0aW9uIG5vdyBpcyB3aGF0IGtpbmQgb2YgYXR0cmlidXRlcyBhcmUgYmVpbmcgc2V0LiBJcyBpdCByYXRlLCB0aHJlc2hvbGRzLCBzaXplLCByZWdpb24sIHRhcmdldCwgb3Igc29tZSBvdGhlciBjb25maWd1cmFibGUgc2V0dGluZz8gQWxzbywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2UgYmVpbmcgaW1wbGVtZW50ZWQgZHluYW1pY2FsbHk/IEFyZSB0aGVyZSBhbnkgdGhyZWFkIHNhZmV0eSBjb25jZXJucz8gQW55IHJhY2UgY29uZGl0aW9ucyB0byBjb25zaWRlciBiZWNhdXNlIG9mIHRoaXM/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmIGFuZCB0cmFjZSBpdHMgaW50ZXJhY3Rpb25zIHRvIGZ1bGx5IGdyYXNwIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NjksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1Nzo1NC42NTE1ODk4ODFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MjM1NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3NldF9hdHRyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTk3Nj1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTk5MS0vKipcXG5tbS9kYW1vbi9jb3JlLmM6OTkyOiAqIGRhbW9uX3NldF9hdHRycygpIC0gU2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBtb25pdG9yaW5nLlxcbm1tL2RhbW9uL2NvcmUuYy05OTMtICogQGN0eDpcXHRcXHRtb25pdG9yaW5nIGNvbnRleHRcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMDEwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMDExOmludCBkYW1vbl9zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMDEyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNjg0PXN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3MTQtXFx0ICogc2NoZW1lcyBhbmQgdGFyZ2V0cyBzaG91bGQgYmUgdXBkYXRlZCBmaXJzdCwgc2luY2VcXG5tbS9kYW1vbi9jb3JlLmM6MTcxNTpcXHQgKiAxLiBkYW1vbl9zZXRfYXR0cnMoKSB1cGRhdGVzIG1vbml0b3JpbmcgcmVzdWx0cyBvZiB0YXJnZXRzIGFuZFxcbm1tL2RhbW9uL2NvcmUuYy0xNzE2LVxcdCAqIG5leHRfYXBwbHlfc2lzIG9mIHNjaGVtZXMsIGFuZFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3MjAtXFx0aWYgKCFkYW1vbl9hdHRyc19lcXVhbHMoXFx1MDAyNmRzdC1cXHUwMDNlYXR0cnMsIFxcdTAwMjZzcmMtXFx1MDAzZWF0dHJzKSkge1xcbm1tL2RhbW9uL2NvcmUuYzoxNzIxOlxcdFxcdGVyciA9IGRhbW9uX3NldF9hdHRycyhkc3QsIFxcdTAwMjZzcmMtXFx1MDAzZWF0dHJzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTcyMi1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjE4Mj1zdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIHZvaWQga2RhbW9uZF90dW5lX2ludGVydmFscyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIyMDAtXFx0dHJhY2VfZGFtb25fbW9uaXRvcl9pbnRlcnZhbHNfdHVuZShuZXdfYXR0cnMuc2FtcGxlX2ludGVydmFsKTtcXG5tbS9kYW1vbi9jb3JlLmM6MjIwMTpcXHRkYW1vbl9zZXRfYXR0cnMoYywgXFx1MDAyNm5ld19hdHRycyk7XFxubW0vZGFtb24vY29yZS5jLTIyMDItfVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTM2NDM9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzY3Mi1cXHRcXHQgKiBiZSBjaGFuZ2VkIGZyb20ga2RhbW9uZF9jYWxsKCkuICBSZWFkIHRoZSB2YWx1ZXMgaGVyZSwgYW5kXFxubW0vZGFtb24vY29yZS5jOjM2NzM6XFx0XFx0ICogdXNlIHRob3NlIGZvciB0aGlzIGl0ZXJhdGlvbi4gIFRoYXQgaXMsIGRhbW9uX3NldF9hdHRycygpXFxubW0vZGFtb24vY29yZS5jLTM2NzQtXFx0XFx0ICogdXBkYXRlZCBuZXcgdmFsdWVzIGFyZSByZXNwZWN0ZWQgZnJvbSBuZXh0IGl0ZXJhdGlvbi5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zNzMzLVxcdFxcdFxcdFxcdCAqIGZyb20ga2RhbW9uZF9jYWxsKCkuICBJbiB0aGUgY2FzZSxcXG5tbS9kYW1vbi9jb3JlLmM6MzczNDpcXHRcXHRcXHRcXHQgKiBkYW1vbl9zZXRfYXR0cnMoKSB3aGljaCB3aWxsIGJlIGNhbGxlZCBmcm9tXFxubW0vZGFtb24vY29yZS5jLTM3MzUtXFx0XFx0XFx0XFx0ICoga2RhbW9uZF90dW5lX2ludGVydmFsKCkgbWF5IHdyb25nbHkgdGhpbmtcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MjcxPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMDAtXFx0fVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MzAxOlxcdGVyciA9IGRhbW9uX3NldF9hdHRycyhwYXJhbV9jdHgsIFxcdTAwMjZhdHRycyk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMDItXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYz0xOTQ9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX2FwcGx5X3BhcmFtZXRlcnModm9pZClcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMjQtXFx0fVxcbm1tL2RhbW9uL3JlY2xhaW0uYzoyMjU6XFx0ZXJyID0gZGFtb25fc2V0X2F0dHJzKHBhcmFtX2N0eCwgXFx1MDAyNmF0dHJzKTtcXG5tbS9kYW1vbi9yZWNsYWltLmMtMjI2LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9zdGF0LmM9MTUxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zdGF0X2J1aWxkX2N0eCh2b2lkKVxcbi0tXFxubW0vZGFtb24vc3RhdC5jLTE3NS1cXHR9O1xcbm1tL2RhbW9uL3N0YXQuYzoxNzY6XFx0aWYgKGRhbW9uX3NldF9hdHRycyhjdHgsIFxcdTAwMjZhdHRycykpXFxubW0vZGFtb24vc3RhdC5jLTE3Ny1cXHRcXHRnb3RvIGZyZWVfb3V0O1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xODg5PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTkwOC1cXHR9O1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTkwOTpcXHRyZXR1cm4gZGFtb25fc2V0X2F0dHJzKGN0eCwgXFx1MDAyNmF0dHJzKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTE5MTAtfVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTYxOT1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3NldF9hdHRycyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjI5LVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2MzA6XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcXHUwMDI2dmFsaWRfYXR0cnMpLCAwKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjMxLVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYzMy1cXHRpbnZhbGlkX2F0dHJzLm1pbl9ucl9yZWdpb25zID0gMTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjM0OlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9zZXRfYXR0cnMoYywgXFx1MDAyNmludmFsaWRfYXR0cnMpLCAtRUlOVkFMKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjM1LVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYzNy1cXHRpbnZhbGlkX2F0dHJzLm1heF9ucl9yZWdpb25zID0gOTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjM4OlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9zZXRfYXR0cnMoYywgXFx1MDAyNmludmFsaWRfYXR0cnMpLCAtRUlOVkFMKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjM5LVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTY0MS1cXHRpbnZhbGlkX2F0dHJzLmFnZ3JfaW50ZXJ2YWwgPSA0OTk5O1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2NDI6XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX3NldF9hdHRycyhjLCBcXHUwMDI2aW52YWxpZF9hdHRycyksIC1FSU5WQUwpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02NDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA2OjU3OjU0Ljc4MDg4NTYxOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MDIwMTE5NzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGFtb24gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2guIFRoZSBrZXkgdGhpbmcganVtcGluZyBvdXQgYXQgbWUgaXMgdGhhdCBgZGFtb25fc2V0X2F0dHJzYCBpcyBhY2Nlc3NpYmxlIHZpYSBzeXNmcy4gVGhhdCdzIGEgY3JpdGljYWwgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgY2hhbmdlIGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0sIGFuZCB3aGF0IGV4dGVybmFsIGNvbnRyb2wgd2UgaGF2ZS5cblxuVGhlIGNvcmUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgc2VlbXMgdG8gYmUgaW4gdGhlIG1vZGlmaWNhdGlvbiBvZiBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YC4gTm93LCBpdOKAmXMgbm90IG9ubHkgdXBkYXRpbmcgdGhlIHJlc3VsdHMsIGJ1dCBhbHNvIGluY2x1ZGVzIHVwZGF0ZXMgZm9yIGByLVx1MDAzZXByb2JlX2hpdHNgIGFuZCBgci1cdTAwM2VsYXN0X3Byb2JlX2hpdHNgLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBzaGlmdDsgdGhpcyBpcyBtb3JlIHRoYW4ganVzdCByZWZhY3RvcmluZy4gSXQncyBjaGFuZ2luZyAqd2hhdCogZGF0YSBpcyBiZWluZyB0cmFja2VkLCB3aGljaCB3aWxsIGhhdmUgZG93bnN0cmVhbSBlZmZlY3RzLlxuXG5JIGFsc28gc2VlIGEgcmVuYW1lIOKAkyBgZGFtb25fbWF4X25yX2FjY2Vzc2VzYCBoYXMgYmVjb21lIGBkYW1vbl9ucl9zYW1wbGVzX3Blcl9hZ2dyYC4gT2theSwgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlIGZvciBjbGFyaXR5LCBhbmQgaXQncyBsZXNzIGxpa2VseSB0byBicmVhayBhbnl0aGluZywgYnV0IHRoZSBzZW1hbnRpY3Mgd2lsbCBoYXZlIGNoYW5nZWQgaW4gdGhlIGNvZGUuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgd2hlcmUgdGhhdCB2YXJpYWJsZSBpcyB1c2VkIGFuZCBtYWtlIHN1cmUgdGhlIG5ldyBuYW1lIHJlZmxlY3RzIHRoZSBtZWFuaW5nLCBlc3BlY2lhbGx5IGluIHJlbGF0aW9uIHRvIHRoZSBhZ2dyZWdhdGlvbiBwcm9jZXNzLlxuXG5GaW5hbGx5LCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYC4gVGhpcyBpcyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbiBuZXh0LiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCByaWdodCBhd2F5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNoYW5nZXMgdG8gYHByb2JlX2hpdHNgIGFuZCBgbGFzdF9wcm9iZV9oaXRzYCBpbXBhY3QgdGhhdCBmdW5jdGlvbi4gSXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgZm9yIHN1YnRsZSBzaWRlIGVmZmVjdHMgb3IgYmVoYXZpb3JhbCBkaWZmZXJlbmNlcyByZWxhdGVkIHRvIHRoZSBhY2Nlc3MgcGF0dGVybiB0cmFja2luZy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZpbmQgaWYgdGhlIGNoYW5nZXMgYXJlIGdvaW5nIHRvIGltcGFjdCB0aGUgc3RhdGlzdGljcyB0aGF0IHRoZSBhbGdvcml0aG0gdXNlcyB0byBkZXRlcm1pbmUgbWVtb3J5IGFsbG9jYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTg6MTIuODAxMDA3NDYxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU1NzQ4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fcHJvYmVfaGl0c19tdnN1bVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI1Mj11bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzUtXFxubW0vZGFtb24vY29yZS5jOjI3Njp1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMjc3LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz05MD1zdGF0aWMgaW50IGRhbW9zX3N5c2ZzX3Byb2Jlc19hZGRfZGlycyhzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpwcm9iZXMsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTEzLVxcdFxcdHN5c19wcm9iZSA9IGRhbW9zX3N5c2ZzX3Byb2JlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMTQ6XFx0XFx0XFx0XFx0ZGFtb25fcHJvYmVfaGl0c19tdnN1bShpLCByZWdpb24sIGN0eCkpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTUtXFx0XFx0aWYgKCFzeXNfcHJvYmUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTg6MTIuOTA2NTkwNDg5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5ODAxMTQwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCBmb3IgUHJvYmUgSGl0IFVwZGF0ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBzcGVjaWZpY2FsbHkgaG93IGBkYW1vbl9wcm9iZV9oaXRzX212c3VtYCB0aWVzIGludG8gYGRhbW9zX3N5c2ZzX3Byb2Jlc19hZGRfZGlyc2AuIEl0IHNlZW1zIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAuIFRoZSBtYWluIGNvbmNlcm4gaGVyZSBpcyBjb3JyZWN0bHkgc2NhbGluZyB0aGUgcHJvYmUgaGl0IGNvdW50cyB3aGVuIHRoZSBtb25pdG9yaW5nIHBhcmFtZXRlcnMsIHN1Y2ggYXMgdGhlIGFnZ3JlZ2F0aW9uIG9yIHNhbXBsZSBpbnRlcnZhbHMsIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRqdXN0bWVudCB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHksIHdoaWNoIGlzIGdvb2QuXG5cbk5vdywgbGV0J3MgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBzZWUgd2UgaGF2ZSBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fTFJVX1NPUlRgLCBgREFNT05fUkVDTEFJTWAsIGBEQU1PTl9WQUREUmAsIGFuZCBgREFNT05fUEFERFJgLiBMb29raW5nIGF0IHRoZSBhZmZlY3RlZCBmaWxlcywgYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYW5kIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCB0aGUgcGF0Y2ggdG91Y2hlcy4gSSBrbm93IHRoYXQgYERBTU9OX0xSVV9TT1JUYCBpbnRlcmFjdHMgd2l0aCBgZGFtb25fbnJfc2FtcGxlc19wZXJfYWdncmAsIGFuZCBgREFNT05fU1lTRlNgIGlzIHVzZWQgdG8gdHJpZ2dlciBgZGFtb25fc2V0X2F0dHJzYC4gQmFzZWQgb24gdGhpcywgaXQgbWFrZXMgc2Vuc2UgdG8gZW5hYmxlIGBEQU1PTmAgYW5kIGBEQU1PTl9TWVNGU2AuXG5cbkknbGwgcXVpY2tseSByZXZpZXcgdGhlIGFzc29jaWF0ZWQgc3ltYm9scy4gSSdtIGZvY3VzaW5nIG9uIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAsIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgLiBOb3csIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhlIGJlaGF2aW9yIG9mIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgIGFuZCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AgZ2l2ZW4gdGhlc2UgY2hhbmdlcy4gSXQncyBjcnVjaWFsIHdlJ3JlIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aXRoIHRoZSB1cGRhdGVkIGhpdCB0cmFja2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTg6MTguODg2NzA4NDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDgzMDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz05MDM9c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05MjItXFxubW0vZGFtb24vY29yZS5jOjkyMzpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtOTI0LVxcdFxcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NTItICovXFxubW0vZGFtb24vY29yZS5jOjk1MzpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9jb3JlLmMtOTU0LVxcdFxcdHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLCBib29sIGFnZ3JlZ2F0aW5nKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTk2Ny1cXHRcXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24ociwgdClcXG5tbS9kYW1vbi9jb3JlLmM6OTY4OlxcdFxcdFxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBvbGRfYXR0cnMsIG5ld19hdHRycyxcXG5tbS9kYW1vbi9jb3JlLmMtOTY5LVxcdFxcdFxcdFxcdFxcdGFnZ3JlZ2F0aW5nLCBjdHgpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTEwMTE9aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTA0MC1cXG5tbS9kYW1vbi9jb3JlLmM6MTA0MTpcXHRkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKGN0eCwgYXR0cnMsIGFnZ3JlZ2F0aW5nKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTA0Mi1cXHRjdHgtXFx1MDAzZWF0dHJzID0gKmF0dHJzO1xcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTU3OD1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNTk4LVxcdFxcdC5zYW1wbGVfaW50ZXJ2YWwgPSAxMDAsIC5hZ2dyX2ludGVydmFsID0gMTAwMDAsfTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NTk5OlxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjAwLVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2Vucl9hY2Nlc3NlcywgMTUpO1xcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTYwNC1cXHRcXHQuc2FtcGxlX2ludGVydmFsID0gMSwgLmFnZ3JfaW50ZXJ2YWwgPSAxMDAwfTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjA1OlxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjA2LVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC02MTAtXFx0XFx0LnNhbXBsZV9pbnRlcnZhbCA9IDEsIC5hZ2dyX2ludGVydmFsID0gMTAwfTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjExOlxcdGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdChyLCBcXHUwMDI2b2xkX2F0dHJzLCBcXHUwMDI2bmV3X2F0dHJzLCBmYWxzZSwgY3R4KTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNjEyLVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCByLVxcdTAwM2Vucl9hY2Nlc3NlcywgMTUwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDY6NTg6MTkuMDAxNTQ0MzU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyODMzMzkxMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIENvZGUgQW5hbHlzaXMgZm9yIEZvY3VzZWQgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbWFraW5nIHNvbWUgY29yZSBjaGFuZ2VzIHRvIGhvdyBEQU1PTiBoYW5kbGVzIHByb2JlIGhpdHMgYW5kIGF0dHJpYnV0ZSB1cGRhdGVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBtZW1vcnkgbW9uaXRvcmluZyBmcmFtZXdvcmsuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIGNoYW5nZXMgZm9yIGZ1enppbmcsIGdpdmVuIHRoZWlyIHBvdGVudGlhbCBpbXBhY3Qgb24gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHRoZSBrZXJuZWwncyBpbnRlcmFjdGlvbiB3aXRoIHVzZXIgc3BhY2UuXG5cblRoZSBwcmltYXJ5IG1vZGlmaWNhdGlvbiBpbnZvbHZlcyB1cGRhdGluZyB0aGUgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBmdW5jdGlvbnMgdG8gaW5jbHVkZSBhIGBjdHhgIHBhcmFtZXRlci4gVGhpcyBsb29rcyBsaWtlIGEgY29udGV4dCBvYmplY3QsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgZnVuY3Rpb25zIGNvbW11bmljYXRlIGFuZCBzaGFyZSBkYXRhLiBBbHNvLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgIGhhcyBiZWVuIGFkZGVkIGFuZCBjYWxsZWQgZnJvbSBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YC4gYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNgIGlzIGNhbGxlZCBmcm9tIGBkYW1vbl9zZXRfYXR0cnNgLCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGlzIHRoZSBlbnRyeSBwb2ludCB2aWEgc3lzZnMuIFNvLCBhdHRyaWJ1dGUgdXBkYXRlcyBhcmUgZGVmaW5pdGVseSBhIGtleSBhcmVhIG9mIGludGVyZXN0LlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBpbmNsdWRlIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2AsIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRgLCBgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNgLCBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWAsIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCwgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgIGluIG15IGZvY3VzIHN5bWJvbHMuXG5cbk5vdywgbGV0IG1lIGNvbmZpcm0gdGhlIHN0YXRpYy9nbG9iYWwgbmF0dXJlIG9mIHRoZXNlIGZ1bmN0aW9ucy4gT2theSwgYGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzYCwgYGRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdGAgYW5kIGBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzYCBhcmUgc3RhdGljLiBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBhbmQgYGRhbW9uX2hvdF9zY29yZWAgYXJlIGdsb2JhbCwgYW5kIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYCBpcyBzdGF0aWMuIFRoaXMgaGVscHMgbWUgbmFycm93IGRvd24gdGhlIGNhbGwgZ3JhcGggYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBwb2ludHMgb2YgZGF0YSBzaGFyaW5nLlxuXG5CYXNlZCBvbiB0aGlzLCBJJ20gY29uZmlybWluZyB0aGF0IEkgbmVlZCB0byBpbmNsdWRlIHRoZXNlIGZ1bmN0aW9ucyBpbiBteSBmdXp6aW5nIHRhcmdldCBsaXN0OlxuXG4qICAgYGRhbW9uX3NldF9hdHRyc2BcbiogICBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0c2BcbiogICBgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0YFxuKiAgIGBkYW1vbl91cGRhdGVfcHJvYmVfaGl0c2BcbiogICBgZGFtb25fcHJvYmVfaGl0c19tdnN1bWBcbiogICBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2BcbiogICBgZGFtb25faG90X3Njb3JlYFxuXG5Gb3IgY29uZmlncywgSSdsbCBmb2N1cyBvbiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBhbmQgYERBTU9OX0xSVV9TT1JUYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYERBTU9OX0xSVV9TT1JUYCB1c2VzIGBEQU1PTl9QQUREUmAsIGJ1dCBsZXQncyBzdGljayB3aXRoIHRoZSBjb3JlIGNvbmZpZyBzeW1ib2xzIGZvciBub3cuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb24gbmFtZXMuIFllcCwgYGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzYCwgYGRhbW9uX3Byb2JlX2hpdHNfbXZzdW1gLCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AgYW5kIGBkYW1vbl9ob3Rfc2NvcmVgIGFyZSBhbGwgY29ycmVjdC5cblxuSW4gc2hvcnQsIHRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgY29yZSBwcm9iZSBoaXQgc2NhbGluZyBsb2dpYyBpbiByZXNwb25zZSB0byBjaGFuZ2VzIGluIG1vbml0b3JpbmcgYXR0cmlidXRlcyBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIG1vZGlmaWNhdGlvbnMgdG8gYXR0cmlidXRlIHVwZGF0ZXMgYW5kIHRoZSBhZmZlY3RlZCBzY29yaW5nL3Byb2JlIGhpdCBmdW5jdGlvbnMgc2VlbSB0byBiZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgYGRhbW9uX2xydV9zb3J0YCBrZXJuZWwgbW9kdWxlIGlzIGFsc28gaW1wb3J0YW50IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjMwLCJPdXRwdXRUb2tlbnMiOjIzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwNjo1ODozMS44MzQ5Mzg5MjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg5OTQ4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zZXRfYXR0cnNcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdFwiLFxuICAgIFwiZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNcIixcbiAgICBcImRhbW9uX3Byb2JlX2hpdHNfbXZzdW1cIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX2hvdF9zY29yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQU1PTiBjb3JlIGxvZ2ljIHRvIGNvcnJlY3RseSBzY2FsZSBwcm9iZSBoaXRzIHdoZW4gbW9uaXRvcmluZyBhdHRyaWJ1dGVzIChsaWtlIGFnZ3JlZ2F0aW9uIGludGVydmFsIG9yIHNhbXBsZSBpbnRlcnZhbCkgYXJlIHVwZGF0ZWQuIEl0IGFsc28gcmVuYW1lcyBhIGZ1bmN0aW9uIGFuZCB1cGRhdGVzIGl0cyB1c2FnZSBpbiBgZGFtb25fbHJ1X3NvcnRgIGFuZCBgZGFtb25faG90X3Njb3JlYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgbW9uaXRvcmluZyBmcmFtZXdvcmsgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGFuZCBrZXJuZWwgbW9kdWxlcyBsaWtlIGBkYW1vbl9scnVfc29ydGAuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGF0dHJpYnV0ZSB1cGRhdGVzIGFuZCB0aGUgYWZmZWN0ZWQgc2NvcmluZy9wcm9iZSBoaXQgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zZXRfYXR0cnNcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdHNcIixcbiAgICBcImRhbW9uX3VwZGF0ZV9tb25pdG9yaW5nX3Jlc3VsdFwiLFxuICAgIFwiZGFtb25fdXBkYXRlX3Byb2JlX2hpdHNcIixcbiAgICBcImRhbW9uX3Byb2JlX2hpdHNfbXZzdW1cIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNcIixcbiAgICBcImRhbW9uX2hvdF9zY29yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQU1PTiBjb3JlIGxvZ2ljIHRvIGNvcnJlY3RseSBzY2FsZSBwcm9iZSBoaXRzIHdoZW4gbW9uaXRvcmluZyBhdHRyaWJ1dGVzIChsaWtlIGFnZ3JlZ2F0aW9uIGludGVydmFsIG9yIHNhbXBsZSBpbnRlcnZhbCkgYXJlIHVwZGF0ZWQuIEl0IGFsc28gcmVuYW1lcyBhIGZ1bmN0aW9uIGFuZCB1cGRhdGVzIGl0cyB1c2FnZSBpbiBgZGFtb25fbHJ1X3NvcnRgIGFuZCBgZGFtb25faG90X3Njb3JlYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgbW9uaXRvcmluZyBmcmFtZXdvcmsgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGFuZCBrZXJuZWwgbW9kdWxlcyBsaWtlIGBkYW1vbl9scnVfc29ydGAuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGF0dHJpYnV0ZSB1cGRhdGVzIGFuZCB0aGUgYWZmZWN0ZWQgc2NvcmluZy9wcm9iZSBoaXQgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowv5mwv[1] Phase: Succeeded StartedAt: 2026-07-09 06:58:43 +0000 UTC FinishedAt: 2026-07-09 06:58:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 06:58:43 +0000 UTC FinishedAt: 2026-07-09 06:58:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2] Phase: Succeeded StartedAt: 2026-07-09 06:58:43 +0000 UTC FinishedAt: 2026-07-09 11:02:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 06:58:43 +0000 UTC FinishedAt: 2026-07-09 11:02:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 06:58:43 +0000 UTC FinishedAt: 2026-07-09 06:59:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 06:58:43 +0000 UTC FinishedAt: 2026-07-09 06:58:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv5mwv/series-workflowv5mwv-convert-artifact-1203617557/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 06:59:04 +0000 UTC FinishedAt: 2026-07-09 07:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 06:59:04 +0000 UTC FinishedAt: 2026-07-09 07:29:08 +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:*1da77da0-a5c1-4175-b108-cdf2745e5d52,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-workflowv5mwv/series-workflowv5mwv-convert-artifact-1203617557/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": "b651f4b9-bc40-4c82-ade9-14126656e8b3", "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-workflowv5mwv/series-workflowv5mwv-build-action-2155747195/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 06:59:04 +0000 UTC FinishedAt: 2026-07-09 07:28:58 +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:*1da77da0-a5c1-4175-b108-cdf2745e5d52,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-workflowv5mwv/series-workflowv5mwv-convert-artifact-1203617557/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": "b651f4b9-bc40-4c82-ade9-14126656e8b3", "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-workflowv5mwv/series-workflowv5mwv-build-action-2155747195/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 07:29:08 +0000 UTC FinishedAt: 2026-07-09 07:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 07:29:08 +0000 UTC FinishedAt: 2026-07-09 07:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 07:29:08 +0000 UTC FinishedAt: 2026-07-09 07:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 07:29:08 +0000 UTC FinishedAt: 2026-07-09 07:29:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv5mwv/series-workflowv5mwv-convert-artifact-2411021808/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 07:29:30 +0000 UTC FinishedAt: 2026-07-09 07:31:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 07:29:30 +0000 UTC FinishedAt: 2026-07-09 07:31:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b651f4b9-bc40-4c82-ade9-14126656e8b3,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-workflowv5mwv/series-workflowv5mwv-build-action-2155747195/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-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 07:31:30 +0000 UTC FinishedAt: 2026-07-09 07:31:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 07:31:30 +0000 UTC FinishedAt: 2026-07-09 07:31:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 07:31:30 +0000 UTC FinishedAt: 2026-07-09 07:57:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 07:31:30 +0000 UTC FinishedAt: 2026-07-09 07:57:48 +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:*1da77da0-a5c1-4175-b108-cdf2745e5d52,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-workflowv5mwv/series-workflowv5mwv-convert-artifact-2411021808/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": "590c6e89-ee20-4a2e-a191-9825777faeaf", "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-workflowv5mwv/series-workflowv5mwv-build-action-541042412/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 07:31:30 +0000 UTC FinishedAt: 2026-07-09 07:57:38 +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:*1da77da0-a5c1-4175-b108-cdf2745e5d52,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-workflowv5mwv/series-workflowv5mwv-convert-artifact-2411021808/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": "590c6e89-ee20-4a2e-a191-9825777faeaf", "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-workflowv5mwv/series-workflowv5mwv-build-action-541042412/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-09 07:57:48 +0000 UTC FinishedAt: 2026-07-09 07:57:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-09 07:57:48 +0000 UTC FinishedAt: 2026-07-09 07:57:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-09 07:57:48 +0000 UTC FinishedAt: 2026-07-09 07:59:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-09 07:57:48 +0000 UTC FinishedAt: 2026-07-09 07:59:43 +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:*590c6e89-ee20-4a2e-a191-9825777faeaf,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-workflowv5mwv/series-workflowv5mwv-build-action-541042412/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-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-09 07:59:53 +0000 UTC FinishedAt: 2026-07-09 11:02:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-09 07:59:53 +0000 UTC FinishedAt: 2026-07-09 11:02:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*b651f4b9-bc40-4c82-ade9-14126656e8b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*590c6e89-ee20-4a2e-a191-9825777faeaf,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-workflowv5mwv/series-workflowv5mwv-build-action-2155747195/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-workflowv5mwv/series-workflowv5mwv-build-action-541042412/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-09 07:59:53 +0000 UTC FinishedAt: 2026-07-09 08:00:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-09 07:59:53 +0000 UTC FinishedAt: 2026-07-09 08:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv5mwv/series-workflowv5mwv-convert-artifact-2641439849/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-09 07:59:53 +0000 UTC FinishedAt: 2026-07-09 07:59:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-09 07:59:53 +0000 UTC FinishedAt: 2026-07-09 07:59:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-09 07:59:53 +0000 UTC FinishedAt: 2026-07-09 07:59:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-09 08:00:03 +0000 UTC FinishedAt: 2026-07-09 11:02:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5mwv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_set_attrs","damon_update_monitoring_results","damon_update_monitoring_result","damon_update_probe_hits","damon_probe_hits_mvsum","damon_lru_sort_apply_parameters","damon_hot_score"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_LRU_SORT"],"series_id":"c23b5281-6a7c-4d3f-94e2-a8b27767cfe8","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-09 08:00:03 +0000 UTC FinishedAt: 2026-07-09 11:02:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b651f4b9-bc40-4c82-ade9-14126656e8b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*590c6e89-ee20-4a2e-a191-9825777faeaf,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-workflowv5mwv/series-workflowv5mwv-build-action-2155747195/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-workflowv5mwv/series-workflowv5mwv-build-action-541042412/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-workflowv5mwv/series-workflowv5mwv-convert-artifact-2641439849/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,}