Name: series-workflow8t6tv Phase: Succeeded StartedAt: 2026-07-28 13:12:44 +0000 UTC FinishedAt: 2026-07-28 18:28:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[0] Phase: Succeeded StartedAt: 2026-07-28 13:12:44 +0000 UTC FinishedAt: 2026-07-28 13:37:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[0].run-triage Phase: Succeeded StartedAt: 2026-07-28 13:12:44 +0000 UTC FinishedAt: 2026-07-28 13:37:19 +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": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "INET_ESP", "INET_AH", "INET6_ESP", "INET6_AH", "XFRM_INTERFACE", "NET_IPVTI", "IPV6_VTI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "INET_ESP", "INET_AH", "INET6_ESP", "INET6_AH", "XFRM_INTERFACE", "NET_IPVTI", "IPV6_VTI" ], "series_id": "3c4c93d8-384d-48c5-ace0-604e064b4a91" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_input", "xfrm_input_resume" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtJTkVUX0VTUCYjMzQ7LAogICAgJiMzNDtJTkVUX0FIJiMzNDssCiAgICAmIzM0O0lORVQ2X0VTUCYjMzQ7LAogICAgJiMzNDtJTkVUNl9BSCYjMzQ7LAogICAgJiMzNDtYRlJNX0lOVEVSRkFDRSYjMzQ7LAogICAgJiMzNDtORVRfSVBWVEkmIzM0OywKICAgICYjMzQ7SVBWNl9WVEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2lucHV0JiMzNDssCiAgICAmIzM0O3hmcm1faW5wdXRfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB4ZnJtX2lucHV0YCBpbiB0aGUgY29yZSBJUHNlYy9YRlJNIHN0YWNrIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZSBieSBleHBsaWNpdGx5IGhvbGRpbmcgYW5kIHB1dHRpbmcgdGhlIGB4ZnJtX3N0YXRlYCByZWZlcmVuY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWMzOTViMjU2OTk2ZmVlMTA4YTE1NjkxNjI2ODg1OWMyN2I4YjZiNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDEzOjM1OjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faW5wdXQuYyBiL25ldC94ZnJtL3hmcm1faW5wdXQuY1xuaW5kZXggZWVjYWIzMzdiZDBhNzkuLmY0ZGVjYThiNGFhYjI2IDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9pbnB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2lucHV0LmNcbkBAIC00NzksNiAmIzQzOzQ3OSw3IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbiBcdGludCBhc3luYyA9IDA7XG4gXHRib29sIHhmcm1fZ3JvID0gZmFsc2U7XG4gXHRib29sIGNyeXB0b19kb25lID0gZmFsc2U7XG4mIzQzO1x0Ym9vbCB4X2hlbGQgPSBmYWxzZTtcbiBcdHN0cnVjdCB4ZnJtX29mZmxvYWQgKnhvID0geGZybV9vZmZsb2FkKHNrYik7XG4gXHRzdHJ1Y3Qgc2VjX3BhdGggKnNwO1xuIFxuQEAgLTU4NSw2ICYjNDM7NTg2LDEwIEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbiBcdFx0c3AgPSBza2Jfc2VjX3BhdGgoc2tiKTtcbiBcbiBcdFx0aWYgKHNwLVx1MDAzZWxlbiA9PSBYRlJNX01BWF9ERVBUSCkge1xuJiM0MztcdFx0XHRpZiAoeCkge1xuJiM0MztcdFx0XHRcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbiYjNDM7XHRcdFx0XHR4X2hlbGQgPSB0cnVlO1xuJiM0MztcdFx0XHR9XG4gXHRcdFx0c2VjcGF0aF9yZXNldChza2IpO1xuIFx0XHRcdFhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1JTkJVRkZFUkVSUk9SKTtcbiBcdFx0XHRnb3RvIGRyb3A7XG5AQCAtNzI3LDYgJiM0Mzs3MzIsOSBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG4gXHRcdGNyeXB0b19kb25lID0gZmFsc2U7XG4gXHR9IHdoaWxlICghZXJyKTtcbiBcbiYjNDM7XHR4ZnJtX3N0YXRlX2hvbGQoeCk7XG4mIzQzO1x0eF9oZWxkID0gdHJ1ZTtcbiYjNDM7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRlcnIgPSB4ZnJtX3Jjdl9jYihza2IsIGZhbWlseSwgeC1cdTAwM2V0eXBlLVx1MDAzZXByb3RvLCAwKTtcbiBcdGlmIChlcnIpIHtcbkBAIC03NDYsNiAmIzQzOzc1NCw3IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbiBcdFx0XHRkZXZfcHV0KGRldik7XG4gXHRcdGdyb19jZWxsc19yZWNlaXZlKFx1MDAyNmdyb19jZWxscywgc2tiKTtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0XHR4ZnJtX3N0YXRlX3B1dCh4KTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9IGVsc2Uge1xuIFx0XHR4byA9IHhmcm1fb2ZmbG9hZChza2IpO1xuQEAgLTc2OCw2ICYjNDM7Nzc3LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0XHRpZiAoYXN5bmMpXG4gXHRcdFx0ZGV2X3B1dChkZXYpO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdHhmcm1fc3RhdGVfcHV0KHgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuQEAgLTc3Nyw2ICYjNDM7Nzg3LDggQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0aWYgKGFzeW5jKVxuIFx0XHRkZXZfcHV0KGRldik7XG4gXHR4ZnJtX3Jjdl9jYihza2IsIGZhbWlseSwgeCBcdTAwMjZcdTAwMjYgeC1cdTAwM2V0eXBlID8geC1cdTAwM2V0eXBlLVx1MDAzZXByb3RvIDogbmV4dGhkciwgLTEpO1xuJiM0MztcdGlmICh4X2hlbGQpXG4mIzQzO1x0XHR4ZnJtX3N0YXRlX3B1dCh4KTtcbiBcdGtmcmVlX3NrYihza2IpO1xuIFx0cmV0dXJuIDA7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7SU5FVF9FU1AmIzM0OywKICAgICYjMzQ7SU5FVF9BSCYjMzQ7LAogICAgJiMzNDtJTkVUNl9FU1AmIzM0OywKICAgICYjMzQ7SU5FVDZfQUgmIzM0OywKICAgICYjMzQ7WEZSTV9JTlRFUkZBQ0UmIzM0OywKICAgICYjMzQ7TkVUX0lQVlRJJiMzNDssCiAgICAmIzM0O0lQVjZfVlRJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9pbnB1dCYjMzQ7LAogICAgJiMzNDt4ZnJtX2lucHV0X3Jlc3VtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgeGZybV9pbnB1dGAgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdGFjayB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWUgYnkgZXhwbGljaXRseSBob2xkaW5nIGFuZCBwdXR0aW5nIHRoZSBgeGZybV9zdGF0ZWAgcmVmZXJlbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVjMzk1YjI1Njk5NmZlZTEwOGExNTY5MTYyNjg4NTljMjdiOGI2YjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyOCAxMzozNTo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faW5wdXQuYyBiL25ldC94ZnJtL3hmcm1faW5wdXQuYwppbmRleCBlZWNhYjMzN2JkMGE3OS4uZjRkZWNhOGI0YWFiMjYgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1faW5wdXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2lucHV0LmMKQEAgLTQ3OSw2ICYjNDM7NDc5LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKQogCWludCBhc3luYyA9IDA7CiAJYm9vbCB4ZnJtX2dybyA9IGZhbHNlOwogCWJvb2wgY3J5cHRvX2RvbmUgPSBmYWxzZTsKJiM0MzsJYm9vbCB4X2hlbGQgPSBmYWxzZTsKIAlzdHJ1Y3QgeGZybV9vZmZsb2FkICp4byA9IHhmcm1fb2ZmbG9hZChza2IpOwogCXN0cnVjdCBzZWNfcGF0aCAqc3A7CiAKQEAgLTU4NSw2ICYjNDM7NTg2LDEwIEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSkKIAkJc3AgPSBza2Jfc2VjX3BhdGgoc2tiKTsKIAogCQlpZiAoc3AtJmd0O2xlbiA9PSBYRlJNX01BWF9ERVBUSCkgewomIzQzOwkJCWlmICh4KSB7CiYjNDM7CQkJCXhmcm1fc3RhdGVfaG9sZCh4KTsKJiM0MzsJCQkJeF9oZWxkID0gdHJ1ZTsKJiM0MzsJCQl9CiAJCQlzZWNwYXRoX3Jlc2V0KHNrYik7CiAJCQlYRlJNX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9YRlJNSU5CVUZGRVJFUlJPUik7CiAJCQlnb3RvIGRyb3A7CkBAIC03MjcsNiAmIzQzOzczMiw5IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSkKIAkJY3J5cHRvX2RvbmUgPSBmYWxzZTsKIAl9IHdoaWxlICghZXJyKTsKIAomIzQzOwl4ZnJtX3N0YXRlX2hvbGQoeCk7CiYjNDM7CXhfaGVsZCA9IHRydWU7CiYjNDM7CiAJcmN1X3JlYWRfbG9jaygpOwogCWVyciA9IHhmcm1fcmN2X2NiKHNrYiwgZmFtaWx5LCB4LSZndDt0eXBlLSZndDtwcm90bywgMCk7CiAJaWYgKGVycikgewpAQCAtNzQ2LDYgJiM0Mzs3NTQsNyBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpCiAJCQlkZXZfcHV0KGRldik7CiAJCWdyb19jZWxsc19yZWNlaXZlKCZhbXA7Z3JvX2NlbGxzLCBza2IpOwogCQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJCXhmcm1fc3RhdGVfcHV0KHgpOwogCQlyZXR1cm4gMDsKIAl9IGVsc2UgewogCQl4byA9IHhmcm1fb2ZmbG9hZChza2IpOwpAQCAtNzY4LDYgJiM0Mzs3NzcsNyBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpCiAJCWlmIChhc3luYykKIAkJCWRldl9wdXQoZGV2KTsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQl4ZnJtX3N0YXRlX3B1dCh4KTsKIAkJcmV0dXJuIGVycjsKIAl9CiAKQEAgLTc3Nyw2ICYjNDM7Nzg3LDggQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKQogCWlmIChhc3luYykKIAkJZGV2X3B1dChkZXYpOwogCXhmcm1fcmN2X2NiKHNrYiwgZmFtaWx5LCB4ICZhbXA7JmFtcDsgeC0mZ3Q7dHlwZSA/IHgtJmd0O3R5cGUtJmd0O3Byb3RvIDogbmV4dGhkciwgLTEpOwomIzQzOwlpZiAoeF9oZWxkKQomIzQzOwkJeGZybV9zdGF0ZV9wdXQoeCk7CiAJa2ZyZWVfc2tiKHNrYik7CiAJcmV0dXJuIDA7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYRlJNIElucHV0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgY2hhbmdlcyB0byBgbmV0L3hmcm0veGZybV9pbnB1dC5jYC4gSSBzZWUgaXQmIzM5O3MgYWJvdXQgYWRkaW5nIHJlZmVyZW5jZSBjb3VudGluZyB0byB0aGUgYHhmcm1faW5wdXRgIGZ1bmN0aW9uIHVzaW5nIGB4ZnJtX3N0YXRlX2hvbGQoeClgIGFuZCBgeGZybV9zdGF0ZV9wdXQoeClgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBjb3JlIG5ldHdvcmtpbmcgY2hhbmdlOyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBYRlJNLCB0aGUgaGVhcnQgb2YgSVBzZWMuIEl0JiMzOTtzIGZ1bmN0aW9uYWwsIG1lYW5pbmcgaXQmIzM5O3MgZ29pbmcgdG8gY2hhbmdlIGhvdyB0aGluZ3MgKndvcmsqLiBHb29kLCB0aGF0IG1ha2VzIHRlc3Rpbmcgc3RyYWlnaHRmb3J3YXJkLCB0aG91Z2ggSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHJlYWNoYWJsZSBjb2RlIHBhdGhzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBgeGZybV9pbnB1dGAgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoZXJlIHRoZSByZWZlcmVuY2UgY291bnRpbmcgaXMgYmVpbmcgYWRkZWQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuCgpUaGUgZmlyc3QgdGhpbmcgdG8gY2hlY2sgaXMgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTttIGV4cGVjdGluZyB0aGUgcHJpbWFyeSBvbmUgdG8gYmUgYENPTkZJR19YRlJNYCwgc2luY2UgdGhhdCYjMzk7cyB0aGUgbWFpbiBlbmFibGVyIGZvciB0aGUgZW50aXJlIHN1YnN5c3RlbS4gR290dGEgbWFrZSBzdXJlIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhbmQgY29uZmlndXJhdGlvbnMgYXJvdW5kIHRoaXMgY2hhbmdlIGFyZSByb2J1c3QsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgZGlmZmVyZW50IFhGUk0gc2V0dXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnLTQtI1xubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXG5uZXQveGZybS9LY29uZmlnLTYtXHRib29sXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMC1cbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cdGJvb2xcbm5ldC94ZnJtL0tjb25maWctMTMtXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTUtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMzEtXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG5uZXQveGZybS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcGF0aWJsZSBBQkkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNDItXG5uZXQveGZybS9LY29uZmlnOjQzOmNvbmZpZyBYRlJNX0lOVEVSRkFDRVxubmV0L3hmcm0vS2NvbmZpZy00NC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHZpcnR1YWwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy01MC1cbm5ldC94ZnJtL0tjb25maWc6NTE6Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxubmV0L3hmcm0vS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gc3ViIHBvbGljeSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy02MC1cbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxubmV0L3hmcm0vS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNzEtXG5uZXQveGZybS9LY29uZmlnOjcyOmNvbmZpZyBYRlJNX1NUQVRJU1RJQ1Ncbm5ldC94ZnJtL0tjb25maWctNzMtXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN0YXRpc3RpY3NcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTgzLSMgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cbm5ldC94ZnJtL0tjb25maWc6ODQ6Y29uZmlnIFhGUk1fQUhcbm5ldC94ZnJtL0tjb25maWctODUtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cbm5ldC94ZnJtL0tjb25maWc6OTM6Y29uZmlnIFhGUk1fRVNQXG5uZXQveGZybS9LY29uZmlnLTk0LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEwNS1cbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxubmV0L3hmcm0vS2NvbmZpZy0xMDctXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTE0MC1cbm5ldC94ZnJtL0tjb25maWc6MTQxOmNvbmZpZyBYRlJNX0lQVEZTXG5uZXQveGZybS9LY29uZmlnLTE0Mi1cdHRyaXN0YXRlIFwmIzM0O0lQc2VjIElQLVRGUy9BR0dGUkFHIChSRkMgOTM0NykgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNTYtXG5uZXQveGZybS9LY29uZmlnOjE1Nzpjb25maWcgWEZSTV9FU1BJTlRDUFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIEJ1aWxkIFByb2Nlc3MqKgoKUmlnaHQsIGBYRlJNYCBpcyBhIGJvb2xlYW4sIGFuZCBgWEZSTV9VU0VSYCBkZWZpbmVzIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSDigJMgc3RhbmRhcmQgc3R1ZmYgZm9yIHRoZSBYRlJNIHN1YnN5c3RlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHhmcm1faW5wdXQub2AgaXMgYmVpbmcgYnVpbHQuIFRoYXQmIzM5O3MgYSBjb3JlIGNvbXBvbmVudCwgc28gSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYC4gSXQmIzM5O2xsIGhhdmUgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gSSBuZWVkLCBzcGVjaWZpY2FsbHksIHRoZSBydWxlcyB0aGF0IGRpY3RhdGUgaG93IGB4ZnJtX2lucHV0Lm9gIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQuIFRoYXQgc2hvdWxkIHJldmVhbCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxMzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2lucHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXG5uZXQveGZybS9NYWtlZmlsZToxNTpcdFx0ICAgICAgeGZybV9pbnB1dC5vIHhmcm1fb3V0cHV0Lm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE2LVx0XHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgQ09ORklHX1hGUk1gIGlzIGEgaGFyZCByZXF1aXJlbWVudCBpbiB0aGlzIGNhc2UuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgb2YgY291cnNlLCBpcyB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93ICp3aGF0KiBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGFjdHVhbGx5ICpzZWxlY3RzKiBgQ09ORklHX1hGUk1gLiBJdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQga25vd2luZyB3aGVyZSBpdCYjMzk7cyBjb21pbmcgZnJvbSBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIHVuZGVyc3RhbmRpbmcgZmVhdHVyZSBpbnRlcmFjdGlvbnMsIG9yIHBvdGVudGlhbGx5IG1vZGlmeWluZyB0aGUgYnVpbGQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlnIG9wdGlvbnMgdGVsbCB1cy4gVGltZSB0byB0cmFjZSB0aGUgc2VsZWN0cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxMzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWEZSTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE5ND1jb25maWcgSVhHQkVfSVBTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE5OC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxOTk6XHRzZWxlY3QgWEZSTV9BTEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI0LVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjIyNTpcdHNlbGVjdCBYRlJNX0FMR09cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI2LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMwNy1cdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjMwODpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxubmV0L2lwdjQvS2NvbmZpZy0zNDAtXHR0cmlzdGF0ZSBcJiMzNDtJUDogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY0L0tjb25maWc6MzQxOlx0c2VsZWN0IFhGUk1fQUhcbm5ldC9pcHY0L0tjb25maWctMzQyLVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzU0PWNvbmZpZyBJTkVUX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXHR0cmlzdGF0ZSBcJiMzNDtJUDogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcdHNlbGVjdCBYRlJNX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTctXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM3MS1cdGRlcGVuZHMgb24gSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWc6MzcyOlx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXHRkZWZhdWx0IG5cbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzg2LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjQvS2NvbmZpZzozODc6XHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zOTQ9Y29uZmlnIElORVRfSVBDT01QXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zOTYtXHRzZWxlY3QgSU5FVF9YRlJNX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY0L0tjb25maWctMzk4LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9NDc9Y29uZmlnIElORVQ2X0FIXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NDk6XHRzZWxlY3QgWEZSTV9BSFxubmV0L2lwdjYvS2NvbmZpZy01MC1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NjQ6XHRzZWxlY3QgWEZSTV9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjUtXHRoZWxwXG4tLVxubmV0L2lwdjYvS2NvbmZpZz03Nz1jb25maWcgSU5FVDZfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVx0ZGVwZW5kcyBvbiBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWc6ODA6XHRzZWxlY3QgWEZSTV9PRkZMT0FEXG5uZXQvaXB2Ni9LY29uZmlnLTgxLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz05MD1jb25maWcgSU5FVDZfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZzo5NTpcdHNlbGVjdCBYRlJNX0VTUElOVENQXG5uZXQvaXB2Ni9LY29uZmlnLTk2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTAyPWNvbmZpZyBJTkVUNl9JUENPTVBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cdHNlbGVjdCBJTkVUNl9YRlJNX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoxMDU6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY2L0tjb25maWctMTA2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTEyPWNvbmZpZyBJUFY2X01JUDZcbm5ldC9pcHY2L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogTW9iaWxpdHlcJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6MTE0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTUzLVx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTU0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTU1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTQ9Y29uZmlnIFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xNS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjE2Olx0c2VsZWN0IFhGUk1cbm5ldC94ZnJtL0tjb25maWctMTctXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0yMz1jb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzoyNTpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMjYtXHRoZWxwXG4tLVxubmV0L3hmcm0vS2NvbmZpZz04ND1jb25maWcgWEZSTV9BSFxubmV0L3hmcm0vS2NvbmZpZy04NS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjg2Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy04Ny1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTkzPWNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjk1Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy05Ni1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbm5ldC94ZnJtL0tjb25maWc6MTA4Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xMDktXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcbm5ldC94ZnJtL0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7UEZfS0VZIHNvY2tldHMgKGRlcHJlY2F0ZWQpXCYjMzQ7XG5uZXQveGZybS9LY29uZmlnOjExNDpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEyNy1cdGRlcGVuZHMgb24gTkVUX0tFWVxubmV0L3hmcm0vS2NvbmZpZzoxMjg6XHRzZWxlY3QgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTEyOS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxMzozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTY5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlOgoKKipYRlJNIENvbmZpZ3VyYXRpb24gZm9yIFJvYnVzdCBUZXN0aW5nKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gc3RyYXRlZ3kgaGVyZSBjZW50ZXJzIG9uIGdldHRpbmcgdGhlIFhGUk0gc3Vic3lzdGVtIHVwIGFuZCBydW5uaW5nIGluIGEgc29saWQgd2F5IGZvciB0ZXN0aW5nLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBJJiMzOTttIHRoaW5raW5nIHRoYXQgZW5hYmxpbmcgYFhGUk1fVVNFUmAgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBiZWNhdXNlIGl0IGluaGVyZW50bHkgc2VsZWN0cyBgWEZSTV9BTEdPYCwgd2hpY2ggaW4gdHVybiwgcHVsbHMgaW4gdGhlIGNvcmUgYFhGUk1gIGZ1bmN0aW9uYWxpdHkuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZm91bmRhdGlvbi4KCk5vdywgZm9yIGFjdHVhbGx5ICpleGVyY2lzaW5nKiBYRlJNLCBJJiMzOTtkIHRoZW4gZ28gb24gdG8gZW5hYmxlIHRoZSByZWxldmFudCB0cmFuc3BvcnQgcHJvdG9jb2xzIHRvIGFsbG93IGZvciBJUFNlYyBvcGVyYXRpb25zLCB0aGUgb2J2aW91cyBvbmVzIGJlaW5nIGBJTkVUX0VTUGAsIGBJTkVUX0FIYCwgYElORVQ2X0VTUGAsIGFuZCBgSU5FVDZfQUhgLiBUaGVzZSBhcmUgdGhlIHdvcmtob3JzZXM7IHRoZXkgZ2l2ZSB1cyB0aGUgdHJhZmZpYyB0byBlbmNyeXB0LCBhdXRoZW50aWNhdGUsIGFuZCBvYnNlcnZlIGhvdyBYRlJNIGlzIGhhbmRsaW5nIHRoZSBwcm9jZXNzaW5nIGFuZCBtYW5hZ2VtZW50IG9mIHRob3NlIFNlY3VyaXR5IEFzc29jaWF0aW9ucy4KCldpdGggdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cyBhZGRyZXNzZWQsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGNyaXRpY2FsIGRhdGEgZmxvdyBwYXRoLiBUaGVyZWZvcmUsIEkgc2hvdWxkIHRha2UgYSBjbG9zZSBsb29rIGF0IHRoZSBgeGZybV9pbnB1dGAgZnVuY3Rpb24uIEl0JiMzOTtzIGxpa2VseSB0aGUga2V5IGVudHJ5IHBvaW50IGZvciBpbmJvdW5kIHBhY2tldHMgYW5kIHdoZXJlIHdlJiMzOTtsbCBzZWUgdGhlIFhGUk0gdHJhbnNmb3JtYXRpb24gbG9naWMgYXQgcGxheSwgYW5kIHRoYXQmIzM5O3MgdGhlIGFyZWEgdGhhdCBJIG5lZWQgdG8gYW5hbHl6ZSB0byBlbnN1cmUgcHJvcGVyIFhGUk0gYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxMzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2lucHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9pbnB1dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1faW5wdXQuYy0yLS8qXG5uZXQveGZybS94ZnJtX2lucHV0LmM6MzogKiB4ZnJtX2lucHV0LmNcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00LSAqXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTM0PXN0cnVjdCB4ZnJtX3RyYW5zX2NiIHtcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDYtXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NDc6c3RhdGljIERFRklORV9TUElOTE9DSyh4ZnJtX2lucHV0X2FmaW5mb19sb2NrKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo0ODpzdGF0aWMgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvIGNvbnN0IF9fcmN1ICp4ZnJtX2lucHV0X2FmaW5mb1syXVtBRl9JTkVUNiAmIzQzOyAxXTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00OS1cbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmM9NTM9c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCB4ZnJtX3RyYW5zX3Rhc2tsZXQsIHhmcm1fdHJhbnNfdGFza2xldCk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtNTQtXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NTU6aW50IHhmcm1faW5wdXRfcmVnaXN0ZXJfYWZpbmZvKGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqYWZpbmZvKVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTU2LXtcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNjEtXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NjI6XHRzcGluX2xvY2tfYmgoXHUwMDI2eGZybV9pbnB1dF9hZmluZm9fbG9jayk7XG5uZXQveGZybS94ZnJtX2lucHV0LmM6NjM6XHRpZiAodW5saWtlbHkoeGZybV9pbnB1dF9hZmluZm9bYWZpbmZvLVx1MDAzZWlzX2lwaXBdW2FmaW5mby1cdTAwM2VmYW1pbHldKSlcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy02NC1cdFx0ZXJyID0gLUVFWElTVDtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy02NS1cdGVsc2Vcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo2NjpcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cdTAwM2Vpc19pcGlwXVthZmluZm8tXHUwMDNlZmFtaWx5XSwgYWZpbmZvKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo2NzpcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnhmcm1faW5wdXRfYWZpbmZvX2xvY2spO1xubmV0L3hmcm0veGZybV9pbnB1dC5jLTY4LVx0cmV0dXJuIGVycjtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy02OS19XG5uZXQveGZybS94ZnJtX2lucHV0LmM6NzA6RVhQT1JUX1NZTUJPTCh4ZnJtX2lucHV0X3JlZ2lzdGVyX2FmaW5mbyk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzEtXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NzI6aW50IHhmcm1faW5wdXRfdW5yZWdpc3Rlcl9hZmluZm8oY29uc3Qgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvICphZmluZm8pXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzMte1xuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYy03NS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3NjpcdHNwaW5fbG9ja19iaChcdTAwMjZ4ZnJtX2lucHV0X2FmaW5mb19sb2NrKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3NzpcdGlmIChsaWtlbHkoeGZybV9pbnB1dF9hZmluZm9bYWZpbmZvLVx1MDAzZWlzX2lwaXBdW2FmaW5mby1cdTAwM2VmYW1pbHldKSkge1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjc4Olx0XHRjb25zdCBzdHJ1Y3QgeGZybV9pbnB1dF9hZmluZm8gKmN1cjtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy03OS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo4MDpcdFx0Y3VyID0gcmN1X2FjY2Vzc19wb2ludGVyKHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cdTAwM2Vpc19pcGlwXVthZmluZm8tXHUwMDNlZmFtaWx5XSk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtODEtXHRcdGlmICh1bmxpa2VseShjdXIgIT0gYWZpbmZvKSlcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODMtXHRcdGVsc2Vcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo4NDpcdFx0XHRSQ1VfSU5JVF9QT0lOVEVSKHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cdTAwM2Vpc19pcGlwXVthZmluZm8tXHUwMDNlZmFtaWx5XSwgTlVMTCk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtODUtXHR9XG5uZXQveGZybS94ZnJtX2lucHV0LmM6ODY6XHRzcGluX3VubG9ja19iaChcdTAwMjZ4ZnJtX2lucHV0X2FmaW5mb19sb2NrKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04Ny1cdHN5bmNocm9uaXplX3JjdSgpO1xuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04OS19XG5uZXQveGZybS94ZnJtX2lucHV0LmM6OTA6RVhQT1JUX1NZTUJPTCh4ZnJtX2lucHV0X3VucmVnaXN0ZXJfYWZpbmZvKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05MS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo5MjpzdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvICp4ZnJtX2lucHV0X2dldF9hZmluZm8odTggZmFtaWx5LCBib29sIGlzX2lwaXApXG5uZXQveGZybS94ZnJtX2lucHV0LmMtOTMte1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjk0Olx0Y29uc3Qgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvICphZmluZm87XG5uZXQveGZybS94ZnJtX2lucHV0LmMtOTUtXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTk5LVx0cmN1X3JlYWRfbG9jaygpO1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjEwMDpcdGFmaW5mbyA9IHJjdV9kZXJlZmVyZW5jZSh4ZnJtX2lucHV0X2FmaW5mb1tpc19pcGlwXVtmYW1pbHldKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy0xMDEtXHRpZiAodW5saWtlbHkoIWFmaW5mbykpXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTEwNj1zdGF0aWMgaW50IHhmcm1fcmN2X2NiKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBmYW1pbHksIHU4IHByb3RvY29sLFxuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYy0xMDktXHRib29sIGlzX2lwaXAgPSAocHJvdG9jb2wgPT0gSVBQUk9UT19JUElQIHx8IHByb3RvY29sID09IElQUFJPVE9fSVBWNik7XG5uZXQveGZybS94ZnJtX2lucHV0LmM6MTEwOlx0Y29uc3Qgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvICphZmluZm87XG5uZXQveGZybS94ZnJtX2lucHV0LmMtMTExLVx0aW50IHJldDtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy0xMTItXG5uZXQveGZybS94ZnJtX2lucHV0LmM6MTEzOlx0YWZpbmZvID0geGZybV9pbnB1dF9nZXRfYWZpbmZvKGZhbWlseSwgaXNfaXBpcCk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtMTE0LVx0aWYgKCFhZmluZm8pXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTQzNT1zdGF0aWMgaW50IHhmcm1faW5uZXJfbW9kZV9pbnB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDY1LSAqL1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ2NjppbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDY3LXtcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDg3LVx0XHRcdFx0ICAgICAgZW5jYXBfdHlwZSA9PSBVRFBfRU5DQVBfRVNQSU5VRFApKSkge1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ4ODpcdFx0eCA9IHhmcm1faW5wdXRfc3RhdGUoc2tiKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00ODktXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTU5Ny1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo1OTg6XHRcdHggPSB4ZnJtX2lucHV0X3N0YXRlX2xvb2t1cChuZXQsIG1hcmssIGRhZGRyLCBzcGksIG5leHRoZHIsIGZhbWlseSk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtNTk5LVx0XHRpZiAoeCA9PSBOVUxMKSB7XG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTc5NC19XG5uZXQveGZybS94ZnJtX2lucHV0LmM6Nzk1OkVYUE9SVF9TWU1CT0woeGZybV9pbnB1dCk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzk2LVxubmV0L3hmcm0veGZybV9pbnB1dC5jOjc5NzppbnQgeGZybV9pbnB1dF9yZXN1bWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIpXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzk4LXtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3OTk6XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIDAsIC0xKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04MDAtfVxubmV0L3hmcm0veGZybV9pbnB1dC5jOjgwMTpFWFBPUlRfU1lNQk9MKHhmcm1faW5wdXRfcmVzdW1lKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04MDItXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTg1OD1FWFBPUlRfU1lNQk9MKHhmcm1fdHJhbnNfcXVldWUpO1xubmV0L3hmcm0veGZybV9pbnB1dC5jLTg1OS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo4NjA6dm9pZCBfX2luaXQgeGZybV9pbnB1dF9pbml0KHZvaWQpXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODYxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcxNAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFNlY3VyaXR5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgeGZybV9pbnB1dGAgd2l0aGluIGBuZXQveGZybS94ZnJtX2lucHV0LmNgLiBJIHNlZSB0aGF0IGl0JiMzOTtzIHRvdWNoaW5nIGEga2V5IGZ1bmN0aW9uLCBgeGZybV9pbnB1dGAsIHdoaWNoIGlzICpleHBvcnRlZCosIG1lYW5pbmcgaXQmIzM5O3MgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGFuZCwgY3JpdGljYWxseSwgaW52b2x2ZWQgaW4gSVBzZWMgcGFja2V0IHByb2Nlc3NpbmcuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIG15IGV5ZWJyb3dzIOKAkyBhbnkgY2hhbmdlIGhlcmUgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW1wYWN0IGEgY29yZSBzZWN1cml0eSBmdW5jdGlvbi4KClRoZSBjb3JlIG9mIHRoZSBwYXRjaCByZXZvbHZlcyBhcm91bmQgYWRkaW5nIGB4ZnJtX3N0YXRlX2hvbGQoeClgIGFuZCBgeGZybV9zdGF0ZV9wdXQoeClgLiBUaGlzIHNjcmVhbXMgcmVmY291bnRpbmcgb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlLiBUaGV5JiMzOTtyZSBjbGVhcmx5IHRyeWluZyB0byBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBhbiBgeGZybV9zdGF0ZWAgb2JqZWN0IChgeGApIG1vcmUgY2FyZWZ1bGx5LiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYW5kIGl0JiMzOTtzIGZsYWdnZWQgYXMgYFdvcnRoRnV6emluZz10cnVlYCwgd2hpY2ggSSBhZ3JlZSB3aXRoOyBJUHNlYyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgcG9pbnRzIGhlcmUgYXJlIGNsZWFybHkgYHhmcm1faW5wdXRgIGl0c2VsZiwgYW5kIGFsc28gYHhmcm1faW5wdXRfcmVzdW1lYCwgYmVjYXVzZSB0aGF0JiMzOTtzIGEgZGlyZWN0IGNhbGxlci4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyB0aG9zZSBjYWxscyBhZmZlY3QgdGhlIG92ZXJhbGwgc3RhdGUgbWFuYWdlbWVudC4gTGV0JiMzOTtzIHNlZSBpZiBvdGhlciBmdW5jdGlvbnMgY2FsbCBgeGZybV9pbnB1dGAgYXMgd2VsbC4uLgoKVGhpcyBwYXRjaCBsaWtlbHkgcmVxdWlyZXMgY29uZmlndXJhdGlvbnMgYFhGUk1fVVNFUmAsIGBJTkVUX0VTUGAsIGBJTkVUX0FIYCwgYElORVQ2X0VTUGAgYW5kIGBJTkVUNl9BSGAsIGFsbCBvZiB3aGljaCBhcmUgY29tbW9uIHdpdGggSVBzZWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faW5wdXRcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9kZXZpY2UucnN0PTE1Nz1JUHNlYyBoZWFkZXJzIGFyZSBzdGlsbCBpbiB0aGUgcGFja2V0IGRhdGE7IHRoZXkgYXJlIHJlbW92ZWQgbGF0ZXIgdXBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fZGV2aWNlLnJzdDoxNTg6dGhlIHN0YWNrIGluIHhmcm1faW5wdXQoKS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fZGV2aWNlLnJzdC0xNTktXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTE3OTc9aW50IHhmcm1faW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmluY2x1ZGUvbmV0L3hmcm0uaDoxNzk4OmludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSk7XG5pbmNsdWRlL25ldC94ZnJtLmgtMTc5OS1pbnQgeGZybV9pbnB1dF9yZXN1bWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIpO1xuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0xODI4PXN0YXRpYyBpbmxpbmUgaW50IHhmcm00X3Jjdl9zcGkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGkpXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTE4MzItXHRYRlJNX1NQSV9TS0JfQ0Ioc2tiKS1cdTAwM2VkYWRkcm9mZiA9IG9mZnNldG9mKHN0cnVjdCBpcGhkciwgZGFkZHIpO1xuaW5jbHVkZS9uZXQveGZybS5oOjE4MzM6XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgMCk7XG5pbmNsdWRlL25ldC94ZnJtLmgtMTgzNC19XG4tLVxubmV0L2lwdjQvZXNwNF9vZmZsb2FkLmM9MzA9c3RhdGljIHN0cnVjdCBza19idWZmICplc3A0X2dyb19yZWNlaXZlKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxubmV0L2lwdjQvZXNwNF9vZmZsb2FkLmMtOTAtXHQgKiB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGZyZWVzIHRoZSByZXNvdXJjZXMgb24gZXJyb3IuICovXG5uZXQvaXB2NC9lc3A0X29mZmxvYWQuYzo5MTpcdHhmcm1faW5wdXQoc2tiLCBJUFBST1RPX0VTUCwgc3BpLCBlbmNhcF90eXBlKTtcbm5ldC9pcHY0L2VzcDRfb2ZmbG9hZC5jLTkyLVxuLS1cbm5ldC9pcHY0L2lwX3Z0aS5jPTQ3PXN0YXRpYyBpbnQgdnRpX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLFxuLS1cbm5ldC9pcHY0L2lwX3Z0aS5jLTY4LVxubmV0L2lwdjQvaXBfdnRpLmM6Njk6XHRcdHJldHVybiB4ZnJtX2lucHV0KHNrYiwgbmV4dGhkciwgc3BpLCBlbmNhcF90eXBlKTtcbm5ldC9pcHY0L2lwX3Z0aS5jLTcwLVx0fVxuLS1cbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jPTUzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZXNwNl9ncm9fcmVjZWl2ZShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxuLS1cbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jLTExOS1cdCAqIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgZnJlZXMgdGhlIHJlc291cmNlcyBvbiBlcnJvci4gKi9cbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jOjEyMDpcdHhmcm1faW5wdXQoc2tiLCBJUFBST1RPX0VTUCwgc3BpLCBlbmNhcF90eXBlKTtcbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jLTEyMS1cbi0tXG5uZXQvaXB2Ni9pcDZfdnRpLmM9Mjk2PXN0YXRpYyBpbnQgdnRpNl9pbnB1dF9wcm90byhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSxcbi0tXG5uZXQvaXB2Ni9pcDZfdnRpLmMtMzI2LVx0XHRYRlJNX1NQSV9TS0JfQ0Ioc2tiKS1cdTAwM2VkYWRkcm9mZiA9IG9mZnNldG9mKHN0cnVjdCBpcHY2aGRyLCBkYWRkcik7XG5uZXQvaXB2Ni9pcDZfdnRpLmM6MzI3Olx0XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgZW5jYXBfdHlwZSk7XG5uZXQvaXB2Ni9pcDZfdnRpLmMtMzI4LVx0fVxuLS1cbm5ldC9pcHY2L3hmcm02X2lucHV0LmM9MjI9aW50IHhmcm02X3Jjdl9zcGkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksXG4tLVxubmV0L2lwdjYveGZybTZfaW5wdXQuYy0yNy1cdFhGUk1fU1BJX1NLQl9DQihza2IpLVx1MDAzZWRhZGRyb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGlwdjZoZHIsIGRhZGRyKTtcbm5ldC9pcHY2L3hmcm02X2lucHV0LmM6Mjg6XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgMCk7XG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jLTI5LX1cbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmM9NDM1PXN0YXRpYyBpbnQgeGZybV9pbm5lcl9tb2RlX2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00NjUtICovXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NDY2OmludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00Njcte1xuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYz03OTc9aW50IHhmcm1faW5wdXRfcmVzdW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyKVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTc5OC17XG5uZXQveGZybS94ZnJtX2lucHV0LmM6Nzk5Olx0cmV0dXJuIHhmcm1faW5wdXQoc2tiLCBuZXh0aGRyLCAwLCAtMSk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtODAwLX1cbi0tXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM9MzEyPXN0YXRpYyBpbnQgeGZybWlfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksXG4tLVxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTMzMC1cbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYzozMzE6XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgZW5jYXBfdHlwZSk7XG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmMtMzMyLWRpc2NhcmQ6XG4tLVxubmV0L3hmcm0veGZybV9pcHRmcy5jPTk0Mz1zdGF0aWMgYm9vbCBfX2lucHV0X3Byb2Nlc3NfcGF5bG9hZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgdTMyIGRhdGEsXG4tLVxubmV0L3hmcm0veGZybV9pcHRmcy5jLTExOTAtXHRcdHNrYl9saXN0X2RlbF9pbml0KHNrYik7XG5uZXQveGZybS94ZnJtX2lwdGZzLmM6MTE5MTpcdFx0aWYgKHhmcm1faW5wdXQoc2tiLCAwLCAwLCAtMikpXG5uZXQveGZybS94ZnJtX2lwdGZzLmMtMTE5Mi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3OTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBwYWNrZXRzIGFyZSBoYW5kbGVkLCBhbmQgaXQgc2VlbXMgbGlrZSBgeGZybV9pbnB1dGAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgYnkgYSB3aG9sZSBob3N0IG9mIGZ1bmN0aW9uczogYHhmcm00X3Jjdl9zcGlgLCBgZXNwNF9ncm9fcmVjZWl2ZWAsIGB2dGlfaW5wdXRgLCBgZXNwNl9ncm9fcmVjZWl2ZWAsIGB2dGk2X2lucHV0X3Byb3RvYCwgYHhmcm02X3Jjdl9zcGlgLCBgeGZybV9pbnB1dF9yZXN1bWVgLCBgeGZybWlfaW5wdXRgLCBhbmQgYF9faW5wdXRfcHJvY2Vzc19wYXlsb2FkYC4gVGhhdCYjMzk7cyBhIGxvdCBvZiBlbnRyeSBwb2ludHMsIGluZGljYXRpbmcgaXRzIGNlbnRyYWwgcm9sZSBpbiB0aGUgcHJvY2Vzc2luZyBwaXBlbGluZS4gR2l2ZW4gdGhpcywgaXQgbWFrZXMgc2Vuc2UgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHVuZGVyc3RhbmRpbmcgaG93IGB4ZnJtX2lucHV0YCBvcGVyYXRlcy4gSXQmIzM5O3MgdGhlIGx5bmNocGluLCBpdCBzZWVtcy4gTXkgbmV4dCBzdGVwIHNob3VsZCBiZSB0byBsb29rIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gc3Vycm91bmRpbmcgYHhmcm1pX2lucHV0YCwgc3BlY2lmaWNhbGx5IHRoZSBgWEZSTV9JTlRFUkZBQ0VgIHNldHRpbmdzLCB0byBzZWUgaG93IHRoYXQgaW5mbHVlbmNlcyB0aGUgb3ZlcmFsbCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fSU5URVJGQUNFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnPTMyPWNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG4tLVxubmV0L3hmcm0vS2NvbmZpZy00Mi1cbm5ldC94ZnJtL0tjb25maWc6NDM6Y29uZmlnIFhGUk1fSU5URVJGQUNFXG5uZXQveGZybS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdmlydHVhbCBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6CgoqKkNvbmZpZ3VyYXRpb24gQWRkaXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdXBkYXRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gbGlzdHMuIEkmIzM5O3ZlIGdvdCB0byBtYWtlIHN1cmUgdG8gaW5jbHVkZSBgWEZSTV9JTlRFUkZBQ0VgIGluIHRoZSBtaXgsIGFzIEkgYW50aWNpcGF0ZSBuZWVkaW5nIHRoYXQgZnVuY3Rpb25hbGl0eS4gVGhlbiBJIG5lZWQgdG8gYnJpbmcgaW4gYElQVjZfVlRJYCBhbmQgYE5FVF9JUFZUSWAgYXMgd2VsbC4gVGhlc2UgYXJlIGNydWNpYWwgY29tcG9uZW50cywgYW5kIEkgc2hvdWxkbiYjMzk7dCBvdmVybG9vayB0aGVtLiBHaXZlbiB0aGF0IEkmIzM5O20gY29uc2lkZXJpbmcgdGhlc2UgaW4gdGFuZGVtLCB0aGlzIHBvaW50cyB0byBzcGVjaWZpYyB1c2UtY2FzZXMgdGhhdCBJJiMzOTttIGRyaXZpbmcgdG93YXJkcyB0aGF0IG5lY2Vzc2l0YXRlcyB0aGVzZSBhZGRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfSVBWVEkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MjY4PWNvbmZpZyBTWU5fQ09PS0lFU1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzAzLVxubmV0L2lwdjQvS2NvbmZpZzozMDQ6Y29uZmlnIE5FVF9JUFZUSVxubmV0L2lwdjQvS2NvbmZpZy0zMDUtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIChzZWN1cmUpIElQOiB0dW5uZWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1MjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBMYW5kc2NhcGUqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyBpbnRvIGFueXRoaW5nIGVsc2UsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYElQVjZfVlRJYC4gVGhpcyBsaWtlbHkgaW1wbGllcyBhIG5ldHdvcmsgY29uZmlndXJhdGlvbiBzY2VuYXJpbywgc3BlY2lmaWNhbGx5IGludm9sdmluZyBJUHY2IFZpcnR1YWwgVHVubmVsIEludGVyZmFjZXMuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIHByb2JhYmx5IGRlYWxpbmcgd2l0aCBlaXRoZXIgYSByb3V0aW5nIG9yIHNlY3VyaXR5IGNvbnRleHQuIFRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgdGhpcyBpcyByZWxhdGVkIHRvIGhvdyBJUHY2IHRyYWZmaWMgaXMgZW5jYXBzdWxhdGVkIG9yIGhhbmRsZWQgd2l0aGluIGEgbmV0d29yaywgcG90ZW50aWFsbHkgYWNyb3NzIGRpZmZlcmluZyBhZG1pbmlzdHJhdGl2ZSBkb21haW5zIG9yIHRvIGJ5cGFzcyBjZXJ0YWluIG5ldHdvcmsgcmVzdHJpY3Rpb25zLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluIGF1dG9tYXRpY2FsbHk6IERvZXMgdGhpcyBpbnZvbHZlIHN0YXRpYyByb3V0ZXMsIGR5bmFtaWMgcm91dGluZyBwcm90b2NvbHMsIHBvbGljeS1iYXNlZCByb3V0aW5nLCBvciBwZXJoYXBzIGV2ZW4gVlBOIHR1bm5lbGluZyB3aXRoIGFuIElQdjYgZm9jdXM/IEkgbmVlZCB0byBjbGFyaWZ5IHRoZSAqc3BlY2lmaWMqIHB1cnBvc2UgYW5kIGZ1bmN0aW9uIG9mIHRoZXNlIFZUSSBpbnRlcmZhY2VzIHdpdGhpbiB0aGUgZ3JlYXRlciBuZXR3b3JrIGFyY2hpdGVjdHVyZS4gSXQmIzM5O3MgYSBzdGFydGluZyBwb2ludCB0byBiZWdpbiB0aGUgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfVlRJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNDktXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcbm5ldC9pcHY2L0tjb25maWctMTUxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4NTkKCQkJCQkJCW91dHB1dDogMTU4CgkJCQkJCQl0aG91Z2h0czogMTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUHNlYy9YRlJNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIHdlJiMzOTtyZSBhZGRpbmcgYE5FVF9JUFZUSWAgYW5kIGBJUFY2X1ZUSWAuIE1ha2VzIHNlbnNlLCB0aGVzZSBhcmUgaW1wb3J0YW50IGZvciBzdXBwb3J0aW5nIHRoZSBuZXcgdmlydHVhbCB0dW5uZWwgaW50ZXJmYWNlcy4mIzM0OyBJIHNlZSBpdCYjMzk7cyBhbHNvIGJyaW5naW5nIGluIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBgWEZSTV9VU0VSYCwgYElORVRfRVNQYCwgYElORVRfQUhgLCB0aGUgSVB2NiBlcXVpdmFsZW50cywgYFhGUk1fSU5URVJGQUNFYCwgYW5kIHRoZSBWVEkgc3VwcG9ydCBJIGp1c3QgbWVudGlvbmVkLiBHb29kLCBnb29kLCBhbGwgdGhlIGRlcGVuZGVuY2llcyBzZWVtIHRvIGJlIHRoZXJlLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIHdpdGhpbiBgeGZybV9pbnB1dGAuIEFoLCBJIHNlZSwgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIOKAkyBhIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIHByb2JsZW0uIEJ5IGV4cGxpY2l0bHkgaG9sZGluZyBhbmQgcHV0dGluZyB0aGUgYHhmcm1fc3RhdGVgIHJlZmVyZW5jZSwgdGhlIHBhdGNoIGlzIGVuc3VyaW5nIHRoZSBkYXRhIHJlbWFpbnMgdmFsaWQgZHVyaW5nIHByb2Nlc3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSByZWFjaGFibGUgbmV0d29ya2luZyBjb2RlLCBzbyB0aGlzIGlzIGltcG9ydGFudCB0byBnZXQgcmlnaHQuIEl0IHRhcmdldHMgYHhmcm1faW5wdXRgIGFuZCBgeGZybV9pbnB1dF9yZXN1bWVgLCB0aGUgY3JpdGljYWwgcGF0aHMgZm9yIHBhY2tldCBwcm9jZXNzaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhvc2UgZnVuY3Rpb25zIHdoZW4gSSYjMzk7bSByZXZpZXdpbmcgdGhlIGltcGxlbWVudGF0aW9uLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgYWJvdXQgdGhpcyBub3csIEkmIzM5O20gZ29pbmcgdG8gcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7SU5FVF9FU1AmIzM0OywKICAgICYjMzQ7SU5FVF9BSCYjMzQ7LAogICAgJiMzNDtJTkVUNl9FU1AmIzM0OywKICAgICYjMzQ7SU5FVDZfQUgmIzM0OywKICAgICYjMzQ7WEZSTV9JTlRFUkZBQ0UmIzM0OywKICAgICYjMzQ7TkVUX0lQVlRJJiMzNDssCiAgICAmIzM0O0lQVjZfVlRJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9pbnB1dCYjMzQ7LAogICAgJiMzNDt4ZnJtX2lucHV0X3Jlc3VtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgeGZybV9pbnB1dGAgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdGFjayB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWUgYnkgZXhwbGljaXRseSBob2xkaW5nIGFuZCBwdXR0aW5nIHRoZSBgeGZybV9zdGF0ZWAgcmVmZXJlbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDssCiAgICAmIzM0O0lORVRfRVNQJiMzNDssCiAgICAmIzM0O0lORVRfQUgmIzM0OywKICAgICYjMzQ7SU5FVDZfRVNQJiMzNDssCiAgICAmIzM0O0lORVQ2X0FIJiMzNDssCiAgICAmIzM0O1hGUk1fSU5URVJGQUNFJiMzNDssCiAgICAmIzM0O05FVF9JUFZUSSYjMzQ7LAogICAgJiMzNDtJUFY2X1ZUSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faW5wdXQmIzM0OywKICAgICYjMzQ7eGZybV9pbnB1dF9yZXN1bWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHhmcm1faW5wdXRgIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3RhY2sgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3VlIGJ5IGV4cGxpY2l0bHkgaG9sZGluZyBhbmQgcHV0dGluZyB0aGUgYHhmcm1fc3RhdGVgIHJlZmVyZW5jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjowMS41NDI1MzcwODZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTIyMjAzMTgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIklORVRfRVNQXCIsXG4gICAgXCJJTkVUX0FIXCIsXG4gICAgXCJJTkVUNl9FU1BcIixcbiAgICBcIklORVQ2X0FIXCIsXG4gICAgXCJYRlJNX0lOVEVSRkFDRVwiLFxuICAgIFwiTkVUX0lQVlRJXCIsXG4gICAgXCJJUFY2X1ZUSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faW5wdXRcIixcbiAgICBcInhmcm1faW5wdXRfcmVzdW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHhmcm1faW5wdXRgIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3RhY2sgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3VlIGJ5IGV4cGxpY2l0bHkgaG9sZGluZyBhbmQgcHV0dGluZyB0aGUgYHhmcm1fc3RhdGVgIHJlZmVyZW5jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjAxLjU0MjU0NTY0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1NjI4NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWMzOTViMjU2OTk2ZmVlMTA4YTE1NjkxNjI2ODg1OWMyN2I4YjZiNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyOCAxMzozNTo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX2lucHV0LmMgYi9uZXQveGZybS94ZnJtX2lucHV0LmNcXG5pbmRleCBlZWNhYjMzN2JkMGE3OS4uZjRkZWNhOGI0YWFiMjYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9pbnB1dC5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9pbnB1dC5jXFxuQEAgLTQ3OSw2ICs0NzksNyBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXFxuIFxcdGludCBhc3luYyA9IDA7XFxuIFxcdGJvb2wgeGZybV9ncm8gPSBmYWxzZTtcXG4gXFx0Ym9vbCBjcnlwdG9fZG9uZSA9IGZhbHNlO1xcbitcXHRib29sIHhfaGVsZCA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgeGZybV9vZmZsb2FkICp4byA9IHhmcm1fb2ZmbG9hZChza2IpO1xcbiBcXHRzdHJ1Y3Qgc2VjX3BhdGggKnNwO1xcbiBcXG5AQCAtNTg1LDYgKzU4NiwxMCBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXFxuIFxcdFxcdHNwID0gc2tiX3NlY19wYXRoKHNrYik7XFxuIFxcbiBcXHRcXHRpZiAoc3AtXFx1MDAzZWxlbiA9PSBYRlJNX01BWF9ERVBUSCkge1xcbitcXHRcXHRcXHRpZiAoeCkge1xcbitcXHRcXHRcXHRcXHR4ZnJtX3N0YXRlX2hvbGQoeCk7XFxuK1xcdFxcdFxcdFxcdHhfaGVsZCA9IHRydWU7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0XFx0c2VjcGF0aF9yZXNldChza2IpO1xcbiBcXHRcXHRcXHRYRlJNX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9YRlJNSU5CVUZGRVJFUlJPUik7XFxuIFxcdFxcdFxcdGdvdG8gZHJvcDtcXG5AQCAtNzI3LDYgKzczMiw5IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcXG4gXFx0XFx0Y3J5cHRvX2RvbmUgPSBmYWxzZTtcXG4gXFx0fSB3aGlsZSAoIWVycik7XFxuIFxcbitcXHR4ZnJtX3N0YXRlX2hvbGQoeCk7XFxuK1xcdHhfaGVsZCA9IHRydWU7XFxuK1xcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdGVyciA9IHhmcm1fcmN2X2NiKHNrYiwgZmFtaWx5LCB4LVxcdTAwM2V0eXBlLVxcdTAwM2Vwcm90bywgMCk7XFxuIFxcdGlmIChlcnIpIHtcXG5AQCAtNzQ2LDYgKzc1NCw3IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcXG4gXFx0XFx0XFx0ZGV2X3B1dChkZXYpO1xcbiBcXHRcXHRncm9fY2VsbHNfcmVjZWl2ZShcXHUwMDI2Z3JvX2NlbGxzLCBza2IpO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0eGZybV9zdGF0ZV9wdXQoeCk7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHR4byA9IHhmcm1fb2ZmbG9hZChza2IpO1xcbkBAIC03NjgsNiArNzc3LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxcbiBcXHRcXHRpZiAoYXN5bmMpXFxuIFxcdFxcdFxcdGRldl9wdXQoZGV2KTtcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdFxcdHhmcm1fc3RhdGVfcHV0KHgpO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcbkBAIC03NzcsNiArNzg3LDggQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxcbiBcXHRpZiAoYXN5bmMpXFxuIFxcdFxcdGRldl9wdXQoZGV2KTtcXG4gXFx0eGZybV9yY3ZfY2Ioc2tiLCBmYW1pbHksIHggXFx1MDAyNlxcdTAwMjYgeC1cXHUwMDNldHlwZSA/IHgtXFx1MDAzZXR5cGUtXFx1MDAzZXByb3RvIDogbmV4dGhkciwgLTEpO1xcbitcXHRpZiAoeF9oZWxkKVxcbitcXHRcXHR4ZnJtX3N0YXRlX3B1dCh4KTtcXG4gXFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjAyLjA0ODkwOTQ4OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwNzE1NjUwODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiLFxuICAgIFwiSU5FVF9FU1BcIixcbiAgICBcIklORVRfQUhcIixcbiAgICBcIklORVQ2X0VTUFwiLFxuICAgIFwiSU5FVDZfQUhcIixcbiAgICBcIlhGUk1fSU5URVJGQUNFXCIsXG4gICAgXCJORVRfSVBWVElcIixcbiAgICBcIklQVjZfVlRJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9pbnB1dFwiLFxuICAgIFwieGZybV9pbnB1dF9yZXN1bWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgeGZybV9pbnB1dGAgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdGFjayB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWUgYnkgZXhwbGljaXRseSBob2xkaW5nIGFuZCBwdXR0aW5nIHRoZSBgeGZybV9zdGF0ZWAgcmVmZXJlbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWMzOTViMjU2OTk2ZmVlMTA4YTE1NjkxNjI2ODg1OWMyN2I4YjZiNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDEzOjM1OjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9pbnB1dC5jIGIvbmV0L3hmcm0veGZybV9pbnB1dC5jXG5pbmRleCBlZWNhYjMzN2JkMGE3OS4uZjRkZWNhOGI0YWFiMjYgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX2lucHV0LmNcbisrKyBiL25ldC94ZnJtL3hmcm1faW5wdXQuY1xuQEAgLTQ3OSw2ICs0NzksNyBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG4gXHRpbnQgYXN5bmMgPSAwO1xuIFx0Ym9vbCB4ZnJtX2dybyA9IGZhbHNlO1xuIFx0Ym9vbCBjcnlwdG9fZG9uZSA9IGZhbHNlO1xuK1x0Ym9vbCB4X2hlbGQgPSBmYWxzZTtcbiBcdHN0cnVjdCB4ZnJtX29mZmxvYWQgKnhvID0geGZybV9vZmZsb2FkKHNrYik7XG4gXHRzdHJ1Y3Qgc2VjX3BhdGggKnNwO1xuIFxuQEAgLTU4NSw2ICs1ODYsMTAgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0XHRzcCA9IHNrYl9zZWNfcGF0aChza2IpO1xuIFxuIFx0XHRpZiAoc3AtXHUwMDNlbGVuID09IFhGUk1fTUFYX0RFUFRIKSB7XG4rXHRcdFx0aWYgKHgpIHtcbitcdFx0XHRcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbitcdFx0XHRcdHhfaGVsZCA9IHRydWU7XG4rXHRcdFx0fVxuIFx0XHRcdHNlY3BhdGhfcmVzZXQoc2tiKTtcbiBcdFx0XHRYRlJNX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9YRlJNSU5CVUZGRVJFUlJPUik7XG4gXHRcdFx0Z290byBkcm9wO1xuQEAgLTcyNyw2ICs3MzIsOSBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG4gXHRcdGNyeXB0b19kb25lID0gZmFsc2U7XG4gXHR9IHdoaWxlICghZXJyKTtcbiBcbitcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbitcdHhfaGVsZCA9IHRydWU7XG4rXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRlcnIgPSB4ZnJtX3Jjdl9jYihza2IsIGZhbWlseSwgeC1cdTAwM2V0eXBlLVx1MDAzZXByb3RvLCAwKTtcbiBcdGlmIChlcnIpIHtcbkBAIC03NDYsNiArNzU0LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0XHRcdGRldl9wdXQoZGV2KTtcbiBcdFx0Z3JvX2NlbGxzX3JlY2VpdmUoXHUwMDI2Z3JvX2NlbGxzLCBza2IpO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcdFx0eGZybV9zdGF0ZV9wdXQoeCk7XG4gXHRcdHJldHVybiAwO1xuIFx0fSBlbHNlIHtcbiBcdFx0eG8gPSB4ZnJtX29mZmxvYWQoc2tiKTtcbkBAIC03NjgsNiArNzc3LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0XHRpZiAoYXN5bmMpXG4gXHRcdFx0ZGV2X3B1dChkZXYpO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcdFx0eGZybV9zdGF0ZV9wdXQoeCk7XG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG5AQCAtNzc3LDYgKzc4Nyw4IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbiBcdGlmIChhc3luYylcbiBcdFx0ZGV2X3B1dChkZXYpO1xuIFx0eGZybV9yY3ZfY2Ioc2tiLCBmYW1pbHksIHggXHUwMDI2XHUwMDI2IHgtXHUwMDNldHlwZSA/IHgtXHUwMDNldHlwZS1cdTAwM2Vwcm90byA6IG5leHRoZHIsIC0xKTtcbitcdGlmICh4X2hlbGQpXG4rXHRcdHhmcm1fc3RhdGVfcHV0KHgpO1xuIFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRyZXR1cm4gMDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjowMi4wNDg5MTA3NjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkxNDY4ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWEZSTSBJbnB1dCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIGNoYW5nZXMgdG8gYG5ldC94ZnJtL3hmcm1faW5wdXQuY2AuIEkgc2VlIGl0J3MgYWJvdXQgYWRkaW5nIHJlZmVyZW5jZSBjb3VudGluZyB0byB0aGUgYHhmcm1faW5wdXRgIGZ1bmN0aW9uIHVzaW5nIGB4ZnJtX3N0YXRlX2hvbGQoeClgIGFuZCBgeGZybV9zdGF0ZV9wdXQoeClgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBjb3JlIG5ldHdvcmtpbmcgY2hhbmdlOyB3ZSdyZSB0YWxraW5nIGFib3V0IFhGUk0sIHRoZSBoZWFydCBvZiBJUHNlYy4gSXQncyBmdW5jdGlvbmFsLCBtZWFuaW5nIGl0J3MgZ29pbmcgdG8gY2hhbmdlIGhvdyB0aGluZ3MgKndvcmsqLiBHb29kLCB0aGF0IG1ha2VzIHRlc3Rpbmcgc3RyYWlnaHRmb3J3YXJkLCB0aG91Z2ggSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgcmVhY2hhYmxlIGNvZGUgcGF0aHMuIExldCdzIGRpZyBpbnRvIHRoYXQgYHhmcm1faW5wdXRgIGZ1bmN0aW9uIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGVyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIGJlaW5nIGFkZGVkIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLlxuXG5UaGUgZmlyc3QgdGhpbmcgdG8gY2hlY2sgaXMgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJ20gZXhwZWN0aW5nIHRoZSBwcmltYXJ5IG9uZSB0byBiZSBgQ09ORklHX1hGUk1gLCBzaW5jZSB0aGF0J3MgdGhlIG1haW4gZW5hYmxlciBmb3IgdGhlIGVudGlyZSBzdWJzeXN0ZW0uIEdvdHRhIG1ha2Ugc3VyZSB0aGUgY29uZGl0aW9uYWwgbG9naWMgYW5kIGNvbmZpZ3VyYXRpb25zIGFyb3VuZCB0aGlzIGNoYW5nZSBhcmUgcm9idXN0LCBwYXJ0aWN1bGFybHkgcmVnYXJkaW5nIGRpZmZlcmVudCBYRlJNIHNldHVwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwMiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjA2LjQ0MDM4MjkxMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQ2OTQ1MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnLTQtI1xcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxcbm5ldC94ZnJtL0tjb25maWctNi1cXHRib29sXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEwLVxcbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL0tjb25maWctMTItXFx0Ym9vbFxcbm5ldC94ZnJtL0tjb25maWctMTMtXFxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTQyLVxcbm5ldC94ZnJtL0tjb25maWc6NDM6Y29uZmlnIFhGUk1fSU5URVJGQUNFXFxubmV0L3hmcm0vS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdmlydHVhbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTUwLVxcbm5ldC94ZnJtL0tjb25maWc6NTE6Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxcbm5ldC94ZnJtL0tjb25maWctNTItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3ViIHBvbGljeSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy02MC1cXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTYyLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTcxLVxcbm5ldC94ZnJtL0tjb25maWc6NzI6Y29uZmlnIFhGUk1fU1RBVElTVElDU1xcbm5ldC94ZnJtL0tjb25maWctNzMtXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1xcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctODMtIyBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxcbm5ldC94ZnJtL0tjb25maWc6ODQ6Y29uZmlnIFhGUk1fQUhcXG5uZXQveGZybS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo5Mzpjb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEwNS1cXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMjU9Y29uZmlnIE5FVF9LRVlfTUlHUkFURVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXFxubmV0L3hmcm0vS2NvbmZpZzoxNDE6Y29uZmlnIFhGUk1fSVBURlNcXG5uZXQveGZybS9LY29uZmlnLTE0Mi1cXHR0cmlzdGF0ZSBcXFwiSVBzZWMgSVAtVEZTL0FHR0ZSQUcgKFJGQyA5MzQ3KSBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE1Ni1cXG5uZXQveGZybS9LY29uZmlnOjE1Nzpjb25maWcgWEZSTV9FU1BJTlRDUFxcbm5ldC94ZnJtL0tjb25maWctMTU4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTM6MzY6MDYuODk1MDg1ODA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNzcxMDk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgWEZSTSBCdWlsZCBQcm9jZXNzKipcblxuUmlnaHQsIGBYRlJNYCBpcyBhIGJvb2xlYW4sIGFuZCBgWEZSTV9VU0VSYCBkZWZpbmVzIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSDigJMgc3RhbmRhcmQgc3R1ZmYgZm9yIHRoZSBYRlJNIHN1YnN5c3RlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHhmcm1faW5wdXQub2AgaXMgYmVpbmcgYnVpbHQuIFRoYXQncyBhIGNvcmUgY29tcG9uZW50LCBzbyBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIGBuZXQveGZybS9NYWtlZmlsZWAuIEl0J2xsIGhhdmUgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gSSBuZWVkLCBzcGVjaWZpY2FsbHksIHRoZSBydWxlcyB0aGF0IGRpY3RhdGUgaG93IGB4ZnJtX2lucHV0Lm9gIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQuIFRoYXQgc2hvdWxkIHJldmVhbCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg5NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjA5LjkyMjc5ODgyNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwMzUyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9pbnB1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlOjE1OlxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZS0xNi1cXHRcXHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjEwLjAyNTg0MDU4MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTAzNDExODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19YRlJNYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgaW4gdGhpcyBjYXNlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QsIG9mIGNvdXJzZSwgaXMgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8ga25vdyAqd2hhdCogaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBhY3R1YWxseSAqc2VsZWN0cyogYENPTkZJR19YRlJNYC4gSXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQga25vd2luZyB3aGVyZSBpdCdzIGNvbWluZyBmcm9tIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgdW5kZXJzdGFuZGluZyBmZWF0dXJlIGludGVyYWN0aW9ucywgb3IgcG90ZW50aWFsbHkgbW9kaWZ5aW5nIHRoZSBidWlsZC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZyBvcHRpb25zIHRlbGwgdXMuIFRpbWUgdG8gdHJhY2UgdGhlIHNlbGVjdHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjoxMi45MzYxODM3MzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzODg2MDI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgWEZSTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xOTQ9Y29uZmlnIElYR0JFX0lQU0VDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE5OC1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjE5OTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMDAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjA9Y29uZmlnIElYR0JFVkZfSVBTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI0LVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI1OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMwND1jb25maWcgTkVUX0lQVlRJXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTMwNy1cXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWc6MzA4OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjQvS2NvbmZpZy0zMDktXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMzk9Y29uZmlnIElORVRfQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0MC1cXHR0cmlzdGF0ZSBcXFwiSVA6IEFIIHRyYW5zZm9ybWF0aW9uXFxcIlxcbm5ldC9pcHY0L0tjb25maWc6MzQxOlxcdHNlbGVjdCBYRlJNX0FIXFxubmV0L2lwdjQvS2NvbmZpZy0zNDItXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zNTQ9Y29uZmlnIElORVRfRVNQXFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXFx0dHJpc3RhdGUgXFxcIklQOiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozNTY6XFx0c2VsZWN0IFhGUk1fRVNQXFxubmV0L2lwdjQvS2NvbmZpZy0zNTctXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzcxLVxcdGRlcGVuZHMgb24gSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnOjM3MjpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zODYtXFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY0L0tjb25maWc6Mzg3OlxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxubmV0L2lwdjQvS2NvbmZpZy0zODgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zOTQ9Y29uZmlnIElORVRfSVBDT01QXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM5Ni1cXHRzZWxlY3QgSU5FVF9YRlJNX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWc6Mzk3OlxcdHNlbGVjdCBYRlJNX0lQQ09NUFxcbm5ldC9pcHY0L0tjb25maWctMzk4LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9NDc9Y29uZmlnIElORVQ2X0FIXFxubmV0L2lwdjYvS2NvbmZpZy00OC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjYvS2NvbmZpZzo0OTpcXHRzZWxlY3QgWEZSTV9BSFxcbm5ldC9pcHY2L0tjb25maWctNTAtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz02Mj1jb25maWcgSU5FVDZfRVNQXFxubmV0L2lwdjYvS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uXFxcIlxcbm5ldC9pcHY2L0tjb25maWc6NjQ6XFx0c2VsZWN0IFhGUk1fRVNQXFxubmV0L2lwdjYvS2NvbmZpZy02NS1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTc3PWNvbmZpZyBJTkVUNl9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy03OS1cXHRkZXBlbmRzIG9uIElORVQ2X0VTUFxcbm5ldC9pcHY2L0tjb25maWc6ODA6XFx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxcbm5ldC9pcHY2L0tjb25maWctODEtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05NC1cXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjYvS2NvbmZpZzo5NTpcXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxcbm5ldC9pcHY2L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMDQtXFx0c2VsZWN0IElORVQ2X1hGUk1fVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZzoxMDU6XFx0c2VsZWN0IFhGUk1fSVBDT01QXFxubmV0L2lwdjYvS2NvbmZpZy0xMDYtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMTI9Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG5uZXQvaXB2Ni9LY29uZmlnOjExNDpcXHRzZWxlY3QgWEZSTVxcbm5ldC9pcHY2L0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNTMtXFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjE1NDpcXHRzZWxlY3QgWEZSTVxcbm5ldC9pcHY2L0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTQ9Y29uZmlnIFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTUtXFx0dHJpc3RhdGVcXG5uZXQveGZybS9LY29uZmlnOjE2OlxcdHNlbGVjdCBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy0xNy1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIzPWNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbm5ldC94ZnJtL0tjb25maWc6MjU6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMjYtXFx0aGVscFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz04ND1jb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG5uZXQveGZybS9LY29uZmlnOjg2OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTg3LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9OTM9Y29uZmlnIFhGUk1fRVNQXFxubmV0L3hmcm0vS2NvbmZpZy05NC1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6OTU6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctOTYtXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMDY9Y29uZmlnIFhGUk1fSVBDT01QXFxubmV0L3hmcm0vS2NvbmZpZy0xMDctXFx0dHJpc3RhdGVcXG5uZXQveGZybS9LY29uZmlnOjEwODpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xMDktXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcXG5uZXQveGZybS9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiUEZfS0VZIHNvY2tldHMgKGRlcHJlY2F0ZWQpXFxcIlxcbm5ldC94ZnJtL0tjb25maWc6MTE0OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTExNS1cXHRoZWxwXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEyNy1cXHRkZXBlbmRzIG9uIE5FVF9LRVlcXG5uZXQveGZybS9LY29uZmlnOjEyODpcXHRzZWxlY3QgWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0vS2NvbmZpZy0xMjktXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjoxNS43NzUwNDk0NTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTkzOTUzNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlOlxuXG4qKlhGUk0gQ29uZmlndXJhdGlvbiBmb3IgUm9idXN0IFRlc3RpbmcqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHN0cmF0ZWd5IGhlcmUgY2VudGVycyBvbiBnZXR0aW5nIHRoZSBYRlJNIHN1YnN5c3RlbSB1cCBhbmQgcnVubmluZyBpbiBhIHNvbGlkIHdheSBmb3IgdGVzdGluZy4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBJJ20gdGhpbmtpbmcgdGhhdCBlbmFibGluZyBgWEZSTV9VU0VSYCBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgaW5oZXJlbnRseSBzZWxlY3RzIGBYRlJNX0FMR09gLCB3aGljaCBpbiB0dXJuLCBwdWxscyBpbiB0aGUgY29yZSBgWEZSTWAgZnVuY3Rpb25hbGl0eS4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24uXG5cbk5vdywgZm9yIGFjdHVhbGx5ICpleGVyY2lzaW5nKiBYRlJNLCBJJ2QgdGhlbiBnbyBvbiB0byBlbmFibGUgdGhlIHJlbGV2YW50IHRyYW5zcG9ydCBwcm90b2NvbHMgdG8gYWxsb3cgZm9yIElQU2VjIG9wZXJhdGlvbnMsIHRoZSBvYnZpb3VzIG9uZXMgYmVpbmcgYElORVRfRVNQYCwgYElORVRfQUhgLCBgSU5FVDZfRVNQYCwgYW5kIGBJTkVUNl9BSGAuIFRoZXNlIGFyZSB0aGUgd29ya2hvcnNlczsgdGhleSBnaXZlIHVzIHRoZSB0cmFmZmljIHRvIGVuY3J5cHQsIGF1dGhlbnRpY2F0ZSwgYW5kIG9ic2VydmUgaG93IFhGUk0gaXMgaGFuZGxpbmcgdGhlIHByb2Nlc3NpbmcgYW5kIG1hbmFnZW1lbnQgb2YgdGhvc2UgU2VjdXJpdHkgQXNzb2NpYXRpb25zLlxuXG5XaXRoIHRoZSBjb25maWd1cmF0aW9uIGFzcGVjdHMgYWRkcmVzc2VkLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBjcml0aWNhbCBkYXRhIGZsb3cgcGF0aC4gVGhlcmVmb3JlLCBJIHNob3VsZCB0YWtlIGEgY2xvc2UgbG9vayBhdCB0aGUgYHhmcm1faW5wdXRgIGZ1bmN0aW9uLiBJdCdzIGxpa2VseSB0aGUga2V5IGVudHJ5IHBvaW50IGZvciBpbmJvdW5kIHBhY2tldHMgYW5kIHdoZXJlIHdlJ2xsIHNlZSB0aGUgWEZSTSB0cmFuc2Zvcm1hdGlvbiBsb2dpYyBhdCBwbGF5LCBhbmQgdGhhdCdzIHRoZSBhcmVhIHRoYXQgSSBuZWVkIHRvIGFuYWx5emUgdG8gZW5zdXJlIHByb3BlciBYRlJNIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE2OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjI0LjM2OTAwNzI5OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAyODk1MjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1faW5wdXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1faW5wdXQuYy0yLS8qXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjM6ICogeGZybV9pbnB1dC5jXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTQtICpcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYz0zND1zdHJ1Y3QgeGZybV90cmFuc19jYiB7XFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDYtXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ3OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soeGZybV9pbnB1dF9hZmluZm9fbG9jayk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ4OnN0YXRpYyBzdHJ1Y3QgeGZybV9pbnB1dF9hZmluZm8gY29uc3QgX19yY3UgKnhmcm1faW5wdXRfYWZpbmZvWzJdW0FGX0lORVQ2ICsgMV07XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTQ5LVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jPTUzPXN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgeGZybV90cmFuc190YXNrbGV0LCB4ZnJtX3RyYW5zX3Rhc2tsZXQpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy01NC1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NTU6aW50IHhmcm1faW5wdXRfcmVnaXN0ZXJfYWZpbmZvKGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqYWZpbmZvKVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy01Ni17XFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNjEtXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjYyOlxcdHNwaW5fbG9ja19iaChcXHUwMDI2eGZybV9pbnB1dF9hZmluZm9fbG9jayk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjYzOlxcdGlmICh1bmxpa2VseSh4ZnJtX2lucHV0X2FmaW5mb1thZmluZm8tXFx1MDAzZWlzX2lwaXBdW2FmaW5mby1cXHUwMDNlZmFtaWx5XSkpXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTY0LVxcdFxcdGVyciA9IC1FRVhJU1Q7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTY1LVxcdGVsc2VcXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NjY6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cXHUwMDNlaXNfaXBpcF1bYWZpbmZvLVxcdTAwM2VmYW1pbHldLCBhZmluZm8pO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo2NzpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2eGZybV9pbnB1dF9hZmluZm9fbG9jayk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTY4LVxcdHJldHVybiBlcnI7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTY5LX1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NzA6RVhQT1JUX1NZTUJPTCh4ZnJtX2lucHV0X3JlZ2lzdGVyX2FmaW5mbyk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTcxLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3MjppbnQgeGZybV9pbnB1dF91bnJlZ2lzdGVyX2FmaW5mbyhjb25zdCBzdHJ1Y3QgeGZybV9pbnB1dF9hZmluZm8gKmFmaW5mbylcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzMte1xcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTc1LVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3NjpcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnhmcm1faW5wdXRfYWZpbmZvX2xvY2spO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3NzpcXHRpZiAobGlrZWx5KHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cXHUwMDNlaXNfaXBpcF1bYWZpbmZvLVxcdTAwM2VmYW1pbHldKSkge1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3ODpcXHRcXHRjb25zdCBzdHJ1Y3QgeGZybV9pbnB1dF9hZmluZm8gKmN1cjtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzktXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjgwOlxcdFxcdGN1ciA9IHJjdV9hY2Nlc3NfcG9pbnRlcih4ZnJtX2lucHV0X2FmaW5mb1thZmluZm8tXFx1MDAzZWlzX2lwaXBdW2FmaW5mby1cXHUwMDNlZmFtaWx5XSk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTgxLVxcdFxcdGlmICh1bmxpa2VseShjdXIgIT0gYWZpbmZvKSlcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04My1cXHRcXHRlbHNlXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjg0OlxcdFxcdFxcdFJDVV9JTklUX1BPSU5URVIoeGZybV9pbnB1dF9hZmluZm9bYWZpbmZvLVxcdTAwM2Vpc19pcGlwXVthZmluZm8tXFx1MDAzZWZhbWlseV0sIE5VTEwpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04NS1cXHR9XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjg2OlxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ4ZnJtX2lucHV0X2FmaW5mb19sb2NrKTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODctXFx0c3luY2hyb25pemVfcmN1KCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODktfVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo5MDpFWFBPUlRfU1lNQk9MKHhmcm1faW5wdXRfdW5yZWdpc3Rlcl9hZmluZm8pO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05MS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM6OTI6c3RhdGljIGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqeGZybV9pbnB1dF9nZXRfYWZpbmZvKHU4IGZhbWlseSwgYm9vbCBpc19pcGlwKVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05My17XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjk0OlxcdGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqYWZpbmZvO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05NS1cXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05OS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjEwMDpcXHRhZmluZm8gPSByY3VfZGVyZWZlcmVuY2UoeGZybV9pbnB1dF9hZmluZm9baXNfaXBpcF1bZmFtaWx5XSk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTEwMS1cXHRpZiAodW5saWtlbHkoIWFmaW5mbykpXFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM9MTA2PXN0YXRpYyBpbnQgeGZybV9yY3ZfY2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGZhbWlseSwgdTggcHJvdG9jb2wsXFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtMTA5LVxcdGJvb2wgaXNfaXBpcCA9IChwcm90b2NvbCA9PSBJUFBST1RPX0lQSVAgfHwgcHJvdG9jb2wgPT0gSVBQUk9UT19JUFY2KTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmM6MTEwOlxcdGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqYWZpbmZvO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy0xMTEtXFx0aW50IHJldDtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtMTEyLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzoxMTM6XFx0YWZpbmZvID0geGZybV9pbnB1dF9nZXRfYWZpbmZvKGZhbWlseSwgaXNfaXBpcCk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTExNC1cXHRpZiAoIWFmaW5mbylcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYz00MzU9c3RhdGljIGludCB4ZnJtX2lubmVyX21vZGVfaW5wdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDY1LSAqL1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo0NjY6aW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00Njcte1xcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTQ4Ny1cXHRcXHRcXHRcXHQgICAgICBlbmNhcF90eXBlID09IFVEUF9FTkNBUF9FU1BJTlVEUCkpKSB7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ4ODpcXHRcXHR4ID0geGZybV9pbnB1dF9zdGF0ZShza2IpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00ODktXFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNTk3LVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo1OTg6XFx0XFx0eCA9IHhmcm1faW5wdXRfc3RhdGVfbG9va3VwKG5ldCwgbWFyaywgZGFkZHIsIHNwaSwgbmV4dGhkciwgZmFtaWx5KTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNTk5LVxcdFxcdGlmICh4ID09IE5VTEwpIHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy03OTQtfVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3OTU6RVhQT1JUX1NZTUJPTCh4ZnJtX2lucHV0KTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzk2LVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3OTc6aW50IHhmcm1faW5wdXRfcmVzdW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyKVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy03OTgte1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3OTk6XFx0cmV0dXJuIHhmcm1faW5wdXQoc2tiLCBuZXh0aGRyLCAwLCAtMSk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTgwMC19XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjgwMTpFWFBPUlRfU1lNQk9MKHhmcm1faW5wdXRfcmVzdW1lKTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODAyLVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jPTg1OD1FWFBPUlRfU1lNQk9MKHhmcm1fdHJhbnNfcXVldWUpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04NTktXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjg2MDp2b2lkIF9faW5pdCB4ZnJtX2lucHV0X2luaXQodm9pZClcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODYxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTM6MzY6MjQuNzcxOTA5MzE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODM1Mjc3MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGB4ZnJtX2lucHV0YCB3aXRoaW4gYG5ldC94ZnJtL3hmcm1faW5wdXQuY2AuIEkgc2VlIHRoYXQgaXQncyB0b3VjaGluZyBhIGtleSBmdW5jdGlvbiwgYHhmcm1faW5wdXRgLCB3aGljaCBpcyAqZXhwb3J0ZWQqLCBtZWFuaW5nIGl0J3MgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGFuZCwgY3JpdGljYWxseSwgaW52b2x2ZWQgaW4gSVBzZWMgcGFja2V0IHByb2Nlc3NpbmcuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIG15IGV5ZWJyb3dzIOKAkyBhbnkgY2hhbmdlIGhlcmUgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW1wYWN0IGEgY29yZSBzZWN1cml0eSBmdW5jdGlvbi5cblxuVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBhZGRpbmcgYHhmcm1fc3RhdGVfaG9sZCh4KWAgYW5kIGB4ZnJtX3N0YXRlX3B1dCh4KWAuIFRoaXMgc2NyZWFtcyByZWZjb3VudGluZyBvciBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUuIFRoZXkncmUgY2xlYXJseSB0cnlpbmcgdG8gbWFuYWdlIHRoZSBsaWZlY3ljbGUgb2YgYW4gYHhmcm1fc3RhdGVgIG9iamVjdCAoYHhgKSBtb3JlIGNhcmVmdWxseS4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGFuZCBpdCdzIGZsYWdnZWQgYXMgYFdvcnRoRnV6emluZz10cnVlYCwgd2hpY2ggSSBhZ3JlZSB3aXRoOyBJUHNlYyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBwb2ludHMgaGVyZSBhcmUgY2xlYXJseSBgeGZybV9pbnB1dGAgaXRzZWxmLCBhbmQgYWxzbyBgeGZybV9pbnB1dF9yZXN1bWVgLCBiZWNhdXNlIHRoYXQncyBhIGRpcmVjdCBjYWxsZXIuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyB0aG9zZSBjYWxscyBhZmZlY3QgdGhlIG92ZXJhbGwgc3RhdGUgbWFuYWdlbWVudC4gTGV0J3Mgc2VlIGlmIG90aGVyIGZ1bmN0aW9ucyBjYWxsIGB4ZnJtX2lucHV0YCBhcyB3ZWxsLi4uXG5cblRoaXMgcGF0Y2ggbGlrZWx5IHJlcXVpcmVzIGNvbmZpZ3VyYXRpb25zIGBYRlJNX1VTRVJgLCBgSU5FVF9FU1BgLCBgSU5FVF9BSGAsIGBJTkVUNl9FU1BgIGFuZCBgSU5FVDZfQUhgLCBhbGwgb2Ygd2hpY2ggYXJlIGNvbW1vbiB3aXRoIElQc2VjLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzE0LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjMwLjA1NTQzOTUzN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1NzYyMDAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2lucHV0XFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fZGV2aWNlLnJzdD0xNTc9SVBzZWMgaGVhZGVycyBhcmUgc3RpbGwgaW4gdGhlIHBhY2tldCBkYXRhOyB0aGV5IGFyZSByZW1vdmVkIGxhdGVyIHVwXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9kZXZpY2UucnN0OjE1ODp0aGUgc3RhY2sgaW4geGZybV9pbnB1dCgpLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fZGV2aWNlLnJzdC0xNTktXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MTc5Nz1pbnQgeGZybV9pbml0X3N0YXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoxNzk4OmludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSk7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE3OTktaW50IHhmcm1faW5wdXRfcmVzdW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xODI4PXN0YXRpYyBpbmxpbmUgaW50IHhmcm00X3Jjdl9zcGkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGkpXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMTgzMi1cXHRYRlJNX1NQSV9TS0JfQ0Ioc2tiKS1cXHUwMDNlZGFkZHJvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaXBoZHIsIGRhZGRyKTtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTgzMzpcXHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgMCk7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE4MzQtfVxcbi0tXFxubmV0L2lwdjQvZXNwNF9vZmZsb2FkLmM9MzA9c3RhdGljIHN0cnVjdCBza19idWZmICplc3A0X2dyb19yZWNlaXZlKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuLS1cXG5uZXQvaXB2NC9lc3A0X29mZmxvYWQuYy05MC1cXHQgKiB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGZyZWVzIHRoZSByZXNvdXJjZXMgb24gZXJyb3IuICovXFxubmV0L2lwdjQvZXNwNF9vZmZsb2FkLmM6OTE6XFx0eGZybV9pbnB1dChza2IsIElQUFJPVE9fRVNQLCBzcGksIGVuY2FwX3R5cGUpO1xcbm5ldC9pcHY0L2VzcDRfb2ZmbG9hZC5jLTkyLVxcbi0tXFxubmV0L2lwdjQvaXBfdnRpLmM9NDc9c3RhdGljIGludCB2dGlfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksXFxuLS1cXG5uZXQvaXB2NC9pcF92dGkuYy02OC1cXG5uZXQvaXB2NC9pcF92dGkuYzo2OTpcXHRcXHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgZW5jYXBfdHlwZSk7XFxubmV0L2lwdjQvaXBfdnRpLmMtNzAtXFx0fVxcbi0tXFxubmV0L2lwdjYvZXNwNl9vZmZsb2FkLmM9NTM9c3RhdGljIHN0cnVjdCBza19idWZmICplc3A2X2dyb19yZWNlaXZlKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuLS1cXG5uZXQvaXB2Ni9lc3A2X29mZmxvYWQuYy0xMTktXFx0ICogdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBmcmVlcyB0aGUgcmVzb3VyY2VzIG9uIGVycm9yLiAqL1xcbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jOjEyMDpcXHR4ZnJtX2lucHV0KHNrYiwgSVBQUk9UT19FU1AsIHNwaSwgZW5jYXBfdHlwZSk7XFxubmV0L2lwdjYvZXNwNl9vZmZsb2FkLmMtMTIxLVxcbi0tXFxubmV0L2lwdjYvaXA2X3Z0aS5jPTI5Nj1zdGF0aWMgaW50IHZ0aTZfaW5wdXRfcHJvdG8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksXFxuLS1cXG5uZXQvaXB2Ni9pcDZfdnRpLmMtMzI2LVxcdFxcdFhGUk1fU1BJX1NLQl9DQihza2IpLVxcdTAwM2VkYWRkcm9mZiA9IG9mZnNldG9mKHN0cnVjdCBpcHY2aGRyLCBkYWRkcik7XFxubmV0L2lwdjYvaXA2X3Z0aS5jOjMyNzpcXHRcXHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgZW5jYXBfdHlwZSk7XFxubmV0L2lwdjYvaXA2X3Z0aS5jLTMyOC1cXHR9XFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jPTIyPWludCB4ZnJtNl9yY3Zfc3BpKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLFxcbi0tXFxubmV0L2lwdjYveGZybTZfaW5wdXQuYy0yNy1cXHRYRlJNX1NQSV9TS0JfQ0Ioc2tiKS1cXHUwMDNlZGFkZHJvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaXB2NmhkciwgZGFkZHIpO1xcbm5ldC9pcHY2L3hmcm02X2lucHV0LmM6Mjg6XFx0cmV0dXJuIHhmcm1faW5wdXQoc2tiLCBuZXh0aGRyLCBzcGksIDApO1xcbm5ldC9pcHY2L3hmcm02X2lucHV0LmMtMjktfVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jPTQzNT1zdGF0aWMgaW50IHhmcm1faW5uZXJfbW9kZV9pbnB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00NjUtICovXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ2NjppbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTQ2Ny17XFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM9Nzk3PWludCB4ZnJtX2lucHV0X3Jlc3VtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkcilcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzk4LXtcXG5uZXQveGZybS94ZnJtX2lucHV0LmM6Nzk5OlxcdHJldHVybiB4ZnJtX2lucHV0KHNrYiwgbmV4dGhkciwgMCwgLTEpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04MDAtfVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jPTMxMj1zdGF0aWMgaW50IHhmcm1pX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLFxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTMzMC1cXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM6MzMxOlxcdHJldHVybiB4ZnJtX2lucHV0KHNrYiwgbmV4dGhkciwgc3BpLCBlbmNhcF90eXBlKTtcXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmMtMzMyLWRpc2NhcmQ6XFxuLS1cXG5uZXQveGZybS94ZnJtX2lwdGZzLmM9OTQzPXN0YXRpYyBib29sIF9faW5wdXRfcHJvY2Vzc19wYXlsb2FkKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCB1MzIgZGF0YSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1faXB0ZnMuYy0xMTkwLVxcdFxcdHNrYl9saXN0X2RlbF9pbml0KHNrYik7XFxubmV0L3hmcm0veGZybV9pcHRmcy5jOjExOTE6XFx0XFx0aWYgKHhmcm1faW5wdXQoc2tiLCAwLCAwLCAtMikpXFxubmV0L3hmcm0veGZybV9pcHRmcy5jLTExOTItXFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjMyLjUxMzA2ODA3NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDE3Mzk1NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGF0YSBGbG93KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHBhY2tldHMgYXJlIGhhbmRsZWQsIGFuZCBpdCBzZWVtcyBsaWtlIGB4ZnJtX2lucHV0YCBpcyBhIGNydWNpYWwgZnVuY3Rpb24uIEkgc2VlIGl0J3MgY2FsbGVkIGJ5IGEgd2hvbGUgaG9zdCBvZiBmdW5jdGlvbnM6IGB4ZnJtNF9yY3Zfc3BpYCwgYGVzcDRfZ3JvX3JlY2VpdmVgLCBgdnRpX2lucHV0YCwgYGVzcDZfZ3JvX3JlY2VpdmVgLCBgdnRpNl9pbnB1dF9wcm90b2AsIGB4ZnJtNl9yY3Zfc3BpYCwgYHhmcm1faW5wdXRfcmVzdW1lYCwgYHhmcm1pX2lucHV0YCwgYW5kIGBfX2lucHV0X3Byb2Nlc3NfcGF5bG9hZGAuIFRoYXQncyBhIGxvdCBvZiBlbnRyeSBwb2ludHMsIGluZGljYXRpbmcgaXRzIGNlbnRyYWwgcm9sZSBpbiB0aGUgcHJvY2Vzc2luZyBwaXBlbGluZS4gR2l2ZW4gdGhpcywgaXQgbWFrZXMgc2Vuc2UgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHVuZGVyc3RhbmRpbmcgaG93IGB4ZnJtX2lucHV0YCBvcGVyYXRlcy4gSXQncyB0aGUgbHluY2hwaW4sIGl0IHNlZW1zLiBNeSBuZXh0IHN0ZXAgc2hvdWxkIGJlIHRvIGxvb2sgaW50byB0aGUgY29uZmlndXJhdGlvbiBzdXJyb3VuZGluZyBgeGZybWlfaW5wdXRgLCBzcGVjaWZpY2FsbHkgdGhlIGBYRlJNX0lOVEVSRkFDRWAgc2V0dGluZ3MsIHRvIHNlZSBob3cgdGhhdCBpbmZsdWVuY2VzIHRoZSBvdmVyYWxsIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc5OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjozNy41MzA0NjYxNDZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MTcyMDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRlJNX0lOVEVSRkFDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9MzI9Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTM6MzY6MzcuNjA2NjQ0MzIzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzQ5MTA5NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6XG5cbioqQ29uZmlndXJhdGlvbiBBZGRpdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdXBkYXRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gbGlzdHMuIEkndmUgZ290IHRvIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGBYRlJNX0lOVEVSRkFDRWAgaW4gdGhlIG1peCwgYXMgSSBhbnRpY2lwYXRlIG5lZWRpbmcgdGhhdCBmdW5jdGlvbmFsaXR5LiBUaGVuIEkgbmVlZCB0byBicmluZyBpbiBgSVBWNl9WVElgIGFuZCBgTkVUX0lQVlRJYCBhcyB3ZWxsLiBUaGVzZSBhcmUgY3J1Y2lhbCBjb21wb25lbnRzLCBhbmQgSSBzaG91bGRuJ3Qgb3Zlcmxvb2sgdGhlbS4gR2l2ZW4gdGhhdCBJJ20gY29uc2lkZXJpbmcgdGhlc2UgaW4gdGFuZGVtLCB0aGlzIHBvaW50cyB0byBzcGVjaWZpYyB1c2UtY2FzZXMgdGhhdCBJJ20gZHJpdmluZyB0b3dhcmRzIHRoYXQgbmVjZXNzaXRhdGVzIHRoZXNlIGFkZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNDMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjo0MS44ODE1NTc2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1NDU0OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUFZUSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MjY4PWNvbmZpZyBTWU5fQ09PS0lFU1xcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMDMtXFxubmV0L2lwdjQvS2NvbmZpZzozMDQ6Y29uZmlnIE5FVF9JUFZUSVxcbm5ldC9pcHY0L0tjb25maWctMzA1LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQOiB0dW5uZWxpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjQxLjk0OTEwNzc0N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAxNTIzNjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgZWxzZSwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgSVBWNl9WVElgLiBUaGlzIGxpa2VseSBpbXBsaWVzIGEgbmV0d29yayBjb25maWd1cmF0aW9uIHNjZW5hcmlvLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIElQdjYgVmlydHVhbCBUdW5uZWwgSW50ZXJmYWNlcy4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBwcm9iYWJseSBkZWFsaW5nIHdpdGggZWl0aGVyIGEgcm91dGluZyBvciBzZWN1cml0eSBjb250ZXh0LiBUaGVyZSdzIGEgZ29vZCBjaGFuY2UgdGhpcyBpcyByZWxhdGVkIHRvIGhvdyBJUHY2IHRyYWZmaWMgaXMgZW5jYXBzdWxhdGVkIG9yIGhhbmRsZWQgd2l0aGluIGEgbmV0d29yaywgcG90ZW50aWFsbHkgYWNyb3NzIGRpZmZlcmluZyBhZG1pbmlzdHJhdGl2ZSBkb21haW5zIG9yIHRvIGJ5cGFzcyBjZXJ0YWluIG5ldHdvcmsgcmVzdHJpY3Rpb25zLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluIGF1dG9tYXRpY2FsbHk6IERvZXMgdGhpcyBpbnZvbHZlIHN0YXRpYyByb3V0ZXMsIGR5bmFtaWMgcm91dGluZyBwcm90b2NvbHMsIHBvbGljeS1iYXNlZCByb3V0aW5nLCBvciBwZXJoYXBzIGV2ZW4gVlBOIHR1bm5lbGluZyB3aXRoIGFuIElQdjYgZm9jdXM/IEkgbmVlZCB0byBjbGFyaWZ5IHRoZSAqc3BlY2lmaWMqIHB1cnBvc2UgYW5kIGZ1bmN0aW9uIG9mIHRoZXNlIFZUSSBpbnRlcmZhY2VzIHdpdGhpbiB0aGUgZ3JlYXRlciBuZXR3b3JrIGFyY2hpdGVjdHVyZS4gSXQncyBhIHN0YXJ0aW5nIHBvaW50IHRvIGJlZ2luIHRoZSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTUyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjQ1Ljc1MDYzMzQxOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc2NTAwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZfVlRJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNDktXFxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXFxubmV0L2lwdjYvS2NvbmZpZy0xNTEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjo0NS44MTgyOTMwOTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1MTY5ODc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVBzZWMvWEZSTSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgd2UncmUgYWRkaW5nIGBORVRfSVBWVElgIGFuZCBgSVBWNl9WVElgLiBNYWtlcyBzZW5zZSwgdGhlc2UgYXJlIGltcG9ydGFudCBmb3Igc3VwcG9ydGluZyB0aGUgbmV3IHZpcnR1YWwgdHVubmVsIGludGVyZmFjZXMuXCIgSSBzZWUgaXQncyBhbHNvIGJyaW5naW5nIGluIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBgWEZSTV9VU0VSYCwgYElORVRfRVNQYCwgYElORVRfQUhgLCB0aGUgSVB2NiBlcXVpdmFsZW50cywgYFhGUk1fSU5URVJGQUNFYCwgYW5kIHRoZSBWVEkgc3VwcG9ydCBJIGp1c3QgbWVudGlvbmVkLiBHb29kLCBnb29kLCBhbGwgdGhlIGRlcGVuZGVuY2llcyBzZWVtIHRvIGJlIHRoZXJlLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgd2l0aGluIGB4ZnJtX2lucHV0YC4gQWgsIEkgc2VlLCBpdCdzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSDigJMgYSB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBwcm9ibGVtLiBCeSBleHBsaWNpdGx5IGhvbGRpbmcgYW5kIHB1dHRpbmcgdGhlIGB4ZnJtX3N0YXRlYCByZWZlcmVuY2UsIHRoZSBwYXRjaCBpcyBlbnN1cmluZyB0aGUgZGF0YSByZW1haW5zIHZhbGlkIGR1cmluZyBwcm9jZXNzaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgcmVhY2hhYmxlIG5ldHdvcmtpbmcgY29kZSwgc28gdGhpcyBpcyBpbXBvcnRhbnQgdG8gZ2V0IHJpZ2h0LiBJdCB0YXJnZXRzIGB4ZnJtX2lucHV0YCBhbmQgYHhmcm1faW5wdXRfcmVzdW1lYCwgdGhlIGNyaXRpY2FsIHBhdGhzIGZvciBwYWNrZXQgcHJvY2Vzc2luZy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhvc2UgZnVuY3Rpb25zIHdoZW4gSSdtIHJldmlld2luZyB0aGUgaW1wbGVtZW50YXRpb24uXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgYWJvdXQgdGhpcyBub3csIEknbSBnb2luZyB0byBwcm9jZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NTksIk91dHB1dFRva2VucyI6MTU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjUyLjY2OTk5NTUyN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NTYxOTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIklORVRfRVNQXCIsXG4gICAgXCJJTkVUX0FIXCIsXG4gICAgXCJJTkVUNl9FU1BcIixcbiAgICBcIklORVQ2X0FIXCIsXG4gICAgXCJYRlJNX0lOVEVSRkFDRVwiLFxuICAgIFwiTkVUX0lQVlRJXCIsXG4gICAgXCJJUFY2X1ZUSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faW5wdXRcIixcbiAgICBcInhmcm1faW5wdXRfcmVzdW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHhmcm1faW5wdXRgIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3RhY2sgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3VlIGJ5IGV4cGxpY2l0bHkgaG9sZGluZyBhbmQgcHV0dGluZyB0aGUgYHhmcm1fc3RhdGVgIHJlZmVyZW5jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJJTkVUX0VTUFwiLFxuICAgIFwiSU5FVF9BSFwiLFxuICAgIFwiSU5FVDZfRVNQXCIsXG4gICAgXCJJTkVUNl9BSFwiLFxuICAgIFwiWEZSTV9JTlRFUkZBQ0VcIixcbiAgICBcIk5FVF9JUFZUSVwiLFxuICAgIFwiSVBWNl9WVElcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2lucHV0XCIsXG4gICAgXCJ4ZnJtX2lucHV0X3Jlc3VtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB4ZnJtX2lucHV0YCBpbiB0aGUgY29yZSBJUHNlYy9YRlJNIHN0YWNrIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZSBieSBleHBsaWNpdGx5IGhvbGRpbmcgYW5kIHB1dHRpbmcgdGhlIGB4ZnJtX3N0YXRlYCByZWZlcmVuY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8t6tv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-28 13:12:44 +0000 UTC FinishedAt: 2026-07-28 13:36:54 +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": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "INET_ESP", "INET_AH", "INET6_ESP", "INET6_AH", "XFRM_INTERFACE", "NET_IPVTI", "IPV6_VTI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "INET_ESP", "INET_AH", "INET6_ESP", "INET6_AH", "XFRM_INTERFACE", "NET_IPVTI", "IPV6_VTI" ], "series_id": "3c4c93d8-384d-48c5-ace0-604e064b4a91" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_input", "xfrm_input_resume" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtJTkVUX0VTUCYjMzQ7LAogICAgJiMzNDtJTkVUX0FIJiMzNDssCiAgICAmIzM0O0lORVQ2X0VTUCYjMzQ7LAogICAgJiMzNDtJTkVUNl9BSCYjMzQ7LAogICAgJiMzNDtYRlJNX0lOVEVSRkFDRSYjMzQ7LAogICAgJiMzNDtORVRfSVBWVEkmIzM0OywKICAgICYjMzQ7SVBWNl9WVEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2lucHV0JiMzNDssCiAgICAmIzM0O3hmcm1faW5wdXRfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB4ZnJtX2lucHV0YCBpbiB0aGUgY29yZSBJUHNlYy9YRlJNIHN0YWNrIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZSBieSBleHBsaWNpdGx5IGhvbGRpbmcgYW5kIHB1dHRpbmcgdGhlIGB4ZnJtX3N0YXRlYCByZWZlcmVuY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWMzOTViMjU2OTk2ZmVlMTA4YTE1NjkxNjI2ODg1OWMyN2I4YjZiNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDEzOjM1OjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faW5wdXQuYyBiL25ldC94ZnJtL3hmcm1faW5wdXQuY1xuaW5kZXggZWVjYWIzMzdiZDBhNzkuLmY0ZGVjYThiNGFhYjI2IDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9pbnB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2lucHV0LmNcbkBAIC00NzksNiAmIzQzOzQ3OSw3IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbiBcdGludCBhc3luYyA9IDA7XG4gXHRib29sIHhmcm1fZ3JvID0gZmFsc2U7XG4gXHRib29sIGNyeXB0b19kb25lID0gZmFsc2U7XG4mIzQzO1x0Ym9vbCB4X2hlbGQgPSBmYWxzZTtcbiBcdHN0cnVjdCB4ZnJtX29mZmxvYWQgKnhvID0geGZybV9vZmZsb2FkKHNrYik7XG4gXHRzdHJ1Y3Qgc2VjX3BhdGggKnNwO1xuIFxuQEAgLTU4NSw2ICYjNDM7NTg2LDEwIEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbiBcdFx0c3AgPSBza2Jfc2VjX3BhdGgoc2tiKTtcbiBcbiBcdFx0aWYgKHNwLVx1MDAzZWxlbiA9PSBYRlJNX01BWF9ERVBUSCkge1xuJiM0MztcdFx0XHRpZiAoeCkge1xuJiM0MztcdFx0XHRcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbiYjNDM7XHRcdFx0XHR4X2hlbGQgPSB0cnVlO1xuJiM0MztcdFx0XHR9XG4gXHRcdFx0c2VjcGF0aF9yZXNldChza2IpO1xuIFx0XHRcdFhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1JTkJVRkZFUkVSUk9SKTtcbiBcdFx0XHRnb3RvIGRyb3A7XG5AQCAtNzI3LDYgJiM0Mzs3MzIsOSBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG4gXHRcdGNyeXB0b19kb25lID0gZmFsc2U7XG4gXHR9IHdoaWxlICghZXJyKTtcbiBcbiYjNDM7XHR4ZnJtX3N0YXRlX2hvbGQoeCk7XG4mIzQzO1x0eF9oZWxkID0gdHJ1ZTtcbiYjNDM7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRlcnIgPSB4ZnJtX3Jjdl9jYihza2IsIGZhbWlseSwgeC1cdTAwM2V0eXBlLVx1MDAzZXByb3RvLCAwKTtcbiBcdGlmIChlcnIpIHtcbkBAIC03NDYsNiAmIzQzOzc1NCw3IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbiBcdFx0XHRkZXZfcHV0KGRldik7XG4gXHRcdGdyb19jZWxsc19yZWNlaXZlKFx1MDAyNmdyb19jZWxscywgc2tiKTtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0XHR4ZnJtX3N0YXRlX3B1dCh4KTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9IGVsc2Uge1xuIFx0XHR4byA9IHhmcm1fb2ZmbG9hZChza2IpO1xuQEAgLTc2OCw2ICYjNDM7Nzc3LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0XHRpZiAoYXN5bmMpXG4gXHRcdFx0ZGV2X3B1dChkZXYpO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdHhmcm1fc3RhdGVfcHV0KHgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuQEAgLTc3Nyw2ICYjNDM7Nzg3LDggQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0aWYgKGFzeW5jKVxuIFx0XHRkZXZfcHV0KGRldik7XG4gXHR4ZnJtX3Jjdl9jYihza2IsIGZhbWlseSwgeCBcdTAwMjZcdTAwMjYgeC1cdTAwM2V0eXBlID8geC1cdTAwM2V0eXBlLVx1MDAzZXByb3RvIDogbmV4dGhkciwgLTEpO1xuJiM0MztcdGlmICh4X2hlbGQpXG4mIzQzO1x0XHR4ZnJtX3N0YXRlX3B1dCh4KTtcbiBcdGtmcmVlX3NrYihza2IpO1xuIFx0cmV0dXJuIDA7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7SU5FVF9FU1AmIzM0OywKICAgICYjMzQ7SU5FVF9BSCYjMzQ7LAogICAgJiMzNDtJTkVUNl9FU1AmIzM0OywKICAgICYjMzQ7SU5FVDZfQUgmIzM0OywKICAgICYjMzQ7WEZSTV9JTlRFUkZBQ0UmIzM0OywKICAgICYjMzQ7TkVUX0lQVlRJJiMzNDssCiAgICAmIzM0O0lQVjZfVlRJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9pbnB1dCYjMzQ7LAogICAgJiMzNDt4ZnJtX2lucHV0X3Jlc3VtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgeGZybV9pbnB1dGAgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdGFjayB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWUgYnkgZXhwbGljaXRseSBob2xkaW5nIGFuZCBwdXR0aW5nIHRoZSBgeGZybV9zdGF0ZWAgcmVmZXJlbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVjMzk1YjI1Njk5NmZlZTEwOGExNTY5MTYyNjg4NTljMjdiOGI2YjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyOCAxMzozNTo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faW5wdXQuYyBiL25ldC94ZnJtL3hmcm1faW5wdXQuYwppbmRleCBlZWNhYjMzN2JkMGE3OS4uZjRkZWNhOGI0YWFiMjYgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1faW5wdXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2lucHV0LmMKQEAgLTQ3OSw2ICYjNDM7NDc5LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKQogCWludCBhc3luYyA9IDA7CiAJYm9vbCB4ZnJtX2dybyA9IGZhbHNlOwogCWJvb2wgY3J5cHRvX2RvbmUgPSBmYWxzZTsKJiM0MzsJYm9vbCB4X2hlbGQgPSBmYWxzZTsKIAlzdHJ1Y3QgeGZybV9vZmZsb2FkICp4byA9IHhmcm1fb2ZmbG9hZChza2IpOwogCXN0cnVjdCBzZWNfcGF0aCAqc3A7CiAKQEAgLTU4NSw2ICYjNDM7NTg2LDEwIEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSkKIAkJc3AgPSBza2Jfc2VjX3BhdGgoc2tiKTsKIAogCQlpZiAoc3AtJmd0O2xlbiA9PSBYRlJNX01BWF9ERVBUSCkgewomIzQzOwkJCWlmICh4KSB7CiYjNDM7CQkJCXhmcm1fc3RhdGVfaG9sZCh4KTsKJiM0MzsJCQkJeF9oZWxkID0gdHJ1ZTsKJiM0MzsJCQl9CiAJCQlzZWNwYXRoX3Jlc2V0KHNrYik7CiAJCQlYRlJNX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9YRlJNSU5CVUZGRVJFUlJPUik7CiAJCQlnb3RvIGRyb3A7CkBAIC03MjcsNiAmIzQzOzczMiw5IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSkKIAkJY3J5cHRvX2RvbmUgPSBmYWxzZTsKIAl9IHdoaWxlICghZXJyKTsKIAomIzQzOwl4ZnJtX3N0YXRlX2hvbGQoeCk7CiYjNDM7CXhfaGVsZCA9IHRydWU7CiYjNDM7CiAJcmN1X3JlYWRfbG9jaygpOwogCWVyciA9IHhmcm1fcmN2X2NiKHNrYiwgZmFtaWx5LCB4LSZndDt0eXBlLSZndDtwcm90bywgMCk7CiAJaWYgKGVycikgewpAQCAtNzQ2LDYgJiM0Mzs3NTQsNyBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpCiAJCQlkZXZfcHV0KGRldik7CiAJCWdyb19jZWxsc19yZWNlaXZlKCZhbXA7Z3JvX2NlbGxzLCBza2IpOwogCQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJCXhmcm1fc3RhdGVfcHV0KHgpOwogCQlyZXR1cm4gMDsKIAl9IGVsc2UgewogCQl4byA9IHhmcm1fb2ZmbG9hZChza2IpOwpAQCAtNzY4LDYgJiM0Mzs3NzcsNyBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpCiAJCWlmIChhc3luYykKIAkJCWRldl9wdXQoZGV2KTsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQl4ZnJtX3N0YXRlX3B1dCh4KTsKIAkJcmV0dXJuIGVycjsKIAl9CiAKQEAgLTc3Nyw2ICYjNDM7Nzg3LDggQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKQogCWlmIChhc3luYykKIAkJZGV2X3B1dChkZXYpOwogCXhmcm1fcmN2X2NiKHNrYiwgZmFtaWx5LCB4ICZhbXA7JmFtcDsgeC0mZ3Q7dHlwZSA/IHgtJmd0O3R5cGUtJmd0O3Byb3RvIDogbmV4dGhkciwgLTEpOwomIzQzOwlpZiAoeF9oZWxkKQomIzQzOwkJeGZybV9zdGF0ZV9wdXQoeCk7CiAJa2ZyZWVfc2tiKHNrYik7CiAJcmV0dXJuIDA7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYRlJNIElucHV0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgY2hhbmdlcyB0byBgbmV0L3hmcm0veGZybV9pbnB1dC5jYC4gSSBzZWUgaXQmIzM5O3MgYWJvdXQgYWRkaW5nIHJlZmVyZW5jZSBjb3VudGluZyB0byB0aGUgYHhmcm1faW5wdXRgIGZ1bmN0aW9uIHVzaW5nIGB4ZnJtX3N0YXRlX2hvbGQoeClgIGFuZCBgeGZybV9zdGF0ZV9wdXQoeClgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBjb3JlIG5ldHdvcmtpbmcgY2hhbmdlOyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBYRlJNLCB0aGUgaGVhcnQgb2YgSVBzZWMuIEl0JiMzOTtzIGZ1bmN0aW9uYWwsIG1lYW5pbmcgaXQmIzM5O3MgZ29pbmcgdG8gY2hhbmdlIGhvdyB0aGluZ3MgKndvcmsqLiBHb29kLCB0aGF0IG1ha2VzIHRlc3Rpbmcgc3RyYWlnaHRmb3J3YXJkLCB0aG91Z2ggSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHJlYWNoYWJsZSBjb2RlIHBhdGhzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBgeGZybV9pbnB1dGAgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoZXJlIHRoZSByZWZlcmVuY2UgY291bnRpbmcgaXMgYmVpbmcgYWRkZWQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuCgpUaGUgZmlyc3QgdGhpbmcgdG8gY2hlY2sgaXMgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTttIGV4cGVjdGluZyB0aGUgcHJpbWFyeSBvbmUgdG8gYmUgYENPTkZJR19YRlJNYCwgc2luY2UgdGhhdCYjMzk7cyB0aGUgbWFpbiBlbmFibGVyIGZvciB0aGUgZW50aXJlIHN1YnN5c3RlbS4gR290dGEgbWFrZSBzdXJlIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhbmQgY29uZmlndXJhdGlvbnMgYXJvdW5kIHRoaXMgY2hhbmdlIGFyZSByb2J1c3QsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgZGlmZmVyZW50IFhGUk0gc2V0dXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnLTQtI1xubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXG5uZXQveGZybS9LY29uZmlnLTYtXHRib29sXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMC1cbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cdGJvb2xcbm5ldC94ZnJtL0tjb25maWctMTMtXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTUtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMzEtXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG5uZXQveGZybS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcGF0aWJsZSBBQkkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNDItXG5uZXQveGZybS9LY29uZmlnOjQzOmNvbmZpZyBYRlJNX0lOVEVSRkFDRVxubmV0L3hmcm0vS2NvbmZpZy00NC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHZpcnR1YWwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy01MC1cbm5ldC94ZnJtL0tjb25maWc6NTE6Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxubmV0L3hmcm0vS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gc3ViIHBvbGljeSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy02MC1cbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxubmV0L3hmcm0vS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNzEtXG5uZXQveGZybS9LY29uZmlnOjcyOmNvbmZpZyBYRlJNX1NUQVRJU1RJQ1Ncbm5ldC94ZnJtL0tjb25maWctNzMtXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN0YXRpc3RpY3NcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTgzLSMgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cbm5ldC94ZnJtL0tjb25maWc6ODQ6Y29uZmlnIFhGUk1fQUhcbm5ldC94ZnJtL0tjb25maWctODUtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cbm5ldC94ZnJtL0tjb25maWc6OTM6Y29uZmlnIFhGUk1fRVNQXG5uZXQveGZybS9LY29uZmlnLTk0LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEwNS1cbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxubmV0L3hmcm0vS2NvbmZpZy0xMDctXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTE0MC1cbm5ldC94ZnJtL0tjb25maWc6MTQxOmNvbmZpZyBYRlJNX0lQVEZTXG5uZXQveGZybS9LY29uZmlnLTE0Mi1cdHRyaXN0YXRlIFwmIzM0O0lQc2VjIElQLVRGUy9BR0dGUkFHIChSRkMgOTM0NykgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNTYtXG5uZXQveGZybS9LY29uZmlnOjE1Nzpjb25maWcgWEZSTV9FU1BJTlRDUFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIEJ1aWxkIFByb2Nlc3MqKgoKUmlnaHQsIGBYRlJNYCBpcyBhIGJvb2xlYW4sIGFuZCBgWEZSTV9VU0VSYCBkZWZpbmVzIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSDigJMgc3RhbmRhcmQgc3R1ZmYgZm9yIHRoZSBYRlJNIHN1YnN5c3RlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHhmcm1faW5wdXQub2AgaXMgYmVpbmcgYnVpbHQuIFRoYXQmIzM5O3MgYSBjb3JlIGNvbXBvbmVudCwgc28gSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYC4gSXQmIzM5O2xsIGhhdmUgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gSSBuZWVkLCBzcGVjaWZpY2FsbHksIHRoZSBydWxlcyB0aGF0IGRpY3RhdGUgaG93IGB4ZnJtX2lucHV0Lm9gIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQuIFRoYXQgc2hvdWxkIHJldmVhbCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxMzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2lucHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXG5uZXQveGZybS9NYWtlZmlsZToxNTpcdFx0ICAgICAgeGZybV9pbnB1dC5vIHhmcm1fb3V0cHV0Lm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE2LVx0XHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgQ09ORklHX1hGUk1gIGlzIGEgaGFyZCByZXF1aXJlbWVudCBpbiB0aGlzIGNhc2UuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgb2YgY291cnNlLCBpcyB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93ICp3aGF0KiBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGFjdHVhbGx5ICpzZWxlY3RzKiBgQ09ORklHX1hGUk1gLiBJdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQga25vd2luZyB3aGVyZSBpdCYjMzk7cyBjb21pbmcgZnJvbSBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIHVuZGVyc3RhbmRpbmcgZmVhdHVyZSBpbnRlcmFjdGlvbnMsIG9yIHBvdGVudGlhbGx5IG1vZGlmeWluZyB0aGUgYnVpbGQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlnIG9wdGlvbnMgdGVsbCB1cy4gVGltZSB0byB0cmFjZSB0aGUgc2VsZWN0cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxMzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWEZSTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE5ND1jb25maWcgSVhHQkVfSVBTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE5OC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxOTk6XHRzZWxlY3QgWEZSTV9BTEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI0LVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjIyNTpcdHNlbGVjdCBYRlJNX0FMR09cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI2LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMwNy1cdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjMwODpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxubmV0L2lwdjQvS2NvbmZpZy0zNDAtXHR0cmlzdGF0ZSBcJiMzNDtJUDogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY0L0tjb25maWc6MzQxOlx0c2VsZWN0IFhGUk1fQUhcbm5ldC9pcHY0L0tjb25maWctMzQyLVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzU0PWNvbmZpZyBJTkVUX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXHR0cmlzdGF0ZSBcJiMzNDtJUDogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcdHNlbGVjdCBYRlJNX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTctXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM3MS1cdGRlcGVuZHMgb24gSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWc6MzcyOlx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXHRkZWZhdWx0IG5cbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzg2LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjQvS2NvbmZpZzozODc6XHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zOTQ9Y29uZmlnIElORVRfSVBDT01QXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zOTYtXHRzZWxlY3QgSU5FVF9YRlJNX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY0L0tjb25maWctMzk4LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9NDc9Y29uZmlnIElORVQ2X0FIXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NDk6XHRzZWxlY3QgWEZSTV9BSFxubmV0L2lwdjYvS2NvbmZpZy01MC1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NjQ6XHRzZWxlY3QgWEZSTV9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjUtXHRoZWxwXG4tLVxubmV0L2lwdjYvS2NvbmZpZz03Nz1jb25maWcgSU5FVDZfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVx0ZGVwZW5kcyBvbiBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWc6ODA6XHRzZWxlY3QgWEZSTV9PRkZMT0FEXG5uZXQvaXB2Ni9LY29uZmlnLTgxLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz05MD1jb25maWcgSU5FVDZfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZzo5NTpcdHNlbGVjdCBYRlJNX0VTUElOVENQXG5uZXQvaXB2Ni9LY29uZmlnLTk2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTAyPWNvbmZpZyBJTkVUNl9JUENPTVBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cdHNlbGVjdCBJTkVUNl9YRlJNX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoxMDU6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY2L0tjb25maWctMTA2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTEyPWNvbmZpZyBJUFY2X01JUDZcbm5ldC9pcHY2L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogTW9iaWxpdHlcJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6MTE0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTUzLVx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTU0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTU1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTQ9Y29uZmlnIFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xNS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjE2Olx0c2VsZWN0IFhGUk1cbm5ldC94ZnJtL0tjb25maWctMTctXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0yMz1jb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzoyNTpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMjYtXHRoZWxwXG4tLVxubmV0L3hmcm0vS2NvbmZpZz04ND1jb25maWcgWEZSTV9BSFxubmV0L3hmcm0vS2NvbmZpZy04NS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjg2Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy04Ny1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTkzPWNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjk1Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy05Ni1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbm5ldC94ZnJtL0tjb25maWc6MTA4Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xMDktXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcbm5ldC94ZnJtL0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7UEZfS0VZIHNvY2tldHMgKGRlcHJlY2F0ZWQpXCYjMzQ7XG5uZXQveGZybS9LY29uZmlnOjExNDpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEyNy1cdGRlcGVuZHMgb24gTkVUX0tFWVxubmV0L3hmcm0vS2NvbmZpZzoxMjg6XHRzZWxlY3QgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTEyOS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxMzozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTY5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlOgoKKipYRlJNIENvbmZpZ3VyYXRpb24gZm9yIFJvYnVzdCBUZXN0aW5nKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gc3RyYXRlZ3kgaGVyZSBjZW50ZXJzIG9uIGdldHRpbmcgdGhlIFhGUk0gc3Vic3lzdGVtIHVwIGFuZCBydW5uaW5nIGluIGEgc29saWQgd2F5IGZvciB0ZXN0aW5nLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBJJiMzOTttIHRoaW5raW5nIHRoYXQgZW5hYmxpbmcgYFhGUk1fVVNFUmAgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBiZWNhdXNlIGl0IGluaGVyZW50bHkgc2VsZWN0cyBgWEZSTV9BTEdPYCwgd2hpY2ggaW4gdHVybiwgcHVsbHMgaW4gdGhlIGNvcmUgYFhGUk1gIGZ1bmN0aW9uYWxpdHkuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZm91bmRhdGlvbi4KCk5vdywgZm9yIGFjdHVhbGx5ICpleGVyY2lzaW5nKiBYRlJNLCBJJiMzOTtkIHRoZW4gZ28gb24gdG8gZW5hYmxlIHRoZSByZWxldmFudCB0cmFuc3BvcnQgcHJvdG9jb2xzIHRvIGFsbG93IGZvciBJUFNlYyBvcGVyYXRpb25zLCB0aGUgb2J2aW91cyBvbmVzIGJlaW5nIGBJTkVUX0VTUGAsIGBJTkVUX0FIYCwgYElORVQ2X0VTUGAsIGFuZCBgSU5FVDZfQUhgLiBUaGVzZSBhcmUgdGhlIHdvcmtob3JzZXM7IHRoZXkgZ2l2ZSB1cyB0aGUgdHJhZmZpYyB0byBlbmNyeXB0LCBhdXRoZW50aWNhdGUsIGFuZCBvYnNlcnZlIGhvdyBYRlJNIGlzIGhhbmRsaW5nIHRoZSBwcm9jZXNzaW5nIGFuZCBtYW5hZ2VtZW50IG9mIHRob3NlIFNlY3VyaXR5IEFzc29jaWF0aW9ucy4KCldpdGggdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cyBhZGRyZXNzZWQsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGNyaXRpY2FsIGRhdGEgZmxvdyBwYXRoLiBUaGVyZWZvcmUsIEkgc2hvdWxkIHRha2UgYSBjbG9zZSBsb29rIGF0IHRoZSBgeGZybV9pbnB1dGAgZnVuY3Rpb24uIEl0JiMzOTtzIGxpa2VseSB0aGUga2V5IGVudHJ5IHBvaW50IGZvciBpbmJvdW5kIHBhY2tldHMgYW5kIHdoZXJlIHdlJiMzOTtsbCBzZWUgdGhlIFhGUk0gdHJhbnNmb3JtYXRpb24gbG9naWMgYXQgcGxheSwgYW5kIHRoYXQmIzM5O3MgdGhlIGFyZWEgdGhhdCBJIG5lZWQgdG8gYW5hbHl6ZSB0byBlbnN1cmUgcHJvcGVyIFhGUk0gYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxMzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2lucHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9pbnB1dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1faW5wdXQuYy0yLS8qXG5uZXQveGZybS94ZnJtX2lucHV0LmM6MzogKiB4ZnJtX2lucHV0LmNcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00LSAqXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTM0PXN0cnVjdCB4ZnJtX3RyYW5zX2NiIHtcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDYtXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NDc6c3RhdGljIERFRklORV9TUElOTE9DSyh4ZnJtX2lucHV0X2FmaW5mb19sb2NrKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo0ODpzdGF0aWMgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvIGNvbnN0IF9fcmN1ICp4ZnJtX2lucHV0X2FmaW5mb1syXVtBRl9JTkVUNiAmIzQzOyAxXTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00OS1cbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmM9NTM9c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCB4ZnJtX3RyYW5zX3Rhc2tsZXQsIHhmcm1fdHJhbnNfdGFza2xldCk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtNTQtXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NTU6aW50IHhmcm1faW5wdXRfcmVnaXN0ZXJfYWZpbmZvKGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqYWZpbmZvKVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTU2LXtcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNjEtXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NjI6XHRzcGluX2xvY2tfYmgoXHUwMDI2eGZybV9pbnB1dF9hZmluZm9fbG9jayk7XG5uZXQveGZybS94ZnJtX2lucHV0LmM6NjM6XHRpZiAodW5saWtlbHkoeGZybV9pbnB1dF9hZmluZm9bYWZpbmZvLVx1MDAzZWlzX2lwaXBdW2FmaW5mby1cdTAwM2VmYW1pbHldKSlcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy02NC1cdFx0ZXJyID0gLUVFWElTVDtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy02NS1cdGVsc2Vcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo2NjpcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cdTAwM2Vpc19pcGlwXVthZmluZm8tXHUwMDNlZmFtaWx5XSwgYWZpbmZvKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo2NzpcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnhmcm1faW5wdXRfYWZpbmZvX2xvY2spO1xubmV0L3hmcm0veGZybV9pbnB1dC5jLTY4LVx0cmV0dXJuIGVycjtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy02OS19XG5uZXQveGZybS94ZnJtX2lucHV0LmM6NzA6RVhQT1JUX1NZTUJPTCh4ZnJtX2lucHV0X3JlZ2lzdGVyX2FmaW5mbyk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzEtXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NzI6aW50IHhmcm1faW5wdXRfdW5yZWdpc3Rlcl9hZmluZm8oY29uc3Qgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvICphZmluZm8pXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzMte1xuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYy03NS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3NjpcdHNwaW5fbG9ja19iaChcdTAwMjZ4ZnJtX2lucHV0X2FmaW5mb19sb2NrKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3NzpcdGlmIChsaWtlbHkoeGZybV9pbnB1dF9hZmluZm9bYWZpbmZvLVx1MDAzZWlzX2lwaXBdW2FmaW5mby1cdTAwM2VmYW1pbHldKSkge1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjc4Olx0XHRjb25zdCBzdHJ1Y3QgeGZybV9pbnB1dF9hZmluZm8gKmN1cjtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy03OS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo4MDpcdFx0Y3VyID0gcmN1X2FjY2Vzc19wb2ludGVyKHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cdTAwM2Vpc19pcGlwXVthZmluZm8tXHUwMDNlZmFtaWx5XSk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtODEtXHRcdGlmICh1bmxpa2VseShjdXIgIT0gYWZpbmZvKSlcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODMtXHRcdGVsc2Vcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo4NDpcdFx0XHRSQ1VfSU5JVF9QT0lOVEVSKHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cdTAwM2Vpc19pcGlwXVthZmluZm8tXHUwMDNlZmFtaWx5XSwgTlVMTCk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtODUtXHR9XG5uZXQveGZybS94ZnJtX2lucHV0LmM6ODY6XHRzcGluX3VubG9ja19iaChcdTAwMjZ4ZnJtX2lucHV0X2FmaW5mb19sb2NrKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04Ny1cdHN5bmNocm9uaXplX3JjdSgpO1xuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04OS19XG5uZXQveGZybS94ZnJtX2lucHV0LmM6OTA6RVhQT1JUX1NZTUJPTCh4ZnJtX2lucHV0X3VucmVnaXN0ZXJfYWZpbmZvKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05MS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo5MjpzdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvICp4ZnJtX2lucHV0X2dldF9hZmluZm8odTggZmFtaWx5LCBib29sIGlzX2lwaXApXG5uZXQveGZybS94ZnJtX2lucHV0LmMtOTMte1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjk0Olx0Y29uc3Qgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvICphZmluZm87XG5uZXQveGZybS94ZnJtX2lucHV0LmMtOTUtXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTk5LVx0cmN1X3JlYWRfbG9jaygpO1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjEwMDpcdGFmaW5mbyA9IHJjdV9kZXJlZmVyZW5jZSh4ZnJtX2lucHV0X2FmaW5mb1tpc19pcGlwXVtmYW1pbHldKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy0xMDEtXHRpZiAodW5saWtlbHkoIWFmaW5mbykpXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTEwNj1zdGF0aWMgaW50IHhmcm1fcmN2X2NiKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBmYW1pbHksIHU4IHByb3RvY29sLFxuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYy0xMDktXHRib29sIGlzX2lwaXAgPSAocHJvdG9jb2wgPT0gSVBQUk9UT19JUElQIHx8IHByb3RvY29sID09IElQUFJPVE9fSVBWNik7XG5uZXQveGZybS94ZnJtX2lucHV0LmM6MTEwOlx0Y29uc3Qgc3RydWN0IHhmcm1faW5wdXRfYWZpbmZvICphZmluZm87XG5uZXQveGZybS94ZnJtX2lucHV0LmMtMTExLVx0aW50IHJldDtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy0xMTItXG5uZXQveGZybS94ZnJtX2lucHV0LmM6MTEzOlx0YWZpbmZvID0geGZybV9pbnB1dF9nZXRfYWZpbmZvKGZhbWlseSwgaXNfaXBpcCk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtMTE0LVx0aWYgKCFhZmluZm8pXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTQzNT1zdGF0aWMgaW50IHhmcm1faW5uZXJfbW9kZV9pbnB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDY1LSAqL1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ2NjppbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDY3LXtcbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDg3LVx0XHRcdFx0ICAgICAgZW5jYXBfdHlwZSA9PSBVRFBfRU5DQVBfRVNQSU5VRFApKSkge1xubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ4ODpcdFx0eCA9IHhmcm1faW5wdXRfc3RhdGUoc2tiKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00ODktXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTU5Ny1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo1OTg6XHRcdHggPSB4ZnJtX2lucHV0X3N0YXRlX2xvb2t1cChuZXQsIG1hcmssIGRhZGRyLCBzcGksIG5leHRoZHIsIGZhbWlseSk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtNTk5LVx0XHRpZiAoeCA9PSBOVUxMKSB7XG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTc5NC19XG5uZXQveGZybS94ZnJtX2lucHV0LmM6Nzk1OkVYUE9SVF9TWU1CT0woeGZybV9pbnB1dCk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzk2LVxubmV0L3hmcm0veGZybV9pbnB1dC5jOjc5NzppbnQgeGZybV9pbnB1dF9yZXN1bWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIpXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzk4LXtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3OTk6XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIDAsIC0xKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04MDAtfVxubmV0L3hmcm0veGZybV9pbnB1dC5jOjgwMTpFWFBPUlRfU1lNQk9MKHhmcm1faW5wdXRfcmVzdW1lKTtcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04MDItXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTg1OD1FWFBPUlRfU1lNQk9MKHhmcm1fdHJhbnNfcXVldWUpO1xubmV0L3hmcm0veGZybV9pbnB1dC5jLTg1OS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo4NjA6dm9pZCBfX2luaXQgeGZybV9pbnB1dF9pbml0KHZvaWQpXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODYxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcxNAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFNlY3VyaXR5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgeGZybV9pbnB1dGAgd2l0aGluIGBuZXQveGZybS94ZnJtX2lucHV0LmNgLiBJIHNlZSB0aGF0IGl0JiMzOTtzIHRvdWNoaW5nIGEga2V5IGZ1bmN0aW9uLCBgeGZybV9pbnB1dGAsIHdoaWNoIGlzICpleHBvcnRlZCosIG1lYW5pbmcgaXQmIzM5O3MgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGFuZCwgY3JpdGljYWxseSwgaW52b2x2ZWQgaW4gSVBzZWMgcGFja2V0IHByb2Nlc3NpbmcuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIG15IGV5ZWJyb3dzIOKAkyBhbnkgY2hhbmdlIGhlcmUgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW1wYWN0IGEgY29yZSBzZWN1cml0eSBmdW5jdGlvbi4KClRoZSBjb3JlIG9mIHRoZSBwYXRjaCByZXZvbHZlcyBhcm91bmQgYWRkaW5nIGB4ZnJtX3N0YXRlX2hvbGQoeClgIGFuZCBgeGZybV9zdGF0ZV9wdXQoeClgLiBUaGlzIHNjcmVhbXMgcmVmY291bnRpbmcgb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlLiBUaGV5JiMzOTtyZSBjbGVhcmx5IHRyeWluZyB0byBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBhbiBgeGZybV9zdGF0ZWAgb2JqZWN0IChgeGApIG1vcmUgY2FyZWZ1bGx5LiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYW5kIGl0JiMzOTtzIGZsYWdnZWQgYXMgYFdvcnRoRnV6emluZz10cnVlYCwgd2hpY2ggSSBhZ3JlZSB3aXRoOyBJUHNlYyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgcG9pbnRzIGhlcmUgYXJlIGNsZWFybHkgYHhmcm1faW5wdXRgIGl0c2VsZiwgYW5kIGFsc28gYHhmcm1faW5wdXRfcmVzdW1lYCwgYmVjYXVzZSB0aGF0JiMzOTtzIGEgZGlyZWN0IGNhbGxlci4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyB0aG9zZSBjYWxscyBhZmZlY3QgdGhlIG92ZXJhbGwgc3RhdGUgbWFuYWdlbWVudC4gTGV0JiMzOTtzIHNlZSBpZiBvdGhlciBmdW5jdGlvbnMgY2FsbCBgeGZybV9pbnB1dGAgYXMgd2VsbC4uLgoKVGhpcyBwYXRjaCBsaWtlbHkgcmVxdWlyZXMgY29uZmlndXJhdGlvbnMgYFhGUk1fVVNFUmAsIGBJTkVUX0VTUGAsIGBJTkVUX0FIYCwgYElORVQ2X0VTUGAgYW5kIGBJTkVUNl9BSGAsIGFsbCBvZiB3aGljaCBhcmUgY29tbW9uIHdpdGggSVBzZWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faW5wdXRcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9kZXZpY2UucnN0PTE1Nz1JUHNlYyBoZWFkZXJzIGFyZSBzdGlsbCBpbiB0aGUgcGFja2V0IGRhdGE7IHRoZXkgYXJlIHJlbW92ZWQgbGF0ZXIgdXBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fZGV2aWNlLnJzdDoxNTg6dGhlIHN0YWNrIGluIHhmcm1faW5wdXQoKS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fZGV2aWNlLnJzdC0xNTktXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTE3OTc9aW50IHhmcm1faW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmluY2x1ZGUvbmV0L3hmcm0uaDoxNzk4OmludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSk7XG5pbmNsdWRlL25ldC94ZnJtLmgtMTc5OS1pbnQgeGZybV9pbnB1dF9yZXN1bWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIpO1xuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0xODI4PXN0YXRpYyBpbmxpbmUgaW50IHhmcm00X3Jjdl9zcGkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGkpXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTE4MzItXHRYRlJNX1NQSV9TS0JfQ0Ioc2tiKS1cdTAwM2VkYWRkcm9mZiA9IG9mZnNldG9mKHN0cnVjdCBpcGhkciwgZGFkZHIpO1xuaW5jbHVkZS9uZXQveGZybS5oOjE4MzM6XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgMCk7XG5pbmNsdWRlL25ldC94ZnJtLmgtMTgzNC19XG4tLVxubmV0L2lwdjQvZXNwNF9vZmZsb2FkLmM9MzA9c3RhdGljIHN0cnVjdCBza19idWZmICplc3A0X2dyb19yZWNlaXZlKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxubmV0L2lwdjQvZXNwNF9vZmZsb2FkLmMtOTAtXHQgKiB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGZyZWVzIHRoZSByZXNvdXJjZXMgb24gZXJyb3IuICovXG5uZXQvaXB2NC9lc3A0X29mZmxvYWQuYzo5MTpcdHhmcm1faW5wdXQoc2tiLCBJUFBST1RPX0VTUCwgc3BpLCBlbmNhcF90eXBlKTtcbm5ldC9pcHY0L2VzcDRfb2ZmbG9hZC5jLTkyLVxuLS1cbm5ldC9pcHY0L2lwX3Z0aS5jPTQ3PXN0YXRpYyBpbnQgdnRpX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLFxuLS1cbm5ldC9pcHY0L2lwX3Z0aS5jLTY4LVxubmV0L2lwdjQvaXBfdnRpLmM6Njk6XHRcdHJldHVybiB4ZnJtX2lucHV0KHNrYiwgbmV4dGhkciwgc3BpLCBlbmNhcF90eXBlKTtcbm5ldC9pcHY0L2lwX3Z0aS5jLTcwLVx0fVxuLS1cbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jPTUzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZXNwNl9ncm9fcmVjZWl2ZShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxuLS1cbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jLTExOS1cdCAqIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgZnJlZXMgdGhlIHJlc291cmNlcyBvbiBlcnJvci4gKi9cbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jOjEyMDpcdHhmcm1faW5wdXQoc2tiLCBJUFBST1RPX0VTUCwgc3BpLCBlbmNhcF90eXBlKTtcbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jLTEyMS1cbi0tXG5uZXQvaXB2Ni9pcDZfdnRpLmM9Mjk2PXN0YXRpYyBpbnQgdnRpNl9pbnB1dF9wcm90byhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSxcbi0tXG5uZXQvaXB2Ni9pcDZfdnRpLmMtMzI2LVx0XHRYRlJNX1NQSV9TS0JfQ0Ioc2tiKS1cdTAwM2VkYWRkcm9mZiA9IG9mZnNldG9mKHN0cnVjdCBpcHY2aGRyLCBkYWRkcik7XG5uZXQvaXB2Ni9pcDZfdnRpLmM6MzI3Olx0XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgZW5jYXBfdHlwZSk7XG5uZXQvaXB2Ni9pcDZfdnRpLmMtMzI4LVx0fVxuLS1cbm5ldC9pcHY2L3hmcm02X2lucHV0LmM9MjI9aW50IHhmcm02X3Jjdl9zcGkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksXG4tLVxubmV0L2lwdjYveGZybTZfaW5wdXQuYy0yNy1cdFhGUk1fU1BJX1NLQl9DQihza2IpLVx1MDAzZWRhZGRyb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGlwdjZoZHIsIGRhZGRyKTtcbm5ldC9pcHY2L3hmcm02X2lucHV0LmM6Mjg6XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgMCk7XG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jLTI5LX1cbi0tXG5uZXQveGZybS94ZnJtX2lucHV0LmM9NDM1PXN0YXRpYyBpbnQgeGZybV9pbm5lcl9tb2RlX2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00NjUtICovXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NDY2OmludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00Njcte1xuLS1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYz03OTc9aW50IHhmcm1faW5wdXRfcmVzdW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyKVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTc5OC17XG5uZXQveGZybS94ZnJtX2lucHV0LmM6Nzk5Olx0cmV0dXJuIHhmcm1faW5wdXQoc2tiLCBuZXh0aGRyLCAwLCAtMSk7XG5uZXQveGZybS94ZnJtX2lucHV0LmMtODAwLX1cbi0tXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM9MzEyPXN0YXRpYyBpbnQgeGZybWlfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksXG4tLVxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTMzMC1cbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYzozMzE6XHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgZW5jYXBfdHlwZSk7XG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmMtMzMyLWRpc2NhcmQ6XG4tLVxubmV0L3hmcm0veGZybV9pcHRmcy5jPTk0Mz1zdGF0aWMgYm9vbCBfX2lucHV0X3Byb2Nlc3NfcGF5bG9hZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgdTMyIGRhdGEsXG4tLVxubmV0L3hmcm0veGZybV9pcHRmcy5jLTExOTAtXHRcdHNrYl9saXN0X2RlbF9pbml0KHNrYik7XG5uZXQveGZybS94ZnJtX2lwdGZzLmM6MTE5MTpcdFx0aWYgKHhmcm1faW5wdXQoc2tiLCAwLCAwLCAtMikpXG5uZXQveGZybS94ZnJtX2lwdGZzLmMtMTE5Mi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3OTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBwYWNrZXRzIGFyZSBoYW5kbGVkLCBhbmQgaXQgc2VlbXMgbGlrZSBgeGZybV9pbnB1dGAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgYnkgYSB3aG9sZSBob3N0IG9mIGZ1bmN0aW9uczogYHhmcm00X3Jjdl9zcGlgLCBgZXNwNF9ncm9fcmVjZWl2ZWAsIGB2dGlfaW5wdXRgLCBgZXNwNl9ncm9fcmVjZWl2ZWAsIGB2dGk2X2lucHV0X3Byb3RvYCwgYHhmcm02X3Jjdl9zcGlgLCBgeGZybV9pbnB1dF9yZXN1bWVgLCBgeGZybWlfaW5wdXRgLCBhbmQgYF9faW5wdXRfcHJvY2Vzc19wYXlsb2FkYC4gVGhhdCYjMzk7cyBhIGxvdCBvZiBlbnRyeSBwb2ludHMsIGluZGljYXRpbmcgaXRzIGNlbnRyYWwgcm9sZSBpbiB0aGUgcHJvY2Vzc2luZyBwaXBlbGluZS4gR2l2ZW4gdGhpcywgaXQgbWFrZXMgc2Vuc2UgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHVuZGVyc3RhbmRpbmcgaG93IGB4ZnJtX2lucHV0YCBvcGVyYXRlcy4gSXQmIzM5O3MgdGhlIGx5bmNocGluLCBpdCBzZWVtcy4gTXkgbmV4dCBzdGVwIHNob3VsZCBiZSB0byBsb29rIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gc3Vycm91bmRpbmcgYHhmcm1pX2lucHV0YCwgc3BlY2lmaWNhbGx5IHRoZSBgWEZSTV9JTlRFUkZBQ0VgIHNldHRpbmdzLCB0byBzZWUgaG93IHRoYXQgaW5mbHVlbmNlcyB0aGUgb3ZlcmFsbCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fSU5URVJGQUNFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnPTMyPWNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG4tLVxubmV0L3hmcm0vS2NvbmZpZy00Mi1cbm5ldC94ZnJtL0tjb25maWc6NDM6Y29uZmlnIFhGUk1fSU5URVJGQUNFXG5uZXQveGZybS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdmlydHVhbCBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6CgoqKkNvbmZpZ3VyYXRpb24gQWRkaXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdXBkYXRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gbGlzdHMuIEkmIzM5O3ZlIGdvdCB0byBtYWtlIHN1cmUgdG8gaW5jbHVkZSBgWEZSTV9JTlRFUkZBQ0VgIGluIHRoZSBtaXgsIGFzIEkgYW50aWNpcGF0ZSBuZWVkaW5nIHRoYXQgZnVuY3Rpb25hbGl0eS4gVGhlbiBJIG5lZWQgdG8gYnJpbmcgaW4gYElQVjZfVlRJYCBhbmQgYE5FVF9JUFZUSWAgYXMgd2VsbC4gVGhlc2UgYXJlIGNydWNpYWwgY29tcG9uZW50cywgYW5kIEkgc2hvdWxkbiYjMzk7dCBvdmVybG9vayB0aGVtLiBHaXZlbiB0aGF0IEkmIzM5O20gY29uc2lkZXJpbmcgdGhlc2UgaW4gdGFuZGVtLCB0aGlzIHBvaW50cyB0byBzcGVjaWZpYyB1c2UtY2FzZXMgdGhhdCBJJiMzOTttIGRyaXZpbmcgdG93YXJkcyB0aGF0IG5lY2Vzc2l0YXRlcyB0aGVzZSBhZGRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfSVBWVEkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MjY4PWNvbmZpZyBTWU5fQ09PS0lFU1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzAzLVxubmV0L2lwdjQvS2NvbmZpZzozMDQ6Y29uZmlnIE5FVF9JUFZUSVxubmV0L2lwdjQvS2NvbmZpZy0zMDUtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIChzZWN1cmUpIElQOiB0dW5uZWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1MjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBMYW5kc2NhcGUqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyBpbnRvIGFueXRoaW5nIGVsc2UsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYElQVjZfVlRJYC4gVGhpcyBsaWtlbHkgaW1wbGllcyBhIG5ldHdvcmsgY29uZmlndXJhdGlvbiBzY2VuYXJpbywgc3BlY2lmaWNhbGx5IGludm9sdmluZyBJUHY2IFZpcnR1YWwgVHVubmVsIEludGVyZmFjZXMuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIHByb2JhYmx5IGRlYWxpbmcgd2l0aCBlaXRoZXIgYSByb3V0aW5nIG9yIHNlY3VyaXR5IGNvbnRleHQuIFRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgdGhpcyBpcyByZWxhdGVkIHRvIGhvdyBJUHY2IHRyYWZmaWMgaXMgZW5jYXBzdWxhdGVkIG9yIGhhbmRsZWQgd2l0aGluIGEgbmV0d29yaywgcG90ZW50aWFsbHkgYWNyb3NzIGRpZmZlcmluZyBhZG1pbmlzdHJhdGl2ZSBkb21haW5zIG9yIHRvIGJ5cGFzcyBjZXJ0YWluIG5ldHdvcmsgcmVzdHJpY3Rpb25zLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluIGF1dG9tYXRpY2FsbHk6IERvZXMgdGhpcyBpbnZvbHZlIHN0YXRpYyByb3V0ZXMsIGR5bmFtaWMgcm91dGluZyBwcm90b2NvbHMsIHBvbGljeS1iYXNlZCByb3V0aW5nLCBvciBwZXJoYXBzIGV2ZW4gVlBOIHR1bm5lbGluZyB3aXRoIGFuIElQdjYgZm9jdXM/IEkgbmVlZCB0byBjbGFyaWZ5IHRoZSAqc3BlY2lmaWMqIHB1cnBvc2UgYW5kIGZ1bmN0aW9uIG9mIHRoZXNlIFZUSSBpbnRlcmZhY2VzIHdpdGhpbiB0aGUgZ3JlYXRlciBuZXR3b3JrIGFyY2hpdGVjdHVyZS4gSXQmIzM5O3MgYSBzdGFydGluZyBwb2ludCB0byBiZWdpbiB0aGUgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfVlRJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNDktXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcbm5ldC9pcHY2L0tjb25maWctMTUxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4NTkKCQkJCQkJCW91dHB1dDogMTU4CgkJCQkJCQl0aG91Z2h0czogMTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUHNlYy9YRlJNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIHdlJiMzOTtyZSBhZGRpbmcgYE5FVF9JUFZUSWAgYW5kIGBJUFY2X1ZUSWAuIE1ha2VzIHNlbnNlLCB0aGVzZSBhcmUgaW1wb3J0YW50IGZvciBzdXBwb3J0aW5nIHRoZSBuZXcgdmlydHVhbCB0dW5uZWwgaW50ZXJmYWNlcy4mIzM0OyBJIHNlZSBpdCYjMzk7cyBhbHNvIGJyaW5naW5nIGluIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBgWEZSTV9VU0VSYCwgYElORVRfRVNQYCwgYElORVRfQUhgLCB0aGUgSVB2NiBlcXVpdmFsZW50cywgYFhGUk1fSU5URVJGQUNFYCwgYW5kIHRoZSBWVEkgc3VwcG9ydCBJIGp1c3QgbWVudGlvbmVkLiBHb29kLCBnb29kLCBhbGwgdGhlIGRlcGVuZGVuY2llcyBzZWVtIHRvIGJlIHRoZXJlLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIHdpdGhpbiBgeGZybV9pbnB1dGAuIEFoLCBJIHNlZSwgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIOKAkyBhIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIHByb2JsZW0uIEJ5IGV4cGxpY2l0bHkgaG9sZGluZyBhbmQgcHV0dGluZyB0aGUgYHhmcm1fc3RhdGVgIHJlZmVyZW5jZSwgdGhlIHBhdGNoIGlzIGVuc3VyaW5nIHRoZSBkYXRhIHJlbWFpbnMgdmFsaWQgZHVyaW5nIHByb2Nlc3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSByZWFjaGFibGUgbmV0d29ya2luZyBjb2RlLCBzbyB0aGlzIGlzIGltcG9ydGFudCB0byBnZXQgcmlnaHQuIEl0IHRhcmdldHMgYHhmcm1faW5wdXRgIGFuZCBgeGZybV9pbnB1dF9yZXN1bWVgLCB0aGUgY3JpdGljYWwgcGF0aHMgZm9yIHBhY2tldCBwcm9jZXNzaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhvc2UgZnVuY3Rpb25zIHdoZW4gSSYjMzk7bSByZXZpZXdpbmcgdGhlIGltcGxlbWVudGF0aW9uLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgYWJvdXQgdGhpcyBub3csIEkmIzM5O20gZ29pbmcgdG8gcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDEzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7SU5FVF9FU1AmIzM0OywKICAgICYjMzQ7SU5FVF9BSCYjMzQ7LAogICAgJiMzNDtJTkVUNl9FU1AmIzM0OywKICAgICYjMzQ7SU5FVDZfQUgmIzM0OywKICAgICYjMzQ7WEZSTV9JTlRFUkZBQ0UmIzM0OywKICAgICYjMzQ7TkVUX0lQVlRJJiMzNDssCiAgICAmIzM0O0lQVjZfVlRJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9pbnB1dCYjMzQ7LAogICAgJiMzNDt4ZnJtX2lucHV0X3Jlc3VtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgeGZybV9pbnB1dGAgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdGFjayB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWUgYnkgZXhwbGljaXRseSBob2xkaW5nIGFuZCBwdXR0aW5nIHRoZSBgeGZybV9zdGF0ZWAgcmVmZXJlbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDssCiAgICAmIzM0O0lORVRfRVNQJiMzNDssCiAgICAmIzM0O0lORVRfQUgmIzM0OywKICAgICYjMzQ7SU5FVDZfRVNQJiMzNDssCiAgICAmIzM0O0lORVQ2X0FIJiMzNDssCiAgICAmIzM0O1hGUk1fSU5URVJGQUNFJiMzNDssCiAgICAmIzM0O05FVF9JUFZUSSYjMzQ7LAogICAgJiMzNDtJUFY2X1ZUSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faW5wdXQmIzM0OywKICAgICYjMzQ7eGZybV9pbnB1dF9yZXN1bWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHhmcm1faW5wdXRgIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3RhY2sgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3VlIGJ5IGV4cGxpY2l0bHkgaG9sZGluZyBhbmQgcHV0dGluZyB0aGUgYHhmcm1fc3RhdGVgIHJlZmVyZW5jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjowMS41NDI1MzcwODZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTIyMjAzMTgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIklORVRfRVNQXCIsXG4gICAgXCJJTkVUX0FIXCIsXG4gICAgXCJJTkVUNl9FU1BcIixcbiAgICBcIklORVQ2X0FIXCIsXG4gICAgXCJYRlJNX0lOVEVSRkFDRVwiLFxuICAgIFwiTkVUX0lQVlRJXCIsXG4gICAgXCJJUFY2X1ZUSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faW5wdXRcIixcbiAgICBcInhmcm1faW5wdXRfcmVzdW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHhmcm1faW5wdXRgIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3RhY2sgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3VlIGJ5IGV4cGxpY2l0bHkgaG9sZGluZyBhbmQgcHV0dGluZyB0aGUgYHhmcm1fc3RhdGVgIHJlZmVyZW5jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjAxLjU0MjU0NTY0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1NjI4NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWMzOTViMjU2OTk2ZmVlMTA4YTE1NjkxNjI2ODg1OWMyN2I4YjZiNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyOCAxMzozNTo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX2lucHV0LmMgYi9uZXQveGZybS94ZnJtX2lucHV0LmNcXG5pbmRleCBlZWNhYjMzN2JkMGE3OS4uZjRkZWNhOGI0YWFiMjYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9pbnB1dC5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9pbnB1dC5jXFxuQEAgLTQ3OSw2ICs0NzksNyBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXFxuIFxcdGludCBhc3luYyA9IDA7XFxuIFxcdGJvb2wgeGZybV9ncm8gPSBmYWxzZTtcXG4gXFx0Ym9vbCBjcnlwdG9fZG9uZSA9IGZhbHNlO1xcbitcXHRib29sIHhfaGVsZCA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgeGZybV9vZmZsb2FkICp4byA9IHhmcm1fb2ZmbG9hZChza2IpO1xcbiBcXHRzdHJ1Y3Qgc2VjX3BhdGggKnNwO1xcbiBcXG5AQCAtNTg1LDYgKzU4NiwxMCBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXFxuIFxcdFxcdHNwID0gc2tiX3NlY19wYXRoKHNrYik7XFxuIFxcbiBcXHRcXHRpZiAoc3AtXFx1MDAzZWxlbiA9PSBYRlJNX01BWF9ERVBUSCkge1xcbitcXHRcXHRcXHRpZiAoeCkge1xcbitcXHRcXHRcXHRcXHR4ZnJtX3N0YXRlX2hvbGQoeCk7XFxuK1xcdFxcdFxcdFxcdHhfaGVsZCA9IHRydWU7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0XFx0c2VjcGF0aF9yZXNldChza2IpO1xcbiBcXHRcXHRcXHRYRlJNX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9YRlJNSU5CVUZGRVJFUlJPUik7XFxuIFxcdFxcdFxcdGdvdG8gZHJvcDtcXG5AQCAtNzI3LDYgKzczMiw5IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcXG4gXFx0XFx0Y3J5cHRvX2RvbmUgPSBmYWxzZTtcXG4gXFx0fSB3aGlsZSAoIWVycik7XFxuIFxcbitcXHR4ZnJtX3N0YXRlX2hvbGQoeCk7XFxuK1xcdHhfaGVsZCA9IHRydWU7XFxuK1xcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdGVyciA9IHhmcm1fcmN2X2NiKHNrYiwgZmFtaWx5LCB4LVxcdTAwM2V0eXBlLVxcdTAwM2Vwcm90bywgMCk7XFxuIFxcdGlmIChlcnIpIHtcXG5AQCAtNzQ2LDYgKzc1NCw3IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcXG4gXFx0XFx0XFx0ZGV2X3B1dChkZXYpO1xcbiBcXHRcXHRncm9fY2VsbHNfcmVjZWl2ZShcXHUwMDI2Z3JvX2NlbGxzLCBza2IpO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0eGZybV9zdGF0ZV9wdXQoeCk7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHR4byA9IHhmcm1fb2ZmbG9hZChza2IpO1xcbkBAIC03NjgsNiArNzc3LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxcbiBcXHRcXHRpZiAoYXN5bmMpXFxuIFxcdFxcdFxcdGRldl9wdXQoZGV2KTtcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdFxcdHhmcm1fc3RhdGVfcHV0KHgpO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcbkBAIC03NzcsNiArNzg3LDggQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxcbiBcXHRpZiAoYXN5bmMpXFxuIFxcdFxcdGRldl9wdXQoZGV2KTtcXG4gXFx0eGZybV9yY3ZfY2Ioc2tiLCBmYW1pbHksIHggXFx1MDAyNlxcdTAwMjYgeC1cXHUwMDNldHlwZSA/IHgtXFx1MDAzZXR5cGUtXFx1MDAzZXByb3RvIDogbmV4dGhkciwgLTEpO1xcbitcXHRpZiAoeF9oZWxkKVxcbitcXHRcXHR4ZnJtX3N0YXRlX3B1dCh4KTtcXG4gXFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjAyLjA0ODkwOTQ4OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwNzE1NjUwODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiLFxuICAgIFwiSU5FVF9FU1BcIixcbiAgICBcIklORVRfQUhcIixcbiAgICBcIklORVQ2X0VTUFwiLFxuICAgIFwiSU5FVDZfQUhcIixcbiAgICBcIlhGUk1fSU5URVJGQUNFXCIsXG4gICAgXCJORVRfSVBWVElcIixcbiAgICBcIklQVjZfVlRJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9pbnB1dFwiLFxuICAgIFwieGZybV9pbnB1dF9yZXN1bWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgeGZybV9pbnB1dGAgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdGFjayB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWUgYnkgZXhwbGljaXRseSBob2xkaW5nIGFuZCBwdXR0aW5nIHRoZSBgeGZybV9zdGF0ZWAgcmVmZXJlbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWMzOTViMjU2OTk2ZmVlMTA4YTE1NjkxNjI2ODg1OWMyN2I4YjZiNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDEzOjM1OjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9pbnB1dC5jIGIvbmV0L3hmcm0veGZybV9pbnB1dC5jXG5pbmRleCBlZWNhYjMzN2JkMGE3OS4uZjRkZWNhOGI0YWFiMjYgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX2lucHV0LmNcbisrKyBiL25ldC94ZnJtL3hmcm1faW5wdXQuY1xuQEAgLTQ3OSw2ICs0NzksNyBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG4gXHRpbnQgYXN5bmMgPSAwO1xuIFx0Ym9vbCB4ZnJtX2dybyA9IGZhbHNlO1xuIFx0Ym9vbCBjcnlwdG9fZG9uZSA9IGZhbHNlO1xuK1x0Ym9vbCB4X2hlbGQgPSBmYWxzZTtcbiBcdHN0cnVjdCB4ZnJtX29mZmxvYWQgKnhvID0geGZybV9vZmZsb2FkKHNrYik7XG4gXHRzdHJ1Y3Qgc2VjX3BhdGggKnNwO1xuIFxuQEAgLTU4NSw2ICs1ODYsMTAgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0XHRzcCA9IHNrYl9zZWNfcGF0aChza2IpO1xuIFxuIFx0XHRpZiAoc3AtXHUwMDNlbGVuID09IFhGUk1fTUFYX0RFUFRIKSB7XG4rXHRcdFx0aWYgKHgpIHtcbitcdFx0XHRcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbitcdFx0XHRcdHhfaGVsZCA9IHRydWU7XG4rXHRcdFx0fVxuIFx0XHRcdHNlY3BhdGhfcmVzZXQoc2tiKTtcbiBcdFx0XHRYRlJNX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9YRlJNSU5CVUZGRVJFUlJPUik7XG4gXHRcdFx0Z290byBkcm9wO1xuQEAgLTcyNyw2ICs3MzIsOSBAQCBpbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG4gXHRcdGNyeXB0b19kb25lID0gZmFsc2U7XG4gXHR9IHdoaWxlICghZXJyKTtcbiBcbitcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbitcdHhfaGVsZCA9IHRydWU7XG4rXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRlcnIgPSB4ZnJtX3Jjdl9jYihza2IsIGZhbWlseSwgeC1cdTAwM2V0eXBlLVx1MDAzZXByb3RvLCAwKTtcbiBcdGlmIChlcnIpIHtcbkBAIC03NDYsNiArNzU0LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0XHRcdGRldl9wdXQoZGV2KTtcbiBcdFx0Z3JvX2NlbGxzX3JlY2VpdmUoXHUwMDI2Z3JvX2NlbGxzLCBza2IpO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcdFx0eGZybV9zdGF0ZV9wdXQoeCk7XG4gXHRcdHJldHVybiAwO1xuIFx0fSBlbHNlIHtcbiBcdFx0eG8gPSB4ZnJtX29mZmxvYWQoc2tiKTtcbkBAIC03NjgsNiArNzc3LDcgQEAgaW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxuIFx0XHRpZiAoYXN5bmMpXG4gXHRcdFx0ZGV2X3B1dChkZXYpO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcdFx0eGZybV9zdGF0ZV9wdXQoeCk7XG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG5AQCAtNzc3LDYgKzc4Nyw4IEBAIGludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSlcbiBcdGlmIChhc3luYylcbiBcdFx0ZGV2X3B1dChkZXYpO1xuIFx0eGZybV9yY3ZfY2Ioc2tiLCBmYW1pbHksIHggXHUwMDI2XHUwMDI2IHgtXHUwMDNldHlwZSA/IHgtXHUwMDNldHlwZS1cdTAwM2Vwcm90byA6IG5leHRoZHIsIC0xKTtcbitcdGlmICh4X2hlbGQpXG4rXHRcdHhmcm1fc3RhdGVfcHV0KHgpO1xuIFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRyZXR1cm4gMDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjowMi4wNDg5MTA3NjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkxNDY4ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWEZSTSBJbnB1dCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIGNoYW5nZXMgdG8gYG5ldC94ZnJtL3hmcm1faW5wdXQuY2AuIEkgc2VlIGl0J3MgYWJvdXQgYWRkaW5nIHJlZmVyZW5jZSBjb3VudGluZyB0byB0aGUgYHhmcm1faW5wdXRgIGZ1bmN0aW9uIHVzaW5nIGB4ZnJtX3N0YXRlX2hvbGQoeClgIGFuZCBgeGZybV9zdGF0ZV9wdXQoeClgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBjb3JlIG5ldHdvcmtpbmcgY2hhbmdlOyB3ZSdyZSB0YWxraW5nIGFib3V0IFhGUk0sIHRoZSBoZWFydCBvZiBJUHNlYy4gSXQncyBmdW5jdGlvbmFsLCBtZWFuaW5nIGl0J3MgZ29pbmcgdG8gY2hhbmdlIGhvdyB0aGluZ3MgKndvcmsqLiBHb29kLCB0aGF0IG1ha2VzIHRlc3Rpbmcgc3RyYWlnaHRmb3J3YXJkLCB0aG91Z2ggSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgcmVhY2hhYmxlIGNvZGUgcGF0aHMuIExldCdzIGRpZyBpbnRvIHRoYXQgYHhmcm1faW5wdXRgIGZ1bmN0aW9uIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGVyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIGJlaW5nIGFkZGVkIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLlxuXG5UaGUgZmlyc3QgdGhpbmcgdG8gY2hlY2sgaXMgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJ20gZXhwZWN0aW5nIHRoZSBwcmltYXJ5IG9uZSB0byBiZSBgQ09ORklHX1hGUk1gLCBzaW5jZSB0aGF0J3MgdGhlIG1haW4gZW5hYmxlciBmb3IgdGhlIGVudGlyZSBzdWJzeXN0ZW0uIEdvdHRhIG1ha2Ugc3VyZSB0aGUgY29uZGl0aW9uYWwgbG9naWMgYW5kIGNvbmZpZ3VyYXRpb25zIGFyb3VuZCB0aGlzIGNoYW5nZSBhcmUgcm9idXN0LCBwYXJ0aWN1bGFybHkgcmVnYXJkaW5nIGRpZmZlcmVudCBYRlJNIHNldHVwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwMiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjA2LjQ0MDM4MjkxMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQ2OTQ1MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnLTQtI1xcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxcbm5ldC94ZnJtL0tjb25maWctNi1cXHRib29sXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEwLVxcbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL0tjb25maWctMTItXFx0Ym9vbFxcbm5ldC94ZnJtL0tjb25maWctMTMtXFxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTQyLVxcbm5ldC94ZnJtL0tjb25maWc6NDM6Y29uZmlnIFhGUk1fSU5URVJGQUNFXFxubmV0L3hmcm0vS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdmlydHVhbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTUwLVxcbm5ldC94ZnJtL0tjb25maWc6NTE6Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxcbm5ldC94ZnJtL0tjb25maWctNTItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3ViIHBvbGljeSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy02MC1cXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTYyLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTcxLVxcbm5ldC94ZnJtL0tjb25maWc6NzI6Y29uZmlnIFhGUk1fU1RBVElTVElDU1xcbm5ldC94ZnJtL0tjb25maWctNzMtXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1xcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctODMtIyBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxcbm5ldC94ZnJtL0tjb25maWc6ODQ6Y29uZmlnIFhGUk1fQUhcXG5uZXQveGZybS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo5Mzpjb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEwNS1cXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMjU9Y29uZmlnIE5FVF9LRVlfTUlHUkFURVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXFxubmV0L3hmcm0vS2NvbmZpZzoxNDE6Y29uZmlnIFhGUk1fSVBURlNcXG5uZXQveGZybS9LY29uZmlnLTE0Mi1cXHR0cmlzdGF0ZSBcXFwiSVBzZWMgSVAtVEZTL0FHR0ZSQUcgKFJGQyA5MzQ3KSBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE1Ni1cXG5uZXQveGZybS9LY29uZmlnOjE1Nzpjb25maWcgWEZSTV9FU1BJTlRDUFxcbm5ldC94ZnJtL0tjb25maWctMTU4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTM6MzY6MDYuODk1MDg1ODA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNzcxMDk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgWEZSTSBCdWlsZCBQcm9jZXNzKipcblxuUmlnaHQsIGBYRlJNYCBpcyBhIGJvb2xlYW4sIGFuZCBgWEZSTV9VU0VSYCBkZWZpbmVzIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSDigJMgc3RhbmRhcmQgc3R1ZmYgZm9yIHRoZSBYRlJNIHN1YnN5c3RlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHhmcm1faW5wdXQub2AgaXMgYmVpbmcgYnVpbHQuIFRoYXQncyBhIGNvcmUgY29tcG9uZW50LCBzbyBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIGBuZXQveGZybS9NYWtlZmlsZWAuIEl0J2xsIGhhdmUgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gSSBuZWVkLCBzcGVjaWZpY2FsbHksIHRoZSBydWxlcyB0aGF0IGRpY3RhdGUgaG93IGB4ZnJtX2lucHV0Lm9gIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQuIFRoYXQgc2hvdWxkIHJldmVhbCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg5NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjA5LjkyMjc5ODgyNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwMzUyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9pbnB1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlOjE1OlxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZS0xNi1cXHRcXHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjEwLjAyNTg0MDU4MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTAzNDExODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19YRlJNYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgaW4gdGhpcyBjYXNlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QsIG9mIGNvdXJzZSwgaXMgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8ga25vdyAqd2hhdCogaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBhY3R1YWxseSAqc2VsZWN0cyogYENPTkZJR19YRlJNYC4gSXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQga25vd2luZyB3aGVyZSBpdCdzIGNvbWluZyBmcm9tIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgdW5kZXJzdGFuZGluZyBmZWF0dXJlIGludGVyYWN0aW9ucywgb3IgcG90ZW50aWFsbHkgbW9kaWZ5aW5nIHRoZSBidWlsZC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZyBvcHRpb25zIHRlbGwgdXMuIFRpbWUgdG8gdHJhY2UgdGhlIHNlbGVjdHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjoxMi45MzYxODM3MzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzODg2MDI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgWEZSTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xOTQ9Y29uZmlnIElYR0JFX0lQU0VDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE5OC1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjE5OTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMDAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjA9Y29uZmlnIElYR0JFVkZfSVBTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI0LVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI1OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMwND1jb25maWcgTkVUX0lQVlRJXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTMwNy1cXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWc6MzA4OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjQvS2NvbmZpZy0zMDktXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMzk9Y29uZmlnIElORVRfQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0MC1cXHR0cmlzdGF0ZSBcXFwiSVA6IEFIIHRyYW5zZm9ybWF0aW9uXFxcIlxcbm5ldC9pcHY0L0tjb25maWc6MzQxOlxcdHNlbGVjdCBYRlJNX0FIXFxubmV0L2lwdjQvS2NvbmZpZy0zNDItXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zNTQ9Y29uZmlnIElORVRfRVNQXFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXFx0dHJpc3RhdGUgXFxcIklQOiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozNTY6XFx0c2VsZWN0IFhGUk1fRVNQXFxubmV0L2lwdjQvS2NvbmZpZy0zNTctXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzcxLVxcdGRlcGVuZHMgb24gSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnOjM3MjpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zODYtXFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY0L0tjb25maWc6Mzg3OlxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxubmV0L2lwdjQvS2NvbmZpZy0zODgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zOTQ9Y29uZmlnIElORVRfSVBDT01QXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM5Ni1cXHRzZWxlY3QgSU5FVF9YRlJNX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWc6Mzk3OlxcdHNlbGVjdCBYRlJNX0lQQ09NUFxcbm5ldC9pcHY0L0tjb25maWctMzk4LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9NDc9Y29uZmlnIElORVQ2X0FIXFxubmV0L2lwdjYvS2NvbmZpZy00OC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjYvS2NvbmZpZzo0OTpcXHRzZWxlY3QgWEZSTV9BSFxcbm5ldC9pcHY2L0tjb25maWctNTAtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz02Mj1jb25maWcgSU5FVDZfRVNQXFxubmV0L2lwdjYvS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uXFxcIlxcbm5ldC9pcHY2L0tjb25maWc6NjQ6XFx0c2VsZWN0IFhGUk1fRVNQXFxubmV0L2lwdjYvS2NvbmZpZy02NS1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTc3PWNvbmZpZyBJTkVUNl9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy03OS1cXHRkZXBlbmRzIG9uIElORVQ2X0VTUFxcbm5ldC9pcHY2L0tjb25maWc6ODA6XFx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxcbm5ldC9pcHY2L0tjb25maWctODEtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05NC1cXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjYvS2NvbmZpZzo5NTpcXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxcbm5ldC9pcHY2L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMDQtXFx0c2VsZWN0IElORVQ2X1hGUk1fVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZzoxMDU6XFx0c2VsZWN0IFhGUk1fSVBDT01QXFxubmV0L2lwdjYvS2NvbmZpZy0xMDYtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMTI9Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG5uZXQvaXB2Ni9LY29uZmlnOjExNDpcXHRzZWxlY3QgWEZSTVxcbm5ldC9pcHY2L0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNTMtXFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjE1NDpcXHRzZWxlY3QgWEZSTVxcbm5ldC9pcHY2L0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTQ9Y29uZmlnIFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTUtXFx0dHJpc3RhdGVcXG5uZXQveGZybS9LY29uZmlnOjE2OlxcdHNlbGVjdCBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy0xNy1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIzPWNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbm5ldC94ZnJtL0tjb25maWc6MjU6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMjYtXFx0aGVscFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz04ND1jb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG5uZXQveGZybS9LY29uZmlnOjg2OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTg3LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9OTM9Y29uZmlnIFhGUk1fRVNQXFxubmV0L3hmcm0vS2NvbmZpZy05NC1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6OTU6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctOTYtXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMDY9Y29uZmlnIFhGUk1fSVBDT01QXFxubmV0L3hmcm0vS2NvbmZpZy0xMDctXFx0dHJpc3RhdGVcXG5uZXQveGZybS9LY29uZmlnOjEwODpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xMDktXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcXG5uZXQveGZybS9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiUEZfS0VZIHNvY2tldHMgKGRlcHJlY2F0ZWQpXFxcIlxcbm5ldC94ZnJtL0tjb25maWc6MTE0OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTExNS1cXHRoZWxwXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEyNy1cXHRkZXBlbmRzIG9uIE5FVF9LRVlcXG5uZXQveGZybS9LY29uZmlnOjEyODpcXHRzZWxlY3QgWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0vS2NvbmZpZy0xMjktXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjoxNS43NzUwNDk0NTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTkzOTUzNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlOlxuXG4qKlhGUk0gQ29uZmlndXJhdGlvbiBmb3IgUm9idXN0IFRlc3RpbmcqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHN0cmF0ZWd5IGhlcmUgY2VudGVycyBvbiBnZXR0aW5nIHRoZSBYRlJNIHN1YnN5c3RlbSB1cCBhbmQgcnVubmluZyBpbiBhIHNvbGlkIHdheSBmb3IgdGVzdGluZy4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBJJ20gdGhpbmtpbmcgdGhhdCBlbmFibGluZyBgWEZSTV9VU0VSYCBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgaW5oZXJlbnRseSBzZWxlY3RzIGBYRlJNX0FMR09gLCB3aGljaCBpbiB0dXJuLCBwdWxscyBpbiB0aGUgY29yZSBgWEZSTWAgZnVuY3Rpb25hbGl0eS4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24uXG5cbk5vdywgZm9yIGFjdHVhbGx5ICpleGVyY2lzaW5nKiBYRlJNLCBJJ2QgdGhlbiBnbyBvbiB0byBlbmFibGUgdGhlIHJlbGV2YW50IHRyYW5zcG9ydCBwcm90b2NvbHMgdG8gYWxsb3cgZm9yIElQU2VjIG9wZXJhdGlvbnMsIHRoZSBvYnZpb3VzIG9uZXMgYmVpbmcgYElORVRfRVNQYCwgYElORVRfQUhgLCBgSU5FVDZfRVNQYCwgYW5kIGBJTkVUNl9BSGAuIFRoZXNlIGFyZSB0aGUgd29ya2hvcnNlczsgdGhleSBnaXZlIHVzIHRoZSB0cmFmZmljIHRvIGVuY3J5cHQsIGF1dGhlbnRpY2F0ZSwgYW5kIG9ic2VydmUgaG93IFhGUk0gaXMgaGFuZGxpbmcgdGhlIHByb2Nlc3NpbmcgYW5kIG1hbmFnZW1lbnQgb2YgdGhvc2UgU2VjdXJpdHkgQXNzb2NpYXRpb25zLlxuXG5XaXRoIHRoZSBjb25maWd1cmF0aW9uIGFzcGVjdHMgYWRkcmVzc2VkLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBjcml0aWNhbCBkYXRhIGZsb3cgcGF0aC4gVGhlcmVmb3JlLCBJIHNob3VsZCB0YWtlIGEgY2xvc2UgbG9vayBhdCB0aGUgYHhmcm1faW5wdXRgIGZ1bmN0aW9uLiBJdCdzIGxpa2VseSB0aGUga2V5IGVudHJ5IHBvaW50IGZvciBpbmJvdW5kIHBhY2tldHMgYW5kIHdoZXJlIHdlJ2xsIHNlZSB0aGUgWEZSTSB0cmFuc2Zvcm1hdGlvbiBsb2dpYyBhdCBwbGF5LCBhbmQgdGhhdCdzIHRoZSBhcmVhIHRoYXQgSSBuZWVkIHRvIGFuYWx5emUgdG8gZW5zdXJlIHByb3BlciBYRlJNIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE2OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjI0LjM2OTAwNzI5OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAyODk1MjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1faW5wdXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1faW5wdXQuYy0yLS8qXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjM6ICogeGZybV9pbnB1dC5jXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTQtICpcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYz0zND1zdHJ1Y3QgeGZybV90cmFuc19jYiB7XFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDYtXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ3OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soeGZybV9pbnB1dF9hZmluZm9fbG9jayk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ4OnN0YXRpYyBzdHJ1Y3QgeGZybV9pbnB1dF9hZmluZm8gY29uc3QgX19yY3UgKnhmcm1faW5wdXRfYWZpbmZvWzJdW0FGX0lORVQ2ICsgMV07XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTQ5LVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jPTUzPXN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgeGZybV90cmFuc190YXNrbGV0LCB4ZnJtX3RyYW5zX3Rhc2tsZXQpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy01NC1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NTU6aW50IHhmcm1faW5wdXRfcmVnaXN0ZXJfYWZpbmZvKGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqYWZpbmZvKVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy01Ni17XFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNjEtXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjYyOlxcdHNwaW5fbG9ja19iaChcXHUwMDI2eGZybV9pbnB1dF9hZmluZm9fbG9jayk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjYzOlxcdGlmICh1bmxpa2VseSh4ZnJtX2lucHV0X2FmaW5mb1thZmluZm8tXFx1MDAzZWlzX2lwaXBdW2FmaW5mby1cXHUwMDNlZmFtaWx5XSkpXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTY0LVxcdFxcdGVyciA9IC1FRVhJU1Q7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTY1LVxcdGVsc2VcXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NjY6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cXHUwMDNlaXNfaXBpcF1bYWZpbmZvLVxcdTAwM2VmYW1pbHldLCBhZmluZm8pO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo2NzpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2eGZybV9pbnB1dF9hZmluZm9fbG9jayk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTY4LVxcdHJldHVybiBlcnI7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTY5LX1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NzA6RVhQT1JUX1NZTUJPTCh4ZnJtX2lucHV0X3JlZ2lzdGVyX2FmaW5mbyk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTcxLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3MjppbnQgeGZybV9pbnB1dF91bnJlZ2lzdGVyX2FmaW5mbyhjb25zdCBzdHJ1Y3QgeGZybV9pbnB1dF9hZmluZm8gKmFmaW5mbylcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzMte1xcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTc1LVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3NjpcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnhmcm1faW5wdXRfYWZpbmZvX2xvY2spO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3NzpcXHRpZiAobGlrZWx5KHhmcm1faW5wdXRfYWZpbmZvW2FmaW5mby1cXHUwMDNlaXNfaXBpcF1bYWZpbmZvLVxcdTAwM2VmYW1pbHldKSkge1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3ODpcXHRcXHRjb25zdCBzdHJ1Y3QgeGZybV9pbnB1dF9hZmluZm8gKmN1cjtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzktXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjgwOlxcdFxcdGN1ciA9IHJjdV9hY2Nlc3NfcG9pbnRlcih4ZnJtX2lucHV0X2FmaW5mb1thZmluZm8tXFx1MDAzZWlzX2lwaXBdW2FmaW5mby1cXHUwMDNlZmFtaWx5XSk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTgxLVxcdFxcdGlmICh1bmxpa2VseShjdXIgIT0gYWZpbmZvKSlcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04My1cXHRcXHRlbHNlXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjg0OlxcdFxcdFxcdFJDVV9JTklUX1BPSU5URVIoeGZybV9pbnB1dF9hZmluZm9bYWZpbmZvLVxcdTAwM2Vpc19pcGlwXVthZmluZm8tXFx1MDAzZWZhbWlseV0sIE5VTEwpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04NS1cXHR9XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjg2OlxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ4ZnJtX2lucHV0X2FmaW5mb19sb2NrKTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODctXFx0c3luY2hyb25pemVfcmN1KCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODktfVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo5MDpFWFBPUlRfU1lNQk9MKHhmcm1faW5wdXRfdW5yZWdpc3Rlcl9hZmluZm8pO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05MS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM6OTI6c3RhdGljIGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqeGZybV9pbnB1dF9nZXRfYWZpbmZvKHU4IGZhbWlseSwgYm9vbCBpc19pcGlwKVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05My17XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjk0OlxcdGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqYWZpbmZvO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05NS1cXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy05OS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjEwMDpcXHRhZmluZm8gPSByY3VfZGVyZWZlcmVuY2UoeGZybV9pbnB1dF9hZmluZm9baXNfaXBpcF1bZmFtaWx5XSk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTEwMS1cXHRpZiAodW5saWtlbHkoIWFmaW5mbykpXFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM9MTA2PXN0YXRpYyBpbnQgeGZybV9yY3ZfY2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGZhbWlseSwgdTggcHJvdG9jb2wsXFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtMTA5LVxcdGJvb2wgaXNfaXBpcCA9IChwcm90b2NvbCA9PSBJUFBST1RPX0lQSVAgfHwgcHJvdG9jb2wgPT0gSVBQUk9UT19JUFY2KTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmM6MTEwOlxcdGNvbnN0IHN0cnVjdCB4ZnJtX2lucHV0X2FmaW5mbyAqYWZpbmZvO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy0xMTEtXFx0aW50IHJldDtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtMTEyLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzoxMTM6XFx0YWZpbmZvID0geGZybV9pbnB1dF9nZXRfYWZpbmZvKGZhbWlseSwgaXNfaXBpcCk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTExNC1cXHRpZiAoIWFmaW5mbylcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYz00MzU9c3RhdGljIGludCB4ZnJtX2lubmVyX21vZGVfaW5wdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNDY1LSAqL1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo0NjY6aW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00Njcte1xcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTQ4Ny1cXHRcXHRcXHRcXHQgICAgICBlbmNhcF90eXBlID09IFVEUF9FTkNBUF9FU1BJTlVEUCkpKSB7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ4ODpcXHRcXHR4ID0geGZybV9pbnB1dF9zdGF0ZShza2IpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00ODktXFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNTk3LVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo1OTg6XFx0XFx0eCA9IHhmcm1faW5wdXRfc3RhdGVfbG9va3VwKG5ldCwgbWFyaywgZGFkZHIsIHNwaSwgbmV4dGhkciwgZmFtaWx5KTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNTk5LVxcdFxcdGlmICh4ID09IE5VTEwpIHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy03OTQtfVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3OTU6RVhQT1JUX1NZTUJPTCh4ZnJtX2lucHV0KTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzk2LVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3OTc6aW50IHhmcm1faW5wdXRfcmVzdW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyKVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy03OTgte1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3OTk6XFx0cmV0dXJuIHhmcm1faW5wdXQoc2tiLCBuZXh0aGRyLCAwLCAtMSk7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTgwMC19XFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjgwMTpFWFBPUlRfU1lNQk9MKHhmcm1faW5wdXRfcmVzdW1lKTtcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODAyLVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jPTg1OD1FWFBPUlRfU1lNQk9MKHhmcm1fdHJhbnNfcXVldWUpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04NTktXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjg2MDp2b2lkIF9faW5pdCB4ZnJtX2lucHV0X2luaXQodm9pZClcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtODYxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTM6MzY6MjQuNzcxOTA5MzE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODM1Mjc3MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGB4ZnJtX2lucHV0YCB3aXRoaW4gYG5ldC94ZnJtL3hmcm1faW5wdXQuY2AuIEkgc2VlIHRoYXQgaXQncyB0b3VjaGluZyBhIGtleSBmdW5jdGlvbiwgYHhmcm1faW5wdXRgLCB3aGljaCBpcyAqZXhwb3J0ZWQqLCBtZWFuaW5nIGl0J3MgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGFuZCwgY3JpdGljYWxseSwgaW52b2x2ZWQgaW4gSVBzZWMgcGFja2V0IHByb2Nlc3NpbmcuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIG15IGV5ZWJyb3dzIOKAkyBhbnkgY2hhbmdlIGhlcmUgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW1wYWN0IGEgY29yZSBzZWN1cml0eSBmdW5jdGlvbi5cblxuVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBhZGRpbmcgYHhmcm1fc3RhdGVfaG9sZCh4KWAgYW5kIGB4ZnJtX3N0YXRlX3B1dCh4KWAuIFRoaXMgc2NyZWFtcyByZWZjb3VudGluZyBvciBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUuIFRoZXkncmUgY2xlYXJseSB0cnlpbmcgdG8gbWFuYWdlIHRoZSBsaWZlY3ljbGUgb2YgYW4gYHhmcm1fc3RhdGVgIG9iamVjdCAoYHhgKSBtb3JlIGNhcmVmdWxseS4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGFuZCBpdCdzIGZsYWdnZWQgYXMgYFdvcnRoRnV6emluZz10cnVlYCwgd2hpY2ggSSBhZ3JlZSB3aXRoOyBJUHNlYyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBwb2ludHMgaGVyZSBhcmUgY2xlYXJseSBgeGZybV9pbnB1dGAgaXRzZWxmLCBhbmQgYWxzbyBgeGZybV9pbnB1dF9yZXN1bWVgLCBiZWNhdXNlIHRoYXQncyBhIGRpcmVjdCBjYWxsZXIuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyB0aG9zZSBjYWxscyBhZmZlY3QgdGhlIG92ZXJhbGwgc3RhdGUgbWFuYWdlbWVudC4gTGV0J3Mgc2VlIGlmIG90aGVyIGZ1bmN0aW9ucyBjYWxsIGB4ZnJtX2lucHV0YCBhcyB3ZWxsLi4uXG5cblRoaXMgcGF0Y2ggbGlrZWx5IHJlcXVpcmVzIGNvbmZpZ3VyYXRpb25zIGBYRlJNX1VTRVJgLCBgSU5FVF9FU1BgLCBgSU5FVF9BSGAsIGBJTkVUNl9FU1BgIGFuZCBgSU5FVDZfQUhgLCBhbGwgb2Ygd2hpY2ggYXJlIGNvbW1vbiB3aXRoIElQc2VjLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzE0LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjMwLjA1NTQzOTUzN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1NzYyMDAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2lucHV0XFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fZGV2aWNlLnJzdD0xNTc9SVBzZWMgaGVhZGVycyBhcmUgc3RpbGwgaW4gdGhlIHBhY2tldCBkYXRhOyB0aGV5IGFyZSByZW1vdmVkIGxhdGVyIHVwXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9kZXZpY2UucnN0OjE1ODp0aGUgc3RhY2sgaW4geGZybV9pbnB1dCgpLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fZGV2aWNlLnJzdC0xNTktXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MTc5Nz1pbnQgeGZybV9pbml0X3N0YXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoxNzk4OmludCB4ZnJtX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLCBpbnQgZW5jYXBfdHlwZSk7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE3OTktaW50IHhmcm1faW5wdXRfcmVzdW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xODI4PXN0YXRpYyBpbmxpbmUgaW50IHhmcm00X3Jjdl9zcGkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGkpXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMTgzMi1cXHRYRlJNX1NQSV9TS0JfQ0Ioc2tiKS1cXHUwMDNlZGFkZHJvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaXBoZHIsIGRhZGRyKTtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTgzMzpcXHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgMCk7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE4MzQtfVxcbi0tXFxubmV0L2lwdjQvZXNwNF9vZmZsb2FkLmM9MzA9c3RhdGljIHN0cnVjdCBza19idWZmICplc3A0X2dyb19yZWNlaXZlKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuLS1cXG5uZXQvaXB2NC9lc3A0X29mZmxvYWQuYy05MC1cXHQgKiB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGZyZWVzIHRoZSByZXNvdXJjZXMgb24gZXJyb3IuICovXFxubmV0L2lwdjQvZXNwNF9vZmZsb2FkLmM6OTE6XFx0eGZybV9pbnB1dChza2IsIElQUFJPVE9fRVNQLCBzcGksIGVuY2FwX3R5cGUpO1xcbm5ldC9pcHY0L2VzcDRfb2ZmbG9hZC5jLTkyLVxcbi0tXFxubmV0L2lwdjQvaXBfdnRpLmM9NDc9c3RhdGljIGludCB2dGlfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksXFxuLS1cXG5uZXQvaXB2NC9pcF92dGkuYy02OC1cXG5uZXQvaXB2NC9pcF92dGkuYzo2OTpcXHRcXHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgZW5jYXBfdHlwZSk7XFxubmV0L2lwdjQvaXBfdnRpLmMtNzAtXFx0fVxcbi0tXFxubmV0L2lwdjYvZXNwNl9vZmZsb2FkLmM9NTM9c3RhdGljIHN0cnVjdCBza19idWZmICplc3A2X2dyb19yZWNlaXZlKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuLS1cXG5uZXQvaXB2Ni9lc3A2X29mZmxvYWQuYy0xMTktXFx0ICogdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBmcmVlcyB0aGUgcmVzb3VyY2VzIG9uIGVycm9yLiAqL1xcbm5ldC9pcHY2L2VzcDZfb2ZmbG9hZC5jOjEyMDpcXHR4ZnJtX2lucHV0KHNrYiwgSVBQUk9UT19FU1AsIHNwaSwgZW5jYXBfdHlwZSk7XFxubmV0L2lwdjYvZXNwNl9vZmZsb2FkLmMtMTIxLVxcbi0tXFxubmV0L2lwdjYvaXA2X3Z0aS5jPTI5Nj1zdGF0aWMgaW50IHZ0aTZfaW5wdXRfcHJvdG8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksXFxuLS1cXG5uZXQvaXB2Ni9pcDZfdnRpLmMtMzI2LVxcdFxcdFhGUk1fU1BJX1NLQl9DQihza2IpLVxcdTAwM2VkYWRkcm9mZiA9IG9mZnNldG9mKHN0cnVjdCBpcHY2aGRyLCBkYWRkcik7XFxubmV0L2lwdjYvaXA2X3Z0aS5jOjMyNzpcXHRcXHRyZXR1cm4geGZybV9pbnB1dChza2IsIG5leHRoZHIsIHNwaSwgZW5jYXBfdHlwZSk7XFxubmV0L2lwdjYvaXA2X3Z0aS5jLTMyOC1cXHR9XFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jPTIyPWludCB4ZnJtNl9yY3Zfc3BpKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLFxcbi0tXFxubmV0L2lwdjYveGZybTZfaW5wdXQuYy0yNy1cXHRYRlJNX1NQSV9TS0JfQ0Ioc2tiKS1cXHUwMDNlZGFkZHJvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaXB2NmhkciwgZGFkZHIpO1xcbm5ldC9pcHY2L3hmcm02X2lucHV0LmM6Mjg6XFx0cmV0dXJuIHhmcm1faW5wdXQoc2tiLCBuZXh0aGRyLCBzcGksIDApO1xcbm5ldC9pcHY2L3hmcm02X2lucHV0LmMtMjktfVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jPTQzNT1zdGF0aWMgaW50IHhmcm1faW5uZXJfbW9kZV9pbnB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy00NjUtICovXFxubmV0L3hmcm0veGZybV9pbnB1dC5jOjQ2NjppbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTQ2Ny17XFxuLS1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM9Nzk3PWludCB4ZnJtX2lucHV0X3Jlc3VtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkcilcXG5uZXQveGZybS94ZnJtX2lucHV0LmMtNzk4LXtcXG5uZXQveGZybS94ZnJtX2lucHV0LmM6Nzk5OlxcdHJldHVybiB4ZnJtX2lucHV0KHNrYiwgbmV4dGhkciwgMCwgLTEpO1xcbm5ldC94ZnJtL3hmcm1faW5wdXQuYy04MDAtfVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jPTMxMj1zdGF0aWMgaW50IHhmcm1pX2lucHV0KHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLFxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTMzMC1cXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM6MzMxOlxcdHJldHVybiB4ZnJtX2lucHV0KHNrYiwgbmV4dGhkciwgc3BpLCBlbmNhcF90eXBlKTtcXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmMtMzMyLWRpc2NhcmQ6XFxuLS1cXG5uZXQveGZybS94ZnJtX2lwdGZzLmM9OTQzPXN0YXRpYyBib29sIF9faW5wdXRfcHJvY2Vzc19wYXlsb2FkKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCB1MzIgZGF0YSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1faXB0ZnMuYy0xMTkwLVxcdFxcdHNrYl9saXN0X2RlbF9pbml0KHNrYik7XFxubmV0L3hmcm0veGZybV9pcHRmcy5jOjExOTE6XFx0XFx0aWYgKHhmcm1faW5wdXQoc2tiLCAwLCAwLCAtMikpXFxubmV0L3hmcm0veGZybV9pcHRmcy5jLTExOTItXFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjMyLjUxMzA2ODA3NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDE3Mzk1NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGF0YSBGbG93KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHBhY2tldHMgYXJlIGhhbmRsZWQsIGFuZCBpdCBzZWVtcyBsaWtlIGB4ZnJtX2lucHV0YCBpcyBhIGNydWNpYWwgZnVuY3Rpb24uIEkgc2VlIGl0J3MgY2FsbGVkIGJ5IGEgd2hvbGUgaG9zdCBvZiBmdW5jdGlvbnM6IGB4ZnJtNF9yY3Zfc3BpYCwgYGVzcDRfZ3JvX3JlY2VpdmVgLCBgdnRpX2lucHV0YCwgYGVzcDZfZ3JvX3JlY2VpdmVgLCBgdnRpNl9pbnB1dF9wcm90b2AsIGB4ZnJtNl9yY3Zfc3BpYCwgYHhmcm1faW5wdXRfcmVzdW1lYCwgYHhmcm1pX2lucHV0YCwgYW5kIGBfX2lucHV0X3Byb2Nlc3NfcGF5bG9hZGAuIFRoYXQncyBhIGxvdCBvZiBlbnRyeSBwb2ludHMsIGluZGljYXRpbmcgaXRzIGNlbnRyYWwgcm9sZSBpbiB0aGUgcHJvY2Vzc2luZyBwaXBlbGluZS4gR2l2ZW4gdGhpcywgaXQgbWFrZXMgc2Vuc2UgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHVuZGVyc3RhbmRpbmcgaG93IGB4ZnJtX2lucHV0YCBvcGVyYXRlcy4gSXQncyB0aGUgbHluY2hwaW4sIGl0IHNlZW1zLiBNeSBuZXh0IHN0ZXAgc2hvdWxkIGJlIHRvIGxvb2sgaW50byB0aGUgY29uZmlndXJhdGlvbiBzdXJyb3VuZGluZyBgeGZybWlfaW5wdXRgLCBzcGVjaWZpY2FsbHkgdGhlIGBYRlJNX0lOVEVSRkFDRWAgc2V0dGluZ3MsIHRvIHNlZSBob3cgdGhhdCBpbmZsdWVuY2VzIHRoZSBvdmVyYWxsIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc5OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjozNy41MzA0NjYxNDZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MTcyMDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRlJNX0lOVEVSRkFDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9MzI9Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTM6MzY6MzcuNjA2NjQ0MzIzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzQ5MTA5NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6XG5cbioqQ29uZmlndXJhdGlvbiBBZGRpdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdXBkYXRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gbGlzdHMuIEkndmUgZ290IHRvIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGBYRlJNX0lOVEVSRkFDRWAgaW4gdGhlIG1peCwgYXMgSSBhbnRpY2lwYXRlIG5lZWRpbmcgdGhhdCBmdW5jdGlvbmFsaXR5LiBUaGVuIEkgbmVlZCB0byBicmluZyBpbiBgSVBWNl9WVElgIGFuZCBgTkVUX0lQVlRJYCBhcyB3ZWxsLiBUaGVzZSBhcmUgY3J1Y2lhbCBjb21wb25lbnRzLCBhbmQgSSBzaG91bGRuJ3Qgb3Zlcmxvb2sgdGhlbS4gR2l2ZW4gdGhhdCBJJ20gY29uc2lkZXJpbmcgdGhlc2UgaW4gdGFuZGVtLCB0aGlzIHBvaW50cyB0byBzcGVjaWZpYyB1c2UtY2FzZXMgdGhhdCBJJ20gZHJpdmluZyB0b3dhcmRzIHRoYXQgbmVjZXNzaXRhdGVzIHRoZXNlIGFkZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNDMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjo0MS44ODE1NTc2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1NDU0OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUFZUSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MjY4PWNvbmZpZyBTWU5fQ09PS0lFU1xcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMDMtXFxubmV0L2lwdjQvS2NvbmZpZzozMDQ6Y29uZmlnIE5FVF9JUFZUSVxcbm5ldC9pcHY0L0tjb25maWctMzA1LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQOiB0dW5uZWxpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjQxLjk0OTEwNzc0N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAxNTIzNjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgZWxzZSwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgSVBWNl9WVElgLiBUaGlzIGxpa2VseSBpbXBsaWVzIGEgbmV0d29yayBjb25maWd1cmF0aW9uIHNjZW5hcmlvLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIElQdjYgVmlydHVhbCBUdW5uZWwgSW50ZXJmYWNlcy4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBwcm9iYWJseSBkZWFsaW5nIHdpdGggZWl0aGVyIGEgcm91dGluZyBvciBzZWN1cml0eSBjb250ZXh0LiBUaGVyZSdzIGEgZ29vZCBjaGFuY2UgdGhpcyBpcyByZWxhdGVkIHRvIGhvdyBJUHY2IHRyYWZmaWMgaXMgZW5jYXBzdWxhdGVkIG9yIGhhbmRsZWQgd2l0aGluIGEgbmV0d29yaywgcG90ZW50aWFsbHkgYWNyb3NzIGRpZmZlcmluZyBhZG1pbmlzdHJhdGl2ZSBkb21haW5zIG9yIHRvIGJ5cGFzcyBjZXJ0YWluIG5ldHdvcmsgcmVzdHJpY3Rpb25zLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluIGF1dG9tYXRpY2FsbHk6IERvZXMgdGhpcyBpbnZvbHZlIHN0YXRpYyByb3V0ZXMsIGR5bmFtaWMgcm91dGluZyBwcm90b2NvbHMsIHBvbGljeS1iYXNlZCByb3V0aW5nLCBvciBwZXJoYXBzIGV2ZW4gVlBOIHR1bm5lbGluZyB3aXRoIGFuIElQdjYgZm9jdXM/IEkgbmVlZCB0byBjbGFyaWZ5IHRoZSAqc3BlY2lmaWMqIHB1cnBvc2UgYW5kIGZ1bmN0aW9uIG9mIHRoZXNlIFZUSSBpbnRlcmZhY2VzIHdpdGhpbiB0aGUgZ3JlYXRlciBuZXR3b3JrIGFyY2hpdGVjdHVyZS4gSXQncyBhIHN0YXJ0aW5nIHBvaW50IHRvIGJlZ2luIHRoZSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTUyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjQ1Ljc1MDYzMzQxOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc2NTAwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZfVlRJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNDktXFxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXFxubmV0L2lwdjYvS2NvbmZpZy0xNTEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxMzozNjo0NS44MTgyOTMwOTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1MTY5ODc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVBzZWMvWEZSTSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgd2UncmUgYWRkaW5nIGBORVRfSVBWVElgIGFuZCBgSVBWNl9WVElgLiBNYWtlcyBzZW5zZSwgdGhlc2UgYXJlIGltcG9ydGFudCBmb3Igc3VwcG9ydGluZyB0aGUgbmV3IHZpcnR1YWwgdHVubmVsIGludGVyZmFjZXMuXCIgSSBzZWUgaXQncyBhbHNvIGJyaW5naW5nIGluIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBgWEZSTV9VU0VSYCwgYElORVRfRVNQYCwgYElORVRfQUhgLCB0aGUgSVB2NiBlcXVpdmFsZW50cywgYFhGUk1fSU5URVJGQUNFYCwgYW5kIHRoZSBWVEkgc3VwcG9ydCBJIGp1c3QgbWVudGlvbmVkLiBHb29kLCBnb29kLCBhbGwgdGhlIGRlcGVuZGVuY2llcyBzZWVtIHRvIGJlIHRoZXJlLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgd2l0aGluIGB4ZnJtX2lucHV0YC4gQWgsIEkgc2VlLCBpdCdzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSDigJMgYSB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBwcm9ibGVtLiBCeSBleHBsaWNpdGx5IGhvbGRpbmcgYW5kIHB1dHRpbmcgdGhlIGB4ZnJtX3N0YXRlYCByZWZlcmVuY2UsIHRoZSBwYXRjaCBpcyBlbnN1cmluZyB0aGUgZGF0YSByZW1haW5zIHZhbGlkIGR1cmluZyBwcm9jZXNzaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgcmVhY2hhYmxlIG5ldHdvcmtpbmcgY29kZSwgc28gdGhpcyBpcyBpbXBvcnRhbnQgdG8gZ2V0IHJpZ2h0LiBJdCB0YXJnZXRzIGB4ZnJtX2lucHV0YCBhbmQgYHhmcm1faW5wdXRfcmVzdW1lYCwgdGhlIGNyaXRpY2FsIHBhdGhzIGZvciBwYWNrZXQgcHJvY2Vzc2luZy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhvc2UgZnVuY3Rpb25zIHdoZW4gSSdtIHJldmlld2luZyB0aGUgaW1wbGVtZW50YXRpb24uXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgYWJvdXQgdGhpcyBub3csIEknbSBnb2luZyB0byBwcm9jZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NTksIk91dHB1dFRva2VucyI6MTU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDEzOjM2OjUyLjY2OTk5NTUyN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NTYxOTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIklORVRfRVNQXCIsXG4gICAgXCJJTkVUX0FIXCIsXG4gICAgXCJJTkVUNl9FU1BcIixcbiAgICBcIklORVQ2X0FIXCIsXG4gICAgXCJYRlJNX0lOVEVSRkFDRVwiLFxuICAgIFwiTkVUX0lQVlRJXCIsXG4gICAgXCJJUFY2X1ZUSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faW5wdXRcIixcbiAgICBcInhmcm1faW5wdXRfcmVzdW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHhmcm1faW5wdXRgIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3RhY2sgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3VlIGJ5IGV4cGxpY2l0bHkgaG9sZGluZyBhbmQgcHV0dGluZyB0aGUgYHhmcm1fc3RhdGVgIHJlZmVyZW5jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJJTkVUX0VTUFwiLFxuICAgIFwiSU5FVF9BSFwiLFxuICAgIFwiSU5FVDZfRVNQXCIsXG4gICAgXCJJTkVUNl9BSFwiLFxuICAgIFwiWEZSTV9JTlRFUkZBQ0VcIixcbiAgICBcIk5FVF9JUFZUSVwiLFxuICAgIFwiSVBWNl9WVElcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2lucHV0XCIsXG4gICAgXCJ4ZnJtX2lucHV0X3Jlc3VtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB4ZnJtX2lucHV0YCBpbiB0aGUgY29yZSBJUHNlYy9YRlJNIHN0YWNrIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZSBieSBleHBsaWNpdGx5IGhvbGRpbmcgYW5kIHB1dHRpbmcgdGhlIGB4ZnJtX3N0YXRlYCByZWZlcmVuY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8t6tv[1] Phase: Succeeded StartedAt: 2026-07-28 13:37:19 +0000 UTC FinishedAt: 2026-07-28 13:37:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-28 13:37:19 +0000 UTC FinishedAt: 2026-07-28 13:37:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2] Phase: Succeeded StartedAt: 2026-07-28 13:37:19 +0000 UTC FinishedAt: 2026-07-28 18:28:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 13:37:19 +0000 UTC FinishedAt: 2026-07-28 18:28:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 13:37:19 +0000 UTC FinishedAt: 2026-07-28 13:37:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 13:37:19 +0000 UTC FinishedAt: 2026-07-28 13:37:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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-workflow8t6tv/series-workflow8t6tv-convert-artifact-304827550/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 13:37:40 +0000 UTC FinishedAt: 2026-07-28 14:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 13:37:40 +0000 UTC FinishedAt: 2026-07-28 14:33:01 +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:*1d424a02-ba6d-4d07-b866-8b64757f45df,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-workflow8t6tv/series-workflow8t6tv-convert-artifact-304827550/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": "413c4763-9793-4837-a7f5-7c8e232abb8a", "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-workflow8t6tv/series-workflow8t6tv-build-action-813240708/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 13:37:40 +0000 UTC FinishedAt: 2026-07-28 14:32:51 +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:*1d424a02-ba6d-4d07-b866-8b64757f45df,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-workflow8t6tv/series-workflow8t6tv-convert-artifact-304827550/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": "413c4763-9793-4837-a7f5-7c8e232abb8a", "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-workflow8t6tv/series-workflow8t6tv-build-action-813240708/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:33:01 +0000 UTC FinishedAt: 2026-07-28 14:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:33:01 +0000 UTC FinishedAt: 2026-07-28 14:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:33:01 +0000 UTC FinishedAt: 2026-07-28 14:33:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:33:01 +0000 UTC FinishedAt: 2026-07-28 14:33:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-workflow8t6tv/series-workflow8t6tv-convert-artifact-1696247889/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:33:23 +0000 UTC FinishedAt: 2026-07-28 14:35:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:33:23 +0000 UTC FinishedAt: 2026-07-28 14:35:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*413c4763-9793-4837-a7f5-7c8e232abb8a,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-workflow8t6tv/series-workflow8t6tv-build-action-813240708/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-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:35:21 +0000 UTC FinishedAt: 2026-07-28 14:35:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:35:21 +0000 UTC FinishedAt: 2026-07-28 14:35:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:35:21 +0000 UTC FinishedAt: 2026-07-28 15:23:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:35:21 +0000 UTC FinishedAt: 2026-07-28 15:23:30 +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:*1d424a02-ba6d-4d07-b866-8b64757f45df,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-workflow8t6tv/series-workflow8t6tv-convert-artifact-1696247889/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": "74d5e7b9-a713-4f54-bc74-49836bd4b3a9", "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-workflow8t6tv/series-workflow8t6tv-build-action-2049218077/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 14:35:21 +0000 UTC FinishedAt: 2026-07-28 15:23:05 +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:*1d424a02-ba6d-4d07-b866-8b64757f45df,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-workflow8t6tv/series-workflow8t6tv-convert-artifact-1696247889/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": "74d5e7b9-a713-4f54-bc74-49836bd4b3a9", "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-workflow8t6tv/series-workflow8t6tv-build-action-2049218077/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:23:30 +0000 UTC FinishedAt: 2026-07-28 15:23:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:23:30 +0000 UTC FinishedAt: 2026-07-28 15:23:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:23:30 +0000 UTC FinishedAt: 2026-07-28 15:25:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:23:30 +0000 UTC FinishedAt: 2026-07-28 15:25:34 +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:*74d5e7b9-a713-4f54-bc74-49836bd4b3a9,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-workflow8t6tv/series-workflow8t6tv-build-action-2049218077/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-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:25:44 +0000 UTC FinishedAt: 2026-07-28 18:28:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:25:44 +0000 UTC FinishedAt: 2026-07-28 18:28:36 +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":["xfrm_input","xfrm_input_resume"],"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:*413c4763-9793-4837-a7f5-7c8e232abb8a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*74d5e7b9-a713-4f54-bc74-49836bd4b3a9,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-workflow8t6tv/series-workflow8t6tv-build-action-813240708/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-workflow8t6tv/series-workflow8t6tv-build-action-2049218077/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:25:44 +0000 UTC FinishedAt: 2026-07-28 15:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:25:44 +0000 UTC FinishedAt: 2026-07-28 15:25:49 +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":["xfrm_input","xfrm_input_resume"],"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-workflow8t6tv/series-workflow8t6tv-convert-artifact-764426374/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:25:44 +0000 UTC FinishedAt: 2026-07-28 15:25:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:25:44 +0000 UTC FinishedAt: 2026-07-28 15:25:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:25:44 +0000 UTC FinishedAt: 2026-07-28 15:25:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:25:54 +0000 UTC FinishedAt: 2026-07-28 18:28:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8t6tv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"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":["xfrm_input","xfrm_input_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","INET_ESP","INET_AH","INET6_ESP","INET6_AH","XFRM_INTERFACE","NET_IPVTI","IPV6_VTI"],"series_id":"3c4c93d8-384d-48c5-ace0-604e064b4a91","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-07-28 15:25:54 +0000 UTC FinishedAt: 2026-07-28 18:28:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*413c4763-9793-4837-a7f5-7c8e232abb8a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*74d5e7b9-a713-4f54-bc74-49836bd4b3a9,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-workflow8t6tv/series-workflow8t6tv-build-action-813240708/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-workflow8t6tv/series-workflow8t6tv-build-action-2049218077/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-workflow8t6tv/series-workflow8t6tv-convert-artifact-764426374/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,}