Name: series-workflowczgjm Phase: Succeeded StartedAt: 2026-06-25 04:55:23 +0000 UTC FinishedAt: 2026-06-25 06:58:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[0] Phase: Succeeded StartedAt: 2026-06-25 04:55:23 +0000 UTC FinishedAt: 2026-06-25 05:08:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 04:55:23 +0000 UTC FinishedAt: 2026-06-25 05:08:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_write_mft_block" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX3dyaXRlX21mdF9ibG9jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbnRmc193cml0ZV9tZnRfYmxvY2tgIHdoZXJlIGEgcnVubGlzdCBlbGVtZW50IHBvaW50ZXIgYHJsYCBjb3VsZCBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgb3IgYXMgYSBzdGFsZSBwb2ludGVyIGFjcm9zcyBsb29wIGl0ZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlciYjMzk7cyBNRlQgd3JpdGViYWNrIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIHdyaXRpbmcgdG8gTlRGUyB2b2x1bWVzLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBoZWxwIGVuc3VyZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGZpeCBhbmQgdGhlIE1GVCB3cml0ZWJhY2sgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjZDE0NzI4NGZhYjc3ODUwMTVkMGQ1NmU4OTYyN2FkYWI0NjUzODE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDc6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9tZnQuYyBiL2ZzL250ZnMvbWZ0LmNcbmluZGV4IGE1MDE5ZTgwOTUxYjg0Li5mZDIwZDdhYmQ2ZjVlYyAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvbWZ0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvbWZ0LmNcbkBAIC0yNjM3LDcgJiM0MzsyNjM3LDYgQEAgc3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndcbiBcdHM2NCB2Y24gPSBudGZzX3BpZHhfdG9fY2x1c3Rlcih2b2wsIGZvbGlvLVx1MDAzZWluZGV4KTtcbiBcdHM2NCBlbmRfdmNuID0gbnRmc19ieXRlc190b19jbHVzdGVyKHZvbCwgbmktXHUwMDNlYWxsb2NhdGVkX3NpemUpO1xuIFx0dW5zaWduZWQgaW50IGZvbGlvX3N6O1xuLVx0c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmwgPSBOVUxMO1xuIFx0bG9mZl90IGlfc2l6ZSA9IGlfc2l6ZV9yZWFkKHZpKTtcbiBcbiBcdG50ZnNfZGVidWcoXCYjMzQ7RW50ZXJpbmcgZm9yIGlub2RlIDB4JWxseCwgYXR0cmlidXRlIHR5cGUgMHgleCwgZm9saW8gaW5kZXggMHglbHguXCYjMzQ7LFxuQEAgLTI2ODIsNiAmIzQzOzI2ODEsNyBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFx0XHRcdFx0XHRcdTAwMjZ0bmksIFx1MDAyNnJlZl9pbm9zW25yX3JlZl9pbm9zXSkpIHtcbiBcdFx0XHR1bnNpZ25lZCBpbnQgbWZ0X3JlY29yZF9vZmYgPSAwO1xuIFx0XHRcdHM2NCB2Y25fb2ZmID0gdmNuO1xuJiM0MztcdFx0XHRzNjQgcmxfbGVuID0gMDtcbiBcbiBcdFx0XHQvKlxuIFx0XHRcdCAqIFRoZSByZWNvcmQgc2hvdWxkIGJlIHdyaXR0ZW4uICBJZiBhIGxvY2tlZCBudGZzXG5AQCAtMjcwMSw4ICYjNDM7MjcwMSwxMiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRpZiAodm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZSBcdTAwM2MgZm9saW9fc2l6ZShmb2xpbykpIHtcbiYjNDM7XHRcdFx0XHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybDtcbiYjNDM7XG4gXHRcdFx0XHRkb3duX3dyaXRlKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG4gXHRcdFx0XHRybCA9IG50ZnNfYXR0cl92Y25fdG9fcmwobmksIHZjbl9vZmYsIFx1MDAyNmxjbik7XG4mIzQzO1x0XHRcdFx0aWYgKCFJU19FUlIocmwpKVxuJiM0MztcdFx0XHRcdFx0cmxfbGVuID0gcmwtXHUwMDNlbGVuZ3RoIC0gKHZjbl9vZmYgLSBybC1cdTAwM2V2Y24pO1xuIFx0XHRcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcdFx0XHRcdGlmIChJU19FUlIocmwpIHx8IGxjbiBcdTAwM2MgMCkge1xuIFx0XHRcdFx0XHRlcnIgPSAtRUlPO1xuQEAgLTI3MzMsNyAmIzQzOzI3MzcsNyBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFxuIFx0XHRcdGlmICh2b2wtXHUwMDNlY2x1c3Rlcl9zaXplID09IE5URlNfQkxPQ0tfU0laRSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgKG1mdF9yZWNvcmRfb2ZmIHx8XG4tXHRcdFx0ICAgICAocmwgXHUwMDI2XHUwMDI2IHJsLVx1MDAzZWxlbmd0aCAtICh2Y25fb2ZmIC0gcmwtXHUwMDNldmNuKSA9PSAxKSB8fFxuJiM0MztcdFx0XHQgICAgIHJsX2xlbiA9PSAxIHx8XG4gXHRcdFx0ICAgICBtZnRfb2ZzICYjNDM7IE5URlNfQkxPQ0tfU0laRSBcdTAwM2U9IFBBR0VfU0laRSkpXG4gXHRcdFx0XHRmb2xpb19zeiA9IE5URlNfQkxPQ0tfU0laRTtcbiBcdFx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfd3JpdGVfbWZ0X2Jsb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBudGZzX3dyaXRlX21mdF9ibG9ja2Agd2hlcmUgYSBydW5saXN0IGVsZW1lbnQgcG9pbnRlciBgcmxgIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXplZCBvciBhcyBhIHN0YWxlIHBvaW50ZXIgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyJiMzOTtzIE1GVCB3cml0ZWJhY2sgcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gd3JpdGluZyB0byBOVEZTIHZvbHVtZXMuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGhlbHAgZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgZml4IGFuZCB0aGUgTUZUIHdyaXRlYmFjayBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2QxNDcyODRmYWI3Nzg1MDE1ZDBkNTZlODk2MjdhZGFiNDY1MzgxNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA1OjA3OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9tZnQuYyBiL2ZzL250ZnMvbWZ0LmMKaW5kZXggYTUwMTllODA5NTFiODQuLmZkMjBkN2FiZDZmNWVjIDEwMDY0NAotLS0gYS9mcy9udGZzL21mdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvbWZ0LmMKQEAgLTI2MzcsNyAmIzQzOzI2MzcsNiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqdwogCXM2NCB2Y24gPSBudGZzX3BpZHhfdG9fY2x1c3Rlcih2b2wsIGZvbGlvLSZndDtpbmRleCk7CiAJczY0IGVuZF92Y24gPSBudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuaS0mZ3Q7YWxsb2NhdGVkX3NpemUpOwogCXVuc2lnbmVkIGludCBmb2xpb19zejsKLQlzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybCA9IE5VTEw7CiAJbG9mZl90IGlfc2l6ZSA9IGlfc2l6ZV9yZWFkKHZpKTsKIAogCW50ZnNfZGVidWcoJiMzNDtFbnRlcmluZyBmb3IgaW5vZGUgMHglbGx4LCBhdHRyaWJ1dGUgdHlwZSAweCV4LCBmb2xpbyBpbmRleCAweCVseC4mIzM0OywKQEAgLTI2ODIsNiAmIzQzOzI2ODEsNyBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqdwogCQkJCQkmYW1wO3RuaSwgJmFtcDtyZWZfaW5vc1tucl9yZWZfaW5vc10pKSB7CiAJCQl1bnNpZ25lZCBpbnQgbWZ0X3JlY29yZF9vZmYgPSAwOwogCQkJczY0IHZjbl9vZmYgPSB2Y247CiYjNDM7CQkJczY0IHJsX2xlbiA9IDA7CiAKIAkJCS8qCiAJCQkgKiBUaGUgcmVjb3JkIHNob3VsZCBiZSB3cml0dGVuLiAgSWYgYSBsb2NrZWQgbnRmcwpAQCAtMjcwMSw4ICYjNDM7MjcwMSwxMiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqdwogCQkJfQogCiAJCQlpZiAodm9sLSZndDtjbHVzdGVyX3NpemUgJmx0OyBmb2xpb19zaXplKGZvbGlvKSkgewomIzQzOwkJCQlzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybDsKJiM0MzsKIAkJCQlkb3duX3dyaXRlKCZhbXA7bmktJmd0O3J1bmxpc3QubG9jayk7CiAJCQkJcmwgPSBudGZzX2F0dHJfdmNuX3RvX3JsKG5pLCB2Y25fb2ZmLCAmYW1wO2xjbik7CiYjNDM7CQkJCWlmICghSVNfRVJSKHJsKSkKJiM0MzsJCQkJCXJsX2xlbiA9IHJsLSZndDtsZW5ndGggLSAodmNuX29mZiAtIHJsLSZndDt2Y24pOwogCQkJCXVwX3dyaXRlKCZhbXA7bmktJmd0O3J1bmxpc3QubG9jayk7CiAJCQkJaWYgKElTX0VSUihybCkgfHwgbGNuICZsdDsgMCkgewogCQkJCQllcnIgPSAtRUlPOwpAQCAtMjczMyw3ICYjNDM7MjczNyw3IEBAIHN0YXRpYyBpbnQgbnRmc193cml0ZV9tZnRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3CiAKIAkJCWlmICh2b2wtJmd0O2NsdXN0ZXJfc2l6ZSA9PSBOVEZTX0JMT0NLX1NJWkUgJmFtcDsmYW1wOwogCQkJICAgIChtZnRfcmVjb3JkX29mZiB8fAotCQkJICAgICAocmwgJmFtcDsmYW1wOyBybC0mZ3Q7bGVuZ3RoIC0gKHZjbl9vZmYgLSBybC0mZ3Q7dmNuKSA9PSAxKSB8fAomIzQzOwkJCSAgICAgcmxfbGVuID09IDEgfHwKIAkJCSAgICAgbWZ0X29mcyAmIzQzOyBOVEZTX0JMT0NLX1NJWkUgJmd0Oz0gUEFHRV9TSVpFKSkKIAkJCQlmb2xpb19zeiA9IE5URlNfQkxPQ0tfU0laRTsKIAkJCWVsc2UKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDM3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5URlMgTUZUIEJsb2NrIFdyaXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBmcy9udGZzL21mdC5jYCB0aGF0IHR3ZWFrcyB0aGUgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoaXMgYHJsYCB2YXJpYWJsZSwgdGhlIHJ1bmxpc3QgZWxlbWVudC4KCkluaXRpYWxseSwgYHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsID0gTlVMTDtgIHdhcyBkZWNsYXJlZCBvdXRzaWRlIHRoZSBsb29wLiBUaGUgcGF0Y2ggcmVtb3ZlcyB0aGlzIGRlY2xhcmF0aW9uIGZyb20gdGhlIG91dGVyIHNjb3BlIGFuZCBhZGRzIGBzNjQgcmxfbGVuID0gMDtgIGluc2lkZSB0aGUgbG9vcC4gIFRoYXQmIzM5O3MgYWxyZWFkeSBhIGdvb2Qgc2lnbiwgc2NvcGluZyB2YXJpYWJsZXMgY2xvc2VyIHRvIHdoZXJlIHRoZXkmIzM5O3JlIHVzZWQgaXMgZ2VuZXJhbGx5IGNsZWFuZXIuIEl0IGFsc28gbW92ZXMgdGhlIGFjdHVhbCBgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7YCBkZWNsYXJhdGlvbiBpbnRvIHRoaXMgYGlmICh2b2wtJmd0O2NsdXN0ZXJfc2l6ZSAmbHQ7IGZvbGlvX3NpemUoZm9saW8pKWAgYmxvY2suCgpUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoZSBjb25kaXRpb25hbCBsb2dpYy4gIEJlZm9yZSwgdGhleSBoYWQgYChybCAmYW1wOyZhbXA7IHJsLSZndDtsZW5ndGggLSAodmNuX29mZiAtIHJsLSZndDt2Y24pID09IDEpYC4gIFRoZSBwYXRjaCBjaGFuZ2VzIHRoaXMgdG8gYHJsX2xlbiA9PSAxYC4gIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgbm93IGNhbGN1bGF0aW5nIGBybF9sZW4gPSBybC0mZ3Q7bGVuZ3RoIC0gKHZjbl9vZmYgLSBybC0mZ3Q7dmNuKWAgd2l0aGluIHRoZSBibG9jayB3aXRoIGBybGAgb25seSB3aGVuIGAhSVNfRVJSKHJsKWAuCgpBbHJpZ2h0LCBJIHNlZSB0aGUgcHJvYmxlbSBub3cuIEJlZm9yZSwgYHJsYCB3YXMgZGVjbGFyZWQgb3V0c2lkZSB0aGF0IGJsb2NrLiBJZiBgdm9sLSZndDtjbHVzdGVyX3NpemUgJmx0OyBmb2xpb19zaXplKGZvbGlvKWAgd2FzICpmYWxzZSogaW4gYSBnaXZlbiBpdGVyYXRpb24sIGBybGAgd291bGRuJiMzOTt0IGJlIHJlLWFzc2lnbmVkLiAgU28sIGluIHN1YnNlcXVlbnQgaXRlcmF0aW9ucywgYHJsYCB3b3VsZCByZXRhaW4gaXRzIHZhbHVlIGZyb20gdGhlIHByZXZpb3VzIGxvb3AgaXRlcmF0aW9uLiBJZiBpdCB3YXMgYE5VTExgIGluIHRoZSBmaXJzdCBpdGVyYXRpb24sIHRoZW4gdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHdvdWxkIGJlIHNhZmUsIGJ1dCBpZiBpdCB3YXMgc2V0IGluIGEgcHJldmlvdXMgaXRlcmF0aW9uLCBpdCYjMzk7cyBhIHN0YWxlIHBvaW50ZXIhIFRoaXMgbWVhbnMgdGhlcmUmIzM5O3MgYSBzZXJpb3VzIHBvdGVudGlhbCBmb3IgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgcmVhZHMsIG9yIGp1c3QgY29tcGxldGVseSB3cm9uZyBsb2dpYyBiZWluZyBleGVjdXRlZCBiZWNhdXNlIHdlJiMzOTtyZSBkZXJlZmVyZW5jaW5nIGEgcG9pbnRlciB0aGF0IGNvdWxkIGJlIGdhcmJhZ2UuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgYnVnIQoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBieSBnb2luZyBiYWNrIGFuZCB2ZXJpZnlpbmcuIExldCYjMzk7cyBzZWUuLi5JJiMzOTtsbCBxdWlja2x5IHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIGBudGZzX3dyaXRlX21mdF9ibG9ja2AgaW4gYGZzL250ZnMvbWZ0LmNgIGFuZCBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBjb3JyZWN0IGFuZCB0aGF0IHRoZSBwYXRjaCByZXNvbHZlcyB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc193cml0ZV9tZnRfYmxvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9tZnQuYz0yNTkzPXN0YXRpYyBzNjQgbGNuX2Zyb21faW5kZXgoc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsIHN0cnVjdCBudGZzX2lub2RlICpuaSxcbi0tXG5mcy9udGZzL21mdC5jLTI2MDgtLypcbmZzL250ZnMvbWZ0LmM6MjYwOTogKiBudGZzX3dyaXRlX21mdF9ibG9jayAtIFdyaXRlIGJhY2sgYSBmb2xpbyBjb250YWluaW5nIE1GVCByZWNvcmRzXG5mcy9udGZzL21mdC5jLTI2MTAtICogQGZvbGlvOlx0VGhlIGZvbGlvIHRvIHdyaXRlIGJhY2sgKGNvbnRhaW5zIG9uZSBvciBtb3JlIE1GVCByZWNvcmRzKVxuLS1cbmZzL250ZnMvbWZ0LmMtMjYxOS0gKi9cbmZzL250ZnMvbWZ0LmM6MjYyMDpzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKVxuZnMvbnRmcy9tZnQuYy0yNjIxLXtcbi0tXG5mcy9udGZzL21mdC5jLTI4MjEtICogV3JpdGViYWNrIGl0ZXJhdG9yIGZvciBNRlQgcmVjb3Jkcy4gSXRlcmF0ZXMgb3ZlciBkaXJ0eSBmb2xpb3MgYW5kXG5mcy9udGZzL21mdC5jOjI4MjI6ICogZGVsZWdhdGVzIGFjdHVhbCB3cml0aW5nIHRvIG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKCkgZm9yIGVhY2ggZm9saW8uXG5mcy9udGZzL21mdC5jLTI4MjMtICogQ2FsbGVkIGZyb20gdGhlIGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyAud3JpdGVwYWdlcyB2ZWN0b3Igb2YgdGhlXG4tLVxuZnMvbnRmcy9tZnQuYz0yODI4PWludCBudGZzX21mdF93cml0ZXBhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuLS1cbmZzL250ZnMvbWZ0LmMtMjgzNy1cdHdoaWxlICgoZm9saW8gPSB3cml0ZWJhY2tfaXRlcihtYXBwaW5nLCB3YmMsIGZvbGlvLCBcdTAwMjZlcnJvcikpKVxuZnMvbnRmcy9tZnQuYzoyODM4Olx0XHRlcnJvciA9IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKGZvbGlvLCB3YmMpO1xuZnMvbnRmcy9tZnQuYy0yODM5LVx0cmV0dXJuIGVycm9yO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NzkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5URlMgV3JpdGUgT3BlcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbnRmc193cml0ZV9tZnRfYmxvY2tgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgYG50ZnNfbWZ0X3dyaXRlcGFnZXNgLiBSaWdodCwgdGhpcyBpcyBhbGwgcGFydCBvZiB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlciwgd2hpY2ggSSYjMzk7bSB2ZXJ5IGZhbWlsaWFyIHdpdGguIExldCYjMzk7cyBtYWtlIHN1cmUgb3VyIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHVwIHByb3Blcmx5IGJlZm9yZSBkZWx2aW5nIGRlZXBlci4gSSBuZWVkIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBLY29uZmlnIHRvIGNvbmZpcm0gdGhlIHJlbGV2YW50IE5URlMgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIFRoaXMgY2FsbCBjaGFpbiBpbXBsaWVzIGEgY3JpdGljYWwgd3JpdGUgb3BlcmF0aW9uIOKAkyBwcm9iYWJseSBpbnZvbHZpbmcgdGhlIE1ldGFkYXRhIEZpbGUgVGFibGUgKE1GVCkgaXRzZWxmLCBzbyBpdCYjMzk7cyBnb29kIHRvIGVuc3VyZSBhbGwgcmVsYXRlZCBjb21wb25lbnRzIGFyZSBhY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfRlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSBoYXZlIGhlcmUuCgoqKkFuYWx5emluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB0byB1c2UgYE5URlNfRlNgLiBCdXQgaGFuZyBvbiwgSSBzZWUgYW5vdGhlciBOVEZTIGRyaXZlciBsdXJraW5nIGluIGBmcy9udGZzMy9gLCBuYW1lZCBgTlRGUzNfRlNgLiBUaGUgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgaXMgbG9jYXRlZCBpbiBgZnMvbnRmcy9tZnQuY2AsIHdoaWNoIG1ha2VzIGl0IGNsZWFyIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgKm9yaWdpbmFsKiBOVEZTIGRyaXZlciwgbm90IHRoZSBuZXdlciBOVEZTMy4gVGhlIGNvbmZpZyBzdGlsbCBjb25maXJtcyBgTlRGU19GU2AuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSYjMzk7bGwgcXVpY2tseSBnbGFuY2UgYXQgdGhlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdG8gc2VlIGlmIHNvbWV0aGluZyBsaWtlIGBOVEZTX1JXYCBpcyBzZXQgb3IgdW5zZXQuIFRoYXQgY291bGQgaW5mbHVlbmNlIHRoZSBjdXJyZW50IHNpdHVhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgb3RoZXIgY29uZmlnIGNob2ljZXMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfUlcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBOVEZTIFdyaXRlIFN1cHBvcnQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEdpdmVuIHRoZSBjb250ZXh0LCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHBpbnBvaW50IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBjb250cm9sbGluZyBOVEZTIHdyaXRlIHN1cHBvcnQuIFRvIGRvIHRoYXQsIEkmIzM5O2xsIG5hdmlnYXRlIGRpcmVjdGx5IHRvIHRoZSBoZWFydCBvZiB0aGUgZmlsZSBzeXN0ZW0gY29uZmlndXJhdGlvbjogYGZzL250ZnMvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgcGVydGFpbmluZyB0byB0aGUgTlRGUyBmaWxlIHN5c3RlbSBzaG91bGQgcmVzaWRlLiBUaGlzIGZpbGUgd2lsbCB1bmRvdWJ0ZWRseSBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB3cml0ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbmZpZ3VyZWQuIEkgZXhwZWN0IHRvIGZpbmQgYSBib29sZWFuIG9wdGlvbiwgb3IgcGVyaGFwcyBldmVuIGEgdHJpc3RhdGUsIGRpcmVjdGx5IHJlbGF0ZWQgdG8gTlRGUyB3cml0ZSBmdW5jdGlvbmFsaXR5LiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc2V0dGluZyBhbmQgYW55IGRlcGVuZGVuY2llcyBpbnZvbHZlZC4gVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludCwgbGV0JiMzOTtzIGdvIGNoZWNrIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTlRGU19GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgTkxTXG4gICA1Olx0XHRzZWxlY3QgRlNfSU9NQVBcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxuICAgODpcdFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG4gIDExOlx0XHQgIG50ZnMuXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIE5URlNfREVCVUdcbiAgMTQ6XHRcdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBOVEZTIGZpbGUgc3lzdGVtLCBzYXlcbiAgMTg6XHRcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGNvbnNpc3RlbmN5IGNoZWNrcyB0byBiZVxuICAxOTpcdFx0ICBwZXJmb3JtZWQgYnkgdGhlIGRyaXZlciBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvXG4gIDIwOlx0XHQgIGJlIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuICBOb3RlIHRoYXQgZGVidWdnaW5nIG1lc3NhZ2VzIGFyZVxuICAyMTpcdFx0ICBkaXNhYmxlZCBieSBkZWZhdWx0LiAgVG8gZW5hYmxlIHRoZW0sIHN1cHBseSB0aGUgb3B0aW9uIGRlYnVnX21zZ3M9MVxuICAyMjpcdFx0ICBhdCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB3aGVuIGJvb3RpbmcgdGhlIGtlcm5lbCBvciBhcyBhbiBvcHRpb25cbiAgMjM6XHRcdCAgdG8gaW5zbW9kIHdoZW4gbG9hZGluZyB0aGUgbnRmcyBtb2R1bGUuICBPbmNlIHRoZSBkcml2ZXIgaXMgYWN0aXZlLFxuICAyNDpcdFx0ICB5b3UgY2FuIGVuYWJsZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgYnkgZG9pbmcgKGFzIHJvb3QpOlxuICAyNTpcdFx0ICBlY2hvIDEgXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXG4gIDI2Olx0XHQgIFJlcGxhY2luZyB0aGUgXCYjMzQ7MVwmIzM0OyB3aXRoIFwmIzM0OzBcJiMzNDsgd291bGQgZGlzYWJsZSBkZWJ1ZyBtZXNzYWdlcy5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxuICAyOTpcdFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxuICAzMDpcdFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxuICAzMTpcdFxuICAzMjpcdFx0ICBXaGVuIHJlcG9ydGluZyBidWdzLCBwbGVhc2UgdHJ5IHRvIGhhdmUgYXZhaWxhYmxlIGEgZnVsbCBkdW1wIG9mXG4gIDMzOlx0XHQgIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSB0aGUgbWlzYmVoYXZpb3VyIHdhcyBvY2N1cnJpbmcuXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG4gIDM2Olx0XHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiAgMzc6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAzODpcdFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBhZGRpdGlvbmFsIGFjY2VzcyByaWdodHNcbiAgNDE6XHRcdCAgZm9yIHVzZXJzIGFuZCBncm91cHMgYmV5b25kIHRoZSBzdGFuZGFyZCBvd25lci9ncm91cC93b3JsZCBzY2hlbWUuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgQUNMIHN1cHBvcnQgZm9yIG50ZnMsIHByb3ZpZGluZyBmdW5jdGlvbmFsIHBhcml0eVxuICA0NDpcdFx0ICB3aXRoIG50ZnMzIGRyaXZpZXIuXG4gIDQ1Olx0XG4gIDQ2Olx0XHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXG4gIDQ3Olx0XG4gIDQ4Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IEFjY2VzcyBDb250cm9sIExpc3RzIGFyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRhbW4sIERpZCBgTlRGU19SV2AgUmVhbGx5IEdvIEF3YXk/KioKCkhvbGQgb24gYSBzZWNvbmQuLi4gYE5URlNfUldgIGdvdCBheGVkPyBUaGF0JiMzOTtzIGEgYml0IG9mIGEgc3VycHJpc2UuIFJpZ2h0LCB0aW1lIHRvIHZlcmlmeS4gVGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgY2hlY2sgaXMgdGhlIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgTlRGUyBmaWxlc3lzdGVtIGNvbXBvbmVudCwgd2hpY2ggc2hvdWxkIGJlIHRoZSBgZnMvbnRmcy9NYWtlZmlsZWAuIFRpbWUgdG8gY3JhY2sgdGhhdCBvcGVuIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZSBhbmQgc2VlIGhvdyB0aGF0IHZhcmlhYmxlLCBvciBpdHMgcmVwbGFjZW1lbnQsIGlzIGJlaW5nIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0b2JqLSQoQ09ORklHX05URlNfRlMpICYjNDM7PSBudGZzLm9cbiAgIDQ6XHRcbiAgIDU6XHRudGZzLXkgOj0gYW9wcy5vIGF0dHJpYi5vIGNvbGxhdGUubyBkaXIubyBmaWxlLm8gaW5kZXgubyBpbm9kZS5vIFxcXG4gICA2Olx0XHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXG4gICA3Olx0XHQgIHVwY2FzZS5vIGJpdG1hcC5vIGxjbmFsbG9jLm8gbG9nZmlsZS5vIHJlcGFyc2UubyBjb21wcmVzcy5vIFxcXG4gICA4Olx0XHQgIGlvbWFwLm8gZGVidWcubyBzeXNjdGwubyBvYmplY3RfaWQubyBiZGV2LWlvLm9cbiAgIDk6XHRcbiAgMTA6XHRjY2ZsYWdzLSQoQ09ORklHX05URlNfREVCVUcpICYjNDM7PSAtRERFQlVHXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqTlRGUyBXcml0ZSBTdXBwb3J0OiBBIFF1aWNrIEludmVzdGlnYXRpb24qKgoKQWxyaWdodCwgc28gYE5URlNfUldgIGlzIGdvbmUg4oCTIHRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lLiBUaGUgcXVlc3Rpb24gaXMsIGhhcyB3cml0ZSBzdXBwb3J0IGJlZW4gaW50ZWdyYXRlZCBkaXJlY3RseSBpbnRvIHRoZSBjb3JlLCBvciBhcmUgd2Ugbm93IGRlYWxpbmcgd2l0aCBhIHJlYWQtb25seSBzY2VuYXJpbz8gTXkgZ3V0IHNheXMgdGhlcmUgd2FzIHNvbWUgcmVjZW50IHNodWZmbGluZyBhcm91bmQgd2l0aCB0aGUgTlRGUyBjb2RlLCBwZXJoYXBzIGEgcGF0Y2ggc2VyaWVzIHRoYXQgc2hpZnRlZCB0aGluZ3MsIGJ1dCBJJiMzOTttIG5vdCBlbnRpcmVseSBzdXJlIHdoZXJlIGl0IGxhbmRlZC4gV2FzIGBOVEZTX1JXYCByZW1vdmVkIGJlY2F1c2Ugd3JpdGUgY2FwYWJpbGl0aWVzIHdlcmUgcmVtb3ZlZCBvciB3ZXJlIHRoZXkgYWN0dWFsbHkgYWx3YXlzIGF2YWlsYWJsZT8KClRoZSBiZXN0IHdheSB0byBmaWd1cmUgdGhpcyBvdXQgZGVmaW5pdGl2ZWx5IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGZzL250ZnMvc3VwZXIuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGZpbGVzeXN0ZW0mIzM5O3Mgc3VwZXJibG9jayBhbmQgaXRzIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBhcmUgZGVmaW5lZCwgd2hpY2ggc2hvdWxkIGdpdmUgbWUgdGhlIGNsZWFyZXN0IGluZGljYXRpb24gb2YgaG93IHdyaXRlIHN1cHBvcnQgaXMgY3VycmVudGx5IGhhbmRsZWQsIGlmIGF0IGFsbC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhcm91bmQgd3JpdGUtcmVsYXRlZCBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSB0cnV0aCBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX3dyaXRlX21mdF9ibG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL21mdC5jPTI1OTM9c3RhdGljIHM2NCBsY25fZnJvbV9pbmRleChzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCwgc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxuLS1cbmZzL250ZnMvbWZ0LmMtMjYwOC0vKlxuZnMvbnRmcy9tZnQuYzoyNjA5OiAqIG50ZnNfd3JpdGVfbWZ0X2Jsb2NrIC0gV3JpdGUgYmFjayBhIGZvbGlvIGNvbnRhaW5pbmcgTUZUIHJlY29yZHNcbmZzL250ZnMvbWZ0LmMtMjYxMC0gKiBAZm9saW86XHRUaGUgZm9saW8gdG8gd3JpdGUgYmFjayAoY29udGFpbnMgb25lIG9yIG1vcmUgTUZUIHJlY29yZHMpXG4tLVxuZnMvbnRmcy9tZnQuYy0yNjE5LSAqL1xuZnMvbnRmcy9tZnQuYzoyNjIwOnN0YXRpYyBpbnQgbnRmc193cml0ZV9tZnRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpXG5mcy9udGZzL21mdC5jLTI2MjEte1xuLS1cbmZzL250ZnMvbWZ0LmMtMjgyMS0gKiBXcml0ZWJhY2sgaXRlcmF0b3IgZm9yIE1GVCByZWNvcmRzLiBJdGVyYXRlcyBvdmVyIGRpcnR5IGZvbGlvcyBhbmRcbmZzL250ZnMvbWZ0LmM6MjgyMjogKiBkZWxlZ2F0ZXMgYWN0dWFsIHdyaXRpbmcgdG8gbnRmc193cml0ZV9tZnRfYmxvY2soKSBmb3IgZWFjaCBmb2xpby5cbmZzL250ZnMvbWZ0LmMtMjgyMy0gKiBDYWxsZWQgZnJvbSB0aGUgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIC53cml0ZXBhZ2VzIHZlY3RvciBvZiB0aGVcbi0tXG5mcy9udGZzL21mdC5jPTI4Mjg9aW50IG50ZnNfbWZ0X3dyaXRlcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvbnRmcy9tZnQuYy0yODM3LVx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIHdiYywgZm9saW8sIFx1MDAyNmVycm9yKSkpXG5mcy9udGZzL21mdC5jOjI4Mzg6XHRcdGVycm9yID0gbnRmc193cml0ZV9tZnRfYmxvY2soZm9saW8sIHdiYyk7XG5mcy9udGZzL21mdC5jLTI4MzktXHRyZXR1cm4gZXJyb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NDYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOVEZTIE1GVCBCbG9jayBXcml0ZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCBmdW5jdGlvbi4gSSBzZWUgaXQmIzM5O3MgZGVmaW5lZCBpbiBgZnMvbnRmcy9tZnQuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIG9yIGZsYWdzIEkgbmVlZCB0byBjb25zaWRlciBmb3IgdGhpcyBmdW5jdGlvbiYjMzk7cyBiZWhhdmlvci4gQmFzZWQgb24gdGhlIGZpbGUgbG9jYXRpb24sIEkmIzM5O20gZ3Vlc3NpbmcgdGhlIGdlbmVyYWwgTlRGUyBmaWxlc3lzdGVtIHN1cHBvcnQgKGBOVEZTX0ZTYCkgaXMgdGhlIHJlbGV2YW50IGNvbXBpbGUgdGltZSBjb25maWd1cmF0aW9uIGZsYWcuIEJ1dCBJIHNob3VsZCBjb25maXJtIHRoaXMuCgpOb3csIGEga2V5IHF1ZXN0aW9uIGlzLCB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICp1c2VkKj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgaGllcmFyY2h5LiBMZXQgbWUgY2hlY2suLi4gQWgsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBudGZzX21mdF93cml0ZXBhZ2VzYC4gT2theSwgdGhhdCYjMzk7cyBoZWxwZnVsLiBOb3csIHdoZXJlIGlzICp0aGF0KiBjYWxsZWQ/IE15IGh1bmNoIGlzIHRoaXMgcmVsYXRlcyB0byB0aGUgcGFnZSB3cml0ZWJhY2sgbWFjaGluZXJ5LiBTbywgbGlrZWx5IGBmcy9udGZzL2FvcHMuY2AuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBjb25uZWN0aW9uLCBvZiBjb3Vyc2UuIE5lZWQgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgTlRGUyYjMzk7cyBmaWxlIHN5c3RlbSBvcGVyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfbWZ0X3dyaXRlcGFnZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hb3BzLmM9Mjk0PWNvbnN0IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgbnRmc19tZnRfYW9wcyA9IHtcbi0tXG5mcy9udGZzL2FvcHMuYy0yOTYtXHQucmVhZGFoZWFkXHRcdD0gbnRmc19yZWFkYWhlYWQsXG5mcy9udGZzL2FvcHMuYzoyOTc6XHQud3JpdGVwYWdlc1x0XHQ9IG50ZnNfbWZ0X3dyaXRlcGFnZXMsXG5mcy9udGZzL2FvcHMuYy0yOTgtXHQuZGlydHlfZm9saW9cdFx0PSBpb21hcF9kaXJ0eV9mb2xpbyxcbi0tXG5mcy9udGZzL21mdC5jPTI2MjA9c3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYylcbi0tXG5mcy9udGZzL21mdC5jLTI4MTYtLypcbmZzL250ZnMvbWZ0LmM6MjgxNzogKiBudGZzX21mdF93cml0ZXBhZ2VzIC0gV3JpdGUgYmFjayBkaXJ0eSBmb2xpb3MgZm9yIHRoZSAkTUZUIGlub2RlXG5mcy9udGZzL21mdC5jLTI4MTgtICogQG1hcHBpbmc6XHRhZGRyZXNzIHNwYWNlIG9mIHRoZSAkTUZUIGlub2RlXG4tLVxuZnMvbnRmcy9tZnQuYy0yODI3LSAqL1xuZnMvbnRmcy9tZnQuYzoyODI4OmludCBudGZzX21mdF93cml0ZXBhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuZnMvbnRmcy9tZnQuYy0yODI5LVx0XHRzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYylcbi0tXG5mcy9udGZzL21mdC5oPTg1PWludCBudGZzX21mdF9yZWNvcmRfY2hlY2soY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsIHN0cnVjdCBtZnRfcmVjb3JkICptLFxuZnMvbnRmcy9tZnQuaC04Ni1cdFx0XHQgIHU2NCBtZnRfbm8pO1xuZnMvbnRmcy9tZnQuaDo4NzppbnQgbnRmc19tZnRfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbmZzL250ZnMvbWZ0LmgtODgtXHRcdHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI2NQoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiA5ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTlRGUyBNRlQgV3JpdGViYWNrIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gdHJhY2luZyB0aGUgYG50ZnNfbWZ0X3dyaXRlcGFnZXNgIGZ1bmN0aW9uLCBhbmQgYXMgZXhwZWN0ZWQsIGl0JiMzOTtzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgYG50ZnNfbWZ0X2FvcHNgIHN0cnVjdHVyZSwgd2hpY2ggaGFuZGxlcyBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMgZm9yIHRoZSBNRlQgaW5vZGUuIFRoYXQgbWVhbnMsIHdoZW5ldmVyIHRoZSBNRlQgaW5vZGUgaXMgd3JpdHRlbiBiYWNrIHRvIGRpc2ssIGl0IHdpbGwgY2FsbCBgbnRmc19tZnRfd3JpdGVwYWdlc2AsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYC4gIFNvIGZhciwgc28gZ29vZCDigJMgd2UmIzM5O3ZlIGdvdCBhIGNsZWFyIHBhdGggdGhyb3VnaCB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLgoKTm93LCB0aGUgY29uZmlnIHVzZWQgaGVyZSBpcyBgTlRGU19GU2AsIG5vIG90aGVyIGNvbmZpZ3MgYXJlIHJlbGV2YW50LiBUaGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBmb3IgdGhpcyBmaXggYXJlIGBudGZzX3dyaXRlX21mdF9ibG9ja2AgYW5kIGBudGZzX21mdF93cml0ZXBhZ2VzYC4KCkxvb2tpbmcgdGhyb3VnaCB0aGUgY2hhbmdlcywgaXQgc2VlbXMgdGhhdCBvbmx5IGBudGZzX3dyaXRlX21mdF9ibG9ja2AgaGFzIGJlZW4gbW9kaWZpZWQuIFRoaXMgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBidWcgZml4LCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUuCgpJJiMzOTt2ZSBleGFtaW5lZCB0aGUgZGlmZiwgYW5kIEkmIzM5O20gcXVpdGUgY29uZmlkZW50IGluIHRoZSBwYXRoIGFuZCBmb2N1cy4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCBhcyBpdCBzZWVtcyBhIHNvbGlkIGFyZWEgZm9yIGZ1enppbmcuCkZvciBteSBmdXp6aW5nIGVmZm9ydCwgbXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgbnRmc193cml0ZV9tZnRfYmxvY2tgLiBJIHdpbGwgYWxzbyBvbmx5IGVuYWJsZSB0aGUgYE5URlNfRlNgIGNvbmZpZywgdGhhdCBzZWVtcyBzdWZmaWNpZW50IGZvciByZXByb2R1Y2luZyB0aGlzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgZnMvbnRmcy9LY29uZmlnYCBmaWxlIGFnYWluLiBgTlRGU19GU2AgaXMgdGhlIG1haW4gb25lIGFuZCwgeWVzLCB0aGVyZSBhcmUgb3RoZXIgY29uZmlncyBzdWNoIGFzIGBOVEZTX0RFQlVHYCBhbmQgYE5URlNfRlNfUE9TSVhfQUNMYCwgYnV0IG5vbmUgb2YgdGhlbSBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGguICBTbywgSSBjYW4gY29uZmlybSB0aGF0IGBOVEZTX0ZTYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfd3JpdGVfbWZ0X2Jsb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBudGZzX3dyaXRlX21mdF9ibG9ja2Agd2hlcmUgYSBydW5saXN0IGVsZW1lbnQgcG9pbnRlciBgcmxgIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXplZCBvciBhcyBhIHN0YWxlIHBvaW50ZXIgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyJiMzOTtzIE1GVCB3cml0ZWJhY2sgcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gd3JpdGluZyB0byBOVEZTIHZvbHVtZXMuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGhlbHAgZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgZml4IGFuZCB0aGUgTUZUIHdyaXRlYmFjayBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfd3JpdGVfbWZ0X2Jsb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBudGZzX3dyaXRlX21mdF9ibG9ja2Agd2hlcmUgYSBydW5saXN0IGVsZW1lbnQgcG9pbnRlciBgcmxgIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXplZCBvciBhcyBhIHN0YWxlIHBvaW50ZXIgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyJiMzOTtzIE1GVCB3cml0ZWJhY2sgcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gd3JpdGluZyB0byBOVEZTIHZvbHVtZXMuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGhlbHAgZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgZml4IGFuZCB0aGUgTUZUIHdyaXRlYmFjayBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA3OjMzLjQ5NzEyMTcwOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzcyNTg4MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX3dyaXRlX21mdF9ibG9ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBudGZzX3dyaXRlX21mdF9ibG9ja2Agd2hlcmUgYSBydW5saXN0IGVsZW1lbnQgcG9pbnRlciBgcmxgIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXplZCBvciBhcyBhIHN0YWxlIHBvaW50ZXIgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyJ3MgTUZUIHdyaXRlYmFjayBwYXRoLCB3aGljaCBpcyByZWFjaGFibGUgd2hlbiB3cml0aW5nIHRvIE5URlMgdm9sdW1lcy4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgaGVscCBlbnN1cmUgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBmaXggYW5kIHRoZSBNRlQgd3JpdGViYWNrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzozMy40OTcxMjgwNzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTkzNTQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNkMTQ3Mjg0ZmFiNzc4NTAxNWQwZDU2ZTg5NjI3YWRhYjQ2NTM4MTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDc6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9tZnQuYyBiL2ZzL250ZnMvbWZ0LmNcXG5pbmRleCBhNTAxOWU4MDk1MWI4NC4uZmQyMGQ3YWJkNmY1ZWMgMTAwNjQ0XFxuLS0tIGEvZnMvbnRmcy9tZnQuY1xcbisrKyBiL2ZzL250ZnMvbWZ0LmNcXG5AQCAtMjYzNyw3ICsyNjM3LDYgQEAgc3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndcXG4gXFx0czY0IHZjbiA9IG50ZnNfcGlkeF90b19jbHVzdGVyKHZvbCwgZm9saW8tXFx1MDAzZWluZGV4KTtcXG4gXFx0czY0IGVuZF92Y24gPSBudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuaS1cXHUwMDNlYWxsb2NhdGVkX3NpemUpO1xcbiBcXHR1bnNpZ25lZCBpbnQgZm9saW9fc3o7XFxuLVxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsID0gTlVMTDtcXG4gXFx0bG9mZl90IGlfc2l6ZSA9IGlfc2l6ZV9yZWFkKHZpKTtcXG4gXFxuIFxcdG50ZnNfZGVidWcoXFxcIkVudGVyaW5nIGZvciBpbm9kZSAweCVsbHgsIGF0dHJpYnV0ZSB0eXBlIDB4JXgsIGZvbGlvIGluZGV4IDB4JWx4LlxcXCIsXFxuQEAgLTI2ODIsNiArMjY4MSw3IEBAIHN0YXRpYyBpbnQgbnRmc193cml0ZV9tZnRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3XFxuIFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ0bmksIFxcdTAwMjZyZWZfaW5vc1tucl9yZWZfaW5vc10pKSB7XFxuIFxcdFxcdFxcdHVuc2lnbmVkIGludCBtZnRfcmVjb3JkX29mZiA9IDA7XFxuIFxcdFxcdFxcdHM2NCB2Y25fb2ZmID0gdmNuO1xcbitcXHRcXHRcXHRzNjQgcmxfbGVuID0gMDtcXG4gXFxuIFxcdFxcdFxcdC8qXFxuIFxcdFxcdFxcdCAqIFRoZSByZWNvcmQgc2hvdWxkIGJlIHdyaXR0ZW4uICBJZiBhIGxvY2tlZCBudGZzXFxuQEAgLTI3MDEsOCArMjcwMSwxMiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRpZiAodm9sLVxcdTAwM2VjbHVzdGVyX3NpemUgXFx1MDAzYyBmb2xpb19zaXplKGZvbGlvKSkge1xcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybDtcXG4rXFxuIFxcdFxcdFxcdFxcdGRvd25fd3JpdGUoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbiBcXHRcXHRcXHRcXHRybCA9IG50ZnNfYXR0cl92Y25fdG9fcmwobmksIHZjbl9vZmYsIFxcdTAwMjZsY24pO1xcbitcXHRcXHRcXHRcXHRpZiAoIUlTX0VSUihybCkpXFxuK1xcdFxcdFxcdFxcdFxcdHJsX2xlbiA9IHJsLVxcdTAwM2VsZW5ndGggLSAodmNuX29mZiAtIHJsLVxcdTAwM2V2Y24pO1xcbiBcXHRcXHRcXHRcXHR1cF93cml0ZShcXHUwMDI2bmktXFx1MDAzZXJ1bmxpc3QubG9jayk7XFxuIFxcdFxcdFxcdFxcdGlmIChJU19FUlIocmwpIHx8IGxjbiBcXHUwMDNjIDApIHtcXG4gXFx0XFx0XFx0XFx0XFx0ZXJyID0gLUVJTztcXG5AQCAtMjczMyw3ICsyNzM3LDcgQEAgc3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndcXG4gXFxuIFxcdFxcdFxcdGlmICh2b2wtXFx1MDAzZWNsdXN0ZXJfc2l6ZSA9PSBOVEZTX0JMT0NLX1NJWkUgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIChtZnRfcmVjb3JkX29mZiB8fFxcbi1cXHRcXHRcXHQgICAgIChybCBcXHUwMDI2XFx1MDAyNiBybC1cXHUwMDNlbGVuZ3RoIC0gKHZjbl9vZmYgLSBybC1cXHUwMDNldmNuKSA9PSAxKSB8fFxcbitcXHRcXHRcXHQgICAgIHJsX2xlbiA9PSAxIHx8XFxuIFxcdFxcdFxcdCAgICAgbWZ0X29mcyArIE5URlNfQkxPQ0tfU0laRSBcXHUwMDNlPSBQQUdFX1NJWkUpKVxcbiBcXHRcXHRcXHRcXHRmb2xpb19zeiA9IE5URlNfQkxPQ0tfU0laRTtcXG4gXFx0XFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzozNC4wMjAxNTgxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4NDk1NDMwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfd3JpdGVfbWZ0X2Jsb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCB3aGVyZSBhIHJ1bmxpc3QgZWxlbWVudCBwb2ludGVyIGBybGAgY291bGQgYmUgdXNlZCB1bmluaXRpYWxpemVkIG9yIGFzIGEgc3RhbGUgcG9pbnRlciBhY3Jvc3MgbG9vcCBpdGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIncyBNRlQgd3JpdGViYWNrIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIHdyaXRpbmcgdG8gTlRGUyB2b2x1bWVzLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBoZWxwIGVuc3VyZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGZpeCBhbmQgdGhlIE1GVCB3cml0ZWJhY2sgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2QxNDcyODRmYWI3Nzg1MDE1ZDBkNTZlODk2MjdhZGFiNDY1MzgxN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVuIDI1IDA1OjA3OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9tZnQuYyBiL2ZzL250ZnMvbWZ0LmNcbmluZGV4IGE1MDE5ZTgwOTUxYjg0Li5mZDIwZDdhYmQ2ZjVlYyAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvbWZ0LmNcbisrKyBiL2ZzL250ZnMvbWZ0LmNcbkBAIC0yNjM3LDcgKzI2MzcsNiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFx0czY0IHZjbiA9IG50ZnNfcGlkeF90b19jbHVzdGVyKHZvbCwgZm9saW8tXHUwMDNlaW5kZXgpO1xuIFx0czY0IGVuZF92Y24gPSBudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuaS1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSk7XG4gXHR1bnNpZ25lZCBpbnQgZm9saW9fc3o7XG4tXHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybCA9IE5VTEw7XG4gXHRsb2ZmX3QgaV9zaXplID0gaV9zaXplX3JlYWQodmkpO1xuIFxuIFx0bnRmc19kZWJ1ZyhcIkVudGVyaW5nIGZvciBpbm9kZSAweCVsbHgsIGF0dHJpYnV0ZSB0eXBlIDB4JXgsIGZvbGlvIGluZGV4IDB4JWx4LlwiLFxuQEAgLTI2ODIsNiArMjY4MSw3IEBAIHN0YXRpYyBpbnQgbnRmc193cml0ZV9tZnRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3XG4gXHRcdFx0XHRcdFx1MDAyNnRuaSwgXHUwMDI2cmVmX2lub3NbbnJfcmVmX2lub3NdKSkge1xuIFx0XHRcdHVuc2lnbmVkIGludCBtZnRfcmVjb3JkX29mZiA9IDA7XG4gXHRcdFx0czY0IHZjbl9vZmYgPSB2Y247XG4rXHRcdFx0czY0IHJsX2xlbiA9IDA7XG4gXG4gXHRcdFx0LypcbiBcdFx0XHQgKiBUaGUgcmVjb3JkIHNob3VsZCBiZSB3cml0dGVuLiAgSWYgYSBsb2NrZWQgbnRmc1xuQEAgLTI3MDEsOCArMjcwMSwxMiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRpZiAodm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZSBcdTAwM2MgZm9saW9fc2l6ZShmb2xpbykpIHtcbitcdFx0XHRcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsO1xuK1xuIFx0XHRcdFx0ZG93bl93cml0ZShcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuIFx0XHRcdFx0cmwgPSBudGZzX2F0dHJfdmNuX3RvX3JsKG5pLCB2Y25fb2ZmLCBcdTAwMjZsY24pO1xuK1x0XHRcdFx0aWYgKCFJU19FUlIocmwpKVxuK1x0XHRcdFx0XHRybF9sZW4gPSBybC1cdTAwM2VsZW5ndGggLSAodmNuX29mZiAtIHJsLVx1MDAzZXZjbik7XG4gXHRcdFx0XHR1cF93cml0ZShcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuIFx0XHRcdFx0aWYgKElTX0VSUihybCkgfHwgbGNuIFx1MDAzYyAwKSB7XG4gXHRcdFx0XHRcdGVyciA9IC1FSU87XG5AQCAtMjczMyw3ICsyNzM3LDcgQEAgc3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndcbiBcbiBcdFx0XHRpZiAodm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZSA9PSBOVEZTX0JMT0NLX1NJWkUgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIChtZnRfcmVjb3JkX29mZiB8fFxuLVx0XHRcdCAgICAgKHJsIFx1MDAyNlx1MDAyNiBybC1cdTAwM2VsZW5ndGggLSAodmNuX29mZiAtIHJsLVx1MDAzZXZjbikgPT0gMSkgfHxcbitcdFx0XHQgICAgIHJsX2xlbiA9PSAxIHx8XG4gXHRcdFx0ICAgICBtZnRfb2ZzICsgTlRGU19CTE9DS19TSVpFIFx1MDAzZT0gUEFHRV9TSVpFKSlcbiBcdFx0XHRcdGZvbGlvX3N6ID0gTlRGU19CTE9DS19TSVpFO1xuIFx0XHRcdGVsc2VcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA3OjM0LjAyMDE2MDkyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkyMjc0MTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5URlMgTUZUIEJsb2NrIFdyaXRlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgZnMvbnRmcy9tZnQuY2AgdGhhdCB0d2Vha3MgdGhlIGBudGZzX3dyaXRlX21mdF9ibG9ja2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlcyBhcmUgYWxsIGFib3V0IGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoaXMgYHJsYCB2YXJpYWJsZSwgdGhlIHJ1bmxpc3QgZWxlbWVudC5cblxuSW5pdGlhbGx5LCBgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmwgPSBOVUxMO2Agd2FzIGRlY2xhcmVkIG91dHNpZGUgdGhlIGxvb3AuIFRoZSBwYXRjaCByZW1vdmVzIHRoaXMgZGVjbGFyYXRpb24gZnJvbSB0aGUgb3V0ZXIgc2NvcGUgYW5kIGFkZHMgYHM2NCBybF9sZW4gPSAwO2AgaW5zaWRlIHRoZSBsb29wLiAgVGhhdCdzIGFscmVhZHkgYSBnb29kIHNpZ24sIHNjb3BpbmcgdmFyaWFibGVzIGNsb3NlciB0byB3aGVyZSB0aGV5J3JlIHVzZWQgaXMgZ2VuZXJhbGx5IGNsZWFuZXIuIEl0IGFsc28gbW92ZXMgdGhlIGFjdHVhbCBgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7YCBkZWNsYXJhdGlvbiBpbnRvIHRoaXMgYGlmICh2b2wtXHUwMDNlY2x1c3Rlcl9zaXplIFx1MDAzYyBmb2xpb19zaXplKGZvbGlvKSlgIGJsb2NrLlxuXG5UaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoZSBjb25kaXRpb25hbCBsb2dpYy4gIEJlZm9yZSwgdGhleSBoYWQgYChybCBcdTAwMjZcdTAwMjYgcmwtXHUwMDNlbGVuZ3RoIC0gKHZjbl9vZmYgLSBybC1cdTAwM2V2Y24pID09IDEpYC4gIFRoZSBwYXRjaCBjaGFuZ2VzIHRoaXMgdG8gYHJsX2xlbiA9PSAxYC4gIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBub3cgY2FsY3VsYXRpbmcgYHJsX2xlbiA9IHJsLVx1MDAzZWxlbmd0aCAtICh2Y25fb2ZmIC0gcmwtXHUwMDNldmNuKWAgd2l0aGluIHRoZSBibG9jayB3aXRoIGBybGAgb25seSB3aGVuIGAhSVNfRVJSKHJsKWAuXG5cbkFscmlnaHQsIEkgc2VlIHRoZSBwcm9ibGVtIG5vdy4gQmVmb3JlLCBgcmxgIHdhcyBkZWNsYXJlZCBvdXRzaWRlIHRoYXQgYmxvY2suIElmIGB2b2wtXHUwMDNlY2x1c3Rlcl9zaXplIFx1MDAzYyBmb2xpb19zaXplKGZvbGlvKWAgd2FzICpmYWxzZSogaW4gYSBnaXZlbiBpdGVyYXRpb24sIGBybGAgd291bGRuJ3QgYmUgcmUtYXNzaWduZWQuICBTbywgaW4gc3Vic2VxdWVudCBpdGVyYXRpb25zLCBgcmxgIHdvdWxkIHJldGFpbiBpdHMgdmFsdWUgZnJvbSB0aGUgcHJldmlvdXMgbG9vcCBpdGVyYXRpb24uIElmIGl0IHdhcyBgTlVMTGAgaW4gdGhlIGZpcnN0IGl0ZXJhdGlvbiwgdGhlbiB0aGUgY29uZGl0aW9uYWwgbG9naWMgd291bGQgYmUgc2FmZSwgYnV0IGlmIGl0IHdhcyBzZXQgaW4gYSBwcmV2aW91cyBpdGVyYXRpb24sIGl0J3MgYSBzdGFsZSBwb2ludGVyISBUaGlzIG1lYW5zIHRoZXJlJ3MgYSBzZXJpb3VzIHBvdGVudGlhbCBmb3IgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgcmVhZHMsIG9yIGp1c3QgY29tcGxldGVseSB3cm9uZyBsb2dpYyBiZWluZyBleGVjdXRlZCBiZWNhdXNlIHdlJ3JlIGRlcmVmZXJlbmNpbmcgYSBwb2ludGVyIHRoYXQgY291bGQgYmUgZ2FyYmFnZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBidWchXG5cbkkgbmVlZCB0byBjb25maXJtIHRoaXMgYnkgZ29pbmcgYmFjayBhbmQgdmVyaWZ5aW5nLiBMZXQncyBzZWUuLi5JJ2xsIHF1aWNrbHkgdXNlIGBncmVwcGVyYCB0byBsb2NhdGUgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCBpbiBgZnMvbnRmcy9tZnQuY2AgYW5kIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGNvcnJlY3QgYW5kIHRoYXQgdGhlIHBhdGNoIHJlc29sdmVzIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzOCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA3OjQwLjk0MjkwNDc4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzQ5MjU2NDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50ZnNfd3JpdGVfbWZ0X2Jsb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvbWZ0LmM9MjU5Mz1zdGF0aWMgczY0IGxjbl9mcm9tX2luZGV4KHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLCBzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXFxuLS1cXG5mcy9udGZzL21mdC5jLTI2MDgtLypcXG5mcy9udGZzL21mdC5jOjI2MDk6ICogbnRmc193cml0ZV9tZnRfYmxvY2sgLSBXcml0ZSBiYWNrIGEgZm9saW8gY29udGFpbmluZyBNRlQgcmVjb3Jkc1xcbmZzL250ZnMvbWZ0LmMtMjYxMC0gKiBAZm9saW86XFx0VGhlIGZvbGlvIHRvIHdyaXRlIGJhY2sgKGNvbnRhaW5zIG9uZSBvciBtb3JlIE1GVCByZWNvcmRzKVxcbi0tXFxuZnMvbnRmcy9tZnQuYy0yNjE5LSAqL1xcbmZzL250ZnMvbWZ0LmM6MjYyMDpzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKVxcbmZzL250ZnMvbWZ0LmMtMjYyMS17XFxuLS1cXG5mcy9udGZzL21mdC5jLTI4MjEtICogV3JpdGViYWNrIGl0ZXJhdG9yIGZvciBNRlQgcmVjb3Jkcy4gSXRlcmF0ZXMgb3ZlciBkaXJ0eSBmb2xpb3MgYW5kXFxuZnMvbnRmcy9tZnQuYzoyODIyOiAqIGRlbGVnYXRlcyBhY3R1YWwgd3JpdGluZyB0byBudGZzX3dyaXRlX21mdF9ibG9jaygpIGZvciBlYWNoIGZvbGlvLlxcbmZzL250ZnMvbWZ0LmMtMjgyMy0gKiBDYWxsZWQgZnJvbSB0aGUgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIC53cml0ZXBhZ2VzIHZlY3RvciBvZiB0aGVcXG4tLVxcbmZzL250ZnMvbWZ0LmM9MjgyOD1pbnQgbnRmc19tZnRfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbmZzL250ZnMvbWZ0LmMtMjgzNy1cXHR3aGlsZSAoKGZvbGlvID0gd3JpdGViYWNrX2l0ZXIobWFwcGluZywgd2JjLCBmb2xpbywgXFx1MDAyNmVycm9yKSkpXFxuZnMvbnRmcy9tZnQuYzoyODM4OlxcdFxcdGVycm9yID0gbnRmc193cml0ZV9tZnRfYmxvY2soZm9saW8sIHdiYyk7XFxuZnMvbnRmcy9tZnQuYy0yODM5LVxcdHJldHVybiBlcnJvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDc6NDQuMjkyMTcxOTU5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NDU2Nzg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5URlMgV3JpdGUgT3BlcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCwgd2hpY2ggaXMgdHJpZ2dlcmVkIGJ5IGBudGZzX21mdF93cml0ZXBhZ2VzYC4gUmlnaHQsIHRoaXMgaXMgYWxsIHBhcnQgb2YgdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGguIExldCdzIG1ha2Ugc3VyZSBvdXIgY29uZmlndXJhdGlvbiBpcyBzZXQgdXAgcHJvcGVybHkgYmVmb3JlIGRlbHZpbmcgZGVlcGVyLiBJIG5lZWQgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIEtjb25maWcgdG8gY29uZmlybSB0aGUgcmVsZXZhbnQgTlRGUyBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gVGhpcyBjYWxsIGNoYWluIGltcGxpZXMgYSBjcml0aWNhbCB3cml0ZSBvcGVyYXRpb24g4oCTIHByb2JhYmx5IGludm9sdmluZyB0aGUgTWV0YWRhdGEgRmlsZSBUYWJsZSAoTUZUKSBpdHNlbGYsIHNvIGl0J3MgZ29vZCB0byBlbnN1cmUgYWxsIHJlbGF0ZWQgY29tcG9uZW50cyBhcmUgYWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDc6NDcuMDY2NzQxNzU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTE4MDY4NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXFxuLS1cXG5mcy9udGZzL0tjb25maWctMzQtXFxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzo0OS42Nzg1NTQyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NzYxNjU2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlIGhhdmUgaGVyZS5cblxuKipBbmFseXppbmcgdGhlIE5URlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB0byB1c2UgYE5URlNfRlNgLiBCdXQgaGFuZyBvbiwgSSBzZWUgYW5vdGhlciBOVEZTIGRyaXZlciBsdXJraW5nIGluIGBmcy9udGZzMy9gLCBuYW1lZCBgTlRGUzNfRlNgLiBUaGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBpcyBsb2NhdGVkIGluIGBmcy9udGZzL21mdC5jYCwgd2hpY2ggbWFrZXMgaXQgY2xlYXIgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlICpvcmlnaW5hbCogTlRGUyBkcml2ZXIsIG5vdCB0aGUgbmV3ZXIgTlRGUzMuIFRoZSBjb25maWcgc3RpbGwgY29uZmlybXMgYE5URlNfRlNgLlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJJ2xsIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRvIHNlZSBpZiBzb21ldGhpbmcgbGlrZSBgTlRGU19SV2AgaXMgc2V0IG9yIHVuc2V0LiBUaGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgY3VycmVudCBzaXR1YXRpb24uIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgb3RoZXIgY29uZmlnIGNob2ljZXMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQxLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDc6NTMuNDU0NzIxNjE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDI0MTMxNjAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX1JXXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzo1Ni4xOTcxNDYxODRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTM4NjkxNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBOVEZTIFdyaXRlIFN1cHBvcnQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBwaW5wb2ludCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gY29udHJvbGxpbmcgTlRGUyB3cml0ZSBzdXBwb3J0LiBUbyBkbyB0aGF0LCBJJ2xsIG5hdmlnYXRlIGRpcmVjdGx5IHRvIHRoZSBoZWFydCBvZiB0aGUgZmlsZSBzeXN0ZW0gY29uZmlndXJhdGlvbjogYGZzL250ZnMvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgcGVydGFpbmluZyB0byB0aGUgTlRGUyBmaWxlIHN5c3RlbSBzaG91bGQgcmVzaWRlLiBUaGlzIGZpbGUgd2lsbCB1bmRvdWJ0ZWRseSBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB3cml0ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbmZpZ3VyZWQuIEkgZXhwZWN0IHRvIGZpbmQgYSBib29sZWFuIG9wdGlvbiwgb3IgcGVyaGFwcyBldmVuIGEgdHJpc3RhdGUsIGRpcmVjdGx5IHJlbGF0ZWQgdG8gTlRGUyB3cml0ZSBmdW5jdGlvbmFsaXR5LiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc2V0dGluZyBhbmQgYW55IGRlcGVuZGVuY2llcyBpbnZvbHZlZC4gVGhhdCdzIG15IHN0YXJ0aW5nIHBvaW50LCBsZXQncyBnbyBjaGVjayBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA3OjU5LjEzNTg0MDY3MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5URlNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTkxTXFxuICAgNTpcXHRcXHRzZWxlY3QgRlNfSU9NQVBcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxcbiAgIDg6XFx0XFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cXG4gICA5OlxcdFxcbiAgMTA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG4gIDExOlxcdFxcdCAgbnRmcy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIE5URlNfREVCVUdcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIk5URlMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxcbiAgMTg6XFx0XFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXFxuICAxOTpcXHRcXHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cXG4gIDIwOlxcdFxcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXFxuICAyMTpcXHRcXHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXFxuICAyMjpcXHRcXHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxcbiAgMjM6XFx0XFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXFxuICAyNDpcXHRcXHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XFxuICAyNTpcXHRcXHQgIGVjaG8gMSBcXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXFxuICAyNjpcXHRcXHQgIFJlcGxhY2luZyB0aGUgXFxcIjFcXFwiIHdpdGggXFxcIjBcXFwiIHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxcbiAgMjk6XFx0XFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxcbiAgMzA6XFx0XFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcXG4gIDMzOlxcdFxcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuICAzNjpcXHRcXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAzODpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICAzOTpcXHRcXHRoZWxwXFxuICA0MDpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xcbiAgNDE6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcXG4gIDQ0OlxcdFxcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzo1OS4xMzU5NjY4NzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ5MzEyMDI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEYW1uLCBEaWQgYE5URlNfUldgIFJlYWxseSBHbyBBd2F5PyoqXG5cbkhvbGQgb24gYSBzZWNvbmQuLi4gYE5URlNfUldgIGdvdCBheGVkPyBUaGF0J3MgYSBiaXQgb2YgYSBzdXJwcmlzZS4gUmlnaHQsIHRpbWUgdG8gdmVyaWZ5LiBUaGUgZmlyc3QgcGxhY2UgSSdkIGNoZWNrIGlzIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSBjb21wb25lbnQsIHdoaWNoIHNob3VsZCBiZSB0aGUgYGZzL250ZnMvTWFrZWZpbGVgLiBUaW1lIHRvIGNyYWNrIHRoYXQgb3BlbiBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZSBhbmQgc2VlIGhvdyB0aGF0IHZhcmlhYmxlLCBvciBpdHMgcmVwbGFjZW1lbnQsIGlzIGJlaW5nIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjAxLjYyOTA4OTkxNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0b2JqLSQoQ09ORklHX05URlNfRlMpICs9IG50ZnMub1xcbiAgIDQ6XFx0XFxuICAgNTpcXHRudGZzLXkgOj0gYW9wcy5vIGF0dHJpYi5vIGNvbGxhdGUubyBkaXIubyBmaWxlLm8gaW5kZXgubyBpbm9kZS5vIFxcXFxcXG4gICA2OlxcdFxcdCAgbWZ0Lm8gbXN0Lm8gbmFtZWkubyBydW5saXN0Lm8gc3VwZXIubyB1bmlzdHIubyBhdHRybGlzdC5vIGVhLm8gXFxcXFxcbiAgIDc6XFx0XFx0ICB1cGNhc2UubyBiaXRtYXAubyBsY25hbGxvYy5vIGxvZ2ZpbGUubyByZXBhcnNlLm8gY29tcHJlc3MubyBcXFxcXFxuICAgODpcXHRcXHQgIGlvbWFwLm8gZGVidWcubyBzeXNjdGwubyBvYmplY3RfaWQubyBiZGV2LWlvLm9cXG4gICA5OlxcdFxcbiAgMTA6XFx0Y2NmbGFncy0kKENPTkZJR19OVEZTX0RFQlVHKSArPSAtRERFQlVHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjAxLjYyOTE3MzU2NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA1OTY1MDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKk5URlMgV3JpdGUgU3VwcG9ydDogQSBRdWljayBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgc28gYE5URlNfUldgIGlzIGdvbmUg4oCTIHRoYXQncyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUuIFRoZSBxdWVzdGlvbiBpcywgaGFzIHdyaXRlIHN1cHBvcnQgYmVlbiBpbnRlZ3JhdGVkIGRpcmVjdGx5IGludG8gdGhlIGNvcmUsIG9yIGFyZSB3ZSBub3cgZGVhbGluZyB3aXRoIGEgcmVhZC1vbmx5IHNjZW5hcmlvPyBNeSBndXQgc2F5cyB0aGVyZSB3YXMgc29tZSByZWNlbnQgc2h1ZmZsaW5nIGFyb3VuZCB3aXRoIHRoZSBOVEZTIGNvZGUsIHBlcmhhcHMgYSBwYXRjaCBzZXJpZXMgdGhhdCBzaGlmdGVkIHRoaW5ncywgYnV0IEknbSBub3QgZW50aXJlbHkgc3VyZSB3aGVyZSBpdCBsYW5kZWQuIFdhcyBgTlRGU19SV2AgcmVtb3ZlZCBiZWNhdXNlIHdyaXRlIGNhcGFiaWxpdGllcyB3ZXJlIHJlbW92ZWQgb3Igd2VyZSB0aGV5IGFjdHVhbGx5IGFsd2F5cyBhdmFpbGFibGU/XG5cblRoZSBiZXN0IHdheSB0byBmaWd1cmUgdGhpcyBvdXQgZGVmaW5pdGl2ZWx5IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIEknbGwgbmVlZCB0byBjaGVjayBgZnMvbnRmcy9zdXBlci5jYC4gVGhhdCdzIHdoZXJlIHRoZSBmaWxlc3lzdGVtJ3Mgc3VwZXJibG9jayBhbmQgaXRzIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBhcmUgZGVmaW5lZCwgd2hpY2ggc2hvdWxkIGdpdmUgbWUgdGhlIGNsZWFyZXN0IGluZGljYXRpb24gb2YgaG93IHdyaXRlIHN1cHBvcnQgaXMgY3VycmVudGx5IGhhbmRsZWQsIGlmIGF0IGFsbC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhcm91bmQgd3JpdGUtcmVsYXRlZCBvcGVyYXRpb25zLiBUaGF0J3Mgd2hlcmUgdGhlIHRydXRoIGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjA1LjQzNTE0MTg3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyNTY1NzA0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX3dyaXRlX21mdF9ibG9ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL21mdC5jPTI1OTM9c3RhdGljIHM2NCBsY25fZnJvbV9pbmRleChzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCwgc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxcbi0tXFxuZnMvbnRmcy9tZnQuYy0yNjA4LS8qXFxuZnMvbnRmcy9tZnQuYzoyNjA5OiAqIG50ZnNfd3JpdGVfbWZ0X2Jsb2NrIC0gV3JpdGUgYmFjayBhIGZvbGlvIGNvbnRhaW5pbmcgTUZUIHJlY29yZHNcXG5mcy9udGZzL21mdC5jLTI2MTAtICogQGZvbGlvOlxcdFRoZSBmb2xpbyB0byB3cml0ZSBiYWNrIChjb250YWlucyBvbmUgb3IgbW9yZSBNRlQgcmVjb3JkcylcXG4tLVxcbmZzL250ZnMvbWZ0LmMtMjYxOS0gKi9cXG5mcy9udGZzL21mdC5jOjI2MjA6c3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYylcXG5mcy9udGZzL21mdC5jLTI2MjEte1xcbi0tXFxuZnMvbnRmcy9tZnQuYy0yODIxLSAqIFdyaXRlYmFjayBpdGVyYXRvciBmb3IgTUZUIHJlY29yZHMuIEl0ZXJhdGVzIG92ZXIgZGlydHkgZm9saW9zIGFuZFxcbmZzL250ZnMvbWZ0LmM6MjgyMjogKiBkZWxlZ2F0ZXMgYWN0dWFsIHdyaXRpbmcgdG8gbnRmc193cml0ZV9tZnRfYmxvY2soKSBmb3IgZWFjaCBmb2xpby5cXG5mcy9udGZzL21mdC5jLTI4MjMtICogQ2FsbGVkIGZyb20gdGhlIGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyAud3JpdGVwYWdlcyB2ZWN0b3Igb2YgdGhlXFxuLS1cXG5mcy9udGZzL21mdC5jPTI4Mjg9aW50IG50ZnNfbWZ0X3dyaXRlcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5mcy9udGZzL21mdC5jLTI4MzctXFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIHdiYywgZm9saW8sIFxcdTAwMjZlcnJvcikpKVxcbmZzL250ZnMvbWZ0LmM6MjgzODpcXHRcXHRlcnJvciA9IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKGZvbGlvLCB3YmMpO1xcbmZzL250ZnMvbWZ0LmMtMjgzOS1cXHRyZXR1cm4gZXJyb3I7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjA3Ljk2MDgwNTM0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc3MDg0Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRGUyBNRlQgQmxvY2sgV3JpdGUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgbnRmc193cml0ZV9tZnRfYmxvY2tgIGZ1bmN0aW9uLiBJIHNlZSBpdCdzIGRlZmluZWQgaW4gYGZzL250ZnMvbWZ0LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBvciBmbGFncyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgZnVuY3Rpb24ncyBiZWhhdmlvci4gQmFzZWQgb24gdGhlIGZpbGUgbG9jYXRpb24sIEknbSBndWVzc2luZyB0aGUgZ2VuZXJhbCBOVEZTIGZpbGVzeXN0ZW0gc3VwcG9ydCAoYE5URlNfRlNgKSBpcyB0aGUgcmVsZXZhbnQgY29tcGlsZSB0aW1lIGNvbmZpZ3VyYXRpb24gZmxhZy4gQnV0IEkgc2hvdWxkIGNvbmZpcm0gdGhpcy5cblxuTm93LCBhIGtleSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSAqdXNlZCo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjYWxsIGhpZXJhcmNoeS4gTGV0IG1lIGNoZWNrLi4uIEFoLCBpdCdzIGNhbGxlZCBmcm9tIGBudGZzX21mdF93cml0ZXBhZ2VzYC4gT2theSwgdGhhdCdzIGhlbHBmdWwuIE5vdywgd2hlcmUgaXMgKnRoYXQqIGNhbGxlZD8gTXkgaHVuY2ggaXMgdGhpcyByZWxhdGVzIHRvIHRoZSBwYWdlIHdyaXRlYmFjayBtYWNoaW5lcnkuIFNvLCBsaWtlbHkgYGZzL250ZnMvYW9wcy5jYC4gSSdsbCBjb25maXJtIHRoYXQgY29ubmVjdGlvbiwgb2YgY291cnNlLiBOZWVkIHRvIHNlZSBob3cgdGhpcyBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlIG9mIE5URlMncyBmaWxlIHN5c3RlbSBvcGVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDg6MTEuNTM3ODkyNDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTgyMTk2MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19tZnRfd3JpdGVwYWdlc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2FvcHMuYz0yOTQ9Y29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBudGZzX21mdF9hb3BzID0ge1xcbi0tXFxuZnMvbnRmcy9hb3BzLmMtMjk2LVxcdC5yZWFkYWhlYWRcXHRcXHQ9IG50ZnNfcmVhZGFoZWFkLFxcbmZzL250ZnMvYW9wcy5jOjI5NzpcXHQud3JpdGVwYWdlc1xcdFxcdD0gbnRmc19tZnRfd3JpdGVwYWdlcyxcXG5mcy9udGZzL2FvcHMuYy0yOTgtXFx0LmRpcnR5X2ZvbGlvXFx0XFx0PSBpb21hcF9kaXJ0eV9mb2xpbyxcXG4tLVxcbmZzL250ZnMvbWZ0LmM9MjYyMD1zdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKVxcbi0tXFxuZnMvbnRmcy9tZnQuYy0yODE2LS8qXFxuZnMvbnRmcy9tZnQuYzoyODE3OiAqIG50ZnNfbWZ0X3dyaXRlcGFnZXMgLSBXcml0ZSBiYWNrIGRpcnR5IGZvbGlvcyBmb3IgdGhlICRNRlQgaW5vZGVcXG5mcy9udGZzL21mdC5jLTI4MTgtICogQG1hcHBpbmc6XFx0YWRkcmVzcyBzcGFjZSBvZiB0aGUgJE1GVCBpbm9kZVxcbi0tXFxuZnMvbnRmcy9tZnQuYy0yODI3LSAqL1xcbmZzL250ZnMvbWZ0LmM6MjgyODppbnQgbnRmc19tZnRfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG5mcy9udGZzL21mdC5jLTI4MjktXFx0XFx0c3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpXFxuLS1cXG5mcy9udGZzL21mdC5oPTg1PWludCBudGZzX21mdF9yZWNvcmRfY2hlY2soY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsIHN0cnVjdCBtZnRfcmVjb3JkICptLFxcbmZzL250ZnMvbWZ0LmgtODYtXFx0XFx0XFx0ICB1NjQgbWZ0X25vKTtcXG5mcy9udGZzL21mdC5oOjg3OmludCBudGZzX21mdF93cml0ZXBhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbmZzL250ZnMvbWZ0LmgtODgtXFx0XFx0c3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowODoxNC4yMzYxNjcwODFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0ODU1NDY5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTlRGUyBNRlQgV3JpdGViYWNrIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHRyYWNpbmcgdGhlIGBudGZzX21mdF93cml0ZXBhZ2VzYCBmdW5jdGlvbiwgYW5kIGFzIGV4cGVjdGVkLCBpdCdzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgYG50ZnNfbWZ0X2FvcHNgIHN0cnVjdHVyZSwgd2hpY2ggaGFuZGxlcyBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMgZm9yIHRoZSBNRlQgaW5vZGUuIFRoYXQgbWVhbnMsIHdoZW5ldmVyIHRoZSBNRlQgaW5vZGUgaXMgd3JpdHRlbiBiYWNrIHRvIGRpc2ssIGl0IHdpbGwgY2FsbCBgbnRmc19tZnRfd3JpdGVwYWdlc2AsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYC4gIFNvIGZhciwgc28gZ29vZCDigJMgd2UndmUgZ290IGEgY2xlYXIgcGF0aCB0aHJvdWdoIHRoZSByZWxldmFudCBmdW5jdGlvbnMuXG5cbk5vdywgdGhlIGNvbmZpZyB1c2VkIGhlcmUgaXMgYE5URlNfRlNgLCBubyBvdGhlciBjb25maWdzIGFyZSByZWxldmFudC4gVGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHRoaXMgZml4IGFyZSBgbnRmc193cml0ZV9tZnRfYmxvY2tgIGFuZCBgbnRmc19tZnRfd3JpdGVwYWdlc2AuXG5cbkxvb2tpbmcgdGhyb3VnaCB0aGUgY2hhbmdlcywgaXQgc2VlbXMgdGhhdCBvbmx5IGBudGZzX3dyaXRlX21mdF9ibG9ja2AgaGFzIGJlZW4gbW9kaWZpZWQuIFRoaXMgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBidWcgZml4LCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUuXG5cbkkndmUgZXhhbWluZWQgdGhlIGRpZmYsIGFuZCBJJ20gcXVpdGUgY29uZmlkZW50IGluIHRoZSBwYXRoIGFuZCBmb2N1cy4gSSdsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgIGFzIGl0IHNlZW1zIGEgc29saWQgYXJlYSBmb3IgZnV6emluZy5cbkZvciBteSBmdXp6aW5nIGVmZm9ydCwgbXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgbnRmc193cml0ZV9tZnRfYmxvY2tgLiBJIHdpbGwgYWxzbyBvbmx5IGVuYWJsZSB0aGUgYE5URlNfRlNgIGNvbmZpZywgdGhhdCBzZWVtcyBzdWZmaWNpZW50IGZvciByZXByb2R1Y2luZyB0aGlzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZSBhZ2Fpbi4gYE5URlNfRlNgIGlzIHRoZSBtYWluIG9uZSBhbmQsIHllcywgdGhlcmUgYXJlIG90aGVyIGNvbmZpZ3Mgc3VjaCBhcyBgTlRGU19ERUJVR2AgYW5kIGBOVEZTX0ZTX1BPU0lYX0FDTGAsIGJ1dCBub25lIG9mIHRoZW0gYXJlIHJlcXVpcmVkIGZvciB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLiAgU28sIEkgY2FuIGNvbmZpcm0gdGhhdCBgTlRGU19GU2AgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZC5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNjUsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjI1LjcyMTcxNjU3NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Nzk3OTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfd3JpdGVfbWZ0X2Jsb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCB3aGVyZSBhIHJ1bmxpc3QgZWxlbWVudCBwb2ludGVyIGBybGAgY291bGQgYmUgdXNlZCB1bmluaXRpYWxpemVkIG9yIGFzIGEgc3RhbGUgcG9pbnRlciBhY3Jvc3MgbG9vcCBpdGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIncyBNRlQgd3JpdGViYWNrIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIHdyaXRpbmcgdG8gTlRGUyB2b2x1bWVzLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBoZWxwIGVuc3VyZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGZpeCBhbmQgdGhlIE1GVCB3cml0ZWJhY2sgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfd3JpdGVfbWZ0X2Jsb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCB3aGVyZSBhIHJ1bmxpc3QgZWxlbWVudCBwb2ludGVyIGBybGAgY291bGQgYmUgdXNlZCB1bmluaXRpYWxpemVkIG9yIGFzIGEgc3RhbGUgcG9pbnRlciBhY3Jvc3MgbG9vcCBpdGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIncyBNRlQgd3JpdGViYWNrIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIHdyaXRpbmcgdG8gTlRGUyB2b2x1bWVzLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBoZWxwIGVuc3VyZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGZpeCBhbmQgdGhlIE1GVCB3cml0ZWJhY2sgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowczgjm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 04:55:23 +0000 UTC FinishedAt: 2026-06-25 05:08:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_write_mft_block" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX3dyaXRlX21mdF9ibG9jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbnRmc193cml0ZV9tZnRfYmxvY2tgIHdoZXJlIGEgcnVubGlzdCBlbGVtZW50IHBvaW50ZXIgYHJsYCBjb3VsZCBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgb3IgYXMgYSBzdGFsZSBwb2ludGVyIGFjcm9zcyBsb29wIGl0ZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlciYjMzk7cyBNRlQgd3JpdGViYWNrIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIHdyaXRpbmcgdG8gTlRGUyB2b2x1bWVzLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBoZWxwIGVuc3VyZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGZpeCBhbmQgdGhlIE1GVCB3cml0ZWJhY2sgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjZDE0NzI4NGZhYjc3ODUwMTVkMGQ1NmU4OTYyN2FkYWI0NjUzODE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDc6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9tZnQuYyBiL2ZzL250ZnMvbWZ0LmNcbmluZGV4IGE1MDE5ZTgwOTUxYjg0Li5mZDIwZDdhYmQ2ZjVlYyAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvbWZ0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvbWZ0LmNcbkBAIC0yNjM3LDcgJiM0MzsyNjM3LDYgQEAgc3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndcbiBcdHM2NCB2Y24gPSBudGZzX3BpZHhfdG9fY2x1c3Rlcih2b2wsIGZvbGlvLVx1MDAzZWluZGV4KTtcbiBcdHM2NCBlbmRfdmNuID0gbnRmc19ieXRlc190b19jbHVzdGVyKHZvbCwgbmktXHUwMDNlYWxsb2NhdGVkX3NpemUpO1xuIFx0dW5zaWduZWQgaW50IGZvbGlvX3N6O1xuLVx0c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmwgPSBOVUxMO1xuIFx0bG9mZl90IGlfc2l6ZSA9IGlfc2l6ZV9yZWFkKHZpKTtcbiBcbiBcdG50ZnNfZGVidWcoXCYjMzQ7RW50ZXJpbmcgZm9yIGlub2RlIDB4JWxseCwgYXR0cmlidXRlIHR5cGUgMHgleCwgZm9saW8gaW5kZXggMHglbHguXCYjMzQ7LFxuQEAgLTI2ODIsNiAmIzQzOzI2ODEsNyBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFx0XHRcdFx0XHRcdTAwMjZ0bmksIFx1MDAyNnJlZl9pbm9zW25yX3JlZl9pbm9zXSkpIHtcbiBcdFx0XHR1bnNpZ25lZCBpbnQgbWZ0X3JlY29yZF9vZmYgPSAwO1xuIFx0XHRcdHM2NCB2Y25fb2ZmID0gdmNuO1xuJiM0MztcdFx0XHRzNjQgcmxfbGVuID0gMDtcbiBcbiBcdFx0XHQvKlxuIFx0XHRcdCAqIFRoZSByZWNvcmQgc2hvdWxkIGJlIHdyaXR0ZW4uICBJZiBhIGxvY2tlZCBudGZzXG5AQCAtMjcwMSw4ICYjNDM7MjcwMSwxMiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRpZiAodm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZSBcdTAwM2MgZm9saW9fc2l6ZShmb2xpbykpIHtcbiYjNDM7XHRcdFx0XHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybDtcbiYjNDM7XG4gXHRcdFx0XHRkb3duX3dyaXRlKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG4gXHRcdFx0XHRybCA9IG50ZnNfYXR0cl92Y25fdG9fcmwobmksIHZjbl9vZmYsIFx1MDAyNmxjbik7XG4mIzQzO1x0XHRcdFx0aWYgKCFJU19FUlIocmwpKVxuJiM0MztcdFx0XHRcdFx0cmxfbGVuID0gcmwtXHUwMDNlbGVuZ3RoIC0gKHZjbl9vZmYgLSBybC1cdTAwM2V2Y24pO1xuIFx0XHRcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcdFx0XHRcdGlmIChJU19FUlIocmwpIHx8IGxjbiBcdTAwM2MgMCkge1xuIFx0XHRcdFx0XHRlcnIgPSAtRUlPO1xuQEAgLTI3MzMsNyAmIzQzOzI3MzcsNyBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFxuIFx0XHRcdGlmICh2b2wtXHUwMDNlY2x1c3Rlcl9zaXplID09IE5URlNfQkxPQ0tfU0laRSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgKG1mdF9yZWNvcmRfb2ZmIHx8XG4tXHRcdFx0ICAgICAocmwgXHUwMDI2XHUwMDI2IHJsLVx1MDAzZWxlbmd0aCAtICh2Y25fb2ZmIC0gcmwtXHUwMDNldmNuKSA9PSAxKSB8fFxuJiM0MztcdFx0XHQgICAgIHJsX2xlbiA9PSAxIHx8XG4gXHRcdFx0ICAgICBtZnRfb2ZzICYjNDM7IE5URlNfQkxPQ0tfU0laRSBcdTAwM2U9IFBBR0VfU0laRSkpXG4gXHRcdFx0XHRmb2xpb19zeiA9IE5URlNfQkxPQ0tfU0laRTtcbiBcdFx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfd3JpdGVfbWZ0X2Jsb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBudGZzX3dyaXRlX21mdF9ibG9ja2Agd2hlcmUgYSBydW5saXN0IGVsZW1lbnQgcG9pbnRlciBgcmxgIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXplZCBvciBhcyBhIHN0YWxlIHBvaW50ZXIgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyJiMzOTtzIE1GVCB3cml0ZWJhY2sgcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gd3JpdGluZyB0byBOVEZTIHZvbHVtZXMuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGhlbHAgZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgZml4IGFuZCB0aGUgTUZUIHdyaXRlYmFjayBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2QxNDcyODRmYWI3Nzg1MDE1ZDBkNTZlODk2MjdhZGFiNDY1MzgxNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA1OjA3OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9tZnQuYyBiL2ZzL250ZnMvbWZ0LmMKaW5kZXggYTUwMTllODA5NTFiODQuLmZkMjBkN2FiZDZmNWVjIDEwMDY0NAotLS0gYS9mcy9udGZzL21mdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvbWZ0LmMKQEAgLTI2MzcsNyAmIzQzOzI2MzcsNiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqdwogCXM2NCB2Y24gPSBudGZzX3BpZHhfdG9fY2x1c3Rlcih2b2wsIGZvbGlvLSZndDtpbmRleCk7CiAJczY0IGVuZF92Y24gPSBudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuaS0mZ3Q7YWxsb2NhdGVkX3NpemUpOwogCXVuc2lnbmVkIGludCBmb2xpb19zejsKLQlzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybCA9IE5VTEw7CiAJbG9mZl90IGlfc2l6ZSA9IGlfc2l6ZV9yZWFkKHZpKTsKIAogCW50ZnNfZGVidWcoJiMzNDtFbnRlcmluZyBmb3IgaW5vZGUgMHglbGx4LCBhdHRyaWJ1dGUgdHlwZSAweCV4LCBmb2xpbyBpbmRleCAweCVseC4mIzM0OywKQEAgLTI2ODIsNiAmIzQzOzI2ODEsNyBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqdwogCQkJCQkmYW1wO3RuaSwgJmFtcDtyZWZfaW5vc1tucl9yZWZfaW5vc10pKSB7CiAJCQl1bnNpZ25lZCBpbnQgbWZ0X3JlY29yZF9vZmYgPSAwOwogCQkJczY0IHZjbl9vZmYgPSB2Y247CiYjNDM7CQkJczY0IHJsX2xlbiA9IDA7CiAKIAkJCS8qCiAJCQkgKiBUaGUgcmVjb3JkIHNob3VsZCBiZSB3cml0dGVuLiAgSWYgYSBsb2NrZWQgbnRmcwpAQCAtMjcwMSw4ICYjNDM7MjcwMSwxMiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqdwogCQkJfQogCiAJCQlpZiAodm9sLSZndDtjbHVzdGVyX3NpemUgJmx0OyBmb2xpb19zaXplKGZvbGlvKSkgewomIzQzOwkJCQlzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybDsKJiM0MzsKIAkJCQlkb3duX3dyaXRlKCZhbXA7bmktJmd0O3J1bmxpc3QubG9jayk7CiAJCQkJcmwgPSBudGZzX2F0dHJfdmNuX3RvX3JsKG5pLCB2Y25fb2ZmLCAmYW1wO2xjbik7CiYjNDM7CQkJCWlmICghSVNfRVJSKHJsKSkKJiM0MzsJCQkJCXJsX2xlbiA9IHJsLSZndDtsZW5ndGggLSAodmNuX29mZiAtIHJsLSZndDt2Y24pOwogCQkJCXVwX3dyaXRlKCZhbXA7bmktJmd0O3J1bmxpc3QubG9jayk7CiAJCQkJaWYgKElTX0VSUihybCkgfHwgbGNuICZsdDsgMCkgewogCQkJCQllcnIgPSAtRUlPOwpAQCAtMjczMyw3ICYjNDM7MjczNyw3IEBAIHN0YXRpYyBpbnQgbnRmc193cml0ZV9tZnRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3CiAKIAkJCWlmICh2b2wtJmd0O2NsdXN0ZXJfc2l6ZSA9PSBOVEZTX0JMT0NLX1NJWkUgJmFtcDsmYW1wOwogCQkJICAgIChtZnRfcmVjb3JkX29mZiB8fAotCQkJICAgICAocmwgJmFtcDsmYW1wOyBybC0mZ3Q7bGVuZ3RoIC0gKHZjbl9vZmYgLSBybC0mZ3Q7dmNuKSA9PSAxKSB8fAomIzQzOwkJCSAgICAgcmxfbGVuID09IDEgfHwKIAkJCSAgICAgbWZ0X29mcyAmIzQzOyBOVEZTX0JMT0NLX1NJWkUgJmd0Oz0gUEFHRV9TSVpFKSkKIAkJCQlmb2xpb19zeiA9IE5URlNfQkxPQ0tfU0laRTsKIAkJCWVsc2UKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDM3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5URlMgTUZUIEJsb2NrIFdyaXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBmcy9udGZzL21mdC5jYCB0aGF0IHR3ZWFrcyB0aGUgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoaXMgYHJsYCB2YXJpYWJsZSwgdGhlIHJ1bmxpc3QgZWxlbWVudC4KCkluaXRpYWxseSwgYHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsID0gTlVMTDtgIHdhcyBkZWNsYXJlZCBvdXRzaWRlIHRoZSBsb29wLiBUaGUgcGF0Y2ggcmVtb3ZlcyB0aGlzIGRlY2xhcmF0aW9uIGZyb20gdGhlIG91dGVyIHNjb3BlIGFuZCBhZGRzIGBzNjQgcmxfbGVuID0gMDtgIGluc2lkZSB0aGUgbG9vcC4gIFRoYXQmIzM5O3MgYWxyZWFkeSBhIGdvb2Qgc2lnbiwgc2NvcGluZyB2YXJpYWJsZXMgY2xvc2VyIHRvIHdoZXJlIHRoZXkmIzM5O3JlIHVzZWQgaXMgZ2VuZXJhbGx5IGNsZWFuZXIuIEl0IGFsc28gbW92ZXMgdGhlIGFjdHVhbCBgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7YCBkZWNsYXJhdGlvbiBpbnRvIHRoaXMgYGlmICh2b2wtJmd0O2NsdXN0ZXJfc2l6ZSAmbHQ7IGZvbGlvX3NpemUoZm9saW8pKWAgYmxvY2suCgpUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoZSBjb25kaXRpb25hbCBsb2dpYy4gIEJlZm9yZSwgdGhleSBoYWQgYChybCAmYW1wOyZhbXA7IHJsLSZndDtsZW5ndGggLSAodmNuX29mZiAtIHJsLSZndDt2Y24pID09IDEpYC4gIFRoZSBwYXRjaCBjaGFuZ2VzIHRoaXMgdG8gYHJsX2xlbiA9PSAxYC4gIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgbm93IGNhbGN1bGF0aW5nIGBybF9sZW4gPSBybC0mZ3Q7bGVuZ3RoIC0gKHZjbl9vZmYgLSBybC0mZ3Q7dmNuKWAgd2l0aGluIHRoZSBibG9jayB3aXRoIGBybGAgb25seSB3aGVuIGAhSVNfRVJSKHJsKWAuCgpBbHJpZ2h0LCBJIHNlZSB0aGUgcHJvYmxlbSBub3cuIEJlZm9yZSwgYHJsYCB3YXMgZGVjbGFyZWQgb3V0c2lkZSB0aGF0IGJsb2NrLiBJZiBgdm9sLSZndDtjbHVzdGVyX3NpemUgJmx0OyBmb2xpb19zaXplKGZvbGlvKWAgd2FzICpmYWxzZSogaW4gYSBnaXZlbiBpdGVyYXRpb24sIGBybGAgd291bGRuJiMzOTt0IGJlIHJlLWFzc2lnbmVkLiAgU28sIGluIHN1YnNlcXVlbnQgaXRlcmF0aW9ucywgYHJsYCB3b3VsZCByZXRhaW4gaXRzIHZhbHVlIGZyb20gdGhlIHByZXZpb3VzIGxvb3AgaXRlcmF0aW9uLiBJZiBpdCB3YXMgYE5VTExgIGluIHRoZSBmaXJzdCBpdGVyYXRpb24sIHRoZW4gdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHdvdWxkIGJlIHNhZmUsIGJ1dCBpZiBpdCB3YXMgc2V0IGluIGEgcHJldmlvdXMgaXRlcmF0aW9uLCBpdCYjMzk7cyBhIHN0YWxlIHBvaW50ZXIhIFRoaXMgbWVhbnMgdGhlcmUmIzM5O3MgYSBzZXJpb3VzIHBvdGVudGlhbCBmb3IgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgcmVhZHMsIG9yIGp1c3QgY29tcGxldGVseSB3cm9uZyBsb2dpYyBiZWluZyBleGVjdXRlZCBiZWNhdXNlIHdlJiMzOTtyZSBkZXJlZmVyZW5jaW5nIGEgcG9pbnRlciB0aGF0IGNvdWxkIGJlIGdhcmJhZ2UuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgYnVnIQoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBieSBnb2luZyBiYWNrIGFuZCB2ZXJpZnlpbmcuIExldCYjMzk7cyBzZWUuLi5JJiMzOTtsbCBxdWlja2x5IHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIGBudGZzX3dyaXRlX21mdF9ibG9ja2AgaW4gYGZzL250ZnMvbWZ0LmNgIGFuZCBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBjb3JyZWN0IGFuZCB0aGF0IHRoZSBwYXRjaCByZXNvbHZlcyB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc193cml0ZV9tZnRfYmxvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9tZnQuYz0yNTkzPXN0YXRpYyBzNjQgbGNuX2Zyb21faW5kZXgoc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsIHN0cnVjdCBudGZzX2lub2RlICpuaSxcbi0tXG5mcy9udGZzL21mdC5jLTI2MDgtLypcbmZzL250ZnMvbWZ0LmM6MjYwOTogKiBudGZzX3dyaXRlX21mdF9ibG9jayAtIFdyaXRlIGJhY2sgYSBmb2xpbyBjb250YWluaW5nIE1GVCByZWNvcmRzXG5mcy9udGZzL21mdC5jLTI2MTAtICogQGZvbGlvOlx0VGhlIGZvbGlvIHRvIHdyaXRlIGJhY2sgKGNvbnRhaW5zIG9uZSBvciBtb3JlIE1GVCByZWNvcmRzKVxuLS1cbmZzL250ZnMvbWZ0LmMtMjYxOS0gKi9cbmZzL250ZnMvbWZ0LmM6MjYyMDpzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKVxuZnMvbnRmcy9tZnQuYy0yNjIxLXtcbi0tXG5mcy9udGZzL21mdC5jLTI4MjEtICogV3JpdGViYWNrIGl0ZXJhdG9yIGZvciBNRlQgcmVjb3Jkcy4gSXRlcmF0ZXMgb3ZlciBkaXJ0eSBmb2xpb3MgYW5kXG5mcy9udGZzL21mdC5jOjI4MjI6ICogZGVsZWdhdGVzIGFjdHVhbCB3cml0aW5nIHRvIG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKCkgZm9yIGVhY2ggZm9saW8uXG5mcy9udGZzL21mdC5jLTI4MjMtICogQ2FsbGVkIGZyb20gdGhlIGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyAud3JpdGVwYWdlcyB2ZWN0b3Igb2YgdGhlXG4tLVxuZnMvbnRmcy9tZnQuYz0yODI4PWludCBudGZzX21mdF93cml0ZXBhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuLS1cbmZzL250ZnMvbWZ0LmMtMjgzNy1cdHdoaWxlICgoZm9saW8gPSB3cml0ZWJhY2tfaXRlcihtYXBwaW5nLCB3YmMsIGZvbGlvLCBcdTAwMjZlcnJvcikpKVxuZnMvbnRmcy9tZnQuYzoyODM4Olx0XHRlcnJvciA9IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKGZvbGlvLCB3YmMpO1xuZnMvbnRmcy9tZnQuYy0yODM5LVx0cmV0dXJuIGVycm9yO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NzkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5URlMgV3JpdGUgT3BlcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbnRmc193cml0ZV9tZnRfYmxvY2tgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgYG50ZnNfbWZ0X3dyaXRlcGFnZXNgLiBSaWdodCwgdGhpcyBpcyBhbGwgcGFydCBvZiB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlciwgd2hpY2ggSSYjMzk7bSB2ZXJ5IGZhbWlsaWFyIHdpdGguIExldCYjMzk7cyBtYWtlIHN1cmUgb3VyIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHVwIHByb3Blcmx5IGJlZm9yZSBkZWx2aW5nIGRlZXBlci4gSSBuZWVkIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBLY29uZmlnIHRvIGNvbmZpcm0gdGhlIHJlbGV2YW50IE5URlMgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIFRoaXMgY2FsbCBjaGFpbiBpbXBsaWVzIGEgY3JpdGljYWwgd3JpdGUgb3BlcmF0aW9uIOKAkyBwcm9iYWJseSBpbnZvbHZpbmcgdGhlIE1ldGFkYXRhIEZpbGUgVGFibGUgKE1GVCkgaXRzZWxmLCBzbyBpdCYjMzk7cyBnb29kIHRvIGVuc3VyZSBhbGwgcmVsYXRlZCBjb21wb25lbnRzIGFyZSBhY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfRlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSBoYXZlIGhlcmUuCgoqKkFuYWx5emluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB0byB1c2UgYE5URlNfRlNgLiBCdXQgaGFuZyBvbiwgSSBzZWUgYW5vdGhlciBOVEZTIGRyaXZlciBsdXJraW5nIGluIGBmcy9udGZzMy9gLCBuYW1lZCBgTlRGUzNfRlNgLiBUaGUgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgaXMgbG9jYXRlZCBpbiBgZnMvbnRmcy9tZnQuY2AsIHdoaWNoIG1ha2VzIGl0IGNsZWFyIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgKm9yaWdpbmFsKiBOVEZTIGRyaXZlciwgbm90IHRoZSBuZXdlciBOVEZTMy4gVGhlIGNvbmZpZyBzdGlsbCBjb25maXJtcyBgTlRGU19GU2AuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSYjMzk7bGwgcXVpY2tseSBnbGFuY2UgYXQgdGhlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdG8gc2VlIGlmIHNvbWV0aGluZyBsaWtlIGBOVEZTX1JXYCBpcyBzZXQgb3IgdW5zZXQuIFRoYXQgY291bGQgaW5mbHVlbmNlIHRoZSBjdXJyZW50IHNpdHVhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgb3RoZXIgY29uZmlnIGNob2ljZXMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfUlcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBOVEZTIFdyaXRlIFN1cHBvcnQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEdpdmVuIHRoZSBjb250ZXh0LCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHBpbnBvaW50IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBjb250cm9sbGluZyBOVEZTIHdyaXRlIHN1cHBvcnQuIFRvIGRvIHRoYXQsIEkmIzM5O2xsIG5hdmlnYXRlIGRpcmVjdGx5IHRvIHRoZSBoZWFydCBvZiB0aGUgZmlsZSBzeXN0ZW0gY29uZmlndXJhdGlvbjogYGZzL250ZnMvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgcGVydGFpbmluZyB0byB0aGUgTlRGUyBmaWxlIHN5c3RlbSBzaG91bGQgcmVzaWRlLiBUaGlzIGZpbGUgd2lsbCB1bmRvdWJ0ZWRseSBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB3cml0ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbmZpZ3VyZWQuIEkgZXhwZWN0IHRvIGZpbmQgYSBib29sZWFuIG9wdGlvbiwgb3IgcGVyaGFwcyBldmVuIGEgdHJpc3RhdGUsIGRpcmVjdGx5IHJlbGF0ZWQgdG8gTlRGUyB3cml0ZSBmdW5jdGlvbmFsaXR5LiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc2V0dGluZyBhbmQgYW55IGRlcGVuZGVuY2llcyBpbnZvbHZlZC4gVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludCwgbGV0JiMzOTtzIGdvIGNoZWNrIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTlRGU19GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgTkxTXG4gICA1Olx0XHRzZWxlY3QgRlNfSU9NQVBcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxuICAgODpcdFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG4gIDExOlx0XHQgIG50ZnMuXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIE5URlNfREVCVUdcbiAgMTQ6XHRcdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBOVEZTIGZpbGUgc3lzdGVtLCBzYXlcbiAgMTg6XHRcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGNvbnNpc3RlbmN5IGNoZWNrcyB0byBiZVxuICAxOTpcdFx0ICBwZXJmb3JtZWQgYnkgdGhlIGRyaXZlciBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvXG4gIDIwOlx0XHQgIGJlIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuICBOb3RlIHRoYXQgZGVidWdnaW5nIG1lc3NhZ2VzIGFyZVxuICAyMTpcdFx0ICBkaXNhYmxlZCBieSBkZWZhdWx0LiAgVG8gZW5hYmxlIHRoZW0sIHN1cHBseSB0aGUgb3B0aW9uIGRlYnVnX21zZ3M9MVxuICAyMjpcdFx0ICBhdCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB3aGVuIGJvb3RpbmcgdGhlIGtlcm5lbCBvciBhcyBhbiBvcHRpb25cbiAgMjM6XHRcdCAgdG8gaW5zbW9kIHdoZW4gbG9hZGluZyB0aGUgbnRmcyBtb2R1bGUuICBPbmNlIHRoZSBkcml2ZXIgaXMgYWN0aXZlLFxuICAyNDpcdFx0ICB5b3UgY2FuIGVuYWJsZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgYnkgZG9pbmcgKGFzIHJvb3QpOlxuICAyNTpcdFx0ICBlY2hvIDEgXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXG4gIDI2Olx0XHQgIFJlcGxhY2luZyB0aGUgXCYjMzQ7MVwmIzM0OyB3aXRoIFwmIzM0OzBcJiMzNDsgd291bGQgZGlzYWJsZSBkZWJ1ZyBtZXNzYWdlcy5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxuICAyOTpcdFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxuICAzMDpcdFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxuICAzMTpcdFxuICAzMjpcdFx0ICBXaGVuIHJlcG9ydGluZyBidWdzLCBwbGVhc2UgdHJ5IHRvIGhhdmUgYXZhaWxhYmxlIGEgZnVsbCBkdW1wIG9mXG4gIDMzOlx0XHQgIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSB0aGUgbWlzYmVoYXZpb3VyIHdhcyBvY2N1cnJpbmcuXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG4gIDM2Olx0XHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiAgMzc6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAzODpcdFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBhZGRpdGlvbmFsIGFjY2VzcyByaWdodHNcbiAgNDE6XHRcdCAgZm9yIHVzZXJzIGFuZCBncm91cHMgYmV5b25kIHRoZSBzdGFuZGFyZCBvd25lci9ncm91cC93b3JsZCBzY2hlbWUuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgQUNMIHN1cHBvcnQgZm9yIG50ZnMsIHByb3ZpZGluZyBmdW5jdGlvbmFsIHBhcml0eVxuICA0NDpcdFx0ICB3aXRoIG50ZnMzIGRyaXZpZXIuXG4gIDQ1Olx0XG4gIDQ2Olx0XHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXG4gIDQ3Olx0XG4gIDQ4Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IEFjY2VzcyBDb250cm9sIExpc3RzIGFyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRhbW4sIERpZCBgTlRGU19SV2AgUmVhbGx5IEdvIEF3YXk/KioKCkhvbGQgb24gYSBzZWNvbmQuLi4gYE5URlNfUldgIGdvdCBheGVkPyBUaGF0JiMzOTtzIGEgYml0IG9mIGEgc3VycHJpc2UuIFJpZ2h0LCB0aW1lIHRvIHZlcmlmeS4gVGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgY2hlY2sgaXMgdGhlIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgTlRGUyBmaWxlc3lzdGVtIGNvbXBvbmVudCwgd2hpY2ggc2hvdWxkIGJlIHRoZSBgZnMvbnRmcy9NYWtlZmlsZWAuIFRpbWUgdG8gY3JhY2sgdGhhdCBvcGVuIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZSBhbmQgc2VlIGhvdyB0aGF0IHZhcmlhYmxlLCBvciBpdHMgcmVwbGFjZW1lbnQsIGlzIGJlaW5nIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0b2JqLSQoQ09ORklHX05URlNfRlMpICYjNDM7PSBudGZzLm9cbiAgIDQ6XHRcbiAgIDU6XHRudGZzLXkgOj0gYW9wcy5vIGF0dHJpYi5vIGNvbGxhdGUubyBkaXIubyBmaWxlLm8gaW5kZXgubyBpbm9kZS5vIFxcXG4gICA2Olx0XHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXG4gICA3Olx0XHQgIHVwY2FzZS5vIGJpdG1hcC5vIGxjbmFsbG9jLm8gbG9nZmlsZS5vIHJlcGFyc2UubyBjb21wcmVzcy5vIFxcXG4gICA4Olx0XHQgIGlvbWFwLm8gZGVidWcubyBzeXNjdGwubyBvYmplY3RfaWQubyBiZGV2LWlvLm9cbiAgIDk6XHRcbiAgMTA6XHRjY2ZsYWdzLSQoQ09ORklHX05URlNfREVCVUcpICYjNDM7PSAtRERFQlVHXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqTlRGUyBXcml0ZSBTdXBwb3J0OiBBIFF1aWNrIEludmVzdGlnYXRpb24qKgoKQWxyaWdodCwgc28gYE5URlNfUldgIGlzIGdvbmUg4oCTIHRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lLiBUaGUgcXVlc3Rpb24gaXMsIGhhcyB3cml0ZSBzdXBwb3J0IGJlZW4gaW50ZWdyYXRlZCBkaXJlY3RseSBpbnRvIHRoZSBjb3JlLCBvciBhcmUgd2Ugbm93IGRlYWxpbmcgd2l0aCBhIHJlYWQtb25seSBzY2VuYXJpbz8gTXkgZ3V0IHNheXMgdGhlcmUgd2FzIHNvbWUgcmVjZW50IHNodWZmbGluZyBhcm91bmQgd2l0aCB0aGUgTlRGUyBjb2RlLCBwZXJoYXBzIGEgcGF0Y2ggc2VyaWVzIHRoYXQgc2hpZnRlZCB0aGluZ3MsIGJ1dCBJJiMzOTttIG5vdCBlbnRpcmVseSBzdXJlIHdoZXJlIGl0IGxhbmRlZC4gV2FzIGBOVEZTX1JXYCByZW1vdmVkIGJlY2F1c2Ugd3JpdGUgY2FwYWJpbGl0aWVzIHdlcmUgcmVtb3ZlZCBvciB3ZXJlIHRoZXkgYWN0dWFsbHkgYWx3YXlzIGF2YWlsYWJsZT8KClRoZSBiZXN0IHdheSB0byBmaWd1cmUgdGhpcyBvdXQgZGVmaW5pdGl2ZWx5IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGZzL250ZnMvc3VwZXIuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGZpbGVzeXN0ZW0mIzM5O3Mgc3VwZXJibG9jayBhbmQgaXRzIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBhcmUgZGVmaW5lZCwgd2hpY2ggc2hvdWxkIGdpdmUgbWUgdGhlIGNsZWFyZXN0IGluZGljYXRpb24gb2YgaG93IHdyaXRlIHN1cHBvcnQgaXMgY3VycmVudGx5IGhhbmRsZWQsIGlmIGF0IGFsbC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhcm91bmQgd3JpdGUtcmVsYXRlZCBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSB0cnV0aCBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX3dyaXRlX21mdF9ibG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL21mdC5jPTI1OTM9c3RhdGljIHM2NCBsY25fZnJvbV9pbmRleChzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCwgc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxuLS1cbmZzL250ZnMvbWZ0LmMtMjYwOC0vKlxuZnMvbnRmcy9tZnQuYzoyNjA5OiAqIG50ZnNfd3JpdGVfbWZ0X2Jsb2NrIC0gV3JpdGUgYmFjayBhIGZvbGlvIGNvbnRhaW5pbmcgTUZUIHJlY29yZHNcbmZzL250ZnMvbWZ0LmMtMjYxMC0gKiBAZm9saW86XHRUaGUgZm9saW8gdG8gd3JpdGUgYmFjayAoY29udGFpbnMgb25lIG9yIG1vcmUgTUZUIHJlY29yZHMpXG4tLVxuZnMvbnRmcy9tZnQuYy0yNjE5LSAqL1xuZnMvbnRmcy9tZnQuYzoyNjIwOnN0YXRpYyBpbnQgbnRmc193cml0ZV9tZnRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpXG5mcy9udGZzL21mdC5jLTI2MjEte1xuLS1cbmZzL250ZnMvbWZ0LmMtMjgyMS0gKiBXcml0ZWJhY2sgaXRlcmF0b3IgZm9yIE1GVCByZWNvcmRzLiBJdGVyYXRlcyBvdmVyIGRpcnR5IGZvbGlvcyBhbmRcbmZzL250ZnMvbWZ0LmM6MjgyMjogKiBkZWxlZ2F0ZXMgYWN0dWFsIHdyaXRpbmcgdG8gbnRmc193cml0ZV9tZnRfYmxvY2soKSBmb3IgZWFjaCBmb2xpby5cbmZzL250ZnMvbWZ0LmMtMjgyMy0gKiBDYWxsZWQgZnJvbSB0aGUgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIC53cml0ZXBhZ2VzIHZlY3RvciBvZiB0aGVcbi0tXG5mcy9udGZzL21mdC5jPTI4Mjg9aW50IG50ZnNfbWZ0X3dyaXRlcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvbnRmcy9tZnQuYy0yODM3LVx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIHdiYywgZm9saW8sIFx1MDAyNmVycm9yKSkpXG5mcy9udGZzL21mdC5jOjI4Mzg6XHRcdGVycm9yID0gbnRmc193cml0ZV9tZnRfYmxvY2soZm9saW8sIHdiYyk7XG5mcy9udGZzL21mdC5jLTI4MzktXHRyZXR1cm4gZXJyb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NDYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOVEZTIE1GVCBCbG9jayBXcml0ZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCBmdW5jdGlvbi4gSSBzZWUgaXQmIzM5O3MgZGVmaW5lZCBpbiBgZnMvbnRmcy9tZnQuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIG9yIGZsYWdzIEkgbmVlZCB0byBjb25zaWRlciBmb3IgdGhpcyBmdW5jdGlvbiYjMzk7cyBiZWhhdmlvci4gQmFzZWQgb24gdGhlIGZpbGUgbG9jYXRpb24sIEkmIzM5O20gZ3Vlc3NpbmcgdGhlIGdlbmVyYWwgTlRGUyBmaWxlc3lzdGVtIHN1cHBvcnQgKGBOVEZTX0ZTYCkgaXMgdGhlIHJlbGV2YW50IGNvbXBpbGUgdGltZSBjb25maWd1cmF0aW9uIGZsYWcuIEJ1dCBJIHNob3VsZCBjb25maXJtIHRoaXMuCgpOb3csIGEga2V5IHF1ZXN0aW9uIGlzLCB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICp1c2VkKj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgaGllcmFyY2h5LiBMZXQgbWUgY2hlY2suLi4gQWgsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBudGZzX21mdF93cml0ZXBhZ2VzYC4gT2theSwgdGhhdCYjMzk7cyBoZWxwZnVsLiBOb3csIHdoZXJlIGlzICp0aGF0KiBjYWxsZWQ/IE15IGh1bmNoIGlzIHRoaXMgcmVsYXRlcyB0byB0aGUgcGFnZSB3cml0ZWJhY2sgbWFjaGluZXJ5LiBTbywgbGlrZWx5IGBmcy9udGZzL2FvcHMuY2AuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBjb25uZWN0aW9uLCBvZiBjb3Vyc2UuIE5lZWQgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgTlRGUyYjMzk7cyBmaWxlIHN5c3RlbSBvcGVyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfbWZ0X3dyaXRlcGFnZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hb3BzLmM9Mjk0PWNvbnN0IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgbnRmc19tZnRfYW9wcyA9IHtcbi0tXG5mcy9udGZzL2FvcHMuYy0yOTYtXHQucmVhZGFoZWFkXHRcdD0gbnRmc19yZWFkYWhlYWQsXG5mcy9udGZzL2FvcHMuYzoyOTc6XHQud3JpdGVwYWdlc1x0XHQ9IG50ZnNfbWZ0X3dyaXRlcGFnZXMsXG5mcy9udGZzL2FvcHMuYy0yOTgtXHQuZGlydHlfZm9saW9cdFx0PSBpb21hcF9kaXJ0eV9mb2xpbyxcbi0tXG5mcy9udGZzL21mdC5jPTI2MjA9c3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYylcbi0tXG5mcy9udGZzL21mdC5jLTI4MTYtLypcbmZzL250ZnMvbWZ0LmM6MjgxNzogKiBudGZzX21mdF93cml0ZXBhZ2VzIC0gV3JpdGUgYmFjayBkaXJ0eSBmb2xpb3MgZm9yIHRoZSAkTUZUIGlub2RlXG5mcy9udGZzL21mdC5jLTI4MTgtICogQG1hcHBpbmc6XHRhZGRyZXNzIHNwYWNlIG9mIHRoZSAkTUZUIGlub2RlXG4tLVxuZnMvbnRmcy9tZnQuYy0yODI3LSAqL1xuZnMvbnRmcy9tZnQuYzoyODI4OmludCBudGZzX21mdF93cml0ZXBhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuZnMvbnRmcy9tZnQuYy0yODI5LVx0XHRzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYylcbi0tXG5mcy9udGZzL21mdC5oPTg1PWludCBudGZzX21mdF9yZWNvcmRfY2hlY2soY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsIHN0cnVjdCBtZnRfcmVjb3JkICptLFxuZnMvbnRmcy9tZnQuaC04Ni1cdFx0XHQgIHU2NCBtZnRfbm8pO1xuZnMvbnRmcy9tZnQuaDo4NzppbnQgbnRmc19tZnRfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbmZzL250ZnMvbWZ0LmgtODgtXHRcdHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI2NQoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiA5ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTlRGUyBNRlQgV3JpdGViYWNrIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gdHJhY2luZyB0aGUgYG50ZnNfbWZ0X3dyaXRlcGFnZXNgIGZ1bmN0aW9uLCBhbmQgYXMgZXhwZWN0ZWQsIGl0JiMzOTtzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgYG50ZnNfbWZ0X2FvcHNgIHN0cnVjdHVyZSwgd2hpY2ggaGFuZGxlcyBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMgZm9yIHRoZSBNRlQgaW5vZGUuIFRoYXQgbWVhbnMsIHdoZW5ldmVyIHRoZSBNRlQgaW5vZGUgaXMgd3JpdHRlbiBiYWNrIHRvIGRpc2ssIGl0IHdpbGwgY2FsbCBgbnRmc19tZnRfd3JpdGVwYWdlc2AsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYC4gIFNvIGZhciwgc28gZ29vZCDigJMgd2UmIzM5O3ZlIGdvdCBhIGNsZWFyIHBhdGggdGhyb3VnaCB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLgoKTm93LCB0aGUgY29uZmlnIHVzZWQgaGVyZSBpcyBgTlRGU19GU2AsIG5vIG90aGVyIGNvbmZpZ3MgYXJlIHJlbGV2YW50LiBUaGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBmb3IgdGhpcyBmaXggYXJlIGBudGZzX3dyaXRlX21mdF9ibG9ja2AgYW5kIGBudGZzX21mdF93cml0ZXBhZ2VzYC4KCkxvb2tpbmcgdGhyb3VnaCB0aGUgY2hhbmdlcywgaXQgc2VlbXMgdGhhdCBvbmx5IGBudGZzX3dyaXRlX21mdF9ibG9ja2AgaGFzIGJlZW4gbW9kaWZpZWQuIFRoaXMgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBidWcgZml4LCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUuCgpJJiMzOTt2ZSBleGFtaW5lZCB0aGUgZGlmZiwgYW5kIEkmIzM5O20gcXVpdGUgY29uZmlkZW50IGluIHRoZSBwYXRoIGFuZCBmb2N1cy4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCBhcyBpdCBzZWVtcyBhIHNvbGlkIGFyZWEgZm9yIGZ1enppbmcuCkZvciBteSBmdXp6aW5nIGVmZm9ydCwgbXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgbnRmc193cml0ZV9tZnRfYmxvY2tgLiBJIHdpbGwgYWxzbyBvbmx5IGVuYWJsZSB0aGUgYE5URlNfRlNgIGNvbmZpZywgdGhhdCBzZWVtcyBzdWZmaWNpZW50IGZvciByZXByb2R1Y2luZyB0aGlzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgZnMvbnRmcy9LY29uZmlnYCBmaWxlIGFnYWluLiBgTlRGU19GU2AgaXMgdGhlIG1haW4gb25lIGFuZCwgeWVzLCB0aGVyZSBhcmUgb3RoZXIgY29uZmlncyBzdWNoIGFzIGBOVEZTX0RFQlVHYCBhbmQgYE5URlNfRlNfUE9TSVhfQUNMYCwgYnV0IG5vbmUgb2YgdGhlbSBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGguICBTbywgSSBjYW4gY29uZmlybSB0aGF0IGBOVEZTX0ZTYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfd3JpdGVfbWZ0X2Jsb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBudGZzX3dyaXRlX21mdF9ibG9ja2Agd2hlcmUgYSBydW5saXN0IGVsZW1lbnQgcG9pbnRlciBgcmxgIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXplZCBvciBhcyBhIHN0YWxlIHBvaW50ZXIgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyJiMzOTtzIE1GVCB3cml0ZWJhY2sgcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gd3JpdGluZyB0byBOVEZTIHZvbHVtZXMuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGhlbHAgZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgZml4IGFuZCB0aGUgTUZUIHdyaXRlYmFjayBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfd3JpdGVfbWZ0X2Jsb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBudGZzX3dyaXRlX21mdF9ibG9ja2Agd2hlcmUgYSBydW5saXN0IGVsZW1lbnQgcG9pbnRlciBgcmxgIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXplZCBvciBhcyBhIHN0YWxlIHBvaW50ZXIgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyJiMzOTtzIE1GVCB3cml0ZWJhY2sgcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gd3JpdGluZyB0byBOVEZTIHZvbHVtZXMuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGhlbHAgZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgZml4IGFuZCB0aGUgTUZUIHdyaXRlYmFjayBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA3OjMzLjQ5NzEyMTcwOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzcyNTg4MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX3dyaXRlX21mdF9ibG9ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBudGZzX3dyaXRlX21mdF9ibG9ja2Agd2hlcmUgYSBydW5saXN0IGVsZW1lbnQgcG9pbnRlciBgcmxgIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXplZCBvciBhcyBhIHN0YWxlIHBvaW50ZXIgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyJ3MgTUZUIHdyaXRlYmFjayBwYXRoLCB3aGljaCBpcyByZWFjaGFibGUgd2hlbiB3cml0aW5nIHRvIE5URlMgdm9sdW1lcy4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgaGVscCBlbnN1cmUgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBmaXggYW5kIHRoZSBNRlQgd3JpdGViYWNrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzozMy40OTcxMjgwNzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTkzNTQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNkMTQ3Mjg0ZmFiNzc4NTAxNWQwZDU2ZTg5NjI3YWRhYjQ2NTM4MTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDc6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9tZnQuYyBiL2ZzL250ZnMvbWZ0LmNcXG5pbmRleCBhNTAxOWU4MDk1MWI4NC4uZmQyMGQ3YWJkNmY1ZWMgMTAwNjQ0XFxuLS0tIGEvZnMvbnRmcy9tZnQuY1xcbisrKyBiL2ZzL250ZnMvbWZ0LmNcXG5AQCAtMjYzNyw3ICsyNjM3LDYgQEAgc3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndcXG4gXFx0czY0IHZjbiA9IG50ZnNfcGlkeF90b19jbHVzdGVyKHZvbCwgZm9saW8tXFx1MDAzZWluZGV4KTtcXG4gXFx0czY0IGVuZF92Y24gPSBudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuaS1cXHUwMDNlYWxsb2NhdGVkX3NpemUpO1xcbiBcXHR1bnNpZ25lZCBpbnQgZm9saW9fc3o7XFxuLVxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsID0gTlVMTDtcXG4gXFx0bG9mZl90IGlfc2l6ZSA9IGlfc2l6ZV9yZWFkKHZpKTtcXG4gXFxuIFxcdG50ZnNfZGVidWcoXFxcIkVudGVyaW5nIGZvciBpbm9kZSAweCVsbHgsIGF0dHJpYnV0ZSB0eXBlIDB4JXgsIGZvbGlvIGluZGV4IDB4JWx4LlxcXCIsXFxuQEAgLTI2ODIsNiArMjY4MSw3IEBAIHN0YXRpYyBpbnQgbnRmc193cml0ZV9tZnRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3XFxuIFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ0bmksIFxcdTAwMjZyZWZfaW5vc1tucl9yZWZfaW5vc10pKSB7XFxuIFxcdFxcdFxcdHVuc2lnbmVkIGludCBtZnRfcmVjb3JkX29mZiA9IDA7XFxuIFxcdFxcdFxcdHM2NCB2Y25fb2ZmID0gdmNuO1xcbitcXHRcXHRcXHRzNjQgcmxfbGVuID0gMDtcXG4gXFxuIFxcdFxcdFxcdC8qXFxuIFxcdFxcdFxcdCAqIFRoZSByZWNvcmQgc2hvdWxkIGJlIHdyaXR0ZW4uICBJZiBhIGxvY2tlZCBudGZzXFxuQEAgLTI3MDEsOCArMjcwMSwxMiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRpZiAodm9sLVxcdTAwM2VjbHVzdGVyX3NpemUgXFx1MDAzYyBmb2xpb19zaXplKGZvbGlvKSkge1xcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybDtcXG4rXFxuIFxcdFxcdFxcdFxcdGRvd25fd3JpdGUoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbiBcXHRcXHRcXHRcXHRybCA9IG50ZnNfYXR0cl92Y25fdG9fcmwobmksIHZjbl9vZmYsIFxcdTAwMjZsY24pO1xcbitcXHRcXHRcXHRcXHRpZiAoIUlTX0VSUihybCkpXFxuK1xcdFxcdFxcdFxcdFxcdHJsX2xlbiA9IHJsLVxcdTAwM2VsZW5ndGggLSAodmNuX29mZiAtIHJsLVxcdTAwM2V2Y24pO1xcbiBcXHRcXHRcXHRcXHR1cF93cml0ZShcXHUwMDI2bmktXFx1MDAzZXJ1bmxpc3QubG9jayk7XFxuIFxcdFxcdFxcdFxcdGlmIChJU19FUlIocmwpIHx8IGxjbiBcXHUwMDNjIDApIHtcXG4gXFx0XFx0XFx0XFx0XFx0ZXJyID0gLUVJTztcXG5AQCAtMjczMyw3ICsyNzM3LDcgQEAgc3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndcXG4gXFxuIFxcdFxcdFxcdGlmICh2b2wtXFx1MDAzZWNsdXN0ZXJfc2l6ZSA9PSBOVEZTX0JMT0NLX1NJWkUgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIChtZnRfcmVjb3JkX29mZiB8fFxcbi1cXHRcXHRcXHQgICAgIChybCBcXHUwMDI2XFx1MDAyNiBybC1cXHUwMDNlbGVuZ3RoIC0gKHZjbl9vZmYgLSBybC1cXHUwMDNldmNuKSA9PSAxKSB8fFxcbitcXHRcXHRcXHQgICAgIHJsX2xlbiA9PSAxIHx8XFxuIFxcdFxcdFxcdCAgICAgbWZ0X29mcyArIE5URlNfQkxPQ0tfU0laRSBcXHUwMDNlPSBQQUdFX1NJWkUpKVxcbiBcXHRcXHRcXHRcXHRmb2xpb19zeiA9IE5URlNfQkxPQ0tfU0laRTtcXG4gXFx0XFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzozNC4wMjAxNTgxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4NDk1NDMwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfd3JpdGVfbWZ0X2Jsb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCB3aGVyZSBhIHJ1bmxpc3QgZWxlbWVudCBwb2ludGVyIGBybGAgY291bGQgYmUgdXNlZCB1bmluaXRpYWxpemVkIG9yIGFzIGEgc3RhbGUgcG9pbnRlciBhY3Jvc3MgbG9vcCBpdGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIncyBNRlQgd3JpdGViYWNrIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIHdyaXRpbmcgdG8gTlRGUyB2b2x1bWVzLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBoZWxwIGVuc3VyZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGZpeCBhbmQgdGhlIE1GVCB3cml0ZWJhY2sgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2QxNDcyODRmYWI3Nzg1MDE1ZDBkNTZlODk2MjdhZGFiNDY1MzgxN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVuIDI1IDA1OjA3OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9tZnQuYyBiL2ZzL250ZnMvbWZ0LmNcbmluZGV4IGE1MDE5ZTgwOTUxYjg0Li5mZDIwZDdhYmQ2ZjVlYyAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvbWZ0LmNcbisrKyBiL2ZzL250ZnMvbWZ0LmNcbkBAIC0yNjM3LDcgKzI2MzcsNiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFx0czY0IHZjbiA9IG50ZnNfcGlkeF90b19jbHVzdGVyKHZvbCwgZm9saW8tXHUwMDNlaW5kZXgpO1xuIFx0czY0IGVuZF92Y24gPSBudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuaS1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSk7XG4gXHR1bnNpZ25lZCBpbnQgZm9saW9fc3o7XG4tXHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybCA9IE5VTEw7XG4gXHRsb2ZmX3QgaV9zaXplID0gaV9zaXplX3JlYWQodmkpO1xuIFxuIFx0bnRmc19kZWJ1ZyhcIkVudGVyaW5nIGZvciBpbm9kZSAweCVsbHgsIGF0dHJpYnV0ZSB0eXBlIDB4JXgsIGZvbGlvIGluZGV4IDB4JWx4LlwiLFxuQEAgLTI2ODIsNiArMjY4MSw3IEBAIHN0YXRpYyBpbnQgbnRmc193cml0ZV9tZnRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3XG4gXHRcdFx0XHRcdFx1MDAyNnRuaSwgXHUwMDI2cmVmX2lub3NbbnJfcmVmX2lub3NdKSkge1xuIFx0XHRcdHVuc2lnbmVkIGludCBtZnRfcmVjb3JkX29mZiA9IDA7XG4gXHRcdFx0czY0IHZjbl9vZmYgPSB2Y247XG4rXHRcdFx0czY0IHJsX2xlbiA9IDA7XG4gXG4gXHRcdFx0LypcbiBcdFx0XHQgKiBUaGUgcmVjb3JkIHNob3VsZCBiZSB3cml0dGVuLiAgSWYgYSBsb2NrZWQgbnRmc1xuQEAgLTI3MDEsOCArMjcwMSwxMiBAQCBzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRpZiAodm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZSBcdTAwM2MgZm9saW9fc2l6ZShmb2xpbykpIHtcbitcdFx0XHRcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsO1xuK1xuIFx0XHRcdFx0ZG93bl93cml0ZShcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuIFx0XHRcdFx0cmwgPSBudGZzX2F0dHJfdmNuX3RvX3JsKG5pLCB2Y25fb2ZmLCBcdTAwMjZsY24pO1xuK1x0XHRcdFx0aWYgKCFJU19FUlIocmwpKVxuK1x0XHRcdFx0XHRybF9sZW4gPSBybC1cdTAwM2VsZW5ndGggLSAodmNuX29mZiAtIHJsLVx1MDAzZXZjbik7XG4gXHRcdFx0XHR1cF93cml0ZShcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuIFx0XHRcdFx0aWYgKElTX0VSUihybCkgfHwgbGNuIFx1MDAzYyAwKSB7XG4gXHRcdFx0XHRcdGVyciA9IC1FSU87XG5AQCAtMjczMyw3ICsyNzM3LDcgQEAgc3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndcbiBcbiBcdFx0XHRpZiAodm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZSA9PSBOVEZTX0JMT0NLX1NJWkUgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIChtZnRfcmVjb3JkX29mZiB8fFxuLVx0XHRcdCAgICAgKHJsIFx1MDAyNlx1MDAyNiBybC1cdTAwM2VsZW5ndGggLSAodmNuX29mZiAtIHJsLVx1MDAzZXZjbikgPT0gMSkgfHxcbitcdFx0XHQgICAgIHJsX2xlbiA9PSAxIHx8XG4gXHRcdFx0ICAgICBtZnRfb2ZzICsgTlRGU19CTE9DS19TSVpFIFx1MDAzZT0gUEFHRV9TSVpFKSlcbiBcdFx0XHRcdGZvbGlvX3N6ID0gTlRGU19CTE9DS19TSVpFO1xuIFx0XHRcdGVsc2VcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA3OjM0LjAyMDE2MDkyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkyMjc0MTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5URlMgTUZUIEJsb2NrIFdyaXRlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgZnMvbnRmcy9tZnQuY2AgdGhhdCB0d2Vha3MgdGhlIGBudGZzX3dyaXRlX21mdF9ibG9ja2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlcyBhcmUgYWxsIGFib3V0IGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoaXMgYHJsYCB2YXJpYWJsZSwgdGhlIHJ1bmxpc3QgZWxlbWVudC5cblxuSW5pdGlhbGx5LCBgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmwgPSBOVUxMO2Agd2FzIGRlY2xhcmVkIG91dHNpZGUgdGhlIGxvb3AuIFRoZSBwYXRjaCByZW1vdmVzIHRoaXMgZGVjbGFyYXRpb24gZnJvbSB0aGUgb3V0ZXIgc2NvcGUgYW5kIGFkZHMgYHM2NCBybF9sZW4gPSAwO2AgaW5zaWRlIHRoZSBsb29wLiAgVGhhdCdzIGFscmVhZHkgYSBnb29kIHNpZ24sIHNjb3BpbmcgdmFyaWFibGVzIGNsb3NlciB0byB3aGVyZSB0aGV5J3JlIHVzZWQgaXMgZ2VuZXJhbGx5IGNsZWFuZXIuIEl0IGFsc28gbW92ZXMgdGhlIGFjdHVhbCBgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7YCBkZWNsYXJhdGlvbiBpbnRvIHRoaXMgYGlmICh2b2wtXHUwMDNlY2x1c3Rlcl9zaXplIFx1MDAzYyBmb2xpb19zaXplKGZvbGlvKSlgIGJsb2NrLlxuXG5UaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoZSBjb25kaXRpb25hbCBsb2dpYy4gIEJlZm9yZSwgdGhleSBoYWQgYChybCBcdTAwMjZcdTAwMjYgcmwtXHUwMDNlbGVuZ3RoIC0gKHZjbl9vZmYgLSBybC1cdTAwM2V2Y24pID09IDEpYC4gIFRoZSBwYXRjaCBjaGFuZ2VzIHRoaXMgdG8gYHJsX2xlbiA9PSAxYC4gIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBub3cgY2FsY3VsYXRpbmcgYHJsX2xlbiA9IHJsLVx1MDAzZWxlbmd0aCAtICh2Y25fb2ZmIC0gcmwtXHUwMDNldmNuKWAgd2l0aGluIHRoZSBibG9jayB3aXRoIGBybGAgb25seSB3aGVuIGAhSVNfRVJSKHJsKWAuXG5cbkFscmlnaHQsIEkgc2VlIHRoZSBwcm9ibGVtIG5vdy4gQmVmb3JlLCBgcmxgIHdhcyBkZWNsYXJlZCBvdXRzaWRlIHRoYXQgYmxvY2suIElmIGB2b2wtXHUwMDNlY2x1c3Rlcl9zaXplIFx1MDAzYyBmb2xpb19zaXplKGZvbGlvKWAgd2FzICpmYWxzZSogaW4gYSBnaXZlbiBpdGVyYXRpb24sIGBybGAgd291bGRuJ3QgYmUgcmUtYXNzaWduZWQuICBTbywgaW4gc3Vic2VxdWVudCBpdGVyYXRpb25zLCBgcmxgIHdvdWxkIHJldGFpbiBpdHMgdmFsdWUgZnJvbSB0aGUgcHJldmlvdXMgbG9vcCBpdGVyYXRpb24uIElmIGl0IHdhcyBgTlVMTGAgaW4gdGhlIGZpcnN0IGl0ZXJhdGlvbiwgdGhlbiB0aGUgY29uZGl0aW9uYWwgbG9naWMgd291bGQgYmUgc2FmZSwgYnV0IGlmIGl0IHdhcyBzZXQgaW4gYSBwcmV2aW91cyBpdGVyYXRpb24sIGl0J3MgYSBzdGFsZSBwb2ludGVyISBUaGlzIG1lYW5zIHRoZXJlJ3MgYSBzZXJpb3VzIHBvdGVudGlhbCBmb3IgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgcmVhZHMsIG9yIGp1c3QgY29tcGxldGVseSB3cm9uZyBsb2dpYyBiZWluZyBleGVjdXRlZCBiZWNhdXNlIHdlJ3JlIGRlcmVmZXJlbmNpbmcgYSBwb2ludGVyIHRoYXQgY291bGQgYmUgZ2FyYmFnZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBidWchXG5cbkkgbmVlZCB0byBjb25maXJtIHRoaXMgYnkgZ29pbmcgYmFjayBhbmQgdmVyaWZ5aW5nLiBMZXQncyBzZWUuLi5JJ2xsIHF1aWNrbHkgdXNlIGBncmVwcGVyYCB0byBsb2NhdGUgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCBpbiBgZnMvbnRmcy9tZnQuY2AgYW5kIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGNvcnJlY3QgYW5kIHRoYXQgdGhlIHBhdGNoIHJlc29sdmVzIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzOCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA3OjQwLjk0MjkwNDc4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzQ5MjU2NDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50ZnNfd3JpdGVfbWZ0X2Jsb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvbWZ0LmM9MjU5Mz1zdGF0aWMgczY0IGxjbl9mcm9tX2luZGV4KHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLCBzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXFxuLS1cXG5mcy9udGZzL21mdC5jLTI2MDgtLypcXG5mcy9udGZzL21mdC5jOjI2MDk6ICogbnRmc193cml0ZV9tZnRfYmxvY2sgLSBXcml0ZSBiYWNrIGEgZm9saW8gY29udGFpbmluZyBNRlQgcmVjb3Jkc1xcbmZzL250ZnMvbWZ0LmMtMjYxMC0gKiBAZm9saW86XFx0VGhlIGZvbGlvIHRvIHdyaXRlIGJhY2sgKGNvbnRhaW5zIG9uZSBvciBtb3JlIE1GVCByZWNvcmRzKVxcbi0tXFxuZnMvbnRmcy9tZnQuYy0yNjE5LSAqL1xcbmZzL250ZnMvbWZ0LmM6MjYyMDpzdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKVxcbmZzL250ZnMvbWZ0LmMtMjYyMS17XFxuLS1cXG5mcy9udGZzL21mdC5jLTI4MjEtICogV3JpdGViYWNrIGl0ZXJhdG9yIGZvciBNRlQgcmVjb3Jkcy4gSXRlcmF0ZXMgb3ZlciBkaXJ0eSBmb2xpb3MgYW5kXFxuZnMvbnRmcy9tZnQuYzoyODIyOiAqIGRlbGVnYXRlcyBhY3R1YWwgd3JpdGluZyB0byBudGZzX3dyaXRlX21mdF9ibG9jaygpIGZvciBlYWNoIGZvbGlvLlxcbmZzL250ZnMvbWZ0LmMtMjgyMy0gKiBDYWxsZWQgZnJvbSB0aGUgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIC53cml0ZXBhZ2VzIHZlY3RvciBvZiB0aGVcXG4tLVxcbmZzL250ZnMvbWZ0LmM9MjgyOD1pbnQgbnRmc19tZnRfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbmZzL250ZnMvbWZ0LmMtMjgzNy1cXHR3aGlsZSAoKGZvbGlvID0gd3JpdGViYWNrX2l0ZXIobWFwcGluZywgd2JjLCBmb2xpbywgXFx1MDAyNmVycm9yKSkpXFxuZnMvbnRmcy9tZnQuYzoyODM4OlxcdFxcdGVycm9yID0gbnRmc193cml0ZV9tZnRfYmxvY2soZm9saW8sIHdiYyk7XFxuZnMvbnRmcy9tZnQuYy0yODM5LVxcdHJldHVybiBlcnJvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDc6NDQuMjkyMTcxOTU5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NDU2Nzg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5URlMgV3JpdGUgT3BlcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCwgd2hpY2ggaXMgdHJpZ2dlcmVkIGJ5IGBudGZzX21mdF93cml0ZXBhZ2VzYC4gUmlnaHQsIHRoaXMgaXMgYWxsIHBhcnQgb2YgdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGguIExldCdzIG1ha2Ugc3VyZSBvdXIgY29uZmlndXJhdGlvbiBpcyBzZXQgdXAgcHJvcGVybHkgYmVmb3JlIGRlbHZpbmcgZGVlcGVyLiBJIG5lZWQgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIEtjb25maWcgdG8gY29uZmlybSB0aGUgcmVsZXZhbnQgTlRGUyBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gVGhpcyBjYWxsIGNoYWluIGltcGxpZXMgYSBjcml0aWNhbCB3cml0ZSBvcGVyYXRpb24g4oCTIHByb2JhYmx5IGludm9sdmluZyB0aGUgTWV0YWRhdGEgRmlsZSBUYWJsZSAoTUZUKSBpdHNlbGYsIHNvIGl0J3MgZ29vZCB0byBlbnN1cmUgYWxsIHJlbGF0ZWQgY29tcG9uZW50cyBhcmUgYWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDc6NDcuMDY2NzQxNzU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTE4MDY4NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXFxuLS1cXG5mcy9udGZzL0tjb25maWctMzQtXFxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzo0OS42Nzg1NTQyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NzYxNjU2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlIGhhdmUgaGVyZS5cblxuKipBbmFseXppbmcgdGhlIE5URlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB0byB1c2UgYE5URlNfRlNgLiBCdXQgaGFuZyBvbiwgSSBzZWUgYW5vdGhlciBOVEZTIGRyaXZlciBsdXJraW5nIGluIGBmcy9udGZzMy9gLCBuYW1lZCBgTlRGUzNfRlNgLiBUaGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBpcyBsb2NhdGVkIGluIGBmcy9udGZzL21mdC5jYCwgd2hpY2ggbWFrZXMgaXQgY2xlYXIgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlICpvcmlnaW5hbCogTlRGUyBkcml2ZXIsIG5vdCB0aGUgbmV3ZXIgTlRGUzMuIFRoZSBjb25maWcgc3RpbGwgY29uZmlybXMgYE5URlNfRlNgLlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJJ2xsIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRvIHNlZSBpZiBzb21ldGhpbmcgbGlrZSBgTlRGU19SV2AgaXMgc2V0IG9yIHVuc2V0LiBUaGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgY3VycmVudCBzaXR1YXRpb24uIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgb3RoZXIgY29uZmlnIGNob2ljZXMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQxLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDc6NTMuNDU0NzIxNjE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDI0MTMxNjAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX1JXXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzo1Ni4xOTcxNDYxODRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTM4NjkxNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBOVEZTIFdyaXRlIFN1cHBvcnQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBwaW5wb2ludCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gY29udHJvbGxpbmcgTlRGUyB3cml0ZSBzdXBwb3J0LiBUbyBkbyB0aGF0LCBJJ2xsIG5hdmlnYXRlIGRpcmVjdGx5IHRvIHRoZSBoZWFydCBvZiB0aGUgZmlsZSBzeXN0ZW0gY29uZmlndXJhdGlvbjogYGZzL250ZnMvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgcGVydGFpbmluZyB0byB0aGUgTlRGUyBmaWxlIHN5c3RlbSBzaG91bGQgcmVzaWRlLiBUaGlzIGZpbGUgd2lsbCB1bmRvdWJ0ZWRseSBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB3cml0ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbmZpZ3VyZWQuIEkgZXhwZWN0IHRvIGZpbmQgYSBib29sZWFuIG9wdGlvbiwgb3IgcGVyaGFwcyBldmVuIGEgdHJpc3RhdGUsIGRpcmVjdGx5IHJlbGF0ZWQgdG8gTlRGUyB3cml0ZSBmdW5jdGlvbmFsaXR5LiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc2V0dGluZyBhbmQgYW55IGRlcGVuZGVuY2llcyBpbnZvbHZlZC4gVGhhdCdzIG15IHN0YXJ0aW5nIHBvaW50LCBsZXQncyBnbyBjaGVjayBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA3OjU5LjEzNTg0MDY3MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5URlNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTkxTXFxuICAgNTpcXHRcXHRzZWxlY3QgRlNfSU9NQVBcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxcbiAgIDg6XFx0XFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cXG4gICA5OlxcdFxcbiAgMTA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG4gIDExOlxcdFxcdCAgbnRmcy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIE5URlNfREVCVUdcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIk5URlMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxcbiAgMTg6XFx0XFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXFxuICAxOTpcXHRcXHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cXG4gIDIwOlxcdFxcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXFxuICAyMTpcXHRcXHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXFxuICAyMjpcXHRcXHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxcbiAgMjM6XFx0XFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXFxuICAyNDpcXHRcXHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XFxuICAyNTpcXHRcXHQgIGVjaG8gMSBcXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXFxuICAyNjpcXHRcXHQgIFJlcGxhY2luZyB0aGUgXFxcIjFcXFwiIHdpdGggXFxcIjBcXFwiIHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxcbiAgMjk6XFx0XFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxcbiAgMzA6XFx0XFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcXG4gIDMzOlxcdFxcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuICAzNjpcXHRcXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAzODpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICAzOTpcXHRcXHRoZWxwXFxuICA0MDpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xcbiAgNDE6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcXG4gIDQ0OlxcdFxcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowNzo1OS4xMzU5NjY4NzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ5MzEyMDI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEYW1uLCBEaWQgYE5URlNfUldgIFJlYWxseSBHbyBBd2F5PyoqXG5cbkhvbGQgb24gYSBzZWNvbmQuLi4gYE5URlNfUldgIGdvdCBheGVkPyBUaGF0J3MgYSBiaXQgb2YgYSBzdXJwcmlzZS4gUmlnaHQsIHRpbWUgdG8gdmVyaWZ5LiBUaGUgZmlyc3QgcGxhY2UgSSdkIGNoZWNrIGlzIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSBjb21wb25lbnQsIHdoaWNoIHNob3VsZCBiZSB0aGUgYGZzL250ZnMvTWFrZWZpbGVgLiBUaW1lIHRvIGNyYWNrIHRoYXQgb3BlbiBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZSBhbmQgc2VlIGhvdyB0aGF0IHZhcmlhYmxlLCBvciBpdHMgcmVwbGFjZW1lbnQsIGlzIGJlaW5nIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjAxLjYyOTA4OTkxNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0b2JqLSQoQ09ORklHX05URlNfRlMpICs9IG50ZnMub1xcbiAgIDQ6XFx0XFxuICAgNTpcXHRudGZzLXkgOj0gYW9wcy5vIGF0dHJpYi5vIGNvbGxhdGUubyBkaXIubyBmaWxlLm8gaW5kZXgubyBpbm9kZS5vIFxcXFxcXG4gICA2OlxcdFxcdCAgbWZ0Lm8gbXN0Lm8gbmFtZWkubyBydW5saXN0Lm8gc3VwZXIubyB1bmlzdHIubyBhdHRybGlzdC5vIGVhLm8gXFxcXFxcbiAgIDc6XFx0XFx0ICB1cGNhc2UubyBiaXRtYXAubyBsY25hbGxvYy5vIGxvZ2ZpbGUubyByZXBhcnNlLm8gY29tcHJlc3MubyBcXFxcXFxuICAgODpcXHRcXHQgIGlvbWFwLm8gZGVidWcubyBzeXNjdGwubyBvYmplY3RfaWQubyBiZGV2LWlvLm9cXG4gICA5OlxcdFxcbiAgMTA6XFx0Y2NmbGFncy0kKENPTkZJR19OVEZTX0RFQlVHKSArPSAtRERFQlVHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjAxLjYyOTE3MzU2NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA1OTY1MDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKk5URlMgV3JpdGUgU3VwcG9ydDogQSBRdWljayBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgc28gYE5URlNfUldgIGlzIGdvbmUg4oCTIHRoYXQncyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUuIFRoZSBxdWVzdGlvbiBpcywgaGFzIHdyaXRlIHN1cHBvcnQgYmVlbiBpbnRlZ3JhdGVkIGRpcmVjdGx5IGludG8gdGhlIGNvcmUsIG9yIGFyZSB3ZSBub3cgZGVhbGluZyB3aXRoIGEgcmVhZC1vbmx5IHNjZW5hcmlvPyBNeSBndXQgc2F5cyB0aGVyZSB3YXMgc29tZSByZWNlbnQgc2h1ZmZsaW5nIGFyb3VuZCB3aXRoIHRoZSBOVEZTIGNvZGUsIHBlcmhhcHMgYSBwYXRjaCBzZXJpZXMgdGhhdCBzaGlmdGVkIHRoaW5ncywgYnV0IEknbSBub3QgZW50aXJlbHkgc3VyZSB3aGVyZSBpdCBsYW5kZWQuIFdhcyBgTlRGU19SV2AgcmVtb3ZlZCBiZWNhdXNlIHdyaXRlIGNhcGFiaWxpdGllcyB3ZXJlIHJlbW92ZWQgb3Igd2VyZSB0aGV5IGFjdHVhbGx5IGFsd2F5cyBhdmFpbGFibGU/XG5cblRoZSBiZXN0IHdheSB0byBmaWd1cmUgdGhpcyBvdXQgZGVmaW5pdGl2ZWx5IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIEknbGwgbmVlZCB0byBjaGVjayBgZnMvbnRmcy9zdXBlci5jYC4gVGhhdCdzIHdoZXJlIHRoZSBmaWxlc3lzdGVtJ3Mgc3VwZXJibG9jayBhbmQgaXRzIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBhcmUgZGVmaW5lZCwgd2hpY2ggc2hvdWxkIGdpdmUgbWUgdGhlIGNsZWFyZXN0IGluZGljYXRpb24gb2YgaG93IHdyaXRlIHN1cHBvcnQgaXMgY3VycmVudGx5IGhhbmRsZWQsIGlmIGF0IGFsbC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhcm91bmQgd3JpdGUtcmVsYXRlZCBvcGVyYXRpb25zLiBUaGF0J3Mgd2hlcmUgdGhlIHRydXRoIGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjA1LjQzNTE0MTg3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyNTY1NzA0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX3dyaXRlX21mdF9ibG9ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL21mdC5jPTI1OTM9c3RhdGljIHM2NCBsY25fZnJvbV9pbmRleChzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCwgc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxcbi0tXFxuZnMvbnRmcy9tZnQuYy0yNjA4LS8qXFxuZnMvbnRmcy9tZnQuYzoyNjA5OiAqIG50ZnNfd3JpdGVfbWZ0X2Jsb2NrIC0gV3JpdGUgYmFjayBhIGZvbGlvIGNvbnRhaW5pbmcgTUZUIHJlY29yZHNcXG5mcy9udGZzL21mdC5jLTI2MTAtICogQGZvbGlvOlxcdFRoZSBmb2xpbyB0byB3cml0ZSBiYWNrIChjb250YWlucyBvbmUgb3IgbW9yZSBNRlQgcmVjb3JkcylcXG4tLVxcbmZzL250ZnMvbWZ0LmMtMjYxOS0gKi9cXG5mcy9udGZzL21mdC5jOjI2MjA6c3RhdGljIGludCBudGZzX3dyaXRlX21mdF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYylcXG5mcy9udGZzL21mdC5jLTI2MjEte1xcbi0tXFxuZnMvbnRmcy9tZnQuYy0yODIxLSAqIFdyaXRlYmFjayBpdGVyYXRvciBmb3IgTUZUIHJlY29yZHMuIEl0ZXJhdGVzIG92ZXIgZGlydHkgZm9saW9zIGFuZFxcbmZzL250ZnMvbWZ0LmM6MjgyMjogKiBkZWxlZ2F0ZXMgYWN0dWFsIHdyaXRpbmcgdG8gbnRmc193cml0ZV9tZnRfYmxvY2soKSBmb3IgZWFjaCBmb2xpby5cXG5mcy9udGZzL21mdC5jLTI4MjMtICogQ2FsbGVkIGZyb20gdGhlIGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyAud3JpdGVwYWdlcyB2ZWN0b3Igb2YgdGhlXFxuLS1cXG5mcy9udGZzL21mdC5jPTI4Mjg9aW50IG50ZnNfbWZ0X3dyaXRlcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5mcy9udGZzL21mdC5jLTI4MzctXFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIHdiYywgZm9saW8sIFxcdTAwMjZlcnJvcikpKVxcbmZzL250ZnMvbWZ0LmM6MjgzODpcXHRcXHRlcnJvciA9IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKGZvbGlvLCB3YmMpO1xcbmZzL250ZnMvbWZ0LmMtMjgzOS1cXHRyZXR1cm4gZXJyb3I7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjA3Ljk2MDgwNTM0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc3MDg0Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRGUyBNRlQgQmxvY2sgV3JpdGUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgbnRmc193cml0ZV9tZnRfYmxvY2tgIGZ1bmN0aW9uLiBJIHNlZSBpdCdzIGRlZmluZWQgaW4gYGZzL250ZnMvbWZ0LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBvciBmbGFncyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgZnVuY3Rpb24ncyBiZWhhdmlvci4gQmFzZWQgb24gdGhlIGZpbGUgbG9jYXRpb24sIEknbSBndWVzc2luZyB0aGUgZ2VuZXJhbCBOVEZTIGZpbGVzeXN0ZW0gc3VwcG9ydCAoYE5URlNfRlNgKSBpcyB0aGUgcmVsZXZhbnQgY29tcGlsZSB0aW1lIGNvbmZpZ3VyYXRpb24gZmxhZy4gQnV0IEkgc2hvdWxkIGNvbmZpcm0gdGhpcy5cblxuTm93LCBhIGtleSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSAqdXNlZCo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjYWxsIGhpZXJhcmNoeS4gTGV0IG1lIGNoZWNrLi4uIEFoLCBpdCdzIGNhbGxlZCBmcm9tIGBudGZzX21mdF93cml0ZXBhZ2VzYC4gT2theSwgdGhhdCdzIGhlbHBmdWwuIE5vdywgd2hlcmUgaXMgKnRoYXQqIGNhbGxlZD8gTXkgaHVuY2ggaXMgdGhpcyByZWxhdGVzIHRvIHRoZSBwYWdlIHdyaXRlYmFjayBtYWNoaW5lcnkuIFNvLCBsaWtlbHkgYGZzL250ZnMvYW9wcy5jYC4gSSdsbCBjb25maXJtIHRoYXQgY29ubmVjdGlvbiwgb2YgY291cnNlLiBOZWVkIHRvIHNlZSBob3cgdGhpcyBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlIG9mIE5URlMncyBmaWxlIHN5c3RlbSBvcGVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDg6MTEuNTM3ODkyNDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTgyMTk2MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19tZnRfd3JpdGVwYWdlc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2FvcHMuYz0yOTQ9Y29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBudGZzX21mdF9hb3BzID0ge1xcbi0tXFxuZnMvbnRmcy9hb3BzLmMtMjk2LVxcdC5yZWFkYWhlYWRcXHRcXHQ9IG50ZnNfcmVhZGFoZWFkLFxcbmZzL250ZnMvYW9wcy5jOjI5NzpcXHQud3JpdGVwYWdlc1xcdFxcdD0gbnRmc19tZnRfd3JpdGVwYWdlcyxcXG5mcy9udGZzL2FvcHMuYy0yOTgtXFx0LmRpcnR5X2ZvbGlvXFx0XFx0PSBpb21hcF9kaXJ0eV9mb2xpbyxcXG4tLVxcbmZzL250ZnMvbWZ0LmM9MjYyMD1zdGF0aWMgaW50IG50ZnNfd3JpdGVfbWZ0X2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKVxcbi0tXFxuZnMvbnRmcy9tZnQuYy0yODE2LS8qXFxuZnMvbnRmcy9tZnQuYzoyODE3OiAqIG50ZnNfbWZ0X3dyaXRlcGFnZXMgLSBXcml0ZSBiYWNrIGRpcnR5IGZvbGlvcyBmb3IgdGhlICRNRlQgaW5vZGVcXG5mcy9udGZzL21mdC5jLTI4MTgtICogQG1hcHBpbmc6XFx0YWRkcmVzcyBzcGFjZSBvZiB0aGUgJE1GVCBpbm9kZVxcbi0tXFxuZnMvbnRmcy9tZnQuYy0yODI3LSAqL1xcbmZzL250ZnMvbWZ0LmM6MjgyODppbnQgbnRmc19tZnRfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG5mcy9udGZzL21mdC5jLTI4MjktXFx0XFx0c3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpXFxuLS1cXG5mcy9udGZzL21mdC5oPTg1PWludCBudGZzX21mdF9yZWNvcmRfY2hlY2soY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsIHN0cnVjdCBtZnRfcmVjb3JkICptLFxcbmZzL250ZnMvbWZ0LmgtODYtXFx0XFx0XFx0ICB1NjQgbWZ0X25vKTtcXG5mcy9udGZzL21mdC5oOjg3OmludCBudGZzX21mdF93cml0ZXBhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbmZzL250ZnMvbWZ0LmgtODgtXFx0XFx0c3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowODoxNC4yMzYxNjcwODFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0ODU1NDY5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTlRGUyBNRlQgV3JpdGViYWNrIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHRyYWNpbmcgdGhlIGBudGZzX21mdF93cml0ZXBhZ2VzYCBmdW5jdGlvbiwgYW5kIGFzIGV4cGVjdGVkLCBpdCdzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgYG50ZnNfbWZ0X2FvcHNgIHN0cnVjdHVyZSwgd2hpY2ggaGFuZGxlcyBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMgZm9yIHRoZSBNRlQgaW5vZGUuIFRoYXQgbWVhbnMsIHdoZW5ldmVyIHRoZSBNRlQgaW5vZGUgaXMgd3JpdHRlbiBiYWNrIHRvIGRpc2ssIGl0IHdpbGwgY2FsbCBgbnRmc19tZnRfd3JpdGVwYWdlc2AsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYC4gIFNvIGZhciwgc28gZ29vZCDigJMgd2UndmUgZ290IGEgY2xlYXIgcGF0aCB0aHJvdWdoIHRoZSByZWxldmFudCBmdW5jdGlvbnMuXG5cbk5vdywgdGhlIGNvbmZpZyB1c2VkIGhlcmUgaXMgYE5URlNfRlNgLCBubyBvdGhlciBjb25maWdzIGFyZSByZWxldmFudC4gVGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHRoaXMgZml4IGFyZSBgbnRmc193cml0ZV9tZnRfYmxvY2tgIGFuZCBgbnRmc19tZnRfd3JpdGVwYWdlc2AuXG5cbkxvb2tpbmcgdGhyb3VnaCB0aGUgY2hhbmdlcywgaXQgc2VlbXMgdGhhdCBvbmx5IGBudGZzX3dyaXRlX21mdF9ibG9ja2AgaGFzIGJlZW4gbW9kaWZpZWQuIFRoaXMgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBidWcgZml4LCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUuXG5cbkkndmUgZXhhbWluZWQgdGhlIGRpZmYsIGFuZCBJJ20gcXVpdGUgY29uZmlkZW50IGluIHRoZSBwYXRoIGFuZCBmb2N1cy4gSSdsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgIGFzIGl0IHNlZW1zIGEgc29saWQgYXJlYSBmb3IgZnV6emluZy5cbkZvciBteSBmdXp6aW5nIGVmZm9ydCwgbXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgbnRmc193cml0ZV9tZnRfYmxvY2tgLiBJIHdpbGwgYWxzbyBvbmx5IGVuYWJsZSB0aGUgYE5URlNfRlNgIGNvbmZpZywgdGhhdCBzZWVtcyBzdWZmaWNpZW50IGZvciByZXByb2R1Y2luZyB0aGlzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZSBhZ2Fpbi4gYE5URlNfRlNgIGlzIHRoZSBtYWluIG9uZSBhbmQsIHllcywgdGhlcmUgYXJlIG90aGVyIGNvbmZpZ3Mgc3VjaCBhcyBgTlRGU19ERUJVR2AgYW5kIGBOVEZTX0ZTX1BPU0lYX0FDTGAsIGJ1dCBub25lIG9mIHRoZW0gYXJlIHJlcXVpcmVkIGZvciB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLiAgU28sIEkgY2FuIGNvbmZpcm0gdGhhdCBgTlRGU19GU2AgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZC5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNjUsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA4OjI1LjcyMTcxNjU3NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Nzk3OTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfd3JpdGVfbWZ0X2Jsb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCB3aGVyZSBhIHJ1bmxpc3QgZWxlbWVudCBwb2ludGVyIGBybGAgY291bGQgYmUgdXNlZCB1bmluaXRpYWxpemVkIG9yIGFzIGEgc3RhbGUgcG9pbnRlciBhY3Jvc3MgbG9vcCBpdGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIncyBNRlQgd3JpdGViYWNrIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIHdyaXRpbmcgdG8gTlRGUyB2b2x1bWVzLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBoZWxwIGVuc3VyZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGZpeCBhbmQgdGhlIE1GVCB3cml0ZWJhY2sgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfd3JpdGVfbWZ0X2Jsb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG50ZnNfd3JpdGVfbWZ0X2Jsb2NrYCB3aGVyZSBhIHJ1bmxpc3QgZWxlbWVudCBwb2ludGVyIGBybGAgY291bGQgYmUgdXNlZCB1bmluaXRpYWxpemVkIG9yIGFzIGEgc3RhbGUgcG9pbnRlciBhY3Jvc3MgbG9vcCBpdGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIncyBNRlQgd3JpdGViYWNrIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIHdyaXRpbmcgdG8gTlRGUyB2b2x1bWVzLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBoZWxwIGVuc3VyZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGZpeCBhbmQgdGhlIE1GVCB3cml0ZWJhY2sgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowczgjm[1] Phase: Succeeded StartedAt: 2026-06-25 05:08:59 +0000 UTC FinishedAt: 2026-06-25 05:08:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-25 05:08:59 +0000 UTC FinishedAt: 2026-06-25 05:08:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2] Phase: Succeeded StartedAt: 2026-06-25 05:08:59 +0000 UTC FinishedAt: 2026-06-25 06:58:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-25 05:08:59 +0000 UTC FinishedAt: 2026-06-25 06:58:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-25 05:08:59 +0000 UTC FinishedAt: 2026-06-25 05:09:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-25 05:08:59 +0000 UTC FinishedAt: 2026-06-25 05:09:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowczgjm/series-workflowczgjm-convert-artifact-2164426779/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-25 05:09:10 +0000 UTC FinishedAt: 2026-06-25 05:34:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-25 05:09:10 +0000 UTC FinishedAt: 2026-06-25 05:34:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b8db96d0-0025-45c1-b6cd-66eaee3d9d4e,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-workflowczgjm/series-workflowczgjm-convert-artifact-2164426779/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": "9658a21a-89e5-469b-bdee-828bacf2420c", "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-workflowczgjm/series-workflowczgjm-build-action-2453148761/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-25 05:09:10 +0000 UTC FinishedAt: 2026-06-25 05:34:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b8db96d0-0025-45c1-b6cd-66eaee3d9d4e,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-workflowczgjm/series-workflowczgjm-convert-artifact-2164426779/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": "9658a21a-89e5-469b-bdee-828bacf2420c", "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-workflowczgjm/series-workflowczgjm-build-action-2453148761/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-25 05:34:18 +0000 UTC FinishedAt: 2026-06-25 05:34:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-25 05:34:18 +0000 UTC FinishedAt: 2026-06-25 05:34:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-25 05:34:18 +0000 UTC FinishedAt: 2026-06-25 05:34:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-25 05:34:18 +0000 UTC FinishedAt: 2026-06-25 05:34:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowczgjm/series-workflowczgjm-convert-artifact-2043268722/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-25 05:34:28 +0000 UTC FinishedAt: 2026-06-25 05:36:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-25 05:34:28 +0000 UTC FinishedAt: 2026-06-25 05:36:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9658a21a-89e5-469b-bdee-828bacf2420c,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-workflowczgjm/series-workflowczgjm-build-action-2453148761/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-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-25 05:36:30 +0000 UTC FinishedAt: 2026-06-25 05:36:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-25 05:36:30 +0000 UTC FinishedAt: 2026-06-25 05:36:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-25 05:36:30 +0000 UTC FinishedAt: 2026-06-25 06:02:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-25 05:36:30 +0000 UTC FinishedAt: 2026-06-25 06:02:57 +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:*b8db96d0-0025-45c1-b6cd-66eaee3d9d4e,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-workflowczgjm/series-workflowczgjm-convert-artifact-2043268722/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": "efd5d7a8-ac12-4be0-8510-07bacd569897", "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-workflowczgjm/series-workflowczgjm-build-action-2708983302/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-25 05:36:30 +0000 UTC FinishedAt: 2026-06-25 06:02:28 +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:*b8db96d0-0025-45c1-b6cd-66eaee3d9d4e,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-workflowczgjm/series-workflowczgjm-convert-artifact-2043268722/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": "efd5d7a8-ac12-4be0-8510-07bacd569897", "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-workflowczgjm/series-workflowczgjm-build-action-2708983302/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-25 06:02:57 +0000 UTC FinishedAt: 2026-06-25 06:02:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-25 06:02:57 +0000 UTC FinishedAt: 2026-06-25 06:02:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-25 06:02:57 +0000 UTC FinishedAt: 2026-06-25 06:05:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-25 06:02:57 +0000 UTC FinishedAt: 2026-06-25 06:05:00 +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:*efd5d7a8-ac12-4be0-8510-07bacd569897,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-workflowczgjm/series-workflowczgjm-build-action-2708983302/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-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-25 06:05:10 +0000 UTC FinishedAt: 2026-06-25 06:58:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-25 06:05:10 +0000 UTC FinishedAt: 2026-06-25 06:58:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"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:*9658a21a-89e5-469b-bdee-828bacf2420c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*efd5d7a8-ac12-4be0-8510-07bacd569897,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-workflowczgjm/series-workflowczgjm-build-action-2453148761/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-workflowczgjm/series-workflowczgjm-build-action-2708983302/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-25 06:05:10 +0000 UTC FinishedAt: 2026-06-25 06:05:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-25 06:05:10 +0000 UTC FinishedAt: 2026-06-25 06:05:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"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-workflowczgjm/series-workflowczgjm-convert-artifact-280917959/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-25 06:05:10 +0000 UTC FinishedAt: 2026-06-25 06:05:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-25 06:05:10 +0000 UTC FinishedAt: 2026-06-25 06:05:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-25 06:05:10 +0000 UTC FinishedAt: 2026-06-25 06:05:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-25 06:05:20 +0000 UTC FinishedAt: 2026-06-25 06:58:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczgjm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_write_mft_block"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"9079a9f9-9c92-4b6d-b8c7-9333a4e9a2bb","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-25 06:05:20 +0000 UTC FinishedAt: 2026-06-25 06:58:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9658a21a-89e5-469b-bdee-828bacf2420c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*efd5d7a8-ac12-4be0-8510-07bacd569897,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-workflowczgjm/series-workflowczgjm-build-action-2453148761/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-workflowczgjm/series-workflowczgjm-build-action-2708983302/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-workflowczgjm/series-workflowczgjm-convert-artifact-280917959/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,}