Name: series-workflowhghkv Phase: Succeeded StartedAt: 2026-08-27 07:58:41 +0000 UTC FinishedAt: 2026-08-27 12:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[0] Phase: Succeeded StartedAt: 2026-08-27 07:58:41 +0000 UTC FinishedAt: 2026-08-27 08:46:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[0].run-triage Phase: Succeeded StartedAt: 2026-08-27 07:58:41 +0000 UTC FinishedAt: 2026-08-27 08:46:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f967455fb2a5a2079b9eb5823e9ccf359174bf9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f967455fb2a5a2079b9eb5823e9ccf359174bf9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "6a5c290a-b53f-43f7-87c8-319fb3a981a1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_assoc_update_retran_path", "sctp_retransmit", "sctp_assoc_choose_alter_transport" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aCYjMzQ7LAogICAgJiMzNDtzY3RwX3JldHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCB3aGVyZSBgdHJhbnNfbmV4dGAgY291bGQgYmUgTlVMTCBhbmQgYXNzaWduZWQgdG8gYGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIHBvaW50ZXIgYXNzaWdubWVudHMuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgdXBkYXRpbmcgdGhlIHJldHJhbnNtaXNzaW9uIHBhdGggaW4gU0NUUCBhc3NvY2lhdGlvbnMsIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYW5kIGEgYnVnIGluIHRoZSBsb29wIGNvbmRpdGlvbi4gVGhpcyBpcyBjb3JlIFNDVFAgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZjI1ZGU2MDU2MDI0ZDY0MDJhOGRhMDM0NzZkMjkxNGU0OWUyNWVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDg6NDI6MjEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuaW5kZXggYzA1MTJjODI3ZDBmNS4uNmYxOWViMGIwMWUyOSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuQEAgLTEyNzIsNiAmIzQzOzEyNzIsNyBAQCB2b2lkIHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuIHtcbiBcdHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnMgPSBhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGg7XG4gXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zX25leHQgPSBOVUxMO1xuJiM0MztcdGJvb2wgbGFzdCA9IGZhbHNlO1xuIFxuIFx0LyogV2UmIzM5O3JlIGRvbmUgYXMgd2Ugb25seSBoYXZlIHRoZSBvbmUgYW5kIG9ubHkgcGF0aC4gKi9cbiBcdGlmIChhc29jLVx1MDAzZXBlZXIudHJhbnNwb3J0X2NvdW50ID09IDEpXG5AQCAtMTI4OSwxOCAmIzQzOzEyOTAsMjAgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiBcdFx0LyogTWFudWFsbHkgc2tpcCB0aGUgaGVhZCBlbGVtZW50LiAqL1xuIFx0XHRpZiAoXHUwMDI2dHJhbnMtXHUwMDNldHJhbnNwb3J0cyA9PSBcdTAwMjZhc29jLVx1MDAzZXBlZXIudHJhbnNwb3J0X2FkZHJfbGlzdClcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0aWYgKHRyYW5zLVx1MDAzZXN0YXRlID09IFNDVFBfVU5DT05GSVJNRUQpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdHRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpO1xuLVx0XHQvKiBBY3RpdmUgaXMgZ29vZCBlbm91Z2ggZm9yIGltbWVkaWF0ZSByZXR1cm4uICovXG4tXHRcdGlmICh0cmFuc19uZXh0LVx1MDAzZXN0YXRlID09IFNDVFBfQUNUSVZFKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0bGFzdCA9IHRyYW5zID09IGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aDtcbiYjNDM7XHRcdGlmICh0cmFucy1cdTAwM2VzdGF0ZSAhPSBTQ1RQX1VOQ09ORklSTUVEKSB7XG4mIzQzO1x0XHRcdHRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpO1xuJiM0MztcdFx0XHQvKiBBY3RpdmUgaXMgZ29vZCBlbm91Z2ggZm9yIGltbWVkaWF0ZSByZXR1cm4uICovXG4mIzQzO1x0XHRcdGlmICh0cmFuc19uZXh0LVx1MDAzZXN0YXRlID09IFNDVFBfQUNUSVZFKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFx0XHQvKiBXZSYjMzk7dmUgcmVhY2hlZCB0aGUgZW5kLCB0aW1lIHRvIHVwZGF0ZSBwYXRoLiAqL1xuLVx0XHRpZiAodHJhbnMgPT0gYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoKVxuJiM0MztcdFx0aWYgKGxhc3QpXG4gXHRcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGggPSB0cmFuc19uZXh0O1xuJiM0MztcdGlmICh0cmFuc19uZXh0KVxuJiM0MztcdFx0YXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoID0gdHJhbnNfbmV4dDtcbiBcbiBcdHByX2RlYnVnKFwmIzM0OyVzOiBhc3NvY2lhdGlvbjolcCB1cGRhdGVkIG5ldyBwYXRoIHRvIGFkZHI6JXBJU3BjXFxuXCYjMzQ7LFxuIFx0XHQgX19mdW5jX18sIGFzb2MsIFx1MDAyNmFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aC1cdTAwM2VpcGFkZHIuc2EpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgmIzM0OywKICAgICYjMzQ7c2N0cF9yZXRyYW5zbWl0JiMzNDssCiAgICAmIzM0O3NjdHBfYXNzb2NfY2hvb3NlX2FsdGVyX3RyYW5zcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHVwZGF0aW5nIHRoZSByZXRyYW5zbWlzc2lvbiBwYXRoIGluIFNDVFAgYXNzb2NpYXRpb25zLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGFuZCBhIGJ1ZyBpbiB0aGUgbG9vcCBjb25kaXRpb24uIFRoaXMgaXMgY29yZSBTQ1RQIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWYyNWRlNjA1NjAyNGQ2NDAyYThkYTAzNDc2ZDI5MTRlNDllMjVlYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDA4OjQyOjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwppbmRleCBjMDUxMmM4MjdkMGY1Li42ZjE5ZWIwYjAxZTI5IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwpAQCAtMTI3Miw2ICYjNDM7MTI3Miw3IEBAIHZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpCiB7CiAJc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFucyA9IGFzb2MtJmd0O3BlZXIucmV0cmFuX3BhdGg7CiAJc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc19uZXh0ID0gTlVMTDsKJiM0MzsJYm9vbCBsYXN0ID0gZmFsc2U7CiAKIAkvKiBXZSYjMzk7cmUgZG9uZSBhcyB3ZSBvbmx5IGhhdmUgdGhlIG9uZSBhbmQgb25seSBwYXRoLiAqLwogCWlmIChhc29jLSZndDtwZWVyLnRyYW5zcG9ydF9jb3VudCA9PSAxKQpAQCAtMTI4OSwxOCAmIzQzOzEyOTAsMjAgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKIAkJLyogTWFudWFsbHkgc2tpcCB0aGUgaGVhZCBlbGVtZW50LiAqLwogCQlpZiAoJmFtcDt0cmFucy0mZ3Q7dHJhbnNwb3J0cyA9PSAmYW1wO2Fzb2MtJmd0O3BlZXIudHJhbnNwb3J0X2FkZHJfbGlzdCkKIAkJCWNvbnRpbnVlOwotCQlpZiAodHJhbnMtJmd0O3N0YXRlID09IFNDVFBfVU5DT05GSVJNRUQpCi0JCQljb250aW51ZTsKLQkJdHJhbnNfbmV4dCA9IHNjdHBfdHJhbnNfZWxlY3RfYmVzdCh0cmFucywgdHJhbnNfbmV4dCk7Ci0JCS8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi8KLQkJaWYgKHRyYW5zX25leHQtJmd0O3N0YXRlID09IFNDVFBfQUNUSVZFKQotCQkJYnJlYWs7CiYjNDM7CQlsYXN0ID0gdHJhbnMgPT0gYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aDsKJiM0MzsJCWlmICh0cmFucy0mZ3Q7c3RhdGUgIT0gU0NUUF9VTkNPTkZJUk1FRCkgewomIzQzOwkJCXRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpOwomIzQzOwkJCS8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi8KJiM0MzsJCQlpZiAodHJhbnNfbmV4dC0mZ3Q7c3RhdGUgPT0gU0NUUF9BQ1RJVkUpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfQogCQkvKiBXZSYjMzk7dmUgcmVhY2hlZCB0aGUgZW5kLCB0aW1lIHRvIHVwZGF0ZSBwYXRoLiAqLwotCQlpZiAodHJhbnMgPT0gYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCkKJiM0MzsJCWlmIChsYXN0KQogCQkJYnJlYWs7CiAJfQogCi0JYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7CiYjNDM7CWlmICh0cmFuc19uZXh0KQomIzQzOwkJYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7CiAKIAlwcl9kZWJ1ZygmIzM0OyVzOiBhc3NvY2lhdGlvbjolcCB1cGRhdGVkIG5ldyBwYXRoIHRvIGFkZHI6JXBJU3BjXG4mIzM0OywKIAkJIF9fZnVuY19fLCBhc29jLCAmYW1wO2Fzb2MtJmd0O3BlZXIucmV0cmFuX3BhdGgtJmd0O2lwYWRkci5zYSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFNDVFAgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L3NjdHAvYXNzb2Npb2xhLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgZnVuY3Rpb24uIFRoaXMgaXMgYWJvdXQgbWFuYWdpbmcgcmV0cmFuc21pc3Npb24gcGF0aHMgd2l0aGluIFNDVFAgYXNzb2NpYXRpb25zLCB3aGljaCBpcyBjcnVjaWFsIGZvciByZWxpYWJsZSBkYXRhIHRyYW5zZmVyLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UsIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBpbmFkdmVydGVudGx5IHNldCB0byBgTlVMTGAgYW5kIHRoZW4gYXNzaWduZWQgdG8gdGhlIHJldHJhbnNtaXNzaW9uIHBhdGguIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNvdXJjZSBvZiBjcmFzaGVzLCBzbyBnb29kIG9uIHRoZSBkZXZlbG9wZXIgZm9yIGNhdGNoaW5nIHRoYXQuIFRoZSBwYXRjaCBhbHNvIGFkanVzdHMgdGhlIGxvb3AgY29uZGl0aW9uIHRvIGVuc3VyZSBhIGNoZWNrIGlzbiYjMzk7dCBtaXNzZWQgd2hlbiB0aGUgc3RhdGUgaXMgYFNDVFBfVU5DT05GSVJNRURgLiBUaGF0JiMzOTtzIGEgc3VidGxlIGJ1dCBpbXBvcnRhbnQgZGV0YWlsLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIGNvZGUgcGF0aCBldmVuIHJlYWNoYWJsZT8gU0NUUCBpcyBhIGNvcmUgbmV0d29ya2luZyBwcm90b2NvbCwgZXhwb3NlZCB0byB1c2VyIHNwYWNlIHRocm91Z2ggc29ja2V0cy4gVGhlIHNob3J0IGFuc3dlciBpcyBhIHJlc291bmRpbmcgJiMzNDt5ZXMuJiMzNDsgVGhpcyBmdW5jdGlvbiAqaXMqIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgY2FuIHByb3ZpZGUgYWxsIHNvcnRzIG9mIG1hbGZvcm1lZCBwYWNrZXRzIGFuZCBlZGdlIGNhc2VzIGFuZCBzZWUgd2hhdCBoYXBwZW5zLgoKTm93LCBsZXQgbWUgdHJhY2sgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIGBuZXQvc2N0cC9LY29uZmlnYCBmb3IgdGhlIGBJUF9TQ1RQYCBvcHRpb24uIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgbWFpbiBTQ1RQIGVuYWJsZS9kaXNhYmxlIHNldHRpbmcgcmVzaWRlcy4gSSBuZWVkIHRvIGtub3cgaG93IGVhc2lseSBJIGNhbiBjb25maWd1cmUgU0NUUCB0byBtYWtlIHRoaXMgcGF0Y2ggYWN0aXZlIGFuZCB0ZXN0YWJsZS4gRnV6emluZyB0aGlzICpuZWVkcyogdG8gYmUgZG9uZSB3aXRoIFNDVFAgZW5hYmxlZCwgb2J2aW91c2x5IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgU0NUUCBBc3NvY2lhdGlvbiBQYXRoIFJldHJhbnNtaXNzaW9uKioKCkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBJUF9TQ1RQYC4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb3JlIGxvZ2ljLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgZ2l2ZW4gdGhlIGNvbmZpZ3VyYXRpb24sIGlzIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgcGF0aCByZXRyYW5zbWlzc2lvbnMgd2l0aGluIGFuIFNDVFAgYXNzb2NpYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VybmVsIG1hbmFnZXMgdGhpcywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGZ1bmN0aW9uLiBJIHdpbGwgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgZm9yIHRoaXMgZnVuY3Rpb24uIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMgYW5kIHRoZSByZXRyYW5zbWlzc2lvbiBwb2xpY3kgZm9yIHBhdGhzIHdpdGhpbiB0aGUgYXNzb2NpYXRpb24gYXJlIGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvYXNzb2Npb2xhLmM9NDgyPXZvaWQgc2N0cF9hc3NvY19ybV9wZWVyKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuLS1cbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTQ5NS1cdGlmIChhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGggPT0gcGVlcilcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjQ5NjpcdFx0c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoYXNvYyk7XG5uZXQvc2N0cC9hc3NvY2lvbGEuYy00OTctXG4tLVxubmV0L3NjdHAvYXNzb2Npb2xhLmM9MTI0OD1zdGF0aWMgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICpzY3RwX3RyYW5zX2VsZWN0X2Jlc3Qoc3RydWN0IHNjdHBfdHJhbnNwb3J0ICpjdXJyLFxuLS1cbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTEyNzAtXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzoxMjcxOnZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xMjcyLXtcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYz0xMzgwPXNjdHBfYXNzb2NfY2hvb3NlX2FsdGVyX3RyYW5zcG9ydChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xMzkwLVx0XHRpZiAobGFzdF9zZW50X3RvID09IGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aClcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjEzOTE6XHRcdFx0c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoYXNvYyk7XG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xMzkyLVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9NTM3PXZvaWQgc2N0cF9yZXRyYW5zbWl0KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnNwb3J0LFxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtNTQ5LVx0XHRpZiAodHJhbnNwb3J0ID09IHRyYW5zcG9ydC1cdTAwM2Vhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGgpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU1MDpcdFx0XHRzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aCh0cmFuc3BvcnQtXHUwMDNlYXNvYyk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU1MS1cdFx0dHJhbnNwb3J0LVx1MDAzZWFzb2MtXHUwMDNlcnR4X2RhdGFfY2h1bmtzICYjNDM7PVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgZnVuY3Rpb24uIFRoZSBjb2RlIHNheXMgaXQmIzM5O3MgdXNlZCBpbiBgbmV0L3NjdHAvb3V0cXVldWUuY2AsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIElzIGl0IGludGVybmFsIHRvIHRoYXQgZmlsZSwgb3IgaXMgaXQgZXhwb3J0ZWQgYW5kIHBvdGVudGlhbGx5IHVzZWQgZWxzZXdoZXJlIGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0JiMzOTtzIGRlY2xhcmVkIHRvIGtub3cgaWYgaXQmIzM5O3MgdmlzaWJsZS4gTXkgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzIOKAkyBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGEgZGVjbGFyYXRpb24gaW4gc29tZXRoaW5nIGxpa2UgYGluY2x1ZGUvbmV0L3NjdHAvc2N0cC5oYCwgb3IgbWF5YmUgYSBtb3JlIHNwZWNpZmljIGhlYWRlciByZWxhdGVkIHRvIHRoZSBvdXRwdXQgcXVldWVpbmcgZnVuY3Rpb25hbGl0eSBpZiBpdCYjMzk7cyBuYXJyb3dseSBzY29wZWQuIFRpbWUgdG8gZ28gaHVudGluZyBpbiB0aG9zZSBpbmNsdWRlcy4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHdpZGVseSB0aGlzIGZ1bmN0aW9uJiMzOTtzIGVmZmVjdHMgY2FuIGJlIGZlbHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaD0yMTE3PXN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqc2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0KFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjExOC1cdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqKTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oOjIxMTk6dm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqKTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTIxMjAtc3RydWN0IHNjdHBfdHJhbnNwb3J0ICpzY3RwX2Fzc29jX2xvb2t1cF9wYWRkcihjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjYKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOgoKKipGb2N1c2luZyBvbiBSZXRyYW5zbWlzc2lvbiBQYXRoIFVwZGF0ZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhpcyBhcmVhLiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGlzIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQgZm9yIGV4YW1pbmluZyBob3cgU0NUUCBoYW5kbGVzIHJldHJhbnNtaXNzaW9uIHBhdGggdXBkYXRlcy4gSSYjMzk7bSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBwbGF5IGEgcGFydCBpbiB0aGlzIHByb2Nlc3MsIGVzcGVjaWFsbHkgY29uY2VybmluZyBwYXRoIG1hbmFnZW1lbnQgZHVyaW5nIGFzc29jaWF0aW9uIGxpZmVjeWNsZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhlIGNvZGUgYmFzZSB0byBjb25maXJtIG15IGluaXRpYWwgaHlwb3RoZXNpcy4KCkEgcXVpY2sgY2hlY2sgcmV2ZWFscyBzb21lIG90aGVyIGNyaXRpY2FsIGNhbmRpZGF0ZXM6IGBzY3RwX2Fzc29jX3JtX3BlZXJgIGZlZWxzIHRhbmdlbnRpYWxseSByZWxhdGVkIGluIHRlcm1zIG9mIHBlZXJzIG5lZWRpbmcgcmVtb3ZlZCwgYHNjdHBfYXNzb2NfY2hvb3NlX2FsdGVyX3RyYW5zcG9ydGAgbWFrZXMgbG9naWNhbCBzZW5zZSBjb25jZXJuaW5nIHBhdGggc2VsZWN0aW9uIGRlY2lzaW9ucywgYW5kIG9idmlvdXNseSwgYHNjdHBfcmV0cmFuc21pdGAgaXMgZnVuZGFtZW50YWwgdG8gdGhlIGVudGlyZSByZXRyYW5zbWlzc2lvbiBtZWNoYW5pc20uCgpGb3Igbm93LCBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY2x1ZGUgYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCBhbmQgYHNjdHBfcmV0cmFuc21pdGAgaW4gdGhlIGluaXRpYWwgYW5hbHlzaXMsIGJ1dCBJJiMzOTtsbCBrZWVwIHRoZSBvdGhlcnMgaW4gbWluZCBhcyBwb3RlbnRpYWwgYXJlYXMgb2YgaW52ZXN0aWdhdGlvbi4gSSBjYW4gc2VlIGEgY2xlYXIgdGhyZWFkIGNvbm5lY3RpbmcgdGhlIHVwZGF0ZSBmdW5jdGlvbiBkaXJlY3RseSB0byBob3cgd2UgbWFuYWdlIGFuZCByZWFjdCB0byBsb3N0IG9yIGRlZ3JhZGVkIHBhdGhzIHdoaWNoIG1heSBkcml2ZSB0aGUgcmV0cmFuc21pc3Npb24gaXRzZWxmLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGJlZ2luIHRvIGJ1aWxkIG15IGtub3dsZWRnZSBmb3IgdGhpcyBzcGVjaWZpYyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoJiMzNDssCiAgICAmIzM0O3NjdHBfcmV0cmFuc21pdCYjMzQ7LAogICAgJiMzNDtzY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoJiMzNDssCiAgICAmIzM0O3NjdHBfcmV0cmFuc21pdCYjMzQ7LAogICAgJiMzNDtzY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwODo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBOVUxMIGFuZCBhc3NpZ25lZCB0byBgYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoYCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgcG9pbnRlciBhc3NpZ25tZW50cy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCBvciBsZWFrZWQuIFN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWYyNWRlNjA1NjAyNGQ2NDAyYThkYTAzNDc2ZDI5MTRlNDllMjVlYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDA4OjQyOjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwppbmRleCBjMDUxMmM4MjdkMGY1Li42ZjE5ZWIwYjAxZTI5IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwpAQCAtMTI3Miw2ICYjNDM7MTI3Miw3IEBAIHZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpCiB7CiAJc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFucyA9IGFzb2MtJmd0O3BlZXIucmV0cmFuX3BhdGg7CiAJc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc19uZXh0ID0gTlVMTDsKJiM0MzsJYm9vbCBsYXN0ID0gZmFsc2U7CiAKIAkvKiBXZSYjMzk7cmUgZG9uZSBhcyB3ZSBvbmx5IGhhdmUgdGhlIG9uZSBhbmQgb25seSBwYXRoLiAqLwogCWlmIChhc29jLSZndDtwZWVyLnRyYW5zcG9ydF9jb3VudCA9PSAxKQpAQCAtMTI4OSwxOCAmIzQzOzEyOTAsMjAgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKIAkJLyogTWFudWFsbHkgc2tpcCB0aGUgaGVhZCBlbGVtZW50LiAqLwogCQlpZiAoJmFtcDt0cmFucy0mZ3Q7dHJhbnNwb3J0cyA9PSAmYW1wO2Fzb2MtJmd0O3BlZXIudHJhbnNwb3J0X2FkZHJfbGlzdCkKIAkJCWNvbnRpbnVlOwotCQlpZiAodHJhbnMtJmd0O3N0YXRlID09IFNDVFBfVU5DT05GSVJNRUQpCi0JCQljb250aW51ZTsKLQkJdHJhbnNfbmV4dCA9IHNjdHBfdHJhbnNfZWxlY3RfYmVzdCh0cmFucywgdHJhbnNfbmV4dCk7Ci0JCS8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi8KLQkJaWYgKHRyYW5zX25leHQtJmd0O3N0YXRlID09IFNDVFBfQUNUSVZFKQotCQkJYnJlYWs7CiYjNDM7CQlsYXN0ID0gdHJhbnMgPT0gYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aDsKJiM0MzsJCWlmICh0cmFucy0mZ3Q7c3RhdGUgIT0gU0NUUF9VTkNPTkZJUk1FRCkgewomIzQzOwkJCXRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpOwomIzQzOwkJCS8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi8KJiM0MzsJCQlpZiAodHJhbnNfbmV4dC0mZ3Q7c3RhdGUgPT0gU0NUUF9BQ1RJVkUpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfQogCQkvKiBXZSYjMzk7dmUgcmVhY2hlZCB0aGUgZW5kLCB0aW1lIHRvIHVwZGF0ZSBwYXRoLiAqLwotCQlpZiAodHJhbnMgPT0gYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCkKJiM0MzsJCWlmIChsYXN0KQogCQkJYnJlYWs7CiAJfQogCi0JYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7CiYjNDM7CWlmICh0cmFuc19uZXh0KQomIzQzOwkJYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7CiAKIAlwcl9kZWJ1ZygmIzM0OyVzOiBhc3NvY2lhdGlvbjolcCB1cGRhdGVkIG5ldyBwYXRoIHRvIGFkZHI6JXBJU3BjXG4mIzM0OywKIAkJIF9fZnVuY19fLCBhc29jLCAmYW1wO2Fzb2MtJmd0O3BlZXIucmV0cmFuX3BhdGgtJmd0O2lwYWRkci5zYSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk5CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDU0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTQ1RQIFJldHJhbnNtaXNzaW9uIFBhdGggU2VsZWN0aW9uIEJ1ZyBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBJJiMzOTttIHBhdGNoaW5nIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgaW4gYG5ldC9zY3RwL2Fzc29jaW9sYS5jYC4gIFRoZSBjb3JlIGNoYW5nZSBpbnZvbHZlcyBob3cgdGhlIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgYGFzb2MtJmd0O3BlZXIudHJhbnNwb3J0X2FkZHJfbGlzdGAgYW5kIHNlbGVjdHMgdGhlIHJldHJhbnNtaXNzaW9uIHBhdGggKGBhc29jLSZndDtwZWVyLnJldHJhbl9wYXRoYCkuCgpJbml0aWFsbHksIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYGJvb2wgbGFzdCA9IGZhbHNlO2Agd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgcHJpbWFyeSBtb2RpZmljYXRpb24gY2VudGVycyBhcm91bmQgdGhlIGxvb3AuIEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgcG90ZW50aWFsIGZsYXcuICBJZiBgdHJhbnMtJmd0O3N0YXRlYCB3YXMgYFNDVFBfVU5DT05GSVJNRURgLCBpdCB3b3VsZCBgY29udGludWVgIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4gIEhvd2V2ZXIsIHRoaXMgY291bGQgbGVhZCB0byB0aGUgc2VsZWN0aW9uIG9mIGB0cmFuc19uZXh0YCBiZWluZyBwcm9ibGVtYXRpYy4gVGhlIGxvZ2ljIGhhcyBiZWVuIGFkanVzdGVkLiBOb3csIHdlIGNoZWNrIHRoZSBgdHJhbnMtJmd0O3N0YXRlICE9IFNDVFBfVU5DT05GSVJNRURgICpiZWZvcmUqIHRoZSBiZXN0IHBhdGggc2VsZWN0aW9uLCBhbmQgdGhlbiBhZnRlciB0aGUgcGF0aCBzZWxlY3Rpb24gd2Ugc3RvcmUgaXQgaW4gYSB0ZW1wb3JhcnkgdmFyaWFibGUsIGB0cmFuc19uZXh0YC4gVGhlIHN1YnNlcXVlbnQgY2hlY2sgYGlmICh0cmFuc19uZXh0LSZndDtzdGF0ZSA9PSBTQ1RQX0FDVElWRSlgIGxvb2tzIGxpa2UgaXTigJlzIGF0dGVtcHRpbmcgdG8gaW1tZWRpYXRlbHkgcmV0dXJuLiBGaW5hbGx5LCB0aGV5JiMzOTtyZSB1c2luZyBgbGFzdGAgdG8gZGV0ZXJtaW5lIGlmIHdlJiMzOTt2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGxpc3QuCgpUaGUgY3JpdGljYWwgZml4IGhlcmUgaXMgdGhlIGd1YXJkIGFkZGVkIGJlZm9yZSB1cGRhdGluZyBgYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aGAuIEluc3RlYWQgb2YgZGlyZWN0bHkgYXNzaWduaW5nIGB0cmFuc19uZXh0YCwgdGhlIGNvZGUgbm93IGNoZWNrcyBpZiBgdHJhbnNfbmV4dGAgaXMgTlVMTC4gYGlmICh0cmFuc19uZXh0KWAg4oCTIHRoaXMgaXMgYSBjcnVjaWFsIGFkZGl0aW9uISBJdCBwcmV2ZW50cyBhc3NpZ25pbmcgYSBOVUxMIHZhbHVlIHRvIGBhc29jLSZndDtwZWVyLnJldHJhbl9wYXRoYCwgd2hpY2ggc2VlbXMgdG8gYmUgdGhlIHJvb3QgY2F1c2Ugb2YgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgYSBzaW1pbGFyIGlzc3VlLiBUaGUgb3JpZ2luYWwgbG9naWMgY291bGQgbGVhZCB0byBgYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aGAgYmVpbmcgc2V0IHRvIE5VTEwsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGEgY3Jhc2ggbGF0ZXIgb24uCgpOb3csIGxldCYjMzk7cyBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBmb3IgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKS4gQmFzZWQgb24gdGhlIGNoYW5nZXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgS01TQU4gaXMgKm5vdCogbmVjZXNzYXJ5IGhlcmUuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gTm8gZGF0YSBpcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIGl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBkZWFsIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoaXMgaXMgc2ltcGx5IGEgbG9naWMgYnVnIGZpeCBpbiB0aGUgcGF0aCBzZWxlY3Rpb24gYWxnb3JpdGhtLiBTdGFuZGFyZCBidWcgZGV0ZWN0b3JzIGxpa2UgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgc2hvdWxkIGVhc2lseSBjYXRjaCBhbnkgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB0aGF0IHJlbWFpbi4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBmb3IgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBgdHJhbnNfbmV4dGAgaXMgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIChleHBsaWNpdGx5KSwgYW5kIGBsYXN0YCBpcyBpbml0aWFsaXplZCB0byBgZmFsc2VgLiBPa2F5LCBsb29rcyBsaWtlIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBiZWluZyB1c2VkLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZC4gVGhlcmVmb3JlLCBgTmVlZHNLTVNBTj1mYWxzZWAgaXMgdGhlIGNvcnJlY3Qgc2V0dGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCB3aGVyZSBgdHJhbnNfbmV4dGAgY291bGQgYmUgTlVMTCBhbmQgYXNzaWduZWQgdG8gYGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIHBvaW50ZXIgYXNzaWdubWVudHMuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBOVUxMIGFuZCBhc3NpZ25lZCB0byBgYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoYCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgcG9pbnRlciBhc3NpZ25tZW50cy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCBvciBsZWFrZWQuIFN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDI6MjMuNjg3NTY3OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODI5NzE0NTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhcIixcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBOVUxMIGFuZCBhc3NpZ25lZCB0byBgYXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIHBvaW50ZXIgYXNzaWdubWVudHMuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDI6MjMuNjg3NTczMDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDkwMTYyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZjI1ZGU2MDU2MDI0ZDY0MDJhOGRhMDM0NzZkMjkxNGU0OWUyNWVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDI3IDA4OjQyOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcXG5pbmRleCBjMDUxMmM4MjdkMGY1Li42ZjE5ZWIwYjAxZTI5IDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jXFxuKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcXG5AQCAtMTI3Miw2ICsxMjcyLDcgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zID0gYXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aDtcXG4gXFx0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc19uZXh0ID0gTlVMTDtcXG4rXFx0Ym9vbCBsYXN0ID0gZmFsc2U7XFxuIFxcbiBcXHQvKiBXZSdyZSBkb25lIGFzIHdlIG9ubHkgaGF2ZSB0aGUgb25lIGFuZCBvbmx5IHBhdGguICovXFxuIFxcdGlmIChhc29jLVxcdTAwM2VwZWVyLnRyYW5zcG9ydF9jb3VudCA9PSAxKVxcbkBAIC0xMjg5LDE4ICsxMjkwLDIwIEBAIHZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXFxuIFxcdFxcdC8qIE1hbnVhbGx5IHNraXAgdGhlIGhlYWQgZWxlbWVudC4gKi9cXG4gXFx0XFx0aWYgKFxcdTAwMjZ0cmFucy1cXHUwMDNldHJhbnNwb3J0cyA9PSBcXHUwMDI2YXNvYy1cXHUwMDNlcGVlci50cmFuc3BvcnRfYWRkcl9saXN0KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0aWYgKHRyYW5zLVxcdTAwM2VzdGF0ZSA9PSBTQ1RQX1VOQ09ORklSTUVEKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0dHJhbnNfbmV4dCA9IHNjdHBfdHJhbnNfZWxlY3RfYmVzdCh0cmFucywgdHJhbnNfbmV4dCk7XFxuLVxcdFxcdC8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi9cXG4tXFx0XFx0aWYgKHRyYW5zX25leHQtXFx1MDAzZXN0YXRlID09IFNDVFBfQUNUSVZFKVxcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0bGFzdCA9IHRyYW5zID09IGFzb2MtXFx1MDAzZXBlZXIucmV0cmFuX3BhdGg7XFxuK1xcdFxcdGlmICh0cmFucy1cXHUwMDNlc3RhdGUgIT0gU0NUUF9VTkNPTkZJUk1FRCkge1xcbitcXHRcXHRcXHR0cmFuc19uZXh0ID0gc2N0cF90cmFuc19lbGVjdF9iZXN0KHRyYW5zLCB0cmFuc19uZXh0KTtcXG4rXFx0XFx0XFx0LyogQWN0aXZlIGlzIGdvb2QgZW5vdWdoIGZvciBpbW1lZGlhdGUgcmV0dXJuLiAqL1xcbitcXHRcXHRcXHRpZiAodHJhbnNfbmV4dC1cXHUwMDNlc3RhdGUgPT0gU0NUUF9BQ1RJVkUpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuIFxcdFxcdC8qIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCwgdGltZSB0byB1cGRhdGUgcGF0aC4gKi9cXG4tXFx0XFx0aWYgKHRyYW5zID09IGFzb2MtXFx1MDAzZXBlZXIucmV0cmFuX3BhdGgpXFxuK1xcdFxcdGlmIChsYXN0KVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXG4tXFx0YXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7XFxuK1xcdGlmICh0cmFuc19uZXh0KVxcbitcXHRcXHRhc29jLVxcdTAwM2VwZWVyLnJldHJhbl9wYXRoID0gdHJhbnNfbmV4dDtcXG4gXFxuIFxcdHByX2RlYnVnKFxcXCIlczogYXNzb2NpYXRpb246JXAgdXBkYXRlZCBuZXcgcGF0aCB0byBhZGRyOiVwSVNwY1xcXFxuXFxcIixcXG4gXFx0XFx0IF9fZnVuY19fLCBhc29jLCBcXHUwMDI2YXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aC1cXHUwMDNlaXBhZGRyLnNhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDI6MjUuMDk3NDAxODk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjI3OTE2Nzg3MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aFwiLFxuICAgIFwic2N0cF9yZXRyYW5zbWl0XCIsXG4gICAgXCJzY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHVwZGF0aW5nIHRoZSByZXRyYW5zbWlzc2lvbiBwYXRoIGluIFNDVFAgYXNzb2NpYXRpb25zLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGFuZCBhIGJ1ZyBpbiB0aGUgbG9vcCBjb25kaXRpb24uIFRoaXMgaXMgY29yZSBTQ1RQIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZjI1ZGU2MDU2MDI0ZDY0MDJhOGRhMDM0NzZkMjkxNGU0OWUyNWVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDg6NDI6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5pbmRleCBjMDUxMmM4MjdkMGY1Li42ZjE5ZWIwYjAxZTI5IDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbisrKyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5AQCAtMTI3Miw2ICsxMjcyLDcgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiB7XG4gXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zID0gYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoO1xuIFx0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc19uZXh0ID0gTlVMTDtcbitcdGJvb2wgbGFzdCA9IGZhbHNlO1xuIFxuIFx0LyogV2UncmUgZG9uZSBhcyB3ZSBvbmx5IGhhdmUgdGhlIG9uZSBhbmQgb25seSBwYXRoLiAqL1xuIFx0aWYgKGFzb2MtXHUwMDNlcGVlci50cmFuc3BvcnRfY291bnQgPT0gMSlcbkBAIC0xMjg5LDE4ICsxMjkwLDIwIEBAIHZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXG4gXHRcdC8qIE1hbnVhbGx5IHNraXAgdGhlIGhlYWQgZWxlbWVudC4gKi9cbiBcdFx0aWYgKFx1MDAyNnRyYW5zLVx1MDAzZXRyYW5zcG9ydHMgPT0gXHUwMDI2YXNvYy1cdTAwM2VwZWVyLnRyYW5zcG9ydF9hZGRyX2xpc3QpXG4gXHRcdFx0Y29udGludWU7XG4tXHRcdGlmICh0cmFucy1cdTAwM2VzdGF0ZSA9PSBTQ1RQX1VOQ09ORklSTUVEKVxuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR0cmFuc19uZXh0ID0gc2N0cF90cmFuc19lbGVjdF9iZXN0KHRyYW5zLCB0cmFuc19uZXh0KTtcbi1cdFx0LyogQWN0aXZlIGlzIGdvb2QgZW5vdWdoIGZvciBpbW1lZGlhdGUgcmV0dXJuLiAqL1xuLVx0XHRpZiAodHJhbnNfbmV4dC1cdTAwM2VzdGF0ZSA9PSBTQ1RQX0FDVElWRSlcbi1cdFx0XHRicmVhaztcbitcdFx0bGFzdCA9IHRyYW5zID09IGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aDtcbitcdFx0aWYgKHRyYW5zLVx1MDAzZXN0YXRlICE9IFNDVFBfVU5DT05GSVJNRUQpIHtcbitcdFx0XHR0cmFuc19uZXh0ID0gc2N0cF90cmFuc19lbGVjdF9iZXN0KHRyYW5zLCB0cmFuc19uZXh0KTtcbitcdFx0XHQvKiBBY3RpdmUgaXMgZ29vZCBlbm91Z2ggZm9yIGltbWVkaWF0ZSByZXR1cm4uICovXG4rXHRcdFx0aWYgKHRyYW5zX25leHQtXHUwMDNlc3RhdGUgPT0gU0NUUF9BQ1RJVkUpXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0XHQvKiBXZSd2ZSByZWFjaGVkIHRoZSBlbmQsIHRpbWUgdG8gdXBkYXRlIHBhdGguICovXG4tXHRcdGlmICh0cmFucyA9PSBhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGgpXG4rXHRcdGlmIChsYXN0KVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuIFxuLVx0YXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoID0gdHJhbnNfbmV4dDtcbitcdGlmICh0cmFuc19uZXh0KVxuK1x0XHRhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGggPSB0cmFuc19uZXh0O1xuIFxuIFx0cHJfZGVidWcoXCIlczogYXNzb2NpYXRpb246JXAgdXBkYXRlZCBuZXcgcGF0aCB0byBhZGRyOiVwSVNwY1xcblwiLFxuIFx0XHQgX19mdW5jX18sIGFzb2MsIFx1MDAyNmFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aC1cdTAwM2VpcGFkZHIuc2EpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDI6MjUuMDk3NDAzOTc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjE1MTAzNDIxNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBTQ1RQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AsIHNwZWNpZmljYWxseSB0aGUgYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCBmdW5jdGlvbi4gVGhpcyBpcyBhYm91dCBtYW5hZ2luZyByZXRyYW5zbWlzc2lvbiBwYXRocyB3aXRoaW4gU0NUUCBhc3NvY2lhdGlvbnMsIHdoaWNoIGlzIGNydWNpYWwgZm9yIHJlbGlhYmxlIGRhdGEgdHJhbnNmZXIuIFRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hlcmUgYHRyYW5zX25leHRgIGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkgc2V0IHRvIGBOVUxMYCBhbmQgdGhlbiBhc3NpZ25lZCB0byB0aGUgcmV0cmFuc21pc3Npb24gcGF0aC4gVGhhdCdzIGEgY2xhc3NpYyBzb3VyY2Ugb2YgY3Jhc2hlcywgc28gZ29vZCBvbiB0aGUgZGV2ZWxvcGVyIGZvciBjYXRjaGluZyB0aGF0LiBUaGUgcGF0Y2ggYWxzbyBhZGp1c3RzIHRoZSBsb29wIGNvbmRpdGlvbiB0byBlbnN1cmUgYSBjaGVjayBpc24ndCBtaXNzZWQgd2hlbiB0aGUgc3RhdGUgaXMgYFNDVFBfVU5DT05GSVJNRURgLiBUaGF0J3MgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBkZXRhaWwuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogSXMgdGhpcyBjb2RlIHBhdGggZXZlbiByZWFjaGFibGU/IFNDVFAgaXMgYSBjb3JlIG5ldHdvcmtpbmcgcHJvdG9jb2wsIGV4cG9zZWQgdG8gdXNlciBzcGFjZSB0aHJvdWdoIHNvY2tldHMuIFRoZSBzaG9ydCBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIFwieWVzLlwiIFRoaXMgZnVuY3Rpb24gKmlzKiBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIGNhbiBwcm92aWRlIGFsbCBzb3J0cyBvZiBtYWxmb3JtZWQgcGFja2V0cyBhbmQgZWRnZSBjYXNlcyBhbmQgc2VlIHdoYXQgaGFwcGVucy5cblxuTm93LCBsZXQgbWUgdHJhY2sgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ20gZ29pbmcgdG8gY2hlY2sgYG5ldC9zY3RwL0tjb25maWdgIGZvciB0aGUgYElQX1NDVFBgIG9wdGlvbi4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIG1haW4gU0NUUCBlbmFibGUvZGlzYWJsZSBzZXR0aW5nIHJlc2lkZXMuIEkgbmVlZCB0byBrbm93IGhvdyBlYXNpbHkgSSBjYW4gY29uZmlndXJlIFNDVFAgdG8gbWFrZSB0aGlzIHBhdGNoIGFjdGl2ZSBhbmQgdGVzdGFibGUuIEZ1enppbmcgdGhpcyAqbmVlZHMqIHRvIGJlIGRvbmUgd2l0aCBTQ1RQIGVuYWJsZWQsIG9idmlvdXNseSFcblxuXG4iLCJJbnB1dFRva2VucyI6MjQwMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjAwLjIwMDgyOTM5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjU2OTAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDY6MDAuMjUzNDAxNDEyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxMjAyODI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIFNDVFAgQXNzb2NpYXRpb24gUGF0aCBSZXRyYW5zbWlzc2lvbioqXG5cbkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBJUF9TQ1RQYC4gTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvcmUgbG9naWMuIE15IGltbWVkaWF0ZSBjb25jZXJuLCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiwgaXMgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBwYXRoIHJldHJhbnNtaXNzaW9ucyB3aXRoaW4gYW4gU0NUUCBhc3NvY2lhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBrZXJuZWwgbWFuYWdlcyB0aGlzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgZnVuY3Rpb24uIEkgd2lsbCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG5ldC9zY3RwL2Fzc29jaW9sYS5jYCBmb3IgdGhpcyBmdW5jdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyBhbmQgdGhlIHJldHJhbnNtaXNzaW9uIHBvbGljeSBmb3IgcGF0aHMgd2l0aGluIHRoZSBhc3NvY2lhdGlvbiBhcmUgZGVmaW5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjAzLjU2NTQzMTgyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYyODEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvYXNzb2Npb2xhLmM9NDgyPXZvaWQgc2N0cF9hc3NvY19ybV9wZWVyKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbi0tXFxubmV0L3NjdHAvYXNzb2Npb2xhLmMtNDk1LVxcdGlmIChhc29jLVxcdTAwM2VwZWVyLnJldHJhbl9wYXRoID09IHBlZXIpXFxubmV0L3NjdHAvYXNzb2Npb2xhLmM6NDk2OlxcdFxcdHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKGFzb2MpO1xcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTQ5Ny1cXG4tLVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jPTEyNDg9c3RhdGljIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqc2N0cF90cmFuc19lbGVjdF9iZXN0KHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqY3VycixcXG4tLVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTEyNzAtXFxubmV0L3NjdHAvYXNzb2Npb2xhLmM6MTI3MTp2b2lkIHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTEyNzIte1xcbi0tXFxubmV0L3NjdHAvYXNzb2Npb2xhLmM9MTM4MD1zY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnQoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xMzkwLVxcdFxcdGlmIChsYXN0X3NlbnRfdG8gPT0gYXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aClcXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzoxMzkxOlxcdFxcdFxcdHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKGFzb2MpO1xcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTEzOTItXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTQ5LVxcdFxcdGlmICh0cmFuc3BvcnQgPT0gdHJhbnNwb3J0LVxcdTAwM2Vhc29jLVxcdTAwM2VwZWVyLnJldHJhbl9wYXRoKVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTUwOlxcdFxcdFxcdHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKHRyYW5zcG9ydC1cXHUwMDNlYXNvYyk7XFxubmV0L3NjdHAvb3V0cXVldWUuYy01NTEtXFx0XFx0dHJhbnNwb3J0LVxcdTAwM2Vhc29jLVxcdTAwM2VydHhfZGF0YV9jaHVua3MgKz1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDY6MDMuNjEwMDY0MTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA3MjYwMzE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGZ1bmN0aW9uLiBUaGUgY29kZSBzYXlzIGl0J3MgdXNlZCBpbiBgbmV0L3NjdHAvb3V0cXVldWUuY2AsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIElzIGl0IGludGVybmFsIHRvIHRoYXQgZmlsZSwgb3IgaXMgaXQgZXhwb3J0ZWQgYW5kIHBvdGVudGlhbGx5IHVzZWQgZWxzZXdoZXJlIGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0J3MgZGVjbGFyZWQgdG8ga25vdyBpZiBpdCdzIHZpc2libGUuIE15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGxvb2sgYXQgdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcyDigJMgSSdkIGV4cGVjdCB0byBmaW5kIGEgZGVjbGFyYXRpb24gaW4gc29tZXRoaW5nIGxpa2UgYGluY2x1ZGUvbmV0L3NjdHAvc2N0cC5oYCwgb3IgbWF5YmUgYSBtb3JlIHNwZWNpZmljIGhlYWRlciByZWxhdGVkIHRvIHRoZSBvdXRwdXQgcXVldWVpbmcgZnVuY3Rpb25hbGl0eSBpZiBpdCdzIG5hcnJvd2x5IHNjb3BlZC4gVGltZSB0byBnbyBodW50aW5nIGluIHRob3NlIGluY2x1ZGVzLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB3aWRlbHkgdGhpcyBmdW5jdGlvbidzIGVmZmVjdHMgY2FuIGJlIGZlbHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3OTIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwODo0NjowNy42ODI2Njk4MDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0ODU1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg9MjExNz1zdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnNjdHBfYXNzb2NfY2hvb3NlX2FsdGVyX3RyYW5zcG9ydChcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaC0yMTE4LVxcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqKTtcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoyMTE5OnZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKik7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjEyMC1zdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnNjdHBfYXNzb2NfbG9va3VwX3BhZGRyKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjA3LjczNDE1OTczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5NTg2MjExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipGb2N1c2luZyBvbiBSZXRyYW5zbWlzc2lvbiBQYXRoIFVwZGF0ZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHRoaXMgYXJlYS4gYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCBpcyBhIGdyZWF0IHN0YXJ0aW5nIHBvaW50IGZvciBleGFtaW5pbmcgaG93IFNDVFAgaGFuZGxlcyByZXRyYW5zbWlzc2lvbiBwYXRoIHVwZGF0ZXMuIEknbSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBwbGF5IGEgcGFydCBpbiB0aGlzIHByb2Nlc3MsIGVzcGVjaWFsbHkgY29uY2VybmluZyBwYXRoIG1hbmFnZW1lbnQgZHVyaW5nIGFzc29jaWF0aW9uIGxpZmVjeWNsZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgY29kZSBiYXNlIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLlxuXG5BIHF1aWNrIGNoZWNrIHJldmVhbHMgc29tZSBvdGhlciBjcml0aWNhbCBjYW5kaWRhdGVzOiBgc2N0cF9hc3NvY19ybV9wZWVyYCBmZWVscyB0YW5nZW50aWFsbHkgcmVsYXRlZCBpbiB0ZXJtcyBvZiBwZWVycyBuZWVkaW5nIHJlbW92ZWQsIGBzY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnRgIG1ha2VzIGxvZ2ljYWwgc2Vuc2UgY29uY2VybmluZyBwYXRoIHNlbGVjdGlvbiBkZWNpc2lvbnMsIGFuZCBvYnZpb3VzbHksIGBzY3RwX3JldHJhbnNtaXRgIGlzIGZ1bmRhbWVudGFsIHRvIHRoZSBlbnRpcmUgcmV0cmFuc21pc3Npb24gbWVjaGFuaXNtLlxuXG5Gb3Igbm93LCBJJ2xsIGRlZmluaXRlbHkgaW5jbHVkZSBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGFuZCBgc2N0cF9yZXRyYW5zbWl0YCBpbiB0aGUgaW5pdGlhbCBhbmFseXNpcywgYnV0IEknbGwga2VlcCB0aGUgb3RoZXJzIGluIG1pbmQgYXMgcG90ZW50aWFsIGFyZWFzIG9mIGludmVzdGlnYXRpb24uIEkgY2FuIHNlZSBhIGNsZWFyIHRocmVhZCBjb25uZWN0aW5nIHRoZSB1cGRhdGUgZnVuY3Rpb24gZGlyZWN0bHkgdG8gaG93IHdlIG1hbmFnZSBhbmQgcmVhY3QgdG8gbG9zdCBvciBkZWdyYWRlZCBwYXRocyB3aGljaCBtYXkgZHJpdmUgdGhlIHJldHJhbnNtaXNzaW9uIGl0c2VsZi4gVGhpcyBpcyB3aGVyZSBJJ2xsIGJlZ2luIHRvIGJ1aWxkIG15IGtub3dsZWRnZSBmb3IgdGhpcyBzcGVjaWZpYyBhcmVhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjY2LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjEyLjkzMDAyNTIyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MTYwMzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhcIixcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhcIixcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDY6MTMuMDE0MTkyNzIyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk3MDUwMTY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjEzLjAxNDY2MTIxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODk3MDAyODgyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCB3aGVyZSBgdHJhbnNfbmV4dGAgY291bGQgYmUgTlVMTCBhbmQgYXNzaWduZWQgdG8gYGFzb2MtXFx1MDAzZXBlZXIucmV0cmFuX3BhdGhgLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93IGFuZCBwb2ludGVyIGFzc2lnbm1lbnRzLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZC4gU3RhbmRhcmQgS0FTQU4gYW5kIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlmMjVkZTYwNTYwMjRkNjQwMmE4ZGEwMzQ3NmQyOTE0ZTQ5ZTI1ZWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwODo0MjoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbmluZGV4IGMwNTEyYzgyN2QwZjUuLjZmMTllYjBiMDFlMjkgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbkBAIC0xMjcyLDYgKzEyNzIsNyBAQCB2b2lkIHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuIHtcbiBcdHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnMgPSBhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGg7XG4gXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zX25leHQgPSBOVUxMO1xuK1x0Ym9vbCBsYXN0ID0gZmFsc2U7XG4gXG4gXHQvKiBXZSdyZSBkb25lIGFzIHdlIG9ubHkgaGF2ZSB0aGUgb25lIGFuZCBvbmx5IHBhdGguICovXG4gXHRpZiAoYXNvYy1cdTAwM2VwZWVyLnRyYW5zcG9ydF9jb3VudCA9PSAxKVxuQEAgLTEyODksMTggKzEyOTAsMjAgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiBcdFx0LyogTWFudWFsbHkgc2tpcCB0aGUgaGVhZCBlbGVtZW50LiAqL1xuIFx0XHRpZiAoXHUwMDI2dHJhbnMtXHUwMDNldHJhbnNwb3J0cyA9PSBcdTAwMjZhc29jLVx1MDAzZXBlZXIudHJhbnNwb3J0X2FkZHJfbGlzdClcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0aWYgKHRyYW5zLVx1MDAzZXN0YXRlID09IFNDVFBfVU5DT05GSVJNRUQpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdHRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpO1xuLVx0XHQvKiBBY3RpdmUgaXMgZ29vZCBlbm91Z2ggZm9yIGltbWVkaWF0ZSByZXR1cm4uICovXG4tXHRcdGlmICh0cmFuc19uZXh0LVx1MDAzZXN0YXRlID09IFNDVFBfQUNUSVZFKVxuLVx0XHRcdGJyZWFrO1xuK1x0XHRsYXN0ID0gdHJhbnMgPT0gYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoO1xuK1x0XHRpZiAodHJhbnMtXHUwMDNlc3RhdGUgIT0gU0NUUF9VTkNPTkZJUk1FRCkge1xuK1x0XHRcdHRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpO1xuK1x0XHRcdC8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi9cbitcdFx0XHRpZiAodHJhbnNfbmV4dC1cdTAwM2VzdGF0ZSA9PSBTQ1RQX0FDVElWRSlcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXHRcdC8qIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCwgdGltZSB0byB1cGRhdGUgcGF0aC4gKi9cbi1cdFx0aWYgKHRyYW5zID09IGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aClcbitcdFx0aWYgKGxhc3QpXG4gXHRcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGggPSB0cmFuc19uZXh0O1xuK1x0aWYgKHRyYW5zX25leHQpXG4rXHRcdGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7XG4gXG4gXHRwcl9kZWJ1ZyhcIiVzOiBhc3NvY2lhdGlvbjolcCB1cGRhdGVkIG5ldyBwYXRoIHRvIGFkZHI6JXBJU3BjXFxuXCIsXG4gXHRcdCBfX2Z1bmNfXywgYXNvYywgXHUwMDI2YXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoLVx1MDAzZWlwYWRkci5zYSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwODo0NjoxMy4wMTQ2NjE5NTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg5NzAwMDE0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU0NUUCBSZXRyYW5zbWlzc2lvbiBQYXRoIFNlbGVjdGlvbiBCdWcgRml4KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIEknbSBwYXRjaGluZyBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGluIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AuICBUaGUgY29yZSBjaGFuZ2UgaW52b2x2ZXMgaG93IHRoZSBjb2RlIGl0ZXJhdGVzIHRocm91Z2ggdGhlIGBhc29jLVx1MDAzZXBlZXIudHJhbnNwb3J0X2FkZHJfbGlzdGAgYW5kIHNlbGVjdHMgdGhlIHJldHJhbnNtaXNzaW9uIHBhdGggKGBhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGhgKS5cblxuSW5pdGlhbGx5LCBJIHNlZSB0aGV5J3ZlIGFkZGVkIGEgYGJvb2wgbGFzdCA9IGZhbHNlO2Agd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgcHJpbWFyeSBtb2RpZmljYXRpb24gY2VudGVycyBhcm91bmQgdGhlIGxvb3AuIEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgcG90ZW50aWFsIGZsYXcuICBJZiBgdHJhbnMtXHUwMDNlc3RhdGVgIHdhcyBgU0NUUF9VTkNPTkZJUk1FRGAsIGl0IHdvdWxkIGBjb250aW51ZWAgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiAgSG93ZXZlciwgdGhpcyBjb3VsZCBsZWFkIHRvIHRoZSBzZWxlY3Rpb24gb2YgYHRyYW5zX25leHRgIGJlaW5nIHByb2JsZW1hdGljLiBUaGUgbG9naWMgaGFzIGJlZW4gYWRqdXN0ZWQuIE5vdywgd2UgY2hlY2sgdGhlIGB0cmFucy1cdTAwM2VzdGF0ZSAhPSBTQ1RQX1VOQ09ORklSTUVEYCAqYmVmb3JlKiB0aGUgYmVzdCBwYXRoIHNlbGVjdGlvbiwgYW5kIHRoZW4gYWZ0ZXIgdGhlIHBhdGggc2VsZWN0aW9uIHdlIHN0b3JlIGl0IGluIGEgdGVtcG9yYXJ5IHZhcmlhYmxlLCBgdHJhbnNfbmV4dGAuIFRoZSBzdWJzZXF1ZW50IGNoZWNrIGBpZiAodHJhbnNfbmV4dC1cdTAwM2VzdGF0ZSA9PSBTQ1RQX0FDVElWRSlgIGxvb2tzIGxpa2UgaXTigJlzIGF0dGVtcHRpbmcgdG8gaW1tZWRpYXRlbHkgcmV0dXJuLiBGaW5hbGx5LCB0aGV5J3JlIHVzaW5nIGBsYXN0YCB0byBkZXRlcm1pbmUgaWYgd2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsaXN0LlxuXG5UaGUgY3JpdGljYWwgZml4IGhlcmUgaXMgdGhlIGd1YXJkIGFkZGVkIGJlZm9yZSB1cGRhdGluZyBgYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBhc3NpZ25pbmcgYHRyYW5zX25leHRgLCB0aGUgY29kZSBub3cgY2hlY2tzIGlmIGB0cmFuc19uZXh0YCBpcyBOVUxMLiBgaWYgKHRyYW5zX25leHQpYCDigJMgdGhpcyBpcyBhIGNydWNpYWwgYWRkaXRpb24hIEl0IHByZXZlbnRzIGFzc2lnbmluZyBhIE5VTEwgdmFsdWUgdG8gYGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHdoaWNoIHNlZW1zIHRvIGJlIHRoZSByb290IGNhdXNlIG9mIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIGEgc2ltaWxhciBpc3N1ZS4gVGhlIG9yaWdpbmFsIGxvZ2ljIGNvdWxkIGxlYWQgdG8gYGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAgYmVpbmcgc2V0IHRvIE5VTEwsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGEgY3Jhc2ggbGF0ZXIgb24uXG5cbk5vdywgbGV0J3MgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgZm9yIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikuIEJhc2VkIG9uIHRoZSBjaGFuZ2VzLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXMgKm5vdCogbmVjZXNzYXJ5IGhlcmUuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gTm8gZGF0YSBpcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGRlYWwgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhpcyBpcyBzaW1wbHkgYSBsb2dpYyBidWcgZml4IGluIHRoZSBwYXRoIHNlbGVjdGlvbiBhbGdvcml0aG0uIFN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgbGlrZSBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBzaG91bGQgZWFzaWx5IGNhdGNoIGFueSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHRoYXQgcmVtYWluLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgZm9yIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gYHRyYW5zX25leHRgIGlzIGluaXRpYWxpemVkIHRvIGBOVUxMYCAoZXhwbGljaXRseSksIGFuZCBgbGFzdGAgaXMgaW5pdGlhbGl6ZWQgdG8gYGZhbHNlYC4gT2theSwgbG9va3MgbGlrZSB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgYmVpbmcgdXNlZCwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU49ZmFsc2VgIGlzIHRoZSBjb3JyZWN0IHNldHRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTksIk91dHB1dFRva2VucyI6MTM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDY6MzEuOTg0NjY2NzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgd2hlcmUgYHRyYW5zX25leHRgIGNvdWxkIGJlIE5VTEwgYW5kIGFzc2lnbmVkIHRvIGBhc29jLVxcdTAwM2VwZWVyLnJldHJhbl9wYXRoYCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgcG9pbnRlciBhc3NpZ25tZW50cy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCBvciBsZWFrZWQuIFN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBOVUxMIGFuZCBhc3NpZ25lZCB0byBgYXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIHBvaW50ZXIgYXNzaWdubWVudHMuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowhghkv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-27 07:58:41 +0000 UTC FinishedAt: 2026-08-27 08:46:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f967455fb2a5a2079b9eb5823e9ccf359174bf9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f967455fb2a5a2079b9eb5823e9ccf359174bf9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "6a5c290a-b53f-43f7-87c8-319fb3a981a1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_assoc_update_retran_path", "sctp_retransmit", "sctp_assoc_choose_alter_transport" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aCYjMzQ7LAogICAgJiMzNDtzY3RwX3JldHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCB3aGVyZSBgdHJhbnNfbmV4dGAgY291bGQgYmUgTlVMTCBhbmQgYXNzaWduZWQgdG8gYGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIHBvaW50ZXIgYXNzaWdubWVudHMuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgdXBkYXRpbmcgdGhlIHJldHJhbnNtaXNzaW9uIHBhdGggaW4gU0NUUCBhc3NvY2lhdGlvbnMsIGZpeGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYW5kIGEgYnVnIGluIHRoZSBsb29wIGNvbmRpdGlvbi4gVGhpcyBpcyBjb3JlIFNDVFAgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZjI1ZGU2MDU2MDI0ZDY0MDJhOGRhMDM0NzZkMjkxNGU0OWUyNWVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDg6NDI6MjEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuaW5kZXggYzA1MTJjODI3ZDBmNS4uNmYxOWViMGIwMWUyOSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuQEAgLTEyNzIsNiAmIzQzOzEyNzIsNyBAQCB2b2lkIHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuIHtcbiBcdHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnMgPSBhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGg7XG4gXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zX25leHQgPSBOVUxMO1xuJiM0MztcdGJvb2wgbGFzdCA9IGZhbHNlO1xuIFxuIFx0LyogV2UmIzM5O3JlIGRvbmUgYXMgd2Ugb25seSBoYXZlIHRoZSBvbmUgYW5kIG9ubHkgcGF0aC4gKi9cbiBcdGlmIChhc29jLVx1MDAzZXBlZXIudHJhbnNwb3J0X2NvdW50ID09IDEpXG5AQCAtMTI4OSwxOCAmIzQzOzEyOTAsMjAgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiBcdFx0LyogTWFudWFsbHkgc2tpcCB0aGUgaGVhZCBlbGVtZW50LiAqL1xuIFx0XHRpZiAoXHUwMDI2dHJhbnMtXHUwMDNldHJhbnNwb3J0cyA9PSBcdTAwMjZhc29jLVx1MDAzZXBlZXIudHJhbnNwb3J0X2FkZHJfbGlzdClcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0aWYgKHRyYW5zLVx1MDAzZXN0YXRlID09IFNDVFBfVU5DT05GSVJNRUQpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdHRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpO1xuLVx0XHQvKiBBY3RpdmUgaXMgZ29vZCBlbm91Z2ggZm9yIGltbWVkaWF0ZSByZXR1cm4uICovXG4tXHRcdGlmICh0cmFuc19uZXh0LVx1MDAzZXN0YXRlID09IFNDVFBfQUNUSVZFKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0bGFzdCA9IHRyYW5zID09IGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aDtcbiYjNDM7XHRcdGlmICh0cmFucy1cdTAwM2VzdGF0ZSAhPSBTQ1RQX1VOQ09ORklSTUVEKSB7XG4mIzQzO1x0XHRcdHRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpO1xuJiM0MztcdFx0XHQvKiBBY3RpdmUgaXMgZ29vZCBlbm91Z2ggZm9yIGltbWVkaWF0ZSByZXR1cm4uICovXG4mIzQzO1x0XHRcdGlmICh0cmFuc19uZXh0LVx1MDAzZXN0YXRlID09IFNDVFBfQUNUSVZFKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFx0XHQvKiBXZSYjMzk7dmUgcmVhY2hlZCB0aGUgZW5kLCB0aW1lIHRvIHVwZGF0ZSBwYXRoLiAqL1xuLVx0XHRpZiAodHJhbnMgPT0gYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoKVxuJiM0MztcdFx0aWYgKGxhc3QpXG4gXHRcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGggPSB0cmFuc19uZXh0O1xuJiM0MztcdGlmICh0cmFuc19uZXh0KVxuJiM0MztcdFx0YXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoID0gdHJhbnNfbmV4dDtcbiBcbiBcdHByX2RlYnVnKFwmIzM0OyVzOiBhc3NvY2lhdGlvbjolcCB1cGRhdGVkIG5ldyBwYXRoIHRvIGFkZHI6JXBJU3BjXFxuXCYjMzQ7LFxuIFx0XHQgX19mdW5jX18sIGFzb2MsIFx1MDAyNmFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aC1cdTAwM2VpcGFkZHIuc2EpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgmIzM0OywKICAgICYjMzQ7c2N0cF9yZXRyYW5zbWl0JiMzNDssCiAgICAmIzM0O3NjdHBfYXNzb2NfY2hvb3NlX2FsdGVyX3RyYW5zcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHVwZGF0aW5nIHRoZSByZXRyYW5zbWlzc2lvbiBwYXRoIGluIFNDVFAgYXNzb2NpYXRpb25zLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGFuZCBhIGJ1ZyBpbiB0aGUgbG9vcCBjb25kaXRpb24uIFRoaXMgaXMgY29yZSBTQ1RQIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWYyNWRlNjA1NjAyNGQ2NDAyYThkYTAzNDc2ZDI5MTRlNDllMjVlYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDA4OjQyOjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwppbmRleCBjMDUxMmM4MjdkMGY1Li42ZjE5ZWIwYjAxZTI5IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwpAQCAtMTI3Miw2ICYjNDM7MTI3Miw3IEBAIHZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpCiB7CiAJc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFucyA9IGFzb2MtJmd0O3BlZXIucmV0cmFuX3BhdGg7CiAJc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc19uZXh0ID0gTlVMTDsKJiM0MzsJYm9vbCBsYXN0ID0gZmFsc2U7CiAKIAkvKiBXZSYjMzk7cmUgZG9uZSBhcyB3ZSBvbmx5IGhhdmUgdGhlIG9uZSBhbmQgb25seSBwYXRoLiAqLwogCWlmIChhc29jLSZndDtwZWVyLnRyYW5zcG9ydF9jb3VudCA9PSAxKQpAQCAtMTI4OSwxOCAmIzQzOzEyOTAsMjAgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKIAkJLyogTWFudWFsbHkgc2tpcCB0aGUgaGVhZCBlbGVtZW50LiAqLwogCQlpZiAoJmFtcDt0cmFucy0mZ3Q7dHJhbnNwb3J0cyA9PSAmYW1wO2Fzb2MtJmd0O3BlZXIudHJhbnNwb3J0X2FkZHJfbGlzdCkKIAkJCWNvbnRpbnVlOwotCQlpZiAodHJhbnMtJmd0O3N0YXRlID09IFNDVFBfVU5DT05GSVJNRUQpCi0JCQljb250aW51ZTsKLQkJdHJhbnNfbmV4dCA9IHNjdHBfdHJhbnNfZWxlY3RfYmVzdCh0cmFucywgdHJhbnNfbmV4dCk7Ci0JCS8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi8KLQkJaWYgKHRyYW5zX25leHQtJmd0O3N0YXRlID09IFNDVFBfQUNUSVZFKQotCQkJYnJlYWs7CiYjNDM7CQlsYXN0ID0gdHJhbnMgPT0gYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aDsKJiM0MzsJCWlmICh0cmFucy0mZ3Q7c3RhdGUgIT0gU0NUUF9VTkNPTkZJUk1FRCkgewomIzQzOwkJCXRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpOwomIzQzOwkJCS8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi8KJiM0MzsJCQlpZiAodHJhbnNfbmV4dC0mZ3Q7c3RhdGUgPT0gU0NUUF9BQ1RJVkUpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfQogCQkvKiBXZSYjMzk7dmUgcmVhY2hlZCB0aGUgZW5kLCB0aW1lIHRvIHVwZGF0ZSBwYXRoLiAqLwotCQlpZiAodHJhbnMgPT0gYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCkKJiM0MzsJCWlmIChsYXN0KQogCQkJYnJlYWs7CiAJfQogCi0JYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7CiYjNDM7CWlmICh0cmFuc19uZXh0KQomIzQzOwkJYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7CiAKIAlwcl9kZWJ1ZygmIzM0OyVzOiBhc3NvY2lhdGlvbjolcCB1cGRhdGVkIG5ldyBwYXRoIHRvIGFkZHI6JXBJU3BjXG4mIzM0OywKIAkJIF9fZnVuY19fLCBhc29jLCAmYW1wO2Fzb2MtJmd0O3BlZXIucmV0cmFuX3BhdGgtJmd0O2lwYWRkci5zYSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFNDVFAgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L3NjdHAvYXNzb2Npb2xhLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgZnVuY3Rpb24uIFRoaXMgaXMgYWJvdXQgbWFuYWdpbmcgcmV0cmFuc21pc3Npb24gcGF0aHMgd2l0aGluIFNDVFAgYXNzb2NpYXRpb25zLCB3aGljaCBpcyBjcnVjaWFsIGZvciByZWxpYWJsZSBkYXRhIHRyYW5zZmVyLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UsIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBpbmFkdmVydGVudGx5IHNldCB0byBgTlVMTGAgYW5kIHRoZW4gYXNzaWduZWQgdG8gdGhlIHJldHJhbnNtaXNzaW9uIHBhdGguIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNvdXJjZSBvZiBjcmFzaGVzLCBzbyBnb29kIG9uIHRoZSBkZXZlbG9wZXIgZm9yIGNhdGNoaW5nIHRoYXQuIFRoZSBwYXRjaCBhbHNvIGFkanVzdHMgdGhlIGxvb3AgY29uZGl0aW9uIHRvIGVuc3VyZSBhIGNoZWNrIGlzbiYjMzk7dCBtaXNzZWQgd2hlbiB0aGUgc3RhdGUgaXMgYFNDVFBfVU5DT05GSVJNRURgLiBUaGF0JiMzOTtzIGEgc3VidGxlIGJ1dCBpbXBvcnRhbnQgZGV0YWlsLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIGNvZGUgcGF0aCBldmVuIHJlYWNoYWJsZT8gU0NUUCBpcyBhIGNvcmUgbmV0d29ya2luZyBwcm90b2NvbCwgZXhwb3NlZCB0byB1c2VyIHNwYWNlIHRocm91Z2ggc29ja2V0cy4gVGhlIHNob3J0IGFuc3dlciBpcyBhIHJlc291bmRpbmcgJiMzNDt5ZXMuJiMzNDsgVGhpcyBmdW5jdGlvbiAqaXMqIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgY2FuIHByb3ZpZGUgYWxsIHNvcnRzIG9mIG1hbGZvcm1lZCBwYWNrZXRzIGFuZCBlZGdlIGNhc2VzIGFuZCBzZWUgd2hhdCBoYXBwZW5zLgoKTm93LCBsZXQgbWUgdHJhY2sgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIGBuZXQvc2N0cC9LY29uZmlnYCBmb3IgdGhlIGBJUF9TQ1RQYCBvcHRpb24uIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgbWFpbiBTQ1RQIGVuYWJsZS9kaXNhYmxlIHNldHRpbmcgcmVzaWRlcy4gSSBuZWVkIHRvIGtub3cgaG93IGVhc2lseSBJIGNhbiBjb25maWd1cmUgU0NUUCB0byBtYWtlIHRoaXMgcGF0Y2ggYWN0aXZlIGFuZCB0ZXN0YWJsZS4gRnV6emluZyB0aGlzICpuZWVkcyogdG8gYmUgZG9uZSB3aXRoIFNDVFAgZW5hYmxlZCwgb2J2aW91c2x5IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgU0NUUCBBc3NvY2lhdGlvbiBQYXRoIFJldHJhbnNtaXNzaW9uKioKCkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBJUF9TQ1RQYC4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb3JlIGxvZ2ljLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgZ2l2ZW4gdGhlIGNvbmZpZ3VyYXRpb24sIGlzIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgcGF0aCByZXRyYW5zbWlzc2lvbnMgd2l0aGluIGFuIFNDVFAgYXNzb2NpYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VybmVsIG1hbmFnZXMgdGhpcywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGZ1bmN0aW9uLiBJIHdpbGwgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AgZm9yIHRoaXMgZnVuY3Rpb24uIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMgYW5kIHRoZSByZXRyYW5zbWlzc2lvbiBwb2xpY3kgZm9yIHBhdGhzIHdpdGhpbiB0aGUgYXNzb2NpYXRpb24gYXJlIGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvYXNzb2Npb2xhLmM9NDgyPXZvaWQgc2N0cF9hc3NvY19ybV9wZWVyKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuLS1cbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTQ5NS1cdGlmIChhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGggPT0gcGVlcilcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjQ5NjpcdFx0c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoYXNvYyk7XG5uZXQvc2N0cC9hc3NvY2lvbGEuYy00OTctXG4tLVxubmV0L3NjdHAvYXNzb2Npb2xhLmM9MTI0OD1zdGF0aWMgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICpzY3RwX3RyYW5zX2VsZWN0X2Jlc3Qoc3RydWN0IHNjdHBfdHJhbnNwb3J0ICpjdXJyLFxuLS1cbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTEyNzAtXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzoxMjcxOnZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xMjcyLXtcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYz0xMzgwPXNjdHBfYXNzb2NfY2hvb3NlX2FsdGVyX3RyYW5zcG9ydChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbi0tXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xMzkwLVx0XHRpZiAobGFzdF9zZW50X3RvID09IGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aClcbm5ldC9zY3RwL2Fzc29jaW9sYS5jOjEzOTE6XHRcdFx0c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoYXNvYyk7XG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xMzkyLVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9NTM3PXZvaWQgc2N0cF9yZXRyYW5zbWl0KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnNwb3J0LFxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtNTQ5LVx0XHRpZiAodHJhbnNwb3J0ID09IHRyYW5zcG9ydC1cdTAwM2Vhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGgpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU1MDpcdFx0XHRzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aCh0cmFuc3BvcnQtXHUwMDNlYXNvYyk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU1MS1cdFx0dHJhbnNwb3J0LVx1MDAzZWFzb2MtXHUwMDNlcnR4X2RhdGFfY2h1bmtzICYjNDM7PVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgZnVuY3Rpb24uIFRoZSBjb2RlIHNheXMgaXQmIzM5O3MgdXNlZCBpbiBgbmV0L3NjdHAvb3V0cXVldWUuY2AsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIElzIGl0IGludGVybmFsIHRvIHRoYXQgZmlsZSwgb3IgaXMgaXQgZXhwb3J0ZWQgYW5kIHBvdGVudGlhbGx5IHVzZWQgZWxzZXdoZXJlIGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0JiMzOTtzIGRlY2xhcmVkIHRvIGtub3cgaWYgaXQmIzM5O3MgdmlzaWJsZS4gTXkgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzIOKAkyBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGEgZGVjbGFyYXRpb24gaW4gc29tZXRoaW5nIGxpa2UgYGluY2x1ZGUvbmV0L3NjdHAvc2N0cC5oYCwgb3IgbWF5YmUgYSBtb3JlIHNwZWNpZmljIGhlYWRlciByZWxhdGVkIHRvIHRoZSBvdXRwdXQgcXVldWVpbmcgZnVuY3Rpb25hbGl0eSBpZiBpdCYjMzk7cyBuYXJyb3dseSBzY29wZWQuIFRpbWUgdG8gZ28gaHVudGluZyBpbiB0aG9zZSBpbmNsdWRlcy4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHdpZGVseSB0aGlzIGZ1bmN0aW9uJiMzOTtzIGVmZmVjdHMgY2FuIGJlIGZlbHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaD0yMTE3PXN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqc2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0KFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjExOC1cdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqKTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oOjIxMTk6dm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqKTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTIxMjAtc3RydWN0IHNjdHBfdHJhbnNwb3J0ICpzY3RwX2Fzc29jX2xvb2t1cF9wYWRkcihjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjYKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOgoKKipGb2N1c2luZyBvbiBSZXRyYW5zbWlzc2lvbiBQYXRoIFVwZGF0ZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhpcyBhcmVhLiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGlzIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQgZm9yIGV4YW1pbmluZyBob3cgU0NUUCBoYW5kbGVzIHJldHJhbnNtaXNzaW9uIHBhdGggdXBkYXRlcy4gSSYjMzk7bSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBwbGF5IGEgcGFydCBpbiB0aGlzIHByb2Nlc3MsIGVzcGVjaWFsbHkgY29uY2VybmluZyBwYXRoIG1hbmFnZW1lbnQgZHVyaW5nIGFzc29jaWF0aW9uIGxpZmVjeWNsZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhlIGNvZGUgYmFzZSB0byBjb25maXJtIG15IGluaXRpYWwgaHlwb3RoZXNpcy4KCkEgcXVpY2sgY2hlY2sgcmV2ZWFscyBzb21lIG90aGVyIGNyaXRpY2FsIGNhbmRpZGF0ZXM6IGBzY3RwX2Fzc29jX3JtX3BlZXJgIGZlZWxzIHRhbmdlbnRpYWxseSByZWxhdGVkIGluIHRlcm1zIG9mIHBlZXJzIG5lZWRpbmcgcmVtb3ZlZCwgYHNjdHBfYXNzb2NfY2hvb3NlX2FsdGVyX3RyYW5zcG9ydGAgbWFrZXMgbG9naWNhbCBzZW5zZSBjb25jZXJuaW5nIHBhdGggc2VsZWN0aW9uIGRlY2lzaW9ucywgYW5kIG9idmlvdXNseSwgYHNjdHBfcmV0cmFuc21pdGAgaXMgZnVuZGFtZW50YWwgdG8gdGhlIGVudGlyZSByZXRyYW5zbWlzc2lvbiBtZWNoYW5pc20uCgpGb3Igbm93LCBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY2x1ZGUgYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCBhbmQgYHNjdHBfcmV0cmFuc21pdGAgaW4gdGhlIGluaXRpYWwgYW5hbHlzaXMsIGJ1dCBJJiMzOTtsbCBrZWVwIHRoZSBvdGhlcnMgaW4gbWluZCBhcyBwb3RlbnRpYWwgYXJlYXMgb2YgaW52ZXN0aWdhdGlvbi4gSSBjYW4gc2VlIGEgY2xlYXIgdGhyZWFkIGNvbm5lY3RpbmcgdGhlIHVwZGF0ZSBmdW5jdGlvbiBkaXJlY3RseSB0byBob3cgd2UgbWFuYWdlIGFuZCByZWFjdCB0byBsb3N0IG9yIGRlZ3JhZGVkIHBhdGhzIHdoaWNoIG1heSBkcml2ZSB0aGUgcmV0cmFuc21pc3Npb24gaXRzZWxmLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGJlZ2luIHRvIGJ1aWxkIG15IGtub3dsZWRnZSBmb3IgdGhpcyBzcGVjaWZpYyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoJiMzNDssCiAgICAmIzM0O3NjdHBfcmV0cmFuc21pdCYjMzQ7LAogICAgJiMzNDtzY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoJiMzNDssCiAgICAmIzM0O3NjdHBfcmV0cmFuc21pdCYjMzQ7LAogICAgJiMzNDtzY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwODo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBOVUxMIGFuZCBhc3NpZ25lZCB0byBgYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoYCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgcG9pbnRlciBhc3NpZ25tZW50cy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCBvciBsZWFrZWQuIFN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWYyNWRlNjA1NjAyNGQ2NDAyYThkYTAzNDc2ZDI5MTRlNDllMjVlYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDA4OjQyOjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwppbmRleCBjMDUxMmM4MjdkMGY1Li42ZjE5ZWIwYjAxZTI5IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwpAQCAtMTI3Miw2ICYjNDM7MTI3Miw3IEBAIHZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpCiB7CiAJc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFucyA9IGFzb2MtJmd0O3BlZXIucmV0cmFuX3BhdGg7CiAJc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc19uZXh0ID0gTlVMTDsKJiM0MzsJYm9vbCBsYXN0ID0gZmFsc2U7CiAKIAkvKiBXZSYjMzk7cmUgZG9uZSBhcyB3ZSBvbmx5IGhhdmUgdGhlIG9uZSBhbmQgb25seSBwYXRoLiAqLwogCWlmIChhc29jLSZndDtwZWVyLnRyYW5zcG9ydF9jb3VudCA9PSAxKQpAQCAtMTI4OSwxOCAmIzQzOzEyOTAsMjAgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKIAkJLyogTWFudWFsbHkgc2tpcCB0aGUgaGVhZCBlbGVtZW50LiAqLwogCQlpZiAoJmFtcDt0cmFucy0mZ3Q7dHJhbnNwb3J0cyA9PSAmYW1wO2Fzb2MtJmd0O3BlZXIudHJhbnNwb3J0X2FkZHJfbGlzdCkKIAkJCWNvbnRpbnVlOwotCQlpZiAodHJhbnMtJmd0O3N0YXRlID09IFNDVFBfVU5DT05GSVJNRUQpCi0JCQljb250aW51ZTsKLQkJdHJhbnNfbmV4dCA9IHNjdHBfdHJhbnNfZWxlY3RfYmVzdCh0cmFucywgdHJhbnNfbmV4dCk7Ci0JCS8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi8KLQkJaWYgKHRyYW5zX25leHQtJmd0O3N0YXRlID09IFNDVFBfQUNUSVZFKQotCQkJYnJlYWs7CiYjNDM7CQlsYXN0ID0gdHJhbnMgPT0gYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aDsKJiM0MzsJCWlmICh0cmFucy0mZ3Q7c3RhdGUgIT0gU0NUUF9VTkNPTkZJUk1FRCkgewomIzQzOwkJCXRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpOwomIzQzOwkJCS8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi8KJiM0MzsJCQlpZiAodHJhbnNfbmV4dC0mZ3Q7c3RhdGUgPT0gU0NUUF9BQ1RJVkUpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfQogCQkvKiBXZSYjMzk7dmUgcmVhY2hlZCB0aGUgZW5kLCB0aW1lIHRvIHVwZGF0ZSBwYXRoLiAqLwotCQlpZiAodHJhbnMgPT0gYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCkKJiM0MzsJCWlmIChsYXN0KQogCQkJYnJlYWs7CiAJfQogCi0JYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7CiYjNDM7CWlmICh0cmFuc19uZXh0KQomIzQzOwkJYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7CiAKIAlwcl9kZWJ1ZygmIzM0OyVzOiBhc3NvY2lhdGlvbjolcCB1cGRhdGVkIG5ldyBwYXRoIHRvIGFkZHI6JXBJU3BjXG4mIzM0OywKIAkJIF9fZnVuY19fLCBhc29jLCAmYW1wO2Fzb2MtJmd0O3BlZXIucmV0cmFuX3BhdGgtJmd0O2lwYWRkci5zYSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk5CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDU0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTQ1RQIFJldHJhbnNtaXNzaW9uIFBhdGggU2VsZWN0aW9uIEJ1ZyBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBJJiMzOTttIHBhdGNoaW5nIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgaW4gYG5ldC9zY3RwL2Fzc29jaW9sYS5jYC4gIFRoZSBjb3JlIGNoYW5nZSBpbnZvbHZlcyBob3cgdGhlIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgYGFzb2MtJmd0O3BlZXIudHJhbnNwb3J0X2FkZHJfbGlzdGAgYW5kIHNlbGVjdHMgdGhlIHJldHJhbnNtaXNzaW9uIHBhdGggKGBhc29jLSZndDtwZWVyLnJldHJhbl9wYXRoYCkuCgpJbml0aWFsbHksIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYGJvb2wgbGFzdCA9IGZhbHNlO2Agd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgcHJpbWFyeSBtb2RpZmljYXRpb24gY2VudGVycyBhcm91bmQgdGhlIGxvb3AuIEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgcG90ZW50aWFsIGZsYXcuICBJZiBgdHJhbnMtJmd0O3N0YXRlYCB3YXMgYFNDVFBfVU5DT05GSVJNRURgLCBpdCB3b3VsZCBgY29udGludWVgIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4gIEhvd2V2ZXIsIHRoaXMgY291bGQgbGVhZCB0byB0aGUgc2VsZWN0aW9uIG9mIGB0cmFuc19uZXh0YCBiZWluZyBwcm9ibGVtYXRpYy4gVGhlIGxvZ2ljIGhhcyBiZWVuIGFkanVzdGVkLiBOb3csIHdlIGNoZWNrIHRoZSBgdHJhbnMtJmd0O3N0YXRlICE9IFNDVFBfVU5DT05GSVJNRURgICpiZWZvcmUqIHRoZSBiZXN0IHBhdGggc2VsZWN0aW9uLCBhbmQgdGhlbiBhZnRlciB0aGUgcGF0aCBzZWxlY3Rpb24gd2Ugc3RvcmUgaXQgaW4gYSB0ZW1wb3JhcnkgdmFyaWFibGUsIGB0cmFuc19uZXh0YC4gVGhlIHN1YnNlcXVlbnQgY2hlY2sgYGlmICh0cmFuc19uZXh0LSZndDtzdGF0ZSA9PSBTQ1RQX0FDVElWRSlgIGxvb2tzIGxpa2UgaXTigJlzIGF0dGVtcHRpbmcgdG8gaW1tZWRpYXRlbHkgcmV0dXJuLiBGaW5hbGx5LCB0aGV5JiMzOTtyZSB1c2luZyBgbGFzdGAgdG8gZGV0ZXJtaW5lIGlmIHdlJiMzOTt2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGxpc3QuCgpUaGUgY3JpdGljYWwgZml4IGhlcmUgaXMgdGhlIGd1YXJkIGFkZGVkIGJlZm9yZSB1cGRhdGluZyBgYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aGAuIEluc3RlYWQgb2YgZGlyZWN0bHkgYXNzaWduaW5nIGB0cmFuc19uZXh0YCwgdGhlIGNvZGUgbm93IGNoZWNrcyBpZiBgdHJhbnNfbmV4dGAgaXMgTlVMTC4gYGlmICh0cmFuc19uZXh0KWAg4oCTIHRoaXMgaXMgYSBjcnVjaWFsIGFkZGl0aW9uISBJdCBwcmV2ZW50cyBhc3NpZ25pbmcgYSBOVUxMIHZhbHVlIHRvIGBhc29jLSZndDtwZWVyLnJldHJhbl9wYXRoYCwgd2hpY2ggc2VlbXMgdG8gYmUgdGhlIHJvb3QgY2F1c2Ugb2YgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgYSBzaW1pbGFyIGlzc3VlLiBUaGUgb3JpZ2luYWwgbG9naWMgY291bGQgbGVhZCB0byBgYXNvYy0mZ3Q7cGVlci5yZXRyYW5fcGF0aGAgYmVpbmcgc2V0IHRvIE5VTEwsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGEgY3Jhc2ggbGF0ZXIgb24uCgpOb3csIGxldCYjMzk7cyBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBmb3IgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKS4gQmFzZWQgb24gdGhlIGNoYW5nZXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgS01TQU4gaXMgKm5vdCogbmVjZXNzYXJ5IGhlcmUuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gTm8gZGF0YSBpcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIGl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBkZWFsIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoaXMgaXMgc2ltcGx5IGEgbG9naWMgYnVnIGZpeCBpbiB0aGUgcGF0aCBzZWxlY3Rpb24gYWxnb3JpdGhtLiBTdGFuZGFyZCBidWcgZGV0ZWN0b3JzIGxpa2UgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgc2hvdWxkIGVhc2lseSBjYXRjaCBhbnkgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB0aGF0IHJlbWFpbi4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBmb3IgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBgdHJhbnNfbmV4dGAgaXMgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIChleHBsaWNpdGx5KSwgYW5kIGBsYXN0YCBpcyBpbml0aWFsaXplZCB0byBgZmFsc2VgLiBPa2F5LCBsb29rcyBsaWtlIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBiZWluZyB1c2VkLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZC4gVGhlcmVmb3JlLCBgTmVlZHNLTVNBTj1mYWxzZWAgaXMgdGhlIGNvcnJlY3Qgc2V0dGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCB3aGVyZSBgdHJhbnNfbmV4dGAgY291bGQgYmUgTlVMTCBhbmQgYXNzaWduZWQgdG8gYGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIHBvaW50ZXIgYXNzaWdubWVudHMuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBOVUxMIGFuZCBhc3NpZ25lZCB0byBgYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoYCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgcG9pbnRlciBhc3NpZ25tZW50cy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCBvciBsZWFrZWQuIFN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDI6MjMuNjg3NTY3OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODI5NzE0NTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhcIixcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBOVUxMIGFuZCBhc3NpZ25lZCB0byBgYXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIHBvaW50ZXIgYXNzaWdubWVudHMuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDI6MjMuNjg3NTczMDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDkwMTYyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZjI1ZGU2MDU2MDI0ZDY0MDJhOGRhMDM0NzZkMjkxNGU0OWUyNWVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDI3IDA4OjQyOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcXG5pbmRleCBjMDUxMmM4MjdkMGY1Li42ZjE5ZWIwYjAxZTI5IDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL2Fzc29jaW9sYS5jXFxuKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcXG5AQCAtMTI3Miw2ICsxMjcyLDcgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zID0gYXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aDtcXG4gXFx0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc19uZXh0ID0gTlVMTDtcXG4rXFx0Ym9vbCBsYXN0ID0gZmFsc2U7XFxuIFxcbiBcXHQvKiBXZSdyZSBkb25lIGFzIHdlIG9ubHkgaGF2ZSB0aGUgb25lIGFuZCBvbmx5IHBhdGguICovXFxuIFxcdGlmIChhc29jLVxcdTAwM2VwZWVyLnRyYW5zcG9ydF9jb3VudCA9PSAxKVxcbkBAIC0xMjg5LDE4ICsxMjkwLDIwIEBAIHZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXFxuIFxcdFxcdC8qIE1hbnVhbGx5IHNraXAgdGhlIGhlYWQgZWxlbWVudC4gKi9cXG4gXFx0XFx0aWYgKFxcdTAwMjZ0cmFucy1cXHUwMDNldHJhbnNwb3J0cyA9PSBcXHUwMDI2YXNvYy1cXHUwMDNlcGVlci50cmFuc3BvcnRfYWRkcl9saXN0KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0aWYgKHRyYW5zLVxcdTAwM2VzdGF0ZSA9PSBTQ1RQX1VOQ09ORklSTUVEKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0dHJhbnNfbmV4dCA9IHNjdHBfdHJhbnNfZWxlY3RfYmVzdCh0cmFucywgdHJhbnNfbmV4dCk7XFxuLVxcdFxcdC8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi9cXG4tXFx0XFx0aWYgKHRyYW5zX25leHQtXFx1MDAzZXN0YXRlID09IFNDVFBfQUNUSVZFKVxcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0bGFzdCA9IHRyYW5zID09IGFzb2MtXFx1MDAzZXBlZXIucmV0cmFuX3BhdGg7XFxuK1xcdFxcdGlmICh0cmFucy1cXHUwMDNlc3RhdGUgIT0gU0NUUF9VTkNPTkZJUk1FRCkge1xcbitcXHRcXHRcXHR0cmFuc19uZXh0ID0gc2N0cF90cmFuc19lbGVjdF9iZXN0KHRyYW5zLCB0cmFuc19uZXh0KTtcXG4rXFx0XFx0XFx0LyogQWN0aXZlIGlzIGdvb2QgZW5vdWdoIGZvciBpbW1lZGlhdGUgcmV0dXJuLiAqL1xcbitcXHRcXHRcXHRpZiAodHJhbnNfbmV4dC1cXHUwMDNlc3RhdGUgPT0gU0NUUF9BQ1RJVkUpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuIFxcdFxcdC8qIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCwgdGltZSB0byB1cGRhdGUgcGF0aC4gKi9cXG4tXFx0XFx0aWYgKHRyYW5zID09IGFzb2MtXFx1MDAzZXBlZXIucmV0cmFuX3BhdGgpXFxuK1xcdFxcdGlmIChsYXN0KVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXG4tXFx0YXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7XFxuK1xcdGlmICh0cmFuc19uZXh0KVxcbitcXHRcXHRhc29jLVxcdTAwM2VwZWVyLnJldHJhbl9wYXRoID0gdHJhbnNfbmV4dDtcXG4gXFxuIFxcdHByX2RlYnVnKFxcXCIlczogYXNzb2NpYXRpb246JXAgdXBkYXRlZCBuZXcgcGF0aCB0byBhZGRyOiVwSVNwY1xcXFxuXFxcIixcXG4gXFx0XFx0IF9fZnVuY19fLCBhc29jLCBcXHUwMDI2YXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aC1cXHUwMDNlaXBhZGRyLnNhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDI6MjUuMDk3NDAxODk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjI3OTE2Nzg3MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aFwiLFxuICAgIFwic2N0cF9yZXRyYW5zbWl0XCIsXG4gICAgXCJzY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHVwZGF0aW5nIHRoZSByZXRyYW5zbWlzc2lvbiBwYXRoIGluIFNDVFAgYXNzb2NpYXRpb25zLCBmaXhpbmcgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGFuZCBhIGJ1ZyBpbiB0aGUgbG9vcCBjb25kaXRpb24uIFRoaXMgaXMgY29yZSBTQ1RQIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZjI1ZGU2MDU2MDI0ZDY0MDJhOGRhMDM0NzZkMjkxNGU0OWUyNWVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDg6NDI6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5pbmRleCBjMDUxMmM4MjdkMGY1Li42ZjE5ZWIwYjAxZTI5IDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbisrKyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jXG5AQCAtMTI3Miw2ICsxMjcyLDcgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiB7XG4gXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zID0gYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoO1xuIFx0c3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc19uZXh0ID0gTlVMTDtcbitcdGJvb2wgbGFzdCA9IGZhbHNlO1xuIFxuIFx0LyogV2UncmUgZG9uZSBhcyB3ZSBvbmx5IGhhdmUgdGhlIG9uZSBhbmQgb25seSBwYXRoLiAqL1xuIFx0aWYgKGFzb2MtXHUwMDNlcGVlci50cmFuc3BvcnRfY291bnQgPT0gMSlcbkBAIC0xMjg5LDE4ICsxMjkwLDIwIEBAIHZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXG4gXHRcdC8qIE1hbnVhbGx5IHNraXAgdGhlIGhlYWQgZWxlbWVudC4gKi9cbiBcdFx0aWYgKFx1MDAyNnRyYW5zLVx1MDAzZXRyYW5zcG9ydHMgPT0gXHUwMDI2YXNvYy1cdTAwM2VwZWVyLnRyYW5zcG9ydF9hZGRyX2xpc3QpXG4gXHRcdFx0Y29udGludWU7XG4tXHRcdGlmICh0cmFucy1cdTAwM2VzdGF0ZSA9PSBTQ1RQX1VOQ09ORklSTUVEKVxuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR0cmFuc19uZXh0ID0gc2N0cF90cmFuc19lbGVjdF9iZXN0KHRyYW5zLCB0cmFuc19uZXh0KTtcbi1cdFx0LyogQWN0aXZlIGlzIGdvb2QgZW5vdWdoIGZvciBpbW1lZGlhdGUgcmV0dXJuLiAqL1xuLVx0XHRpZiAodHJhbnNfbmV4dC1cdTAwM2VzdGF0ZSA9PSBTQ1RQX0FDVElWRSlcbi1cdFx0XHRicmVhaztcbitcdFx0bGFzdCA9IHRyYW5zID09IGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aDtcbitcdFx0aWYgKHRyYW5zLVx1MDAzZXN0YXRlICE9IFNDVFBfVU5DT05GSVJNRUQpIHtcbitcdFx0XHR0cmFuc19uZXh0ID0gc2N0cF90cmFuc19lbGVjdF9iZXN0KHRyYW5zLCB0cmFuc19uZXh0KTtcbitcdFx0XHQvKiBBY3RpdmUgaXMgZ29vZCBlbm91Z2ggZm9yIGltbWVkaWF0ZSByZXR1cm4uICovXG4rXHRcdFx0aWYgKHRyYW5zX25leHQtXHUwMDNlc3RhdGUgPT0gU0NUUF9BQ1RJVkUpXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0XHQvKiBXZSd2ZSByZWFjaGVkIHRoZSBlbmQsIHRpbWUgdG8gdXBkYXRlIHBhdGguICovXG4tXHRcdGlmICh0cmFucyA9PSBhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGgpXG4rXHRcdGlmIChsYXN0KVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuIFxuLVx0YXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoID0gdHJhbnNfbmV4dDtcbitcdGlmICh0cmFuc19uZXh0KVxuK1x0XHRhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGggPSB0cmFuc19uZXh0O1xuIFxuIFx0cHJfZGVidWcoXCIlczogYXNzb2NpYXRpb246JXAgdXBkYXRlZCBuZXcgcGF0aCB0byBhZGRyOiVwSVNwY1xcblwiLFxuIFx0XHQgX19mdW5jX18sIGFzb2MsIFx1MDAyNmFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aC1cdTAwM2VpcGFkZHIuc2EpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDI6MjUuMDk3NDAzOTc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjE1MTAzNDIxNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBTQ1RQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AsIHNwZWNpZmljYWxseSB0aGUgYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCBmdW5jdGlvbi4gVGhpcyBpcyBhYm91dCBtYW5hZ2luZyByZXRyYW5zbWlzc2lvbiBwYXRocyB3aXRoaW4gU0NUUCBhc3NvY2lhdGlvbnMsIHdoaWNoIGlzIGNydWNpYWwgZm9yIHJlbGlhYmxlIGRhdGEgdHJhbnNmZXIuIFRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hlcmUgYHRyYW5zX25leHRgIGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkgc2V0IHRvIGBOVUxMYCBhbmQgdGhlbiBhc3NpZ25lZCB0byB0aGUgcmV0cmFuc21pc3Npb24gcGF0aC4gVGhhdCdzIGEgY2xhc3NpYyBzb3VyY2Ugb2YgY3Jhc2hlcywgc28gZ29vZCBvbiB0aGUgZGV2ZWxvcGVyIGZvciBjYXRjaGluZyB0aGF0LiBUaGUgcGF0Y2ggYWxzbyBhZGp1c3RzIHRoZSBsb29wIGNvbmRpdGlvbiB0byBlbnN1cmUgYSBjaGVjayBpc24ndCBtaXNzZWQgd2hlbiB0aGUgc3RhdGUgaXMgYFNDVFBfVU5DT05GSVJNRURgLiBUaGF0J3MgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBkZXRhaWwuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogSXMgdGhpcyBjb2RlIHBhdGggZXZlbiByZWFjaGFibGU/IFNDVFAgaXMgYSBjb3JlIG5ldHdvcmtpbmcgcHJvdG9jb2wsIGV4cG9zZWQgdG8gdXNlciBzcGFjZSB0aHJvdWdoIHNvY2tldHMuIFRoZSBzaG9ydCBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIFwieWVzLlwiIFRoaXMgZnVuY3Rpb24gKmlzKiBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIGNhbiBwcm92aWRlIGFsbCBzb3J0cyBvZiBtYWxmb3JtZWQgcGFja2V0cyBhbmQgZWRnZSBjYXNlcyBhbmQgc2VlIHdoYXQgaGFwcGVucy5cblxuTm93LCBsZXQgbWUgdHJhY2sgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ20gZ29pbmcgdG8gY2hlY2sgYG5ldC9zY3RwL0tjb25maWdgIGZvciB0aGUgYElQX1NDVFBgIG9wdGlvbi4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIG1haW4gU0NUUCBlbmFibGUvZGlzYWJsZSBzZXR0aW5nIHJlc2lkZXMuIEkgbmVlZCB0byBrbm93IGhvdyBlYXNpbHkgSSBjYW4gY29uZmlndXJlIFNDVFAgdG8gbWFrZSB0aGlzIHBhdGNoIGFjdGl2ZSBhbmQgdGVzdGFibGUuIEZ1enppbmcgdGhpcyAqbmVlZHMqIHRvIGJlIGRvbmUgd2l0aCBTQ1RQIGVuYWJsZWQsIG9idmlvdXNseSFcblxuXG4iLCJJbnB1dFRva2VucyI6MjQwMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjAwLjIwMDgyOTM5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjU2OTAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDY6MDAuMjUzNDAxNDEyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxMjAyODI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIFNDVFAgQXNzb2NpYXRpb24gUGF0aCBSZXRyYW5zbWlzc2lvbioqXG5cbkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBJUF9TQ1RQYC4gTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvcmUgbG9naWMuIE15IGltbWVkaWF0ZSBjb25jZXJuLCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiwgaXMgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBwYXRoIHJldHJhbnNtaXNzaW9ucyB3aXRoaW4gYW4gU0NUUCBhc3NvY2lhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBrZXJuZWwgbWFuYWdlcyB0aGlzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgZnVuY3Rpb24uIEkgd2lsbCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG5ldC9zY3RwL2Fzc29jaW9sYS5jYCBmb3IgdGhpcyBmdW5jdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyBhbmQgdGhlIHJldHJhbnNtaXNzaW9uIHBvbGljeSBmb3IgcGF0aHMgd2l0aGluIHRoZSBhc3NvY2lhdGlvbiBhcmUgZGVmaW5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjAzLjU2NTQzMTgyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYyODEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvYXNzb2Npb2xhLmM9NDgyPXZvaWQgc2N0cF9hc3NvY19ybV9wZWVyKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbi0tXFxubmV0L3NjdHAvYXNzb2Npb2xhLmMtNDk1LVxcdGlmIChhc29jLVxcdTAwM2VwZWVyLnJldHJhbl9wYXRoID09IHBlZXIpXFxubmV0L3NjdHAvYXNzb2Npb2xhLmM6NDk2OlxcdFxcdHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKGFzb2MpO1xcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTQ5Ny1cXG4tLVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jPTEyNDg9c3RhdGljIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqc2N0cF90cmFuc19lbGVjdF9iZXN0KHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqY3VycixcXG4tLVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTEyNzAtXFxubmV0L3NjdHAvYXNzb2Npb2xhLmM6MTI3MTp2b2lkIHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTEyNzIte1xcbi0tXFxubmV0L3NjdHAvYXNzb2Npb2xhLmM9MTM4MD1zY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnQoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9hc3NvY2lvbGEuYy0xMzkwLVxcdFxcdGlmIChsYXN0X3NlbnRfdG8gPT0gYXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aClcXG5uZXQvc2N0cC9hc3NvY2lvbGEuYzoxMzkxOlxcdFxcdFxcdHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKGFzb2MpO1xcbm5ldC9zY3RwL2Fzc29jaW9sYS5jLTEzOTItXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTQ5LVxcdFxcdGlmICh0cmFuc3BvcnQgPT0gdHJhbnNwb3J0LVxcdTAwM2Vhc29jLVxcdTAwM2VwZWVyLnJldHJhbl9wYXRoKVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTUwOlxcdFxcdFxcdHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKHRyYW5zcG9ydC1cXHUwMDNlYXNvYyk7XFxubmV0L3NjdHAvb3V0cXVldWUuYy01NTEtXFx0XFx0dHJhbnNwb3J0LVxcdTAwM2Vhc29jLVxcdTAwM2VydHhfZGF0YV9jaHVua3MgKz1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDY6MDMuNjEwMDY0MTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA3MjYwMzE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGZ1bmN0aW9uLiBUaGUgY29kZSBzYXlzIGl0J3MgdXNlZCBpbiBgbmV0L3NjdHAvb3V0cXVldWUuY2AsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIElzIGl0IGludGVybmFsIHRvIHRoYXQgZmlsZSwgb3IgaXMgaXQgZXhwb3J0ZWQgYW5kIHBvdGVudGlhbGx5IHVzZWQgZWxzZXdoZXJlIGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0J3MgZGVjbGFyZWQgdG8ga25vdyBpZiBpdCdzIHZpc2libGUuIE15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGxvb2sgYXQgdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcyDigJMgSSdkIGV4cGVjdCB0byBmaW5kIGEgZGVjbGFyYXRpb24gaW4gc29tZXRoaW5nIGxpa2UgYGluY2x1ZGUvbmV0L3NjdHAvc2N0cC5oYCwgb3IgbWF5YmUgYSBtb3JlIHNwZWNpZmljIGhlYWRlciByZWxhdGVkIHRvIHRoZSBvdXRwdXQgcXVldWVpbmcgZnVuY3Rpb25hbGl0eSBpZiBpdCdzIG5hcnJvd2x5IHNjb3BlZC4gVGltZSB0byBnbyBodW50aW5nIGluIHRob3NlIGluY2x1ZGVzLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB3aWRlbHkgdGhpcyBmdW5jdGlvbidzIGVmZmVjdHMgY2FuIGJlIGZlbHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3OTIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwODo0NjowNy42ODI2Njk4MDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0ODU1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg9MjExNz1zdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnNjdHBfYXNzb2NfY2hvb3NlX2FsdGVyX3RyYW5zcG9ydChcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaC0yMTE4LVxcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqKTtcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoyMTE5OnZvaWQgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKik7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMjEyMC1zdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnNjdHBfYXNzb2NfbG9va3VwX3BhZGRyKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICosXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjA3LjczNDE1OTczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5NTg2MjExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipGb2N1c2luZyBvbiBSZXRyYW5zbWlzc2lvbiBQYXRoIFVwZGF0ZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHRoaXMgYXJlYS4gYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCBpcyBhIGdyZWF0IHN0YXJ0aW5nIHBvaW50IGZvciBleGFtaW5pbmcgaG93IFNDVFAgaGFuZGxlcyByZXRyYW5zbWlzc2lvbiBwYXRoIHVwZGF0ZXMuIEknbSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBwbGF5IGEgcGFydCBpbiB0aGlzIHByb2Nlc3MsIGVzcGVjaWFsbHkgY29uY2VybmluZyBwYXRoIG1hbmFnZW1lbnQgZHVyaW5nIGFzc29jaWF0aW9uIGxpZmVjeWNsZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgY29kZSBiYXNlIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLlxuXG5BIHF1aWNrIGNoZWNrIHJldmVhbHMgc29tZSBvdGhlciBjcml0aWNhbCBjYW5kaWRhdGVzOiBgc2N0cF9hc3NvY19ybV9wZWVyYCBmZWVscyB0YW5nZW50aWFsbHkgcmVsYXRlZCBpbiB0ZXJtcyBvZiBwZWVycyBuZWVkaW5nIHJlbW92ZWQsIGBzY3RwX2Fzc29jX2Nob29zZV9hbHRlcl90cmFuc3BvcnRgIG1ha2VzIGxvZ2ljYWwgc2Vuc2UgY29uY2VybmluZyBwYXRoIHNlbGVjdGlvbiBkZWNpc2lvbnMsIGFuZCBvYnZpb3VzbHksIGBzY3RwX3JldHJhbnNtaXRgIGlzIGZ1bmRhbWVudGFsIHRvIHRoZSBlbnRpcmUgcmV0cmFuc21pc3Npb24gbWVjaGFuaXNtLlxuXG5Gb3Igbm93LCBJJ2xsIGRlZmluaXRlbHkgaW5jbHVkZSBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGFuZCBgc2N0cF9yZXRyYW5zbWl0YCBpbiB0aGUgaW5pdGlhbCBhbmFseXNpcywgYnV0IEknbGwga2VlcCB0aGUgb3RoZXJzIGluIG1pbmQgYXMgcG90ZW50aWFsIGFyZWFzIG9mIGludmVzdGlnYXRpb24uIEkgY2FuIHNlZSBhIGNsZWFyIHRocmVhZCBjb25uZWN0aW5nIHRoZSB1cGRhdGUgZnVuY3Rpb24gZGlyZWN0bHkgdG8gaG93IHdlIG1hbmFnZSBhbmQgcmVhY3QgdG8gbG9zdCBvciBkZWdyYWRlZCBwYXRocyB3aGljaCBtYXkgZHJpdmUgdGhlIHJldHJhbnNtaXNzaW9uIGl0c2VsZi4gVGhpcyBpcyB3aGVyZSBJJ2xsIGJlZ2luIHRvIGJ1aWxkIG15IGtub3dsZWRnZSBmb3IgdGhpcyBzcGVjaWZpYyBhcmVhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjY2LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjEyLjkzMDAyNTIyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MTYwMzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhcIixcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhcIixcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9hc3NvY19jaG9vc2VfYWx0ZXJfdHJhbnNwb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB1cGRhdGluZyB0aGUgcmV0cmFuc21pc3Npb24gcGF0aCBpbiBTQ1RQIGFzc29jaWF0aW9ucywgZml4aW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYSBidWcgaW4gdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzIGlzIGNvcmUgU0NUUCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDY6MTMuMDE0MTkyNzIyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk3MDUwMTY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA4OjQ2OjEzLjAxNDY2MTIxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODk3MDAyODgyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoYCB3aGVyZSBgdHJhbnNfbmV4dGAgY291bGQgYmUgTlVMTCBhbmQgYXNzaWduZWQgdG8gYGFzb2MtXFx1MDAzZXBlZXIucmV0cmFuX3BhdGhgLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93IGFuZCBwb2ludGVyIGFzc2lnbm1lbnRzLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZC4gU3RhbmRhcmQgS0FTQU4gYW5kIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlmMjVkZTYwNTYwMjRkNjQwMmE4ZGEwMzQ3NmQyOTE0ZTQ5ZTI1ZWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwODo0MjoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbmluZGV4IGMwNTEyYzgyN2QwZjUuLjZmMTllYjBiMDFlMjkgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuY1xuKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmNcbkBAIC0xMjcyLDYgKzEyNzIsNyBAQCB2b2lkIHNjdHBfYXNzb2NfdXBkYXRlX3JldHJhbl9wYXRoKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuIHtcbiBcdHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnMgPSBhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGg7XG4gXHRzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zX25leHQgPSBOVUxMO1xuK1x0Ym9vbCBsYXN0ID0gZmFsc2U7XG4gXG4gXHQvKiBXZSdyZSBkb25lIGFzIHdlIG9ubHkgaGF2ZSB0aGUgb25lIGFuZCBvbmx5IHBhdGguICovXG4gXHRpZiAoYXNvYy1cdTAwM2VwZWVyLnRyYW5zcG9ydF9jb3VudCA9PSAxKVxuQEAgLTEyODksMTggKzEyOTAsMjAgQEAgdm9pZCBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiBcdFx0LyogTWFudWFsbHkgc2tpcCB0aGUgaGVhZCBlbGVtZW50LiAqL1xuIFx0XHRpZiAoXHUwMDI2dHJhbnMtXHUwMDNldHJhbnNwb3J0cyA9PSBcdTAwMjZhc29jLVx1MDAzZXBlZXIudHJhbnNwb3J0X2FkZHJfbGlzdClcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0aWYgKHRyYW5zLVx1MDAzZXN0YXRlID09IFNDVFBfVU5DT05GSVJNRUQpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdHRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpO1xuLVx0XHQvKiBBY3RpdmUgaXMgZ29vZCBlbm91Z2ggZm9yIGltbWVkaWF0ZSByZXR1cm4uICovXG4tXHRcdGlmICh0cmFuc19uZXh0LVx1MDAzZXN0YXRlID09IFNDVFBfQUNUSVZFKVxuLVx0XHRcdGJyZWFrO1xuK1x0XHRsYXN0ID0gdHJhbnMgPT0gYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoO1xuK1x0XHRpZiAodHJhbnMtXHUwMDNlc3RhdGUgIT0gU0NUUF9VTkNPTkZJUk1FRCkge1xuK1x0XHRcdHRyYW5zX25leHQgPSBzY3RwX3RyYW5zX2VsZWN0X2Jlc3QodHJhbnMsIHRyYW5zX25leHQpO1xuK1x0XHRcdC8qIEFjdGl2ZSBpcyBnb29kIGVub3VnaCBmb3IgaW1tZWRpYXRlIHJldHVybi4gKi9cbitcdFx0XHRpZiAodHJhbnNfbmV4dC1cdTAwM2VzdGF0ZSA9PSBTQ1RQX0FDVElWRSlcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXHRcdC8qIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCwgdGltZSB0byB1cGRhdGUgcGF0aC4gKi9cbi1cdFx0aWYgKHRyYW5zID09IGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aClcbitcdFx0aWYgKGxhc3QpXG4gXHRcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGggPSB0cmFuc19uZXh0O1xuK1x0aWYgKHRyYW5zX25leHQpXG4rXHRcdGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aCA9IHRyYW5zX25leHQ7XG4gXG4gXHRwcl9kZWJ1ZyhcIiVzOiBhc3NvY2lhdGlvbjolcCB1cGRhdGVkIG5ldyBwYXRoIHRvIGFkZHI6JXBJU3BjXFxuXCIsXG4gXHRcdCBfX2Z1bmNfXywgYXNvYywgXHUwMDI2YXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoLVx1MDAzZWlwYWRkci5zYSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwODo0NjoxMy4wMTQ2NjE5NTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg5NzAwMDE0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU0NUUCBSZXRyYW5zbWlzc2lvbiBQYXRoIFNlbGVjdGlvbiBCdWcgRml4KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIEknbSBwYXRjaGluZyBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIGluIGBuZXQvc2N0cC9hc3NvY2lvbGEuY2AuICBUaGUgY29yZSBjaGFuZ2UgaW52b2x2ZXMgaG93IHRoZSBjb2RlIGl0ZXJhdGVzIHRocm91Z2ggdGhlIGBhc29jLVx1MDAzZXBlZXIudHJhbnNwb3J0X2FkZHJfbGlzdGAgYW5kIHNlbGVjdHMgdGhlIHJldHJhbnNtaXNzaW9uIHBhdGggKGBhc29jLVx1MDAzZXBlZXIucmV0cmFuX3BhdGhgKS5cblxuSW5pdGlhbGx5LCBJIHNlZSB0aGV5J3ZlIGFkZGVkIGEgYGJvb2wgbGFzdCA9IGZhbHNlO2Agd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgcHJpbWFyeSBtb2RpZmljYXRpb24gY2VudGVycyBhcm91bmQgdGhlIGxvb3AuIEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgcG90ZW50aWFsIGZsYXcuICBJZiBgdHJhbnMtXHUwMDNlc3RhdGVgIHdhcyBgU0NUUF9VTkNPTkZJUk1FRGAsIGl0IHdvdWxkIGBjb250aW51ZWAgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiAgSG93ZXZlciwgdGhpcyBjb3VsZCBsZWFkIHRvIHRoZSBzZWxlY3Rpb24gb2YgYHRyYW5zX25leHRgIGJlaW5nIHByb2JsZW1hdGljLiBUaGUgbG9naWMgaGFzIGJlZW4gYWRqdXN0ZWQuIE5vdywgd2UgY2hlY2sgdGhlIGB0cmFucy1cdTAwM2VzdGF0ZSAhPSBTQ1RQX1VOQ09ORklSTUVEYCAqYmVmb3JlKiB0aGUgYmVzdCBwYXRoIHNlbGVjdGlvbiwgYW5kIHRoZW4gYWZ0ZXIgdGhlIHBhdGggc2VsZWN0aW9uIHdlIHN0b3JlIGl0IGluIGEgdGVtcG9yYXJ5IHZhcmlhYmxlLCBgdHJhbnNfbmV4dGAuIFRoZSBzdWJzZXF1ZW50IGNoZWNrIGBpZiAodHJhbnNfbmV4dC1cdTAwM2VzdGF0ZSA9PSBTQ1RQX0FDVElWRSlgIGxvb2tzIGxpa2UgaXTigJlzIGF0dGVtcHRpbmcgdG8gaW1tZWRpYXRlbHkgcmV0dXJuLiBGaW5hbGx5LCB0aGV5J3JlIHVzaW5nIGBsYXN0YCB0byBkZXRlcm1pbmUgaWYgd2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsaXN0LlxuXG5UaGUgY3JpdGljYWwgZml4IGhlcmUgaXMgdGhlIGd1YXJkIGFkZGVkIGJlZm9yZSB1cGRhdGluZyBgYXNvYy1cdTAwM2VwZWVyLnJldHJhbl9wYXRoYC4gSW5zdGVhZCBvZiBkaXJlY3RseSBhc3NpZ25pbmcgYHRyYW5zX25leHRgLCB0aGUgY29kZSBub3cgY2hlY2tzIGlmIGB0cmFuc19uZXh0YCBpcyBOVUxMLiBgaWYgKHRyYW5zX25leHQpYCDigJMgdGhpcyBpcyBhIGNydWNpYWwgYWRkaXRpb24hIEl0IHByZXZlbnRzIGFzc2lnbmluZyBhIE5VTEwgdmFsdWUgdG8gYGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHdoaWNoIHNlZW1zIHRvIGJlIHRoZSByb290IGNhdXNlIG9mIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIGEgc2ltaWxhciBpc3N1ZS4gVGhlIG9yaWdpbmFsIGxvZ2ljIGNvdWxkIGxlYWQgdG8gYGFzb2MtXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAgYmVpbmcgc2V0IHRvIE5VTEwsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGEgY3Jhc2ggbGF0ZXIgb24uXG5cbk5vdywgbGV0J3MgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgZm9yIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikuIEJhc2VkIG9uIHRoZSBjaGFuZ2VzLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXMgKm5vdCogbmVjZXNzYXJ5IGhlcmUuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gTm8gZGF0YSBpcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGRlYWwgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhpcyBpcyBzaW1wbHkgYSBsb2dpYyBidWcgZml4IGluIHRoZSBwYXRoIHNlbGVjdGlvbiBhbGdvcml0aG0uIFN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgbGlrZSBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBzaG91bGQgZWFzaWx5IGNhdGNoIGFueSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHRoYXQgcmVtYWluLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgZm9yIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gYHRyYW5zX25leHRgIGlzIGluaXRpYWxpemVkIHRvIGBOVUxMYCAoZXhwbGljaXRseSksIGFuZCBgbGFzdGAgaXMgaW5pdGlhbGl6ZWQgdG8gYGZhbHNlYC4gT2theSwgbG9va3MgbGlrZSB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgYmVpbmcgdXNlZCwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU49ZmFsc2VgIGlzIHRoZSBjb3JyZWN0IHNldHRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTksIk91dHB1dFRva2VucyI6MTM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDg6NDY6MzEuOTg0NjY2NzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzY3RwX2Fzc29jX3VwZGF0ZV9yZXRyYW5fcGF0aGAgd2hlcmUgYHRyYW5zX25leHRgIGNvdWxkIGJlIE5VTEwgYW5kIGFzc2lnbmVkIHRvIGBhc29jLVxcdTAwM2VwZWVyLnJldHJhbl9wYXRoYCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgcG9pbnRlciBhc3NpZ25tZW50cy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCBvciBsZWFrZWQuIFN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc2N0cF9hc3NvY191cGRhdGVfcmV0cmFuX3BhdGhgIHdoZXJlIGB0cmFuc19uZXh0YCBjb3VsZCBiZSBOVUxMIGFuZCBhc3NpZ25lZCB0byBgYXNvYy1cXHUwMDNlcGVlci5yZXRyYW5fcGF0aGAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIHBvaW50ZXIgYXNzaWdubWVudHMuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowhghkv[1] Phase: Succeeded StartedAt: 2026-08-27 08:46:43 +0000 UTC FinishedAt: 2026-08-27 08:46:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-27 08:46:43 +0000 UTC FinishedAt: 2026-08-27 08:46:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2] Phase: Succeeded StartedAt: 2026-08-27 08:46:43 +0000 UTC FinishedAt: 2026-08-27 12:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-27 08:46:43 +0000 UTC FinishedAt: 2026-08-27 12:24:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-27 08:46:43 +0000 UTC FinishedAt: 2026-08-27 08:46:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-27 08:46:43 +0000 UTC FinishedAt: 2026-08-27 08:46:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowhghkv/series-workflowhghkv-convert-artifact-1095612515/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-27 08:46:53 +0000 UTC FinishedAt: 2026-08-27 09:03:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-27 08:46:53 +0000 UTC FinishedAt: 2026-08-27 09:03:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ed54cffd-af63-43d3-8cb8-d91849de67dd,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-workflowhghkv/series-workflowhghkv-convert-artifact-1095612515/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": "dbf7e9a0-d9a0-4281-af27-b42ac2888e5c", "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-workflowhghkv/series-workflowhghkv-build-action-23712721/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-27 08:46:53 +0000 UTC FinishedAt: 2026-08-27 09:03:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ed54cffd-af63-43d3-8cb8-d91849de67dd,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-workflowhghkv/series-workflowhghkv-convert-artifact-1095612515/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": "dbf7e9a0-d9a0-4281-af27-b42ac2888e5c", "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-workflowhghkv/series-workflowhghkv-build-action-23712721/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-27 09:03:33 +0000 UTC FinishedAt: 2026-08-27 09:03:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-27 09:03:33 +0000 UTC FinishedAt: 2026-08-27 09:03:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-27 09:03:33 +0000 UTC FinishedAt: 2026-08-27 09:03:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-27 09:03:33 +0000 UTC FinishedAt: 2026-08-27 09:03:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowhghkv/series-workflowhghkv-convert-artifact-282791066/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-27 09:03:43 +0000 UTC FinishedAt: 2026-08-27 09:05:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-27 09:03:43 +0000 UTC FinishedAt: 2026-08-27 09:05:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dbf7e9a0-d9a0-4281-af27-b42ac2888e5c,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-workflowhghkv/series-workflowhghkv-build-action-23712721/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-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-27 09:05:48 +0000 UTC FinishedAt: 2026-08-27 09:05:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-27 09:05:48 +0000 UTC FinishedAt: 2026-08-27 09:05:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-27 09:05:48 +0000 UTC FinishedAt: 2026-08-27 09:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-27 09:05:48 +0000 UTC FinishedAt: 2026-08-27 09:21:42 +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:*ed54cffd-af63-43d3-8cb8-d91849de67dd,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-workflowhghkv/series-workflowhghkv-convert-artifact-282791066/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": "d43ab45f-075e-487c-b623-f83ac98bb71c", "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-workflowhghkv/series-workflowhghkv-build-action-660781182/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-27 09:05:48 +0000 UTC FinishedAt: 2026-08-27 09:21:32 +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:*ed54cffd-af63-43d3-8cb8-d91849de67dd,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-workflowhghkv/series-workflowhghkv-convert-artifact-282791066/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": "d43ab45f-075e-487c-b623-f83ac98bb71c", "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-workflowhghkv/series-workflowhghkv-build-action-660781182/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-27 09:21:42 +0000 UTC FinishedAt: 2026-08-27 09:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-27 09:21:42 +0000 UTC FinishedAt: 2026-08-27 09:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-27 09:21:42 +0000 UTC FinishedAt: 2026-08-27 09:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-27 09:21:42 +0000 UTC FinishedAt: 2026-08-27 09:23:12 +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:*d43ab45f-075e-487c-b623-f83ac98bb71c,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-workflowhghkv/series-workflowhghkv-build-action-660781182/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-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-27 09:23:22 +0000 UTC FinishedAt: 2026-08-27 12:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-27 09:23:22 +0000 UTC FinishedAt: 2026-08-27 12:24:58 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*dbf7e9a0-d9a0-4281-af27-b42ac2888e5c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d43ab45f-075e-487c-b623-f83ac98bb71c,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-workflowhghkv/series-workflowhghkv-build-action-23712721/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-workflowhghkv/series-workflowhghkv-build-action-660781182/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-27 09:23:22 +0000 UTC FinishedAt: 2026-08-27 09:23:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-27 09:23:22 +0000 UTC FinishedAt: 2026-08-27 09:23:26 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhghkv/series-workflowhghkv-convert-artifact-2387249743/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-27 09:23:22 +0000 UTC FinishedAt: 2026-08-27 09:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-27 09:23:22 +0000 UTC FinishedAt: 2026-08-27 09:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-27 09:23:22 +0000 UTC FinishedAt: 2026-08-27 09:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-27 09:23:32 +0000 UTC FinishedAt: 2026-08-27 12:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhghkv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_assoc_update_retran_path","sctp_retransmit","sctp_assoc_choose_alter_transport"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f967455fb2a5a2079b9eb5823e9ccf359174bf9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"6a5c290a-b53f-43f7-87c8-319fb3a981a1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-27 09:23:32 +0000 UTC FinishedAt: 2026-08-27 12:24:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dbf7e9a0-d9a0-4281-af27-b42ac2888e5c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d43ab45f-075e-487c-b623-f83ac98bb71c,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-workflowhghkv/series-workflowhghkv-build-action-23712721/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-workflowhghkv/series-workflowhghkv-build-action-660781182/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-workflowhghkv/series-workflowhghkv-convert-artifact-2387249743/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,}