Name: series-workflowhmczg Phase: Succeeded StartedAt: 2026-08-04 15:06:49 +0000 UTC FinishedAt: 2026-08-04 18:19:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[0] Phase: Succeeded StartedAt: 2026-08-04 15:06:49 +0000 UTC FinishedAt: 2026-08-04 16:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 15:06:49 +0000 UTC FinishedAt: 2026-08-04 16:40:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS" ], "series_id": "425e8afb-0c2d-4085-84d1-6d32d3309c4b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_cdc_abort_conn", "smc_cdc_msg_recv_action", "smc_cdc_msg_validate", "smc_cdc_rx_handler", "smcd_cdc_rx_tsklet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NDltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX2NkY19hYm9ydF9jb25uJiMzNDssCiAgICAmIzM0O3NtY19jZGNfbXNnX3JlY3ZfYWN0aW9uJiMzNDssCiAgICAmIzM0O3NtY19jZGNfbXNnX3ZhbGlkYXRlJiMzNDssCiAgICAmIzM0O3NtY19jZGNfcnhfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgc21jX2NkY19hYm9ydF9jb25uYCB0byBoYW5kbGUgU01DIENEQyBwcm90b2NvbCB2aW9sYXRpb25zIGJ5IGRyb3BwaW5nIHRoZSBjb25uZWN0aW9uLiBJdCBtb2RpZmllcyBgc21jX2NkY19tc2dfdmFsaWRhdGVgIGFuZCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIHRvIGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbiBpbnZhbGlkIHNlcXVlbmNlIG51bWJlcnMgb3IgcHJvZHVjdGlvbiBkaWZmZXJlbmNlcyBhcmUgZGV0ZWN0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyBuZXR3b3JrIHByb3RvY29sIHJlY2VpdmUgcGF0aCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIG5ldHdvcmsgaW5wdXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGhhbmRsaW5nIG9mIG1hbGZvcm1lZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjNiNjkxMTc0YzkwMjQ5NGE4ZjNmYzQ3MTU4M2ZkYjljNWQyZTZiMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTU6NTA6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmMgYi9uZXQvc21jL3NtY19jZGMuY1xuaW5kZXggMzJkNmQwM2RmMzIxNC4uZDhmNzQ3YmJjNmY2OSAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX2NkYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jZGMuY1xuQEAgLTMwNSw2ICYjNDM7MzA1LDI3IEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfaGFuZGxlX3VyZ19kYXRhX2Fycml2YWwoc3RydWN0IHNtY19zb2NrICpzbWMsXG4gXHRza19zZW5kX3NpZ3VyZyhcdTAwMjZzbWMtXHUwMDNlc2spO1xuIH1cbiBcbiYjNDM7LyogRHJvcCBhIGNvbm5lY3Rpb24gd2hvc2UgcGVlciB2aW9sYXRlZCB0aGUgQ0RDIHByb3RvY29sLiAgQGxpbmsgaXMgdGhlIGxpbmtcbiYjNDM7ICogdGhlIG9mZmVuZGluZyBtZXNzYWdlIGFycml2ZWQgb24sIG9yIE5VTEwgd2hlbiBpdCBpcyBub3Qga25vd24gdG8gdGhlIGNhbGxlclxuJiM0MzsgKiAoU01DLUQsIGFuZCB0aGUgc2hhcmVkIHJlY2VpdmUgcGF0aCkuICBXaGVuIEBsaW5rIGlzIE5VTEwgY29ubi1cdTAwM2VsbmsgaXMgbGVmdFxuJiM0MzsgKiB1bmNoYW5nZWQ6IGZvciBTTUMtUiBpdCBhbHJlYWR5IHBvaW50cyB0byB0aGUgcmlnaHQgUVA7IGZvciBTTUMtRCB0aGVyZSBpc1xuJiM0MzsgKiBubyBwZXItbGluayBRUCB0byBhYm9ydCBvbi5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHNtY19jZGNfYWJvcnRfY29ubihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19saW5rICpsaW5rKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gXHUwMDI2c21jLVx1MDAzZWNvbm47XG4mIzQzO1xuJiM0MztcdGNvbm4tXHUwMDNlb3V0X29mX3N5bmMgPSAxOyAgLyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqL1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXNlbmRfbG9jayk7XG4mIzQzO1x0Y29ubi1cdTAwM2Vsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTtcbiYjNDM7XHRpZiAobGluaylcbiYjNDM7XHRcdGNvbm4tXHUwMDNlbG5rID0gbGluaztcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXNlbmRfbG9jayk7XG4mIzQzO1x0c29ja19ob2xkKFx1MDAyNnNtYy1cdTAwM2Vzayk7IC8qIHNvY2tfcHV0IGluIGFib3J0X3dvcmsgKi9cbiYjNDM7XHRpZiAoIXF1ZXVlX3dvcmsoc21jX2Nsb3NlX3dxLCBcdTAwMjZjb25uLVx1MDAzZWFib3J0X3dvcmspKVxuJiM0MztcdFx0c29ja19wdXQoXHUwMDI2c21jLVx1MDAzZXNrKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXG4gXHRcdFx0XHQgc3RydWN0IHNtY19saW5rICpsaW5rKVxuIHtcbkBAIC0zMTQsMTcgJiM0MzszMzUsOCBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXG4gXG4gXHQvKiBjaGVjayB0aGF0IHNlcW51bSB3YXMgc2VlbiBiZWZvcmUgKi9cbiBcdGRpZmYgPSBjb25uLVx1MDAzZWxvY2FsX3J4X2N0cmwuc2Vxbm8gLSByZWN2X3NlcTtcbi1cdGlmIChkaWZmIFx1MDAzYyAwKSB7IC8qIGRpZmYgbGFyZ2VyIHRoYW4gMHg3ZmZmICovXG4tXHRcdC8qIGRyb3AgY29ubmVjdGlvbiAqL1xuLVx0XHRjb25uLVx1MDAzZW91dF9vZl9zeW5jID0gMTtcdC8qIHByZXZlbnQgYW55IGZ1cnRoZXIgcmVjZWl2ZXMgKi9cbi1cdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlc2VuZF9sb2NrKTtcbi1cdFx0Y29ubi1cdTAwM2Vsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTtcbi1cdFx0Y29ubi1cdTAwM2VsbmsgPSBsaW5rO1xuLVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXNlbmRfbG9jayk7XG4tXHRcdHNvY2tfaG9sZChcdTAwMjZzbWMtXHUwMDNlc2spOyAvKiBzb2NrX3B1dCBpbiBhYm9ydF93b3JrICovXG4tXHRcdGlmICghcXVldWVfd29yayhzbWNfY2xvc2Vfd3EsIFx1MDAyNmNvbm4tXHUwMDNlYWJvcnRfd29yaykpXG4tXHRcdFx0c29ja19wdXQoXHUwMDI2c21jLVx1MDAzZXNrKTtcbi1cdH1cbiYjNDM7XHRpZiAoZGlmZiBcdTAwM2MgMCkgLyogZGlmZiBsYXJnZXIgdGhhbiAweDdmZmYgKi9cbiYjNDM7XHRcdHNtY19jZGNfYWJvcnRfY29ubihzbWMsIGxpbmspOyAgLyogZHJvcCBjb25uZWN0aW9uICovXG4gfVxuIFxuIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxuQEAgLTM3Niw2ICYjNDM7Mzg4LDExIEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxuIFx0ZGlmZl9wcm9kID0gc21jX2N1cnNfZGlmZihjb25uLVx1MDAzZXJtYl9kZXNjLVx1MDAzZWxlbiwgXHUwMDI2cHJvZF9vbGQsXG4gXHRcdFx0XHQgIFx1MDAyNmNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybC5wcm9kKTtcbiBcdGlmIChkaWZmX3Byb2QpIHtcbiYjNDM7XHRcdGlmIChkaWZmX3Byb2QgXHUwMDNlIGNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlbGVuIC1cbiYjNDM7XHRcdFx0XHRhdG9taWNfcmVhZChcdTAwMjZjb25uLVx1MDAzZWJ5dGVzX3RvX3JjdikpIHtcbiYjNDM7XHRcdFx0c21jX2NkY19hYm9ydF9jb25uKHNtYywgTlVMTCk7XG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKGNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybC5wcm9kX2ZsYWdzLnVyZ19kYXRhX3ByZXNlbnQpXG4gXHRcdFx0c21jX2NkY19oYW5kbGVfdXJnX2RhdGFfYXJyaXZhbChzbWMsIFx1MDAyNmRpZmZfcHJvZCk7XG4gXHRcdC8qIGJ5dGVzX3RvX3JjdiBpcyBkZWNyZWFzZWQgaW4gc21jX3JlY3Ztc2cgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX2Fib3J0X2Nvbm4mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfdmFsaWRhdGUmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3NtY2RfY2RjX3J4X3Rza2xldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmM2I2OTExNzRjOTAyNDk0YThmM2ZjNDcxNTgzZmRiOWM1ZDJlNmIxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxNTo1MDo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NkYy5jIGIvbmV0L3NtYy9zbWNfY2RjLmMKaW5kZXggMzJkNmQwM2RmMzIxNC4uZDhmNzQ3YmJjNmY2OSAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfY2RjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfY2RjLmMKQEAgLTMwNSw2ICYjNDM7MzA1LDI3IEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfaGFuZGxlX3VyZ19kYXRhX2Fycml2YWwoc3RydWN0IHNtY19zb2NrICpzbWMsCiAJc2tfc2VuZF9zaWd1cmcoJmFtcDtzbWMtJmd0O3NrKTsKIH0KIAomIzQzOy8qIERyb3AgYSBjb25uZWN0aW9uIHdob3NlIHBlZXIgdmlvbGF0ZWQgdGhlIENEQyBwcm90b2NvbC4gIEBsaW5rIGlzIHRoZSBsaW5rCiYjNDM7ICogdGhlIG9mZmVuZGluZyBtZXNzYWdlIGFycml2ZWQgb24sIG9yIE5VTEwgd2hlbiBpdCBpcyBub3Qga25vd24gdG8gdGhlIGNhbGxlcgomIzQzOyAqIChTTUMtRCwgYW5kIHRoZSBzaGFyZWQgcmVjZWl2ZSBwYXRoKS4gIFdoZW4gQGxpbmsgaXMgTlVMTCBjb25uLSZndDtsbmsgaXMgbGVmdAomIzQzOyAqIHVuY2hhbmdlZDogZm9yIFNNQy1SIGl0IGFscmVhZHkgcG9pbnRzIHRvIHRoZSByaWdodCBRUDsgZm9yIFNNQy1EIHRoZXJlIGlzCiYjNDM7ICogbm8gcGVyLWxpbmsgUVAgdG8gYWJvcnQgb24uCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgc21jX2NkY19hYm9ydF9jb25uKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSAmYW1wO3NtYy0mZ3Q7Y29ubjsKJiM0MzsKJiM0MzsJY29ubi0mZ3Q7b3V0X29mX3N5bmMgPSAxOyAgLyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqLwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjb25uLSZndDtzZW5kX2xvY2spOwomIzQzOwljb25uLSZndDtsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTsKJiM0MzsJaWYgKGxpbmspCiYjNDM7CQljb25uLSZndDtsbmsgPSBsaW5rOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2Nvbm4tJmd0O3NlbmRfbG9jayk7CiYjNDM7CXNvY2tfaG9sZCgmYW1wO3NtYy0mZ3Q7c2spOyAvKiBzb2NrX3B1dCBpbiBhYm9ydF93b3JrICovCiYjNDM7CWlmICghcXVldWVfd29yayhzbWNfY2xvc2Vfd3EsICZhbXA7Y29ubi0mZ3Q7YWJvcnRfd29yaykpCiYjNDM7CQlzb2NrX3B1dCgmYW1wO3NtYy0mZ3Q7c2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYywKIAkJCQkgc3RydWN0IHNtY19saW5rICpsaW5rKQogewpAQCAtMzE0LDE3ICYjNDM7MzM1LDggQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLAogCiAJLyogY2hlY2sgdGhhdCBzZXFudW0gd2FzIHNlZW4gYmVmb3JlICovCiAJZGlmZiA9IGNvbm4tJmd0O2xvY2FsX3J4X2N0cmwuc2Vxbm8gLSByZWN2X3NlcTsKLQlpZiAoZGlmZiAmbHQ7IDApIHsgLyogZGlmZiBsYXJnZXIgdGhhbiAweDdmZmYgKi8KLQkJLyogZHJvcCBjb25uZWN0aW9uICovCi0JCWNvbm4tJmd0O291dF9vZl9zeW5jID0gMTsJLyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqLwotCQlzcGluX2xvY2tfYmgoJmFtcDtjb25uLSZndDtzZW5kX2xvY2spOwotCQljb25uLSZndDtsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTsKLQkJY29ubi0mZ3Q7bG5rID0gbGluazsKLQkJc3Bpbl91bmxvY2tfYmgoJmFtcDtjb25uLSZndDtzZW5kX2xvY2spOwotCQlzb2NrX2hvbGQoJmFtcDtzbWMtJmd0O3NrKTsgLyogc29ja19wdXQgaW4gYWJvcnRfd29yayAqLwotCQlpZiAoIXF1ZXVlX3dvcmsoc21jX2Nsb3NlX3dxLCAmYW1wO2Nvbm4tJmd0O2Fib3J0X3dvcmspKQotCQkJc29ja19wdXQoJmFtcDtzbWMtJmd0O3NrKTsKLQl9CiYjNDM7CWlmIChkaWZmICZsdDsgMCkgLyogZGlmZiBsYXJnZXIgdGhhbiAweDdmZmYgKi8KJiM0MzsJCXNtY19jZGNfYWJvcnRfY29ubihzbWMsIGxpbmspOyAgLyogZHJvcCBjb25uZWN0aW9uICovCiB9CiAKIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLApAQCAtMzc2LDYgJiM0MzszODgsMTEgQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsCiAJZGlmZl9wcm9kID0gc21jX2N1cnNfZGlmZihjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuLCAmYW1wO3Byb2Rfb2xkLAogCQkJCSAgJmFtcDtjb25uLSZndDtsb2NhbF9yeF9jdHJsLnByb2QpOwogCWlmIChkaWZmX3Byb2QpIHsKJiM0MzsJCWlmIChkaWZmX3Byb2QgJmd0OyBjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuIC0KJiM0MzsJCQkJYXRvbWljX3JlYWQoJmFtcDtjb25uLSZndDtieXRlc190b19yY3YpKSB7CiYjNDM7CQkJc21jX2NkY19hYm9ydF9jb25uKHNtYywgTlVMTCk7CiYjNDM7CQkJcmV0dXJuOwomIzQzOwkJfQogCQlpZiAoY29ubi0mZ3Q7bG9jYWxfcnhfY3RybC5wcm9kX2ZsYWdzLnVyZ19kYXRhX3ByZXNlbnQpCiAJCQlzbWNfY2RjX2hhbmRsZV91cmdfZGF0YV9hcnJpdmFsKHNtYywgJmFtcDtkaWZmX3Byb2QpOwogCQkvKiBieXRlc190b19yY3YgaXMgZGVjcmVhc2VkIGluIHNtY19yZWN2bXNnICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIGZvciBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIChTTUMpKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgbmV0L3NtYy9zbWNfY2RjLmNgLCByaWdodD8gVGhlIGtleSBoZXJlIGlzIHRoaXMgbmV3IGBzbWNfY2RjX2Fib3J0X2Nvbm5gIGZ1bmN0aW9uLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBmb3JjZWZ1bGx5IHRlcm1pbmF0ZSBhIGNvbm5lY3Rpb24gaWYgdGhlIG90aGVyIGVuZCBpcyBtaXNiZWhhdmluZyBhbmQgdmlvbGF0aW5nIHRoZSBDREMgcHJvdG9jb2wuIEdvb2QsIGEgZGVkaWNhdGVkIGZ1bmN0aW9uIGZvciBjb25uZWN0aW9uIHRlYXJkb3duLCBtYWtlcyB0aGUgY29kZSBjbGVhbmVyIGFuZCBlYXNpZXIgdG8gcmVhc29uIGFib3V0LgoKTm93LCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlZmFjdG9yZWQgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCwgcHVsbGluZyBvdXQgYW4gaW5saW5lIGJsb2NrIGFuZCByZXBsYWNpbmcgaXQgd2l0aCBhIGNhbGwgdG8gYHNtY19jZGNfYWJvcnRfY29ubmAuIFNtYXJ0LCByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uIGFuZCBpbXByb3ZpbmcgbWFpbnRhaW5hYmlsaXR5IOKAkyBhbHdheXMgYSBnb29kIHRoaW5nLiBUaGV5JiMzOTt2ZSBhbHNvIGFkZGVkIGEgY2hlY2sgd2l0aGluIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdGhhdCB3aWxsIHRyaWdnZXIgYHNtY19jZGNfYWJvcnRfY29ubmAgaWYgYGRpZmZfcHJvZGAgZXhjZWVkcyBhIGNhbGN1bGF0ZWQgdGhyZXNob2xkIHJlbGF0ZWQgdG8gcmVjZWl2ZWQgYnl0ZXMuIFRoaXMgcHJvYmFibHkgZGVhbHMgd2l0aCBzb21lIHNvcnQgb2YgYnVmZmVyIG92ZXJydW4gb3IgcHJvdG9jb2wgdmlvbGF0aW9uIGR1cmluZyBtZXNzYWdlIHJlY2VwdGlvbi4gVGhpcyB3YXJyYW50cyBhIG1vcmUgZGV0YWlsZWQgbG9vay4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBzaG91bGQgY29uZmlybSBJJiMzOTttIHdvcmtpbmcgd2l0aCB0aGUgU01DIGNvZGUsIG9yIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgYXMgYSByZWZyZXNoZXIuIFRoZSBuZXh0IHN0ZXAgaXMgYSBxdWljayBjaGVjayBvZiBgbmV0L3NtYy9zbWNfY2RjLmNgIGl0c2VsZiBhbmQgdGhlIEtjb25maWcgZm9yIFNNQywgbG9va2luZyBmb3IgdGhlIGBDT05GSUdfU01DYCBzeW1ib2wsIGp1c3QgdG8gZW5zdXJlIHRoYXQgdGhlIHByb3BlciBjb25maWd1cmF0aW9ucyBhcmUgc2V0IHVwLgoKVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQgb2YgdGhlc2UgY2hhbmdlcy4gSSYjMzk7bGwgZm9jdXMgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZDogYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCBhbmQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4KClRvIGdldCBhIGJldHRlciBwaWN0dXJlLCBJJiMzOTtsbCB1c2UgYGdpdCBncmVwYCB0byBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhvc2UgZnVuY3Rpb25zLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGltcGFjdCBvZiB0aGUgcGF0Y2ggYW5kIGhvdyB0aGVzZSBtb2RpZmljYXRpb25zIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgU01DIENEQyBpbXBsZW1lbnRhdGlvbi4gSSB3aWxsIG5lZWQgdG8gbG9vayBpbnRvIGBkaWZmX3Byb2RgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgd2hhdCBpcyBnb2luZyBvbiBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19jZGNfbXNnX3JlY3ZfYWN0aW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTMyOT1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMzQxLVxubmV0L3NtYy9zbWNfY2RjLmM6MzQyOnN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9zbWNfY2RjLmMtMzQzLVx0XHRcdFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTQ0ND1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbi0tXG5uZXQvc21jL3NtY19jZGMuYy00NDctXHRiaF9sb2NrX3NvY2soXHUwMDI2c21jLVx1MDAzZXNrKTtcbm5ldC9zbWMvc21jX2NkYy5jOjQ0ODpcdHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHNtYywgY2RjKTtcbm5ldC9zbWMvc21jX2NkYy5jLTQ0OS1cdGJoX3VubG9ja19zb2NrKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG4tLVxubmV0L3NtYy9zbWNfcnguYy0yOS0vKiBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0byB3YWtldXAgY29uc3VtZXJzIGJsb2NrZWQgd2l0aCBzbWNfcnhfd2FpdCgpLlxubmV0L3NtYy9zbWNfcnguYzozMDogKiBpbmRpcmVjdGx5IGNhbGxlZCBieSBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpLlxubmV0L3NtYy9zbWNfcnguYy0zMS0gKi9cbi0tXG5uZXQvc21jL3NtY19yeC5jPTM1Mj1pbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM5OC1cdFx0aWYgKHNrLVx1MDAzZXNrX3NodXRkb3duIFx1MDAyNiBSQ1ZfU0hVVERPV04pIHtcbm5ldC9zbWMvc21jX3J4LmM6Mzk5Olx0XHRcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcbm5ldC9zbWMvc21jX3J4LmMtNDAwLVx0XHRcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTAzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZToKCioqQW5hbHl6aW5nIGBzbWNfY2RjX21zZ19yZWN2YCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGBzbWNfY2RjX21zZ19yZWN2YCBiZXR0ZXIuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHRyYWNlIGl0cyB1c2FnZS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgcHJlY2lzZWx5ICp3aG8qIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gSXMgaXQgb25seSBmcm9tIGEgc3BlY2lmaWMgbW9kdWxlLCBvciBpcyBpdCBhIG1vcmUgZ2VuZXJhbCB1dGlsaXR5PyBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBjb250ZXh0LCByZXZlYWxpbmcgdGhlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGVtcGxveWVkLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byByZWFzb24gYWJvdXQgaXRzIHB1cnBvc2UgYW5kIHRoZSByb2xlIGl0IHBsYXlzIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIGFsc28gYWxsb3cgbWUgdG8gaHlwb3RoZXNpemUgYWJvdXQgdGhlIGV4cGVjdGVkIGlucHV0cyBhbmQgb3V0cHV0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfY2RjX21zZ19yZWN2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTMyOT1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMzQxLVxubmV0L3NtYy9zbWNfY2RjLmM6MzQyOnN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9zbWNfY2RjLmMtMzQzLVx0XHRcdFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ0My0vKiBjYWxsZWQgdW5kZXIgdGFza2xldCBjb250ZXh0ICovXG5uZXQvc21jL3NtY19jZGMuYzo0NDQ6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXG5uZXQvc21jL3NtY19jZGMuYy00NDUte1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ0Ny1cdGJoX2xvY2tfc29jayhcdTAwMjZzbWMtXHUwMDNlc2spO1xubmV0L3NtYy9zbWNfY2RjLmM6NDQ4Olx0c21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc21jLCBjZGMpO1xubmV0L3NtYy9zbWNfY2RjLmMtNDQ5LVx0YmhfdW5sb2NrX3NvY2soXHUwMDI2c21jLVx1MDAzZXNrKTtcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00NTk9c3RhdGljIHZvaWQgc21jZF9jZGNfcnhfdHNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5uZXQvc21jL3NtY19jZGMuYy00NzItXHRzbWMgPSBjb250YWluZXJfb2YoY29ubiwgc3RydWN0IHNtY19zb2NrLCBjb25uKTtcbm5ldC9zbWMvc21jX2NkYy5jOjQ3MzpcdHNtY19jZGNfbXNnX3JlY3Yoc21jLCAoc3RydWN0IHNtY19jZGNfbXNnICopXHUwMDI2Y2RjKTtcbm5ldC9zbWMvc21jX2NkYy5jLTQ3NC19XG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NDg2PXN0YXRpYyB2b2lkIHNtY19jZGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNTE5LVxubmV0L3NtYy9zbWNfY2RjLmM6NTIwOlx0c21jX2NkY19tc2dfcmVjdihzbWMsIGNkYyk7XG5uZXQvc21jL3NtY19jZGMuYy01MjEtb3V0OlxuLS1cbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cbm5ldC9zbWMvc21jX3J4LmMtMzEtICovXG4tLVxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTgtXHRcdGlmIChzay1cdTAwM2Vza19zaHV0ZG93biBcdTAwMjYgUkNWX1NIVVRET1dOKSB7XG5uZXQvc21jL3NtY19yeC5jOjM5OTpcdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEwMQoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipTTUMgUHJvdG9jb2wgVnVsbmVyYWJpbGl0eSBBc3Nlc3NtZW50KioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHNwZWNpZmljYWxseSwgdGhlIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgZnVuY3Rpb24uIEkgc2VlIHRoYXQgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gYm90aCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAuIEdvb2QsIGdvb2QuIEZ1bmN0aW9uYWxpdHkgYW5kIHJlYWNoYWJpbGl0eSBhcmUgY29uZmlybWVkLiBUaGF0JiMzOTtzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGJlY2F1c2UgU01DIGlzIGEgbmV0d29yayBwcm90b2NvbCwgbXkgZXhwZXJ0IGludHVpdGlvbiBpcyBzY3JlYW1pbmcgZm9yIGZ1enppbmcuIEkgbWVhbiwgaXQgcHJhY3RpY2FsbHkgKmJlZ3MqIGZvciBpdC4gSXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIHByb3RvY29sLWxldmVsIGZ1enppbmcuIEFsd2F5cyB0aGUgbG93LWhhbmdpbmcgZnJ1aXQgd2hlbiBpdCBjb21lcyB0byBuZXR3b3Jrcy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBpcyBzZXQgLSBJIHNlZSBhIHJlZmVyZW5jZSB0byBgQ09ORklHX1NNQ2AuIFRpbWUgdG8gcGVlayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgU01DIGZ1bmN0aW9uYWxpdHkgaXMgZXZlbiBlbmFibGVkIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gYmVmb3JlIEkgd2FzdGUgdG9vIG11Y2ggdGltZSwgYXMgSSYjMzk7bSBzdXJlIGlzIHRoZSBzYW1lIHdpdGggYW55IGV4cGVyaWVuY2VkIGV4cGVydC4gR290dGEgYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU01DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvOHh4L0tjb25maWc9MTQ2PWNvbmZpZyBJMkNfU1BJX1NNQzFfVUNPREVfUEFUQ0hcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzh4eC9LY29uZmlnLTE1MC1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvOHh4L0tjb25maWc6MTUxOmNvbmZpZyBTTUNfVUNPREVfUEFUQ0hcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvOHh4L0tjb25maWctMTUyLVx0Ym9vbCBcJiMzNDtTTUMgcmVsb2NhdGlvbiBwYXRjaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2MvS2NvbmZpZz0yMD1pZiBORVRfVkVORE9SX1NNU0NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2MvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2MvS2NvbmZpZzoyMjpjb25maWcgU01DOTFYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtTTUMgOTFDOXgvOTFDMXh4eCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgyNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBTTUMgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYFNNQ2DigKYgdGhhdCYjMzk7cyBvdXIga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIGBuZXQvc21jL0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgbG9jYXRpb24gZm9yIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBzZXR0aW5ncyByZWxhdGVkIHRvIGBTTUNgLiBUaGF0IGZpbGUgd2lsbCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cgYWJvdXQgd2hhdCBvdGhlciBjb21wb25lbnRzLCBmZWF0dXJlcywgb3IgZHJpdmVycyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgYXJlIGluIGNvbmZsaWN0IHdpdGggYFNNQ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiBpdHMgaW1wYWN0IGJlZm9yZSBJIG1ha2UgYW55IGRlY2lzaW9ucyBhYm91dCBpdHMgdXNlLiBUaW1lIHRvIGdldCBkb3duIHRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgU01DX0RJQUdcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIFNNQ1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xuICAxOTpcdFx0ICBzbWNzcy5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMwOQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDM1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipESUJTIE15c3Rlcnk6IEEgS2VybmVsIEtjb25maWcgUHV6emxlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBTTUNgIGNvbmZpZ3VyYXRpb24gaW4gdGhlIGtlcm5lbCwgYW5kIHRoZSBkZXBlbmRlbmN5IGNvbmRpdGlvbiBqdW1wcyBvdXQgYXQgbWU6IGBkZXBlbmRzIG9uIElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EICZhbXA7JmFtcDsgRElCU2AuIEkga25vdyBgSU5FVGAgYW5kIGBJTkZJTklCQU5EYCwgbm8gcHJvYmxlbSB0aGVyZS4gQnV0LCBob2xkIG9uLi4uIGBESUJTYD8gSXMgdGhhdCBhIHR5cG8/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvc21jL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgc3VyZS4gQWxyaWdodCwgSSYjMzk7bSBwZWVyaW5nIGF0IGBuZXQvc21jL0tjb25maWdgIGluIHRoZSB0cmVlLiBUaGUgZGVwZW5kZW5jeSBpczogYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYC4gV2FpdCwgaXMgbXkgbWluZCBwbGF5aW5nIHRyaWNrcyBvbiBtZT8gTGV0IG1lIGdvIGJhY2sgYW5kIHJlYWQgdGhlIG91dHB1dCBhZ2Fpbi4gTm8sIGl0ICpzdGlsbCogc2F5cyBgZGVwZW5kcyBvbiBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORCAmYW1wOyZhbXA7IERJQlNgLiBPa2F5LCBtYXliZSBJIG5lZWQgYSBzYW5pdHkgY2hlY2ssIGp1c3QgY29uZmlybWluZyBpdCBoYXNuJiMzOTt0IGNoYW5nZWQuCgpMZXQgbWUgZ28gYmFjayBhbmQgbG9vayBhdCBgbmV0L3NtYy9LY29uZmlnYCBhZ2Fpbi4gTm9wZSwgaXQgKnN0aWxsKiByZWFkczogYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYC4gT2theSwgbm8sIEkgZGlkbiYjMzk7dCBtaXNyZWFkIGl0LiBCdXQgbm93IG15IGV4cGVydCBtaW5kIGlzIHNjcmVhbWluZywgd2hhdCBpcyB0aGlzIGBESUJTYD8hIFRpbWUgdG8gZXhlY3V0ZSBhIGBncmVwYCBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgdGhpcyBlbmlnbWF0aWMgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERJQlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xNS1cdGJvb2wgXCYjMzQ7SW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwODkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBESUJTKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgRElCU2AsIHRoYXQmIzM5O3MgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgY29ycmVjdCBuZXR3b3JrIHN0YWNrIGNvbmZpZ3VyZWQuIFRoYXQgbGlrZWx5IG1lYW5zIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBJTkVUYCwgZm9yIHRoZSB1c3VhbCBJUHY0LCBhbmQgSSBzaG91bGQgYWxzbyBjaGVjayBgSU5GSU5JQkFORGAgc3VwcG9ydCwgYXMgSSBzdXNwZWN0IERJQlMgbWlnaHQgbGV2ZXJhZ2UgdGhhdCBmb3IgaGlnaC1wZXJmb3JtYW5jZSBpbnRlcmNvbm5lY3RzLgoKVG8gYmUgY2VydGFpbiBvZiB0aGUgZGVwZW5kZW5jaWVzIGZvciBgRElCU2AgaXRzZWxmLCBJIHNob3VsZCBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUgc2Vuc2libGUgcGxhY2UgdG8gc3RhcnQgaXMgYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBwcmVjaXNlIHJlYWQgb3V0IG9mIHRoZSByZXF1aXJlZCBvcHRpb25zIGFuZCBhbnkgaW50ZXJkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBlbnN1cmUgSSBnZXQgdGhpcyB0aGluZyBjb25maWd1cmVkIGNvcnJlY3RseSBmb3IgdGhlIHRhcmdldCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRjb25maWcgRElCU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlZmF1bHQgblxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgKERJQlMpIGlzIGEgY29tbXVuaWNhdGlvbiBtZXRob2QgdGhhdFxuICAgNzpcdFx0ICB1c2VzIGNvbW1vbiBwaHlzaWNhbCAoaW50ZXJuYWwpIG1lbW9yeSBmb3Igc3luY2hyb25vdXMgZGlyZWN0IGFjY2Vzc1xuICAgODpcdFx0ICBpbnRvIGEgcmVtb3RlIGJ1ZmZlci5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHByb3ZpZGUgdGhlIGFic3RyYWN0aW9uIGxheWVyIGJldHdlZW5cbiAgMTE6XHRcdCAgZGlicyBkZXZpY2VzIGFuZCBkaWJzIGNsaWVudHMgbGlrZSB0aGUgU01DIHByb3RvY29sLlxuICAxMjpcdFx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgZGlicy5cbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgRElCU19MT1xuICAxNTpcdFx0Ym9vbCBcJiMzNDtJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gRElCU1xuICAxNzpcdFx0ZGVmYXVsdCBuXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIERJQlNfTE8gZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgYW4gc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2VcbiAgMjA6XHRcdCAgbmFtZWQgbG8gd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHRyYW5zZmVycmluZyBkYXRhIHdoZW4gY29tbXVuaWNhdGlvblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjE1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGF0IGVuYWJsaW5nIGBTTUNgIG5lY2Vzc2l0YXRlcyBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYCwgc28gbGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBoYXZlIGFsbCBvZiB0aG9zZSBlbmFibGVkLiBFYXN5IGVub3VnaC4gTm93LCBJIHNlZSB0aGlzIHBhdGNoIG1vZGlmaWVzIGBzbWNfY2RjLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBhbmQgZXZlbiBhZGRpbmcgYHNtY19jZGNfYWJvcnRfY29ubmAuIFRoZXNlIGFyZSBjb3JlIGZ1bmN0aW9ucy4gRGVmaW5pdGVseSBmdW5jdGlvbmFsIGNoYW5nZXMuIFRob3NlIHRocmVlLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBhbmQgYHNtY19jZGNfYWJvcnRfY29ubmAsIHRob3NlIGFyZSB0aGUgZm9jdXMuCgpXYWl0IGEgc2Vjb25kLiBOb3cgSSBzZWUgdGhhdCBhbGwgdGhyZWUgYXJlIHN0YXRpYyEgVGhhdCBtZWFucyB0aGV5IGhhdmUgaW50ZXJuYWwgbGlua2FnZSBvbmx5LiBUaGUgaW5zdHJ1Y3Rpb25zIHN0aXB1bGF0ZSB0byBwcmVmZXIgbm9uLXN0YXRpYyBBUEkgZW50cnlwb2ludHMuIFRoZSByYXRpb25hbGUgYmVpbmcgdGhhdCBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2xzLCBhbmQgdGh1cyBjYW5ub3QgYmUgdXNlZCBhcyBhbiBlbnRyeSBwb2ludCBmb3IgZXh0ZXJuYWwgaW50ZXJhY3Rpb24uIFNvIGxldCYjMzk7cyBjaGVjazogYXJlIHRoZXNlIGJlaW5nIGlubGluZWQ/IGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgaXMgY2FsbGVkIGZyb20gYHNtY19jZGNfbXNnX3JlY3ZgLiBUaGF0IGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYHNtY2RfY2RjX3J4X3Rza2xldGAgYW5kIGBzbWNfY2RjX3J4X2hhbmRsZXJgLiBJIG5lZWQgdG8gaW5zcGVjdCB0aGVzZSBhcyB3ZWxsLgoKT2theSwgbGV0JiMzOTtzIHNlZS4gYHNtY2RfY2RjX3J4X3Rza2xldGAgaXMgYWxzbyBzdGF0aWMuIEFuZCBgc21jX2NkY19yeF9oYW5kbGVyYCBpcyBhbHNvIHN0YXRpYyEgVGhhdCYjMzk7cyBwcm9ibGVtYXRpYy4gV2hhdCBhcmUgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHRoZW4/IFdlIG5lZWQgYSB3YXkgdG8gcmVnaXN0ZXIgb3IgdXNlIHRoaXMgY29kZSBmcm9tIGVsc2V3aGVyZS4gSSYjMzk7bSBnb2luZyB0byBncmVwIGZvciBgc21jX2NkY19yeF9oYW5kbGVyYCBhbmQgYHNtY2RfY2RjX3J4X3Rza2xldGAgdG8gZmluZCB0aGVpciByZWdpc3RyYXRpb24gcG9pbnRzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZW50aXJlIHRoaW5nIGlzIGJlaW5nIHVzZWQgZnJvbSB0aGUgb3V0c2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTQ3OT12b2lkIHNtY2RfY2RjX3J4X2luaXQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ4NS1cbm5ldC9zbWMvc21jX2NkYy5jOjQ4NjpzdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxubmV0L3NtYy9zbWNfY2RjLmMtNDg3LXtcbi0tXG5uZXQvc21jL3NtY19jZGMuYy01MjQtXG5uZXQvc21jL3NtY19jZGMuYzo1MjU6c3RhdGljIHN0cnVjdCBzbWNfd3JfcnhfaGFuZGxlciBzbWNfY2RjX3J4X2hhbmRsZXJzW10gPSB7XG5uZXQvc21jL3NtY19jZGMuYy01MjYtXHR7XG5uZXQvc21jL3NtY19jZGMuYzo1Mjc6XHRcdC5oYW5kbGVyXHQ9IHNtY19jZGNfcnhfaGFuZGxlcixcbm5ldC9zbWMvc21jX2NkYy5jLTUyOC1cdFx0LnR5cGVcdFx0PSBTTUNfQ0RDX01TR19UWVBFXG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NTM1PWludCBfX2luaXQgc21jX2NkY19pbml0KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNTM5LVxubmV0L3NtYy9zbWNfY2RjLmM6NTQwOlx0Zm9yIChoYW5kbGVyID0gc21jX2NkY19yeF9oYW5kbGVyczsgaGFuZGxlci1cdTAwM2VoYW5kbGVyOyBoYW5kbGVyJiM0MzsmIzQzOykge1xubmV0L3NtYy9zbWNfY2RjLmMtNTQxLVx0XHRJTklUX0hMSVNUX05PREUoXHUwMDI2aGFuZGxlci1cdTAwM2VsaXN0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg0NwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYHNtY2RfY2RjX3J4X3Rza2xldGAgVGFza2xldCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHNtY2RfY2RjX3J4X3Rza2xldGAgcm91dGluZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgd2l0aGluIHRoZSBDREMgKHByZXN1bWFibHksIENvbW11bmljYXRpb24gRGV2aWNlIENsYXNzKSByZWNlaXZlIHBhdGguIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCwgdGhlIGhhcmR3YXJlIGVudmlyb25tZW50IGFuZCB0aGUgcHJvdG9jb2wgaW52b2x2ZWQuIElzIHRoaXMgaGFuZGxpbmcgcmF3IFVTQiBkYXRhIGRpcmVjdGx5LCBvciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uPyBBcmUgd2UgbG9va2luZyBhdCBhIHNwZWNpZmljIGRldmljZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBvciBhIG1vcmUgZ2VuZXJpYyBVU0IgaW50ZXJmYWNlIGZyYW1ld29yaz8gTXkgZmlyc3Qgc3RlcCBpcyB1c3VhbGx5IHRvIG1lbnRhbGx5IHJlY29uc3RydWN0IHRoZSBjYWxsIHN0YWNrOyB3aGVyZSBkb2VzIHRoaXMgdGFza2xldCBmaXQgaW4gdGhlIHJlY2VpdmUgZmxvdz8gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgYW5kIGJ1ZmZlciBtYW5hZ2VtZW50IGNvbmNlcm5zLiBBIHF1aWNrIGdsYW5jZSBzdWdnZXN0cyB0aGF0IHRoaXMgY291bGQgYmUgYSBwb2ludCB3aGVyZSBkYXRhIGluZ3Jlc3MgZW50ZXJzIHVzZXItc3BhY2UuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHR5cGljYWwgaXNzdWVzIGF0IHRoaXMgc3RhZ2UgLSBJbnRlcnJ1cHQgU2VydmljZSBSb3V0aW5lIChJU1IpIGludGVyYWN0aW9uLCBETUEgdHJhbnNmZXJzLCBkYXRhIHZhbGlkYXRpb24uIFdoYXQga2luZCBvZiBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBidWZmZXIgb3ZlcnJ1bnMgb3IgdW5kZXJmbG93cz8gSXMgdGhlcmUgYW55IHBvdGVudGlhbCBmb3IgZGF0YSBsb3NzIHVuZGVyIGhlYXZ5IGxvYWQ/IEEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0YXNrbGV0JiMzOTtzIGltcGxlbWVudGF0aW9uIGlzIHBhcmFtb3VudCB0byBmaW5kaW5nIGFueSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQgbmVlZHMgdG8gaGFuZGxlIGFsbCB0aGUgY29tbW9uIGNvcm5lciBjYXNlcyB0byBlbnN1cmUgc3RhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9NDQ0PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ1OC0gKi9cbm5ldC9zbWMvc21jX2NkYy5jOjQ1OTpzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxubmV0L3NtYy9zbWNfY2RjLmMtNDYwLXtcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00Nzk9dm9pZCBzbWNkX2NkY19yeF9pbml0KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTQ4MC17XG5uZXQvc21jL3NtY19jZGMuYzo0ODE6XHR0YXNrbGV0X3NldHVwKFx1MDAyNmNvbm4tXHUwMDNlcnhfdHNrbGV0LCBzbWNkX2NkY19yeF90c2tsZXQpO1xubmV0L3NtYy9zbWNfY2RjLmMtNDgyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQwOAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBTTUMgQ0RDIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdHJhY2UgaG93IHRoZSBDREMgcmVjZWl2ZSBwYXRoIGlzIHNldCB1cCBmb3IgdGhpcyBTTUMgY29tcG9uZW50LiBJIHNlZSB0aGF0IHRoZSBgc21jX2NkY19yeF9oYW5kbGVyYCBmdW5jdGlvbiBpcyB0aGUga2V5IHBsYXllciBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyByZWdpc3RlcmVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBzbWNfY2RjX2luaXRgIGZ1bmN0aW9uLiBUaGUgcmVnaXN0cmF0aW9uIGl0c2VsZiBpcyBsaWtlbHkgZG9uZSB0aHJvdWdoIHRoZSBgc21jX3dyX3J4X2hhbmRsZXJgIGNhbGwsIHdoaWNoIGlzIGEgY29tbW9uIHBhdHRlcm4uIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBBZGRpdGlvbmFsbHksIEkgbm90aWNlIHRoYXQgYHNtY2RfY2RjX3J4X3Rza2xldGAgaXMgYWxzbyBoYW5naW5nIGFyb3VuZCwgcmVnaXN0ZXJlZCBpbiBgc21jZF9jZGNfcnhfaW5pdGAuIFNvLCBpdCBhcHBlYXJzIHRoZXJlJiMzOTtzIGEgdGFza2xldCBpbnZvbHZlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYW5kbGVyIGFuZCB0aGUgdGFza2xldCBjb29yZGluYXRlLCBidXQgZmlyc3QsIEkgd2lsbCBkb3VibGUgY2hlY2sgaG93IHRoZSBgc21jX3dyX3J4X2hhbmRsZXJgIHJlZ2lzdHJhdGlvbiB3b3Jrcy4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcCB0byBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGVudGlyZSByZWNlaXZlIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY193cl9yeF9yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz01MzU9aW50IF9faW5pdCBzbWNfY2RjX2luaXQodm9pZClcbi0tXG5uZXQvc21jL3NtY19jZGMuYy01NDEtXHRcdElOSVRfSExJU1RfTk9ERShcdTAwMjZoYW5kbGVyLVx1MDAzZWxpc3QpO1xubmV0L3NtYy9zbWNfY2RjLmM6NTQyOlx0XHRyYyA9IHNtY193cl9yeF9yZWdpc3Rlcl9oYW5kbGVyKGhhbmRsZXIpO1xubmV0L3NtYy9zbWNfY2RjLmMtNTQzLVx0XHRpZiAocmMpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjM2ND1pbnQgX19pbml0IHNtY19sbGNfaW5pdCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzNzAtXHRcdElOSVRfSExJU1RfTk9ERShcdTAwMjZoYW5kbGVyLVx1MDAzZWxpc3QpO1xubmV0L3NtYy9zbWNfbGxjLmM6MjM3MTpcdFx0cmMgPSBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihoYW5kbGVyKTtcbm5ldC9zbWMvc21jX2xsYy5jLTIzNzItXHRcdGlmIChyYylcbi0tXG5uZXQvc21jL3NtY193ci5jPTM2Nj1pbnQgc21jX3dyX3JlZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IGliX21yICptcilcbi0tXG5uZXQvc21jL3NtY193ci5jLTQwNy1cbm5ldC9zbWMvc21jX3dyLmM6NDA4OmludCBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihzdHJ1Y3Qgc21jX3dyX3J4X2hhbmRsZXIgKmhhbmRsZXIpXG5uZXQvc21jL3NtY193ci5jLTQwOS17XG4tLVxubmV0L3NtYy9zbWNfd3IuaD0xMzA9dm9pZCBzbWNfd3JfdHhfd2FpdF9ub19wZW5kaW5nX3NlbmRzKHN0cnVjdCBzbWNfbGluayAqbGluayk7XG5uZXQvc21jL3NtY193ci5oLTEzMS1cbm5ldC9zbWMvc21jX3dyLmg6MTMyOmludCBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihzdHJ1Y3Qgc21jX3dyX3J4X2hhbmRsZXIgKmhhbmRsZXIpO1xubmV0L3NtYy9zbWNfd3IuaC0xMzMtaW50IHNtY193cl9yeF9wb3N0X2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMzgKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipUcmFjaW5nIHRoZSBDYWxsIFBhdGg6IGBzbWNfd3JfcnhfaGFuZGxlcmAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYHNtY193cl9yeF9oYW5kbGVyYC4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkIGZyb20/IEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBwYXRoLiBVbmRlcnN0YW5kaW5nIHRoZSB1cHN0cmVhbSBjb2RlIHRoYXQgY2FsbHMgaXQgaXMgZ29pbmcgdG8gYmUga2V5IHRvIGZpZ3VyaW5nIG91dCBpdHMgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHR5cGljYWwgdGVjaG5pcXVlcyB0byBsb2NhdGUgYWxsIHRoZSBjYWxsIHNpdGVzIGFuZCBzZWUgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgaXRzIGV4ZWN1dGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IGl0cyBwdXJwb3NlIGFuZCBiZWhhdmlvci4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhbmRsZXItXHUwMDNlaGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19ydGFzLmM9MjE4PWludCBrdm1wcGNfcnRhc19oY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcnRhcy5jLTI2Mi1cdFx0aWYgKGQtXHUwMDNldG9rZW4gPT0gYmUzMl90b19jcHUoYXJncy50b2tlbikpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3J0YXMuYzoyNjM6XHRcdFx0ZC1cdTAwM2VoYW5kbGVyLVx1MDAzZWhhbmRsZXIodmNwdSwgXHUwMDI2YXJncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19ydGFzLmMtMjY0LVx0XHRcdHJjID0gMDtcbi0tXG5kcml2ZXJzL2FjcGkvcHJtdC5jPTI2OD1pbnQgYWNwaV9jYWxsX3BybV9oYW5kbGVyKGd1aWRfdCBoYW5kbGVyX2d1aWQsIHZvaWQgKnBhcmFtX2J1ZmZlcilcbi0tXG5kcml2ZXJzL2FjcGkvcHJtdC5jLTI4My1cbmRyaXZlcnMvYWNwaS9wcm10LmM6Mjg0Olx0c3RhdHVzID0gZWZpX2NhbGxfYWNwaV9wcm1faGFuZGxlcihoYW5kbGVyLVx1MDAzZWhhbmRsZXJfYWRkcixcbmRyaXZlcnMvYWNwaS9wcm10LmMtMjg1LVx0XHRcdFx0XHQgICAodTY0KXBhcmFtX2J1ZmZlcixcbi0tXG5kcml2ZXJzL2FjcGkvcHJtdC5jPTMwMj1zdGF0aWMgYWNwaV9zdGF0dXMgYWNwaV9wbGF0Zm9ybXJ0X3NwYWNlX2hhbmRsZXIodTMyIGZ1bmN0aW9uLFxuLS1cbmRyaXZlcnMvYWNwaS9wcm10LmMtMzMwLVxuZHJpdmVycy9hY3BpL3BybXQuYzozMzE6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyX2FkZHIpIHtcbmRyaXZlcnMvYWNwaS9wcm10LmMtMzMyLVx0XHRcdGJ1ZmZlci1cdTAwM2Vwcm1fc3RhdHVzID0gUFJNX0hBTkRMRVJfRVJST1I7XG4tLVxuZHJpdmVycy9hY3BpL3BybXQuYy0zNDItXG5kcml2ZXJzL2FjcGkvcHJtdC5jOjM0MzpcdFx0c3RhdHVzID0gZWZpX2NhbGxfYWNwaV9wcm1faGFuZGxlcihoYW5kbGVyLVx1MDAzZWhhbmRsZXJfYWRkcixcbmRyaXZlcnMvYWNwaS9wcm10LmMtMzQ0LVx0XHRcdFx0XHRcdCAgIGhhbmRsZXItXHUwMDNlYWNwaV9wYXJhbV9idWZmZXJfYWRkcixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYz0xMzI9c3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgKnJlbW92ZV9pcnFfaGFuZGxlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYy0xNjQtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYzoxNjU6XHRcdGlmIChpaCA9PSBoYW5kbGVyLVx1MDAzZWhhbmRsZXIpIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTE2Ni1cdFx0XHQvKiBGb3VuZCBvdXIgaGFuZGxlci4gUmVtb3ZlIGl0IGZyb20gdGhlIGxpc3QuICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmM9MTk3PXN0YXRpYyB2b2lkIHVucmVnaXN0ZXJfYWxsX2lycV9oYW5kbGVycyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYy0yMTYtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYzoyMTc6XHRcdFx0aWYgKGhhbmRsZXIgPT0gTlVMTCB8fCBoYW5kbGVyLVx1MDAzZWhhbmRsZXIgPT0gTlVMTClcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTIxOC1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTIyOC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jOjIyOTpcdFx0XHRpZiAoaGFuZGxlciA9PSBOVUxMIHx8IGhhbmRsZXItXHUwMDNlaGFuZGxlciA9PSBOVUxMKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMtMjMwLVx0XHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvZGV2aWNlLmM9MjA3MD12b2lkIGliX2Rpc3BhdGNoX2V2ZW50X2NsaWVudHMoc3RydWN0IGliX2V2ZW50ICpldmVudClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9kZXZpY2UuYy0yMDc2LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShoYW5kbGVyLCBcdTAwMjZldmVudC1cdTAwM2VkZXZpY2UtXHUwMDNlZXZlbnRfaGFuZGxlcl9saXN0LCBsaXN0KVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvZGV2aWNlLmM6MjA3NzpcdFx0aGFuZGxlci1cdTAwM2VoYW5kbGVyKGhhbmRsZXIsIGV2ZW50KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2RldmljZS5jLTIwNzgtXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yb2NrY2hpcC9ya2lzcDEvcmtpc3AxLXBhcmFtcy5jPTIyODk9c3RhdGljIHZvaWQgcmtpc3AxX2V4dF9wYXJhbXNfY29uZmlnKHN0cnVjdCBya2lzcDFfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yb2NrY2hpcC9ya2lzcDEvcmtpc3AxLXBhcmFtcy5jLTIzMTgtXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JvY2tjaGlwL3JraXNwMS9ya2lzcDEtcGFyYW1zLmM6MjMxOTpcdFx0YmxvY2tfaGFuZGxlci1cdTAwM2VoYW5kbGVyKHBhcmFtcywgYmxvY2spO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yb2NrY2hpcC9ya2lzcDEvcmtpc3AxLXBhcmFtcy5jLTIzMjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jPTEyNzk9aXdsX21sZF9zY2FuX2J1aWxkX2NtZChzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3NjYW4uYy0xMzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jOjEzMDE6XHRcdGVyciA9IHZlcl9oYW5kbGVyLVx1MDAzZWhhbmRsZXIobWxkLCB2aWYsIHBhcmFtcywgc2Nhbl9zdGF0dXMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmMtMTMwMi1cdFx0XHRcdFx0ICAgdWlkLCBvb2NfcHJpb3JpdHksIGxvd19sYXRlbmN5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmM9MjgyOD1zdGF0aWMgaW50IGl3bF9tdm1fYnVpbGRfc2Nhbl9jbWQoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtMjg2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYzoyODY0Olx0XHRlcnIgPSB2ZXJfaGFuZGxlci1cdTAwM2VoYW5kbGVyKG12bSwgdmlmLCBwYXJhbXMsIHR5cGUsIHVpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtMjg2NS1cdFx0cmV0dXJuIGVyciA/IDogdWlkO1xuLS1cbm5ldC9pcHY0L3R1bm5lbDQuYz05NT1zdGF0aWMgaW50IHR1bm5lbDRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdHVubmVsNC5jLTEwMi1cdGZvcl9lYWNoX3R1bm5lbF9yY3UodHVubmVsNF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3R1bm5lbDQuYzoxMDM6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpXG5uZXQvaXB2NC90dW5uZWw0LmMtMTA0LVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L3R1bm5lbDQuYz0xNDE9c3RhdGljIGludCB0dW5uZWw2NF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90dW5uZWw0LmMtMTQ4LVx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWw2NF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3R1bm5lbDQuYzoxNDk6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpXG5uZXQvaXB2NC90dW5uZWw0LmMtMTUwLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L3R1bm5lbDQuYz0xNjE9c3RhdGljIGludCB0dW5uZWxtcGxzNF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90dW5uZWw0LmMtMTY4LVx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWxtcGxzNF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3R1bm5lbDQuYzoxNjk6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpXG5uZXQvaXB2NC90dW5uZWw0LmMtMTcwLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM9OTY9c3RhdGljIGludCB4ZnJtNF9lc3BfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xMDMtXHRmb3JfZWFjaF9wcm90b2NvbF9yY3UoZXNwNF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM6MTA0Olx0XHRpZiAoKHJldCA9IGhhbmRsZXItXHUwMDNlaGFuZGxlcihza2IpKSAhPSAtRUlOVkFMKVxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xMDUtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jPTEyND1zdGF0aWMgaW50IHhmcm00X2FoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmMtMTMxLVx0Zm9yX2VhY2hfcHJvdG9jb2xfcmN1KGFoNF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM6MTMyOlx0XHRpZiAoKHJldCA9IGhhbmRsZXItXHUwMDNlaGFuZGxlcihza2IpKSAhPSAtRUlOVkFMKVxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xMzMtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jPTE1Mj1zdGF0aWMgaW50IHhmcm00X2lwY29tcF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jLTE1OS1cdGZvcl9lYWNoX3Byb3RvY29sX3JjdShpcGNvbXA0X2hhbmRsZXJzLCBoYW5kbGVyKVxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYzoxNjA6XHRcdGlmICgocmV0ID0gaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jLTE2MS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9pcHY2L3R1bm5lbDYuYz0xMjI9c3RhdGljIGludCB0dW5uZWxtcGxzNl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni90dW5uZWw2LmMtMTI5LVx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWxtcGxzNl9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY2L3R1bm5lbDYuYzoxMzA6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpXG5uZXQvaXB2Ni90dW5uZWw2LmMtMTMxLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY2L3R1bm5lbDYuYz0xNDA9c3RhdGljIGludCB0dW5uZWw2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3R1bm5lbDYuYy0xNDctXHRmb3JfZWFjaF90dW5uZWxfcmN1KHR1bm5lbDZfaGFuZGxlcnMsIGhhbmRsZXIpXG5uZXQvaXB2Ni90dW5uZWw2LmM6MTQ4Olx0XHRpZiAoIWhhbmRsZXItXHUwMDNlaGFuZGxlcihza2IpKVxubmV0L2lwdjYvdHVubmVsNi5jLTE0OS1cdFx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvaXB2Ni90dW5uZWw2LmM9MTg1PXN0YXRpYyBpbnQgdHVubmVsNDZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdHVubmVsNi5jLTE5Mi1cdGZvcl9lYWNoX3R1bm5lbF9yY3UodHVubmVsNDZfaGFuZGxlcnMsIGhhbmRsZXIpXG5uZXQvaXB2Ni90dW5uZWw2LmM6MTkzOlx0XHRpZiAoIWhhbmRsZXItXHUwMDNlaGFuZGxlcihza2IpKVxubmV0L2lwdjYvdHVubmVsNi5jLTE5NC1cdFx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jPTExMT1zdGF0aWMgaW50IHhmcm02X2VzcF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTExOC1cdGZvcl9lYWNoX3Byb3RvY29sX3JjdShlc3A2X2hhbmRsZXJzLCBoYW5kbGVyKVxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYzoxMTk6XHRcdGlmICgocmV0ID0gaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTEyMC1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmM9MTQwPXN0YXRpYyBpbnQgeGZybTZfYWhfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYy0xNDctXHRmb3JfZWFjaF9wcm90b2NvbF9yY3UoYWg2X2hhbmRsZXJzLCBoYW5kbGVyKVxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYzoxNDg6XHRcdGlmICgocmV0ID0gaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTE0OS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmM9MTY5PXN0YXRpYyBpbnQgeGZybTZfaXBjb21wX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmMtMTc2LVx0Zm9yX2VhY2hfcHJvdG9jb2xfcmN1KGlwY29tcDZfaGFuZGxlcnMsIGhhbmRsZXIpXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jOjE3NzpcdFx0aWYgKChyZXQgPSBoYW5kbGVyLVx1MDAzZWhhbmRsZXIoc2tiKSkgIT0gLUVJTlZBTClcbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmMtMTc4LVx0XHRcdHJldHVybiByZXQ7XG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NTM1PWludCBfX2luaXQgc21jX2NkY19pbml0KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNTM5LVxubmV0L3NtYy9zbWNfY2RjLmM6NTQwOlx0Zm9yIChoYW5kbGVyID0gc21jX2NkY19yeF9oYW5kbGVyczsgaGFuZGxlci1cdTAwM2VoYW5kbGVyOyBoYW5kbGVyJiM0MzsmIzQzOykge1xubmV0L3NtYy9zbWNfY2RjLmMtNTQxLVx0XHRJTklUX0hMSVNUX05PREUoXHUwMDI2aGFuZGxlci1cdTAwM2VsaXN0KTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMzY0PWludCBfX2luaXQgc21jX2xsY19pbml0KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjM2OC1cbm5ldC9zbWMvc21jX2xsYy5jOjIzNjk6XHRmb3IgKGhhbmRsZXIgPSBzbWNfbGxjX3J4X2hhbmRsZXJzOyBoYW5kbGVyLVx1MDAzZWhhbmRsZXI7IGhhbmRsZXImIzQzOyYjNDM7KSB7XG5uZXQvc21jL3NtY19sbGMuYy0yMzcwLVx0XHRJTklUX0hMSVNUX05PREUoXHUwMDI2aGFuZGxlci1cdTAwM2VsaXN0KTtcbi0tXG5uZXQvc21jL3NtY193ci5jPTQzMD1zdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X2RlbXVsdGlwbGV4KHN0cnVjdCBpYl93YyAqd2MpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00NDQtXHRcdGlmIChoYW5kbGVyLVx1MDAzZXR5cGUgPT0gd3JfcngtXHUwMDNldHlwZSlcbm5ldC9zbWMvc21jX3dyLmM6NDQ1Olx0XHRcdGhhbmRsZXItXHUwMDNlaGFuZGxlcih3Yywgd3JfcngpO1xubmV0L3NtYy9zbWNfd3IuYy00NDYtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT42bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzkwCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgc21jX3dyX3J4X2RlbXVsdGlwbGV4YCBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIHNob3dzIHRoYXQgYHNtY193cl9yeF9kZW11bHRpcGxleGAgaXMgY2FsbGluZyBgaGFuZGxlci0mZ3Q7aGFuZGxlcih3Yywgd3JfcngpYC4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGhhbmRsZXIgc3RydWN0dXJlLiBJdCYjMzk7cyBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiwgbGlrZWx5IHBhcnQgb2YgYSBicm9hZGVyIGRpc3BhdGNoIG1lY2hhbmlzbS4gVGhlIHBhcmFtZXRlcnMgYHdjYCBhbmQgYHdyX3J4YCBhcmUgdGhlIGludGVyZXN0aW5nIHBpZWNlcyBoZXJlLiBgd2NgIHByb2JhYmx5IHBvaW50cyB0byBzb21lIGtpbmQgb2Ygd29ya2luZyBjb250ZXh0IG9yIGNvbnRyb2wgc3RydWN0dXJlLCBhbmQgYHdyX3J4YCBzZWVtcyB0byBiZSB0aGUgcmVjZWl2ZWQgZGF0YSBpdHNlbGYuIE5vdywgbXkgbWFpbiBxdWVzdGlvbiBpcywgd2hvJiMzOTtzIGFjdHVhbGx5ICp1c2luZyogdGhpcyBgc21jX3dyX3J4X2RlbXVsdGlwbGV4YCBmdW5jdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNhbGxlcnMgdG8gZnVsbHkgZ3JvayB0aGUgaW50ZW50IGFuZCBwdXJwb3NlIG9mIHRoaXMgc3BlY2lmaWMgZGVtdWx0aXBsZXhpbmcgc3RlcC4gSSBuZWVkIHRoZSBiaWcgcGljdHVyZSB0byBoYXZlIGl0IGFsbCBtYWtlIHNlbnNlLiBUaW1lIHRvIGludmVzdGlnYXRlIHRoZSBjYWxsIGdyYXBoIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfd3JfcnhfZGVtdWx0aXBsZXgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfd3IuYz00MDg9aW50IHNtY193cl9yeF9yZWdpc3Rlcl9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfcnhfaGFuZGxlciAqaGFuZGxlcilcbi0tXG5uZXQvc21jL3NtY193ci5jLTQyOS0gKi9cbm5ldC9zbWMvc21jX3dyLmM6NDMwOnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfd3JfcnhfZGVtdWx0aXBsZXgoc3RydWN0IGliX3djICp3Yylcbm5ldC9zbWMvc21jX3dyLmMtNDMxLXtcbi0tXG5uZXQvc21jL3NtY193ci5jPTQ0OT1zdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhzdHJ1Y3QgaWJfd2Mgd2NbXSwgaW50IG51bSlcbi0tXG5uZXQvc21jL3NtY193ci5jLTQ1OC1cdFx0XHRsaW5rLVx1MDAzZXdyX3J4X3RzdGFtcCA9IGppZmZpZXM7XG5uZXQvc21jL3NtY193ci5jOjQ1OTpcdFx0XHRzbWNfd3JfcnhfZGVtdWx0aXBsZXgoXHUwMDI2d2NbaV0pO1xubmV0L3NtYy9zbWNfd3IuYy00NjAtXHRcdFx0c21jX3dyX3J4X3Bvc3QobGluayk7IC8qIHJlZmlsbCBXUiBSWCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDM3NQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIEZsb3c6IGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYCoqCgpBbHJpZ2h0LCBzbyBJIHNlZSBgc21jX3dyX3J4X3Byb2Nlc3NfY3Flc2AgaXMgY2FsbGluZyBgc21jX3dyX3J4X2RlbXVsdGlwbGV4YC4gTm90aGluZyBpbmhlcmVudGx5IHVudXN1YWwgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIFRoaXMgdXN1YWxseSBtZWFucyB0cmFjaW5nIHRoZSBkYXRhIGZsb3cuIFJpZ2h0IG5vdywgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCB1bmRlcnN0YW5kIHRoZSB1cHN0cmVhbSBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hvIGlzIGNhbGxpbmcgKnRoaXMqIGZ1bmN0aW9uLCBgc21jX3dyX3J4X3Byb2Nlc3NfY3Flc2AuIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGxhcmdlciBwaWN0dXJlIG9mIGRhdGEgcHJvY2Vzc2luZyBvbiB0aGlzIHNwZWNpZmljIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY193ci5jPTQzMD1zdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X2RlbXVsdGlwbGV4KHN0cnVjdCBpYl93YyAqd2MpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00NDgtXG5uZXQvc21jL3NtY193ci5jOjQ0OTpzdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhzdHJ1Y3QgaWJfd2Mgd2NbXSwgaW50IG51bSlcbm5ldC9zbWMvc21jX3dyLmMtNDUwLXtcbi0tXG5uZXQvc21jL3NtY193ci5jPTQ3OT1zdGF0aWMgdm9pZCBzbWNfd3JfcnhfdGFza2xldF9mbihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00OTctXHRcdFx0YnJlYWs7XG5uZXQvc21jL3NtY193ci5jOjQ5ODpcdFx0c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhcdTAwMjZ3Y1swXSwgcmMpO1xubmV0L3NtYy9zbWNfd3IuYy00OTktXHR9IHdoaWxlIChyYyBcdTAwM2UgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODYyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYHNtY193cl9yeGAgVGFza2xldCoqCgpBbHJpZ2h0LCBzbyB0aGUgYHNtY193cl9yeF90YXNrbGV0X2ZuYCBmdW5jdGlvbiBpcyBjYWxsaW5nIGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBpbnRlcmFjdGlvbiwgbWFrZXMgc2Vuc2UuIE5vdyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgZW50aXJlIHByb2Nlc3MuIFRvIGVmZmVjdGl2ZWx5IHRyb3VibGVzaG9vdCBvciBvcHRpbWl6ZSB0aGlzIHNlY3Rpb24sIHRoZSBjcnVjaWFsIHRoaW5nIHRvIGludmVzdGlnYXRlIGlzLCB3aG8gaW52b2tlcyBgc21jX3dyX3J4X3Rhc2tsZXRfZm5gPyBXaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludD8gSXMgaXQgYSBoYXJkd2FyZSBpbnRlcnJ1cHQsIGEgdGltZXIsIG9yIGFub3RoZXIgc29mdHdhcmUgY29tcG9uZW50PyBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIGlzIGtleSB0byB0cmFjaW5nIHRoZSBkYXRhIHBhdGggYW5kIHBpbnBvaW50aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQgY2FsbCBncmFwaCBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY193cl9yeF90YXNrbGV0X2ZuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX3dyLmM9NDQ5PXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzKHN0cnVjdCBpYl93YyB3Y1tdLCBpbnQgbnVtKVxuLS1cbm5ldC9zbWMvc21jX3dyLmMtNDc4LVxubmV0L3NtYy9zbWNfd3IuYzo0Nzk6c3RhdGljIHZvaWQgc21jX3dyX3J4X3Rhc2tsZXRfZm4oc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxubmV0L3NtYy9zbWNfd3IuYy00ODAte1xuLS1cbm5ldC9zbWMvc21jX3dyLmM9ODM1PXZvaWQgc21jX3dyX2FkZF9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxubmV0L3NtYy9zbWNfd3IuYy04MzYte1xubmV0L3NtYy9zbWNfd3IuYzo4Mzc6XHR0YXNrbGV0X3NldHVwKFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlY3ZfdGFza2xldCwgc21jX3dyX3J4X3Rhc2tsZXRfZm4pO1xubmV0L3NtYy9zbWNfd3IuYy04MzgtXHR0YXNrbGV0X3NldHVwKFx1MDAyNnNtY2liZGV2LVx1MDAzZXNlbmRfdGFza2xldCwgc21jX3dyX3R4X3Rhc2tsZXRfZm4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM4NgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqVGFza2xldCBTY3J1dGlueSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBtaW5kIGlzIGltbWVkaWF0ZWx5IGRyYXduIHRvIHRoaXMgYHNtY193cl9yeF90YXNrbGV0X2ZuYC4gVGhlIGZ1bmN0aW9uIG5hbWUgc2NyZWFtcyAmIzM0O3Rhc2tsZXQmIzM0OyBhdCBtZSwgYW5kIHRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoYXQgaXQgYXBwZWFycyB0byBiZS4gTXkgYnJhaW4mIzM5O3MgYWxyZWFkeSBtYWtpbmcgYXNzb2NpYXRpb25zIOKAkyBhc3luY2hyb25vdXMgcHJvY2Vzc2luZywgZGVmZXJyaW5nIHdvcmssIGxpa2VseSBkZWFsaW5nIHdpdGggaW50ZXJydXB0IGNvbnRleHQgaXNzdWVzLCB0aGF0IGtpbmQgb2YgdGhpbmcuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgY2hhcmFjdGVyaXN0aWNzIOKAkyBwZXJoYXBzIGl0JiMzOTtzIGEgYm90dG9tIGhhbGYgaGFuZGxlciBmb3Igc29tZSBraW5kIG9mIFJYIHBhdGggcmVsYXRlZCB0byBhbiBTTUMgb3IgQ0RDIGludGVyZmFjZSwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucy4KCk5vdywgbXkgY3VyaW9zaXR5IGlzIHBpcXVlZC4gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIHdvbmRlciB3aGF0IHRoZSBoZWxsIGlzIHRoZSByb2xlIG9mIGBzbWNkX2NkY19yeF90c2tsZXRgIGluIHRoaXMgYXJjaGl0ZWN0dXJlLiBXaHkgaXMgdGhpcyBmdW5jdGlvbiBub3QgbmFtZWQgYHNtY2Rfd3JfcnhfdGFza2xldF9mbmAsIGxpa2UgdGhlIG90aGVyIHRhc2tsZXQ/IEFyZSB0aGV5IHJlbGF0ZWQ/IEFyZSB0aGVyZSBkaWZmZXJlbnQgZGF0YSBwYXRocyBpbnZvbHZlZD8gSXMgdGhpcyBhIHN0YW5kYXJkIG5hbWluZyBjb252ZW50aW9uIHRvIGluZGljYXRlIGFuIGFzeW5jaHJvbm91cyB0cmFuc2Zlcj8gQXJlIHRoZXNlIHR3byByZWxhdGVkIG9yIGlzIGBzbWNkYCBzb21ldGhpbmcgdG90YWxseSBkaWZmZXJlbnQ/IEkgbmVlZCB0byBhbmFseXplIGl0cyBsb2NhdGlvbiwgYW5kIHRoZSB1c2UgY2FzZXMsIHRvIGRldGVybWluZSBpZiB0aGVzZSBhcmUgcmVsYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jZF9jZGNfcnhfdHNrbGV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTQ0ND1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbi0tXG5uZXQvc21jL3NtY19jZGMuYy00NTgtICovXG5uZXQvc21jL3NtY19jZGMuYzo0NTk6c3RhdGljIHZvaWQgc21jZF9jZGNfcnhfdHNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbm5ldC9zbWMvc21jX2NkYy5jLTQ2MC17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NDc5PXZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jZGMuYy00ODAte1xubmV0L3NtYy9zbWNfY2RjLmM6NDgxOlx0dGFza2xldF9zZXR1cChcdTAwMjZjb25uLVx1MDAzZXJ4X3Rza2xldCwgc21jZF9jZGNfcnhfdHNrbGV0KTtcbm5ldC9zbWMvc21jX2NkYy5jLTQ4Mi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTUwCgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIENEQyBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgU01DIENEQyBjb2RlLCBhbmQgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgdGFza2xldCBoZXJlLiBSaWdodCwgZ290IGl0LiBOb3csIHdoYXQgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzPyBMZXQmIzM5O3Mgc2VlLi4uIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAsIGFuZCBgc21jX2NkY19hYm9ydF9jb25uYC4gR290IHRob3NlIGRvd24uIAoKTm93LCB3YWl0IGEgc2Vjb25kLCB0aGUgY29kaW5nIGd1aWRlbGluZXMgYXJlIHRlbGxpbmcgdXMgc29tZXRoaW5nIGludGVyZXN0aW5nOiBhdm9pZCB0aG9zZSBwZXNreSBpbnRlcm5hbCwgaW5saW5lZCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBpZiBwb3NzaWJsZSwgYW5kIHN0aWNrIHRvIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpZiB3ZSBjYW4uIFRob3NlIGludGVybmFsIGhlbHBlcnMgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcywgd2hpY2ggY29tcGxpY2F0ZXMgZGVidWdnaW5nIGFuZCBhbmFseXNpcy4gU28sIHRoYXQmIzM5O3Mgd2hhdCB3ZSYjMzk7bGwgZG8uIFdlIHdpbGwgaHVudCB0aHJvdWdoIGBuZXQvc21jL3NtY19jZGMuY2AgYW5kIHRyeSB0byBpZGVudGlmeSB0aG9zZSBwcmVmZXJhYmxlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIHRoZSB3YXkgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIHNtY19jZGNfW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTI2PXN0YXRpYyB2b2lkIHNtY19jZGNfdHhfaGFuZGxlcihzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqcG5kX3NuZCxcbi0tXG5uZXQvc21jL3NtY19jZGMuYy03Mi1cbm5ldC9zbWMvc21jX2NkYy5jOjczOmludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxubmV0L3NtYy9zbWNfY2RjLmMtNzQtXHRcdFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9OTQ9c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfYWRkX3BlbmRpbmdfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMTExLVxubmV0L3NtYy9zbWNfY2RjLmM6MTEyOmludCBzbWNfY2RjX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbm5ldC9zbWMvc21jX2NkYy5jLTExMy1cdFx0ICAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqd3JfYnVmLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTE3ND1zdGF0aWMgaW50IHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMjA4LVxubmV0L3NtYy9zbWNfY2RjLmM6MjA5OmludCBzbWNfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jZGMuYy0yMTAte1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTIyNy1cbm5ldC9zbWMvc21jX2NkYy5jOjIyODp2b2lkIHNtY19jZGNfd2FpdF9wZW5kX3R4X3dyKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTIyOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Nzg4CgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbmV0L3NtYy9zbWNfY2RjLmNgIC0gSHVudGluZyBmb3IgRHluYW1pYyBCZWhhdmlvcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIGBuZXQvc21jL3NtY19jZGMuY2AuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBhbmQgdGhlIENEQyAoQ29udHJvbCBEYXRhIENoYW5uZWwpIHNwZWNpZmljYWxseSwgYW5kIEkgd2FudCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGR5bmFtaWMgYXNwZWN0cyBvZiB0aGlzIGNvZGUuIFN0YXRpYyBmdW5jdGlvbnMgYXJlLCBieSB0aGVpciBuYXR1cmUsIHByZWRpY3RhYmxlLiBJJiMzOTttIGFmdGVyIHRoZSBwYXJ0cyB0aGF0ICpjaGFuZ2UqLCB0aGF0IHJlYWN0IHRvIGlucHV0LCB0aGF0IG9yY2hlc3RyYXRlIHByb2Nlc3NlcywgdGhlIG1lYXQgYW5kIHBvdGF0b2VzIG9mIHRoZSBkYXRhIGZsb3cuIEZpbmRpbmcgdGhlc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMgaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIGJpdHMgbGl2ZSAtIHdoZXJlIHRoZSByZWFsIG9wdGltaXphdGlvbnMgY2FuIGJlIGZvdW5kLCB3aGVyZSB0aGUgZWRnZSBjYXNlcyBsdXJrLCBhbmQgd2hlcmUgSSBjYW4gZ2FpbiBkZWVwZXIgdW5kZXJzdGFuZGluZyB0byBpbXByb3ZlIHRoZSBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCBteSAmIzM0O2dvbGRlbiBudWdnZXRzLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIHNtY2RfY2RjX1thLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz0yMjg9dm9pZCBzbWNfY2RjX3dhaXRfcGVuZF90eF93cihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMjM2LSAqL1xubmV0L3NtYy9zbWNfY2RjLmM6MjM3OmludCBzbWNkX2NkY19tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jZGMuYy0yMzgte1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTQ1OT1zdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ3OC0gKi9cbm5ldC9zbWMvc21jX2NkYy5jOjQ3OTp2b2lkIHNtY2RfY2RjX3J4X2luaXQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY2RjLmMtNDgwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczMDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbiBmb3IgU01DIFJYIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIFNNQyBSWCBwYXRoIGFuYWx5c2lzLiBJbml0aWFsbHksIEkgbm90aWNlZCB0aGF0IGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHdyaW5rbGUgc2luY2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gb3RoZXIgZnVuY3Rpb25zIGFsc28gd2l0aGluIHRoZSBgc3RhdGljYCBjb250ZXh0LCBuYW1lbHkgYHNtY19jZGNfbXNnX3JlY3ZgIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGJ5IGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gR2l2ZW4gdGhleSBhcmUgYWxsIGBzdGF0aWNgLCBpZGVudGlmeWluZyBhcHByb3ByaWF0ZSBmb2N1cyBzeW1ib2xzIHJlcXVpcmVzIG1vcmUgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIG1pZ2h0IG5vdCBiZSBpbmxpbmVkIGJlY2F1c2UgaXQgc2VlbXMgcXVpdGUgc2l6YWJsZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVG8gY2hlY2sgdGhhdCwgSSYjMzk7bGwgbGlzdCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBzaW5jZSB2YWxpZGF0aW9uIGlzIGEgbmF0dXJhbCBjb21wYW5pb24uIEl0IHNlZW1zIGxpa2UgYSB2YWxpZCBmdW5jdGlvbiBpbiBpdHMgb3duIHJpZ2h0LCBzbyBpdCYjMzk7cyBwcm9iYWJseSB3b3J0aCBpbmNsdWRpbmcgYW5kIGFuYWx5emluZyBtb3JlIGNsb3NlbHkuCgpIb3dldmVyLCBJIHRoaW5rIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgaXRzZWxmIGlzIGEgcmVhbGx5IHN0cm9uZyBjYW5kaWRhdGUsIHNvIEkmIzM5O20gZ29pbmcgdG8gaW5jbHVkZSB0aGF0IG9uZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IGBzbWNfY2RjX3J4X2hhbmRsZXJgIGFuZCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhcmUgYWxzbyBvbiB0aGUgbGlzdC4KCk5vdywgbGV0IG1lIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIFJYIHBhdGggdGhhdCBJJiMzOTttIG92ZXJsb29raW5nLiBBaCwgaGVyZSYjMzk7cyBgc21jX3J4X3JlY3Ztc2dgLiBUaGF0JiMzOTtzIG5vbi1zdGF0aWMsIGJ1dCBpdCBzZWVtcyBsaWtlIGEgaG90LXBhdGggZnVuY3Rpb24sIGEgZ2VuZXJpYyBvbmUgYXQgdGhhdC4gJiMzNDtBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucywmIzM0OyB0aGUgY29tbWVudCByZWFkcy4gU28gSSYjMzk7bGwgcHJvYmFibHkgc3RheSBhd2F5IGZyb20gdGhhdCwgZ2l2ZW4gdGhhdCBpdCYjMzk7cyB0aGUgU01DIGVxdWl2YWxlbnQgb2YgdGhlIGByZWN2bXNnYCBzeXNjYWxsLiBUaGUgYHNtY19jZGNfcnhfaGFuZGxlcmAgYW5kIGBzbWNkX2NkY19yeF90c2tsZXRgIGZ1bmN0aW9ucyBhcmUgYmV0dGVyIGNhbmRpZGF0ZXMsIGZvY3VzaW5nIG1vcmUgb24gdGhlIHNwZWNpZmljIFNNQy1DREMgbG9naWMuCgpPbmUgbW9yZSBjb25zaWRlcmF0aW9uOiBgc21jX2NkY19hYm9ydF9jb25uYC4gSXQmIzM5O3MgYHN0YXRpY2AsIGJ1dCBpdCYjMzk7cyBjbGVhcmx5IGEgY3JpdGljYWwgcGFydCBvZiB0aGUgcGF0Y2gsIHNvIGl0JiMzOTtzIGltcG9ydGFudCB0aGF0IGl0JiMzOTtzIGluY2x1ZGVkIGFzIHdlbGwuCgpUaGVyZWZvcmUsIGZvciB0aGUgbGlzdCBvZiBGb2N1c1N5bWJvbHMgSSYjMzk7bSBnb2luZyB3aXRoOiAgYHNtY19jZGNfYWJvcnRfY29ubmAsIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLgoKSnVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cywgbGV0IG1lIGRvdWJsZSBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIEl0IHNheXMgYFNNQ2AgZGVwZW5kcyBvbiBgSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYC4gV2FpdCwgYERJQlNgPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBgRElCU2AgaW4gYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gQnV0IGlzIHRoYXQgZXZlbiB1cHN0cmVhbT8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYG5ldC9zbWMvS2NvbmZpZ2AgZmlsZSBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5uZXQvc21jL0tjb25maWctNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1MzQKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA5MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBDb25maWd1cmF0aW9uIGZvciBTTUMgQ0RDIFByb3RvY29sIFZpb2xhdGlvbiBIYW5kbGluZyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzIHJlbGF0ZWQgdG8gaGFuZGxpbmcgU01DIENEQyBwcm90b2NvbCB2aW9sYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZSBmdXp6ZXIgY29uZmlnIHJlYWxseSBkZXBlbmRzIG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLiBXYWl0LCB3aGF0JiMzOTtzIGBESUJTYD8gTGV0IG1lIGxvb2sgdGhhdCB1cCByZWFsIHF1aWNrLiBPa2F5LCBnb3QgaXQuIExvb2tzIGxpa2Ugc29tZXRoaW5nIHJlbGV2YW50IHRvIHRoaXMsIGFuZCBwcm9iYWJseSBhZGRlZCByZWNlbnRseSwgc28gSSYjMzk7bGwgaW5jbHVkZSBpdC4gV2hpbGUgYElORVRgIGlzIGdlbmVyYWxseSBlbmFibGVkLCBJJiMzOTtsbCBleHBsaWNpdGx5IGxpc3QgdGhlIG90aGVycy4gU28sIG15IGluaXRpYWwgYEVuYWJsZUNvbmZpZ3NgIGlzIGBbJiMzNDtTTUMmIzM0OywgJiMzNDtJTkZJTklCQU5EJiMzNDssICYjMzQ7RElCUyYjMzQ7XWAuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBmb3IgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIGBTTUNfRElBR2A/IE5haC4gYFNNQ19IU19DVFJMX0JQRmA/IERvZXNuJiMzOTt0IHNlZW0gcmVsYXRlZC4KCk9rYXksIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCBzZWVtcyB0aGF0IHRoaXMgcGF0Y2ggZGVmaW5lcyBhIG5ldyBmdW5jdGlvbiwgYHNtY19jZGNfYWJvcnRfY29ubmAuIFRoaXMgZnVuY3Rpb24gZXNzZW50aWFsbHkgZHJvcHMgdGhlIGNvbm5lY3Rpb24gdXBvbiBwcm90b2NvbCB2aW9sYXRpb24uIExvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSwgSSBzZWUgdGhhdCBib3RoIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgbm93IGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbiB0aGV5IGRldGVjdCBlaXRoZXIgYW4gaW52YWxpZCBzZXF1ZW5jZSBudW1iZXIgb3IgYSBwcm9kdWN0aW9uIGRpZmZlcmVuY2UuCgpUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBuZXcgd2F5IHRvIGhhbmRsZSBhIHNwZWNpZmljIGVycm9yIGNvbmRpdGlvbi4gU2luY2UgdGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXR3b3JrLCBmdXp6aW5nIHRoaXMgaXMgY3J1Y2lhbCB0byBndWFyYW50ZWUgY29ycmVjdCBiZWhhdmlvciB3aXRoIHBvdGVudGlhbGx5IG1hbGZvcm1lZCBuZXR3b3JrIHRyYWZmaWMuCgpUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZSBhcmUgZGVmaW5pdGVseSBgc21jX2NkY19hYm9ydF9jb25uYCwgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCwgYW5kIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAuIExldCYjMzk7cyBjb25maXJtIHRoYXQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBpcyBub3QgaW5saW5lZC4gSXQgc2VlbXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgcHJvYmFibHkgaXNuJiMzOTt0IGlubGluZWQuIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIGlzIG5vdCBpbmxpbmUgZWl0aGVyLiBgc21jX2NkY19tc2dfcmVjdmAgaXMgYWxzbyBub3QgaW5saW5lLiBUaGVyZWZvcmUsIHRoZXNlIGFyZSBhbGwgd29ydGggdGFyZ2V0aW5nLiBJJiMzOTtsbCBhZGQgYHNtY19jZGNfbXNnX3JlY3ZgIHRvby4KClNvIHRoZSBmaW5hbCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZToKCmBbJiMzNDtTTUMmIzM0OywgJiMzNDtJTkZJTklCQU5EJiMzNDssICYjMzQ7RElCUyYjMzQ7XWAKClRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uLCBgc21jX2NkY19hYm9ydF9jb25uYCwgdG8gaGFuZGxlIFNNQyBDREMgcHJvdG9jb2wgdmlvbGF0aW9ucy4gSXQgbW9kaWZpZXMgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCBhbmQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCB0byBjYWxsIHRoaXMgbmV3IGZ1bmN0aW9uIHdoZW4gaW52YWxpZCBzZXF1ZW5jZSBudW1iZXJzIG9yIHByb2R1Y3Rpb24gZGlmZmVyZW5jZXMgYXJlIGRldGVjdGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBTTUMgbmV0d29yayBwcm90b2NvbCByZWNlaXZlIHBhdGggYW5kIHJlYWNoYWJsZSBmcm9tIG5ldHdvcmsgaW5wdXRzLCBzbyB0aGVzZSBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGhhbmRsaW5nIG9mIG1hbGZvcm1lZCBwYWNrZXRzLiBOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBESUJTYCBpcyBhIHJlYWwgY29uZmlnLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBESUJTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xuZHJpdmVycy9kaWJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE5OAoJCQkJCQkJb3V0cHV0OiAyMDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnk6CgoqKlRoZSBJbW1lZGlhdGUgRGVjaXNpb24qKgoKWWVzLCB0aGF0JiMzOTtzIGFic29sdXRlbHkgY29ycmVjdC4gVGhlIGNvbmNsdXNpb24gaXMgdmFsaWRhdGVkLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBwcm9jZWVkIHdpdGhvdXQgZGVsYXkuIE15IG5leHQgYWN0aW9uIGlzIGNsZWFyOyBJIHdpbGwgaW5pdGlhdGUgdGhlIGBzZXQtcmVzdWx0c2AgZnVuY3Rpb24gaW1tZWRpYXRlbHkuIFRoaXMgaXMgdGhlIGRlY2lzaXZlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX2Fib3J0X2Nvbm4mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfdmFsaWRhdGUmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3NtY2RfY2RjX3J4X3Rza2xldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX2Fib3J0X2Nvbm4mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfdmFsaWRhdGUmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3NtY2RfY2RjX3J4X3Rza2xldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo1MDo0Ny42MTA1NTU4NDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTY4MDkwNzU2NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5GSU5JQkFORFwiLFxuICAgIFwiRElCU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19jZGNfYWJvcnRfY29ublwiLFxuICAgIFwic21jX2NkY19tc2dfcmVjdl9hY3Rpb25cIixcbiAgICBcInNtY19jZGNfbXNnX3ZhbGlkYXRlXCIsXG4gICAgXCJzbWNfY2RjX3J4X2hhbmRsZXJcIixcbiAgICBcInNtY2RfY2RjX3J4X3Rza2xldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYHNtY19jZGNfYWJvcnRfY29ubmAgdG8gaGFuZGxlIFNNQyBDREMgcHJvdG9jb2wgdmlvbGF0aW9ucyBieSBkcm9wcGluZyB0aGUgY29ubmVjdGlvbi4gSXQgbW9kaWZpZXMgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCBhbmQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCB0byBjYWxsIHRoaXMgbmV3IGZ1bmN0aW9uIHdoZW4gaW52YWxpZCBzZXF1ZW5jZSBudW1iZXJzIG9yIHByb2R1Y3Rpb24gZGlmZmVyZW5jZXMgYXJlIGRldGVjdGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBTTUMgbmV0d29yayBwcm90b2NvbCByZWNlaXZlIHBhdGgsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSBuZXR3b3JrIGlucHV0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBoYW5kbGluZyBvZiBtYWxmb3JtZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTA6NDcuNjEwNTYwODUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgxNDEwNzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjNiNjkxMTc0YzkwMjQ5NGE4ZjNmYzQ3MTU4M2ZkYjljNWQyZTZiMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjUwOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NkYy5jIGIvbmV0L3NtYy9zbWNfY2RjLmNcXG5pbmRleCAzMmQ2ZDAzZGYzMjE0Li5kOGY3NDdiYmM2ZjY5IDEwMDY0NFxcbi0tLSBhL25ldC9zbWMvc21jX2NkYy5jXFxuKysrIGIvbmV0L3NtYy9zbWNfY2RjLmNcXG5AQCAtMzA1LDYgKzMwNSwyNyBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX2hhbmRsZV91cmdfZGF0YV9hcnJpdmFsKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbiBcXHRza19zZW5kX3NpZ3VyZyhcXHUwMDI2c21jLVxcdTAwM2Vzayk7XFxuIH1cXG4gXFxuKy8qIERyb3AgYSBjb25uZWN0aW9uIHdob3NlIHBlZXIgdmlvbGF0ZWQgdGhlIENEQyBwcm90b2NvbC4gIEBsaW5rIGlzIHRoZSBsaW5rXFxuKyAqIHRoZSBvZmZlbmRpbmcgbWVzc2FnZSBhcnJpdmVkIG9uLCBvciBOVUxMIHdoZW4gaXQgaXMgbm90IGtub3duIHRvIHRoZSBjYWxsZXJcXG4rICogKFNNQy1ELCBhbmQgdGhlIHNoYXJlZCByZWNlaXZlIHBhdGgpLiAgV2hlbiBAbGluayBpcyBOVUxMIGNvbm4tXFx1MDAzZWxuayBpcyBsZWZ0XFxuKyAqIHVuY2hhbmdlZDogZm9yIFNNQy1SIGl0IGFscmVhZHkgcG9pbnRzIHRvIHRoZSByaWdodCBRUDsgZm9yIFNNQy1EIHRoZXJlIGlzXFxuKyAqIG5vIHBlci1saW5rIFFQIHRvIGFib3J0IG9uLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgc21jX2NkY19hYm9ydF9jb25uKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxuK3tcXG4rXFx0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gXFx1MDAyNnNtYy1cXHUwMDNlY29ubjtcXG4rXFxuK1xcdGNvbm4tXFx1MDAzZW91dF9vZl9zeW5jID0gMTsgIC8qIHByZXZlbnQgYW55IGZ1cnRoZXIgcmVjZWl2ZXMgKi9cXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjb25uLVxcdTAwM2VzZW5kX2xvY2spO1xcbitcXHRjb25uLVxcdTAwM2Vsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTtcXG4rXFx0aWYgKGxpbmspXFxuK1xcdFxcdGNvbm4tXFx1MDAzZWxuayA9IGxpbms7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjb25uLVxcdTAwM2VzZW5kX2xvY2spO1xcbitcXHRzb2NrX2hvbGQoXFx1MDAyNnNtYy1cXHUwMDNlc2spOyAvKiBzb2NrX3B1dCBpbiBhYm9ydF93b3JrICovXFxuK1xcdGlmICghcXVldWVfd29yayhzbWNfY2xvc2Vfd3EsIFxcdTAwMjZjb25uLVxcdTAwM2VhYm9ydF93b3JrKSlcXG4rXFx0XFx0c29ja19wdXQoXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxuIHtcXG5AQCAtMzE0LDE3ICszMzUsOCBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXFxuIFxcbiBcXHQvKiBjaGVjayB0aGF0IHNlcW51bSB3YXMgc2VlbiBiZWZvcmUgKi9cXG4gXFx0ZGlmZiA9IGNvbm4tXFx1MDAzZWxvY2FsX3J4X2N0cmwuc2Vxbm8gLSByZWN2X3NlcTtcXG4tXFx0aWYgKGRpZmYgXFx1MDAzYyAwKSB7IC8qIGRpZmYgbGFyZ2VyIHRoYW4gMHg3ZmZmICovXFxuLVxcdFxcdC8qIGRyb3AgY29ubmVjdGlvbiAqL1xcbi1cXHRcXHRjb25uLVxcdTAwM2VvdXRfb2Zfc3luYyA9IDE7XFx0LyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqL1xcbi1cXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmNvbm4tXFx1MDAzZXNlbmRfbG9jayk7XFxuLVxcdFxcdGNvbm4tXFx1MDAzZWxvY2FsX3R4X2N0cmwuY29ubl9zdGF0ZV9mbGFncy5wZWVyX2Nvbm5fYWJvcnQgPSAxO1xcbi1cXHRcXHRjb25uLVxcdTAwM2VsbmsgPSBsaW5rO1xcbi1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y29ubi1cXHUwMDNlc2VuZF9sb2NrKTtcXG4tXFx0XFx0c29ja19ob2xkKFxcdTAwMjZzbWMtXFx1MDAzZXNrKTsgLyogc29ja19wdXQgaW4gYWJvcnRfd29yayAqL1xcbi1cXHRcXHRpZiAoIXF1ZXVlX3dvcmsoc21jX2Nsb3NlX3dxLCBcXHUwMDI2Y29ubi1cXHUwMDNlYWJvcnRfd29yaykpXFxuLVxcdFxcdFxcdHNvY2tfcHV0KFxcdTAwMjZzbWMtXFx1MDAzZXNrKTtcXG4tXFx0fVxcbitcXHRpZiAoZGlmZiBcXHUwMDNjIDApIC8qIGRpZmYgbGFyZ2VyIHRoYW4gMHg3ZmZmICovXFxuK1xcdFxcdHNtY19jZGNfYWJvcnRfY29ubihzbWMsIGxpbmspOyAgLyogZHJvcCBjb25uZWN0aW9uICovXFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbkBAIC0zNzYsNiArMzg4LDExIEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbiBcXHRkaWZmX3Byb2QgPSBzbWNfY3Vyc19kaWZmKGNvbm4tXFx1MDAzZXJtYl9kZXNjLVxcdTAwM2VsZW4sIFxcdTAwMjZwcm9kX29sZCxcXG4gXFx0XFx0XFx0XFx0ICBcXHUwMDI2Y29ubi1cXHUwMDNlbG9jYWxfcnhfY3RybC5wcm9kKTtcXG4gXFx0aWYgKGRpZmZfcHJvZCkge1xcbitcXHRcXHRpZiAoZGlmZl9wcm9kIFxcdTAwM2UgY29ubi1cXHUwMDNlcm1iX2Rlc2MtXFx1MDAzZWxlbiAtXFxuK1xcdFxcdFxcdFxcdGF0b21pY19yZWFkKFxcdTAwMjZjb25uLVxcdTAwM2VieXRlc190b19yY3YpKSB7XFxuK1xcdFxcdFxcdHNtY19jZGNfYWJvcnRfY29ubihzbWMsIE5VTEwpO1xcbitcXHRcXHRcXHRyZXR1cm47XFxuK1xcdFxcdH1cXG4gXFx0XFx0aWYgKGNvbm4tXFx1MDAzZWxvY2FsX3J4X2N0cmwucHJvZF9mbGFncy51cmdfZGF0YV9wcmVzZW50KVxcbiBcXHRcXHRcXHRzbWNfY2RjX2hhbmRsZV91cmdfZGF0YV9hcnJpdmFsKHNtYywgXFx1MDAyNmRpZmZfcHJvZCk7XFxuIFxcdFxcdC8qIGJ5dGVzX3RvX3JjdiBpcyBkZWNyZWFzZWQgaW4gc21jX3JlY3Ztc2cgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTA6NDguODkyNjM5ODk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjk2NjgwODY1ODI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX2Fib3J0X2Nvbm5cIixcbiAgICBcInNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uXCIsXG4gICAgXCJzbWNfY2RjX21zZ192YWxpZGF0ZVwiLFxuICAgIFwic21jX2NkY19yeF9oYW5kbGVyXCIsXG4gICAgXCJzbWNkX2NkY19yeF90c2tsZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYzYjY5MTE3NGM5MDI0OTRhOGYzZmM0NzE1ODNmZGI5YzVkMmU2YjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjUwOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmMgYi9uZXQvc21jL3NtY19jZGMuY1xuaW5kZXggMzJkNmQwM2RmMzIxNC4uZDhmNzQ3YmJjNmY2OSAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX2NkYy5jXG4rKysgYi9uZXQvc21jL3NtY19jZGMuY1xuQEAgLTMwNSw2ICszMDUsMjcgQEAgc3RhdGljIHZvaWQgc21jX2NkY19oYW5kbGVfdXJnX2RhdGFfYXJyaXZhbChzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbiBcdHNrX3NlbmRfc2lndXJnKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG4gfVxuIFxuKy8qIERyb3AgYSBjb25uZWN0aW9uIHdob3NlIHBlZXIgdmlvbGF0ZWQgdGhlIENEQyBwcm90b2NvbC4gIEBsaW5rIGlzIHRoZSBsaW5rXG4rICogdGhlIG9mZmVuZGluZyBtZXNzYWdlIGFycml2ZWQgb24sIG9yIE5VTEwgd2hlbiBpdCBpcyBub3Qga25vd24gdG8gdGhlIGNhbGxlclxuKyAqIChTTUMtRCwgYW5kIHRoZSBzaGFyZWQgcmVjZWl2ZSBwYXRoKS4gIFdoZW4gQGxpbmsgaXMgTlVMTCBjb25uLVx1MDAzZWxuayBpcyBsZWZ0XG4rICogdW5jaGFuZ2VkOiBmb3IgU01DLVIgaXQgYWxyZWFkeSBwb2ludHMgdG8gdGhlIHJpZ2h0IFFQOyBmb3IgU01DLUQgdGhlcmUgaXNcbisgKiBubyBwZXItbGluayBRUCB0byBhYm9ydCBvbi5cbisgKi9cbitzdGF0aWMgdm9pZCBzbWNfY2RjX2Fib3J0X2Nvbm4oc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfbGluayAqbGluaylcbit7XG4rXHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBcdTAwMjZzbWMtXHUwMDNlY29ubjtcbitcbitcdGNvbm4tXHUwMDNlb3V0X29mX3N5bmMgPSAxOyAgLyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqL1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlc2VuZF9sb2NrKTtcbitcdGNvbm4tXHUwMDNlbG9jYWxfdHhfY3RybC5jb25uX3N0YXRlX2ZsYWdzLnBlZXJfY29ubl9hYm9ydCA9IDE7XG4rXHRpZiAobGluaylcbitcdFx0Y29ubi1cdTAwM2VsbmsgPSBsaW5rO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29ubi1cdTAwM2VzZW5kX2xvY2spO1xuK1x0c29ja19ob2xkKFx1MDAyNnNtYy1cdTAwM2Vzayk7IC8qIHNvY2tfcHV0IGluIGFib3J0X3dvcmsgKi9cbitcdGlmICghcXVldWVfd29yayhzbWNfY2xvc2Vfd3EsIFx1MDAyNmNvbm4tXHUwMDNlYWJvcnRfd29yaykpXG4rXHRcdHNvY2tfcHV0KFx1MDAyNnNtYy1cdTAwM2Vzayk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYyxcbiBcdFx0XHRcdCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG4ge1xuQEAgLTMxNCwxNyArMzM1LDggQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxuIFxuIFx0LyogY2hlY2sgdGhhdCBzZXFudW0gd2FzIHNlZW4gYmVmb3JlICovXG4gXHRkaWZmID0gY29ubi1cdTAwM2Vsb2NhbF9yeF9jdHJsLnNlcW5vIC0gcmVjdl9zZXE7XG4tXHRpZiAoZGlmZiBcdTAwM2MgMCkgeyAvKiBkaWZmIGxhcmdlciB0aGFuIDB4N2ZmZiAqL1xuLVx0XHQvKiBkcm9wIGNvbm5lY3Rpb24gKi9cbi1cdFx0Y29ubi1cdTAwM2VvdXRfb2Zfc3luYyA9IDE7XHQvKiBwcmV2ZW50IGFueSBmdXJ0aGVyIHJlY2VpdmVzICovXG4tXHRcdHNwaW5fbG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXNlbmRfbG9jayk7XG4tXHRcdGNvbm4tXHUwMDNlbG9jYWxfdHhfY3RybC5jb25uX3N0YXRlX2ZsYWdzLnBlZXJfY29ubl9hYm9ydCA9IDE7XG4tXHRcdGNvbm4tXHUwMDNlbG5rID0gbGluaztcbi1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29ubi1cdTAwM2VzZW5kX2xvY2spO1xuLVx0XHRzb2NrX2hvbGQoXHUwMDI2c21jLVx1MDAzZXNrKTsgLyogc29ja19wdXQgaW4gYWJvcnRfd29yayAqL1xuLVx0XHRpZiAoIXF1ZXVlX3dvcmsoc21jX2Nsb3NlX3dxLCBcdTAwMjZjb25uLVx1MDAzZWFib3J0X3dvcmspKVxuLVx0XHRcdHNvY2tfcHV0KFx1MDAyNnNtYy1cdTAwM2Vzayk7XG4tXHR9XG4rXHRpZiAoZGlmZiBcdTAwM2MgMCkgLyogZGlmZiBsYXJnZXIgdGhhbiAweDdmZmYgKi9cbitcdFx0c21jX2NkY19hYm9ydF9jb25uKHNtYywgbGluayk7ICAvKiBkcm9wIGNvbm5lY3Rpb24gKi9cbiB9XG4gXG4gc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG5AQCAtMzc2LDYgKzM4OCwxMSBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbiBcdGRpZmZfcHJvZCA9IHNtY19jdXJzX2RpZmYoY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4sIFx1MDAyNnByb2Rfb2xkLFxuIFx0XHRcdFx0ICBcdTAwMjZjb25uLVx1MDAzZWxvY2FsX3J4X2N0cmwucHJvZCk7XG4gXHRpZiAoZGlmZl9wcm9kKSB7XG4rXHRcdGlmIChkaWZmX3Byb2QgXHUwMDNlIGNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlbGVuIC1cbitcdFx0XHRcdGF0b21pY19yZWFkKFx1MDAyNmNvbm4tXHUwMDNlYnl0ZXNfdG9fcmN2KSkge1xuK1x0XHRcdHNtY19jZGNfYWJvcnRfY29ubihzbWMsIE5VTEwpO1xuK1x0XHRcdHJldHVybjtcbitcdFx0fVxuIFx0XHRpZiAoY29ubi1cdTAwM2Vsb2NhbF9yeF9jdHJsLnByb2RfZmxhZ3MudXJnX2RhdGFfcHJlc2VudClcbiBcdFx0XHRzbWNfY2RjX2hhbmRsZV91cmdfZGF0YV9hcnJpdmFsKHNtYywgXHUwMDI2ZGlmZl9wcm9kKTtcbiBcdFx0LyogYnl0ZXNfdG9fcmN2IGlzIGRlY3JlYXNlZCBpbiBzbWNfcmVjdm1zZyAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTA6NDguODkyNjQxMDg0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQ2MzU3NTA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgKFNNQykqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgbmV0L3NtYy9zbWNfY2RjLmNgLCByaWdodD8gVGhlIGtleSBoZXJlIGlzIHRoaXMgbmV3IGBzbWNfY2RjX2Fib3J0X2Nvbm5gIGZ1bmN0aW9uLiBJdCdzIGRlc2lnbmVkIHRvIGZvcmNlZnVsbHkgdGVybWluYXRlIGEgY29ubmVjdGlvbiBpZiB0aGUgb3RoZXIgZW5kIGlzIG1pc2JlaGF2aW5nIGFuZCB2aW9sYXRpbmcgdGhlIENEQyBwcm90b2NvbC4gR29vZCwgYSBkZWRpY2F0ZWQgZnVuY3Rpb24gZm9yIGNvbm5lY3Rpb24gdGVhcmRvd24sIG1ha2VzIHRoZSBjb2RlIGNsZWFuZXIgYW5kIGVhc2llciB0byByZWFzb24gYWJvdXQuXG5cbk5vdywgaXQgbG9va3MgbGlrZSB0aGV5J3ZlIHJlZmFjdG9yZWQgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCwgcHVsbGluZyBvdXQgYW4gaW5saW5lIGJsb2NrIGFuZCByZXBsYWNpbmcgaXQgd2l0aCBhIGNhbGwgdG8gYHNtY19jZGNfYWJvcnRfY29ubmAuIFNtYXJ0LCByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uIGFuZCBpbXByb3ZpbmcgbWFpbnRhaW5hYmlsaXR5IOKAkyBhbHdheXMgYSBnb29kIHRoaW5nLiBUaGV5J3ZlIGFsc28gYWRkZWQgYSBjaGVjayB3aXRoaW4gYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCB0aGF0IHdpbGwgdHJpZ2dlciBgc21jX2NkY19hYm9ydF9jb25uYCBpZiBgZGlmZl9wcm9kYCBleGNlZWRzIGEgY2FsY3VsYXRlZCB0aHJlc2hvbGQgcmVsYXRlZCB0byByZWNlaXZlZCBieXRlcy4gVGhpcyBwcm9iYWJseSBkZWFscyB3aXRoIHNvbWUgc29ydCBvZiBidWZmZXIgb3ZlcnJ1biBvciBwcm90b2NvbCB2aW9sYXRpb24gZHVyaW5nIG1lc3NhZ2UgcmVjZXB0aW9uLiBUaGlzIHdhcnJhbnRzIGEgbW9yZSBkZXRhaWxlZCBsb29rLlxuXG5GaXJzdCB0aGluZ3MgZmlyc3QsIEkgc2hvdWxkIGNvbmZpcm0gSSdtIHdvcmtpbmcgd2l0aCB0aGUgU01DIGNvZGUsIG9yIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgYXMgYSByZWZyZXNoZXIuIFRoZSBuZXh0IHN0ZXAgaXMgYSBxdWljayBjaGVjayBvZiBgbmV0L3NtYy9zbWNfY2RjLmNgIGl0c2VsZiBhbmQgdGhlIEtjb25maWcgZm9yIFNNQywgbG9va2luZyBmb3IgdGhlIGBDT05GSUdfU01DYCBzeW1ib2wsIGp1c3QgdG8gZW5zdXJlIHRoYXQgdGhlIHByb3BlciBjb25maWd1cmF0aW9ucyBhcmUgc2V0IHVwLlxuXG5UaGVuLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGVzZSBjaGFuZ2VzLiBJJ2xsIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAuXG5cblRvIGdldCBhIGJldHRlciBwaWN0dXJlLCBJJ2xsIHVzZSBgZ2l0IGdyZXBgIHRvIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgaW1wYWN0IG9mIHRoZSBwYXRjaCBhbmQgaG93IHRoZXNlIG1vZGlmaWNhdGlvbnMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBTTUMgQ0RDIGltcGxlbWVudGF0aW9uLiBJIHdpbGwgbmVlZCB0byBsb29rIGludG8gYGRpZmZfcHJvZGAgdG8gZnVsbHkgdW5kZXJzdGFuZCB3aGF0IGlzIGdvaW5nIG9uIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTAsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo1MDo1Ny4zNTYyMTgzNDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0OTcxNzk2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0zMjk9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMzQxLVxcbm5ldC9zbWMvc21jX2NkYy5jOjM0MjpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL3NtY19jZGMuYy0zNDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDQ0PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDQ3LVxcdGJoX2xvY2tfc29jayhcXHUwMDI2c21jLVxcdTAwM2Vzayk7XFxubmV0L3NtYy9zbWNfY2RjLmM6NDQ4OlxcdHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHNtYywgY2RjKTtcXG5uZXQvc21jL3NtY19jZGMuYy00NDktXFx0YmhfdW5sb2NrX3NvY2soXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0yOS0vKiBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0byB3YWtldXAgY29uc3VtZXJzIGJsb2NrZWQgd2l0aCBzbWNfcnhfd2FpdCgpLlxcbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cXG5uZXQvc21jL3NtY19yeC5jLTMxLSAqL1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM5OC1cXHRcXHRpZiAoc2stXFx1MDAzZXNrX3NodXRkb3duIFxcdTAwMjYgUkNWX1NIVVRET1dOKSB7XFxubmV0L3NtYy9zbWNfcnguYzozOTk6XFx0XFx0XFx0Lyogc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBjb3VsZCBoYXZlIHJ1biBhZnRlclxcbm5ldC9zbWMvc21jX3J4LmMtNDAwLVxcdFxcdFxcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTA6NTguOTA1OTQxNDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY3MDY5MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZTpcblxuKipBbmFseXppbmcgYHNtY19jZGNfbXNnX3JlY3ZgKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBgc21jX2NkY19tc2dfcmVjdmAgYmV0dGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIHRyYWNlIGl0cyB1c2FnZS4gSSdsbCBuZWVkIHRvIHNlZSBwcmVjaXNlbHkgKndobyogaXMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBJcyBpdCBvbmx5IGZyb20gYSBzcGVjaWZpYyBtb2R1bGUsIG9yIGlzIGl0IGEgbW9yZSBnZW5lcmFsIHV0aWxpdHk/IEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNvbnRleHQsIHJldmVhbGluZyB0aGUgc2NlbmFyaW9zIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgZW1wbG95ZWQuIEZyb20gdGhlcmUsIEkgY2FuIGJlZ2luIHRvIHJlYXNvbiBhYm91dCBpdHMgcHVycG9zZSBhbmQgdGhlIHJvbGUgaXQgcGxheXMgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaGUgY2FsbGluZyBjb250ZXh0IHdpbGwgYWxzbyBhbGxvdyBtZSB0byBoeXBvdGhlc2l6ZSBhYm91dCB0aGUgZXhwZWN0ZWQgaW5wdXRzIGFuZCBvdXRwdXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTAzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTE6MDIuMTczMDEyNzA3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTc0MTc3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2NkY19tc2dfcmVjdlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0zMjk9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMzQxLVxcbm5ldC9zbWMvc21jX2NkYy5jOjM0MjpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL3NtY19jZGMuYy0zNDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDQzLS8qIGNhbGxlZCB1bmRlciB0YXNrbGV0IGNvbnRleHQgKi9cXG5uZXQvc21jL3NtY19jZGMuYzo0NDQ6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXFxubmV0L3NtYy9zbWNfY2RjLmMtNDQ1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ0Ny1cXHRiaF9sb2NrX3NvY2soXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ0ODpcXHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XFxubmV0L3NtYy9zbWNfY2RjLmMtNDQ5LVxcdGJoX3VubG9ja19zb2NrKFxcdTAwMjZzbWMtXFx1MDAzZXNrKTtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQ1OT1zdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDcyLVxcdHNtYyA9IGNvbnRhaW5lcl9vZihjb25uLCBzdHJ1Y3Qgc21jX3NvY2ssIGNvbm4pO1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ3MzpcXHRzbWNfY2RjX21zZ19yZWN2KHNtYywgKHN0cnVjdCBzbWNfY2RjX21zZyAqKVxcdTAwMjZjZGMpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTQ3NC19XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz00ODY9c3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTUxOS1cXG5uZXQvc21jL3NtY19jZGMuYzo1MjA6XFx0c21jX2NkY19tc2dfcmVjdihzbWMsIGNkYyk7XFxubmV0L3NtYy9zbWNfY2RjLmMtNTIxLW91dDpcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cXG5uZXQvc21jL3NtY19yeC5jOjMwOiAqIGluZGlyZWN0bHkgY2FsbGVkIGJ5IHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXFxubmV0L3NtYy9zbWNfcnguYy0zMS0gKi9cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmM9MzUyPWludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTgtXFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zaHV0ZG93biBcXHUwMDI2IFJDVl9TSFVURE9XTikge1xcbm5ldC9zbWMvc21jX3J4LmM6Mzk5OlxcdFxcdFxcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cXHRcXHRcXHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjUxOjAzLjc5MDQzODIzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTg0OTgyMjAwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKlNNQyBQcm90b2NvbCBWdWxuZXJhYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHNwZWNpZmljYWxseSwgdGhlIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgZnVuY3Rpb24uIEkgc2VlIHRoYXQgaXQncyByZWFjaGFibGUgZnJvbSBib3RoIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gR29vZCwgZ29vZC4gRnVuY3Rpb25hbGl0eSBhbmQgcmVhY2hhYmlsaXR5IGFyZSBjb25maXJtZWQuIFRoYXQncyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIGJlY2F1c2UgU01DIGlzIGEgbmV0d29yayBwcm90b2NvbCwgbXkgZXhwZXJ0IGludHVpdGlvbiBpcyBzY3JlYW1pbmcgZm9yIGZ1enppbmcuIEkgbWVhbiwgaXQgcHJhY3RpY2FsbHkgKmJlZ3MqIGZvciBpdC4gSXQncyBhIHByaW1lIHRhcmdldCBmb3IgcHJvdG9jb2wtbGV2ZWwgZnV6emluZy4gQWx3YXlzIHRoZSBsb3ctaGFuZ2luZyBmcnVpdCB3aGVuIGl0IGNvbWVzIHRvIG5ldHdvcmtzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBpcyBzZXQgLSBJIHNlZSBhIHJlZmVyZW5jZSB0byBgQ09ORklHX1NNQ2AuIFRpbWUgdG8gcGVlayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgU01DIGZ1bmN0aW9uYWxpdHkgaXMgZXZlbiBlbmFibGVkIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gYmVmb3JlIEkgd2FzdGUgdG9vIG11Y2ggdGltZSwgYXMgSSdtIHN1cmUgaXMgdGhlIHNhbWUgd2l0aCBhbnkgZXhwZXJpZW5jZWQgZXhwZXJ0LiBHb3R0YSBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTAxLCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTY6MDMuNjQwMjYyNTc1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDI0NDYyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzh4eC9LY29uZmlnPTE0Nj1jb25maWcgSTJDX1NQSV9TTUMxX1VDT0RFX1BBVENIXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzh4eC9LY29uZmlnLTE1MC1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzh4eC9LY29uZmlnOjE1MTpjb25maWcgU01DX1VDT0RFX1BBVENIXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84eHgvS2NvbmZpZy0xNTItXFx0Ym9vbCBcXFwiU01DIHJlbG9jYXRpb24gcGF0Y2hcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9TTVNDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2MvS2NvbmZpZzoyMjpjb25maWcgU01DOTFYXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJTTUMgOTFDOXgvOTFDMXh4eCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0xMy1cXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0yMi1cXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo1NjowNS44NDI3MTUxNTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDg1NDE3MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBTTUMgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBgU01DYOKApiB0aGF0J3Mgb3VyIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gYG5ldC9zbWMvS2NvbmZpZ2AuIFRoYXQncyB0aGUgbGlrZWx5IGxvY2F0aW9uIGZvciBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWwgc2V0dGluZ3MgcmVsYXRlZCB0byBgU01DYC4gVGhhdCBmaWxlIHdpbGwgdGVsbCBtZSBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93IGFib3V0IHdoYXQgb3RoZXIgY29tcG9uZW50cywgZmVhdHVyZXMsIG9yIGRyaXZlcnMgbmVlZCB0byBiZSBlbmFibGVkIG9yIGFyZSBpbiBjb25mbGljdCB3aXRoIGBTTUNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgaXRzIGltcGFjdCBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMgYWJvdXQgaXRzIHVzZS4gVGltZSB0byBnZXQgZG93biB0byB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgyNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjU2OjExLjMyODEzNTE3MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTTUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU01DLVIgcHJvdmlkZXMgYSBcXFwic29ja2V0cyBvdmVyIFJETUFcXFwiIHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcXG4gICA3OlxcdFxcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXFxuICAgODpcXHRcXHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXFxuICAgOTpcXHRcXHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcXG4gIDEwOlxcdFxcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBTTUNfRElBR1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBTTUNcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcXG4gIDE5OlxcdFxcdCAgc21jc3MuXFxuICAyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTY6MTEuMzI4MTk1MzcxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MDczNzQ2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRElCUyBNeXN0ZXJ5OiBBIEtlcm5lbCBLY29uZmlnIFB1enpsZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFNNQ2AgY29uZmlndXJhdGlvbiBpbiB0aGUga2VybmVsLCBhbmQgdGhlIGRlcGVuZGVuY3kgY29uZGl0aW9uIGp1bXBzIG91dCBhdCBtZTogYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU2AuIEkga25vdyBgSU5FVGAgYW5kIGBJTkZJTklCQU5EYCwgbm8gcHJvYmxlbSB0aGVyZS4gQnV0LCBob2xkIG9uLi4uIGBESUJTYD8gSXMgdGhhdCBhIHR5cG8/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvc21jL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgc3VyZS4gQWxyaWdodCwgSSdtIHBlZXJpbmcgYXQgYG5ldC9zbWMvS2NvbmZpZ2AgaW4gdGhlIHRyZWUuIFRoZSBkZXBlbmRlbmN5IGlzOiBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gV2FpdCwgaXMgbXkgbWluZCBwbGF5aW5nIHRyaWNrcyBvbiBtZT8gTGV0IG1lIGdvIGJhY2sgYW5kIHJlYWQgdGhlIG91dHB1dCBhZ2Fpbi4gTm8sIGl0ICpzdGlsbCogc2F5cyBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gT2theSwgbWF5YmUgSSBuZWVkIGEgc2FuaXR5IGNoZWNrLCBqdXN0IGNvbmZpcm1pbmcgaXQgaGFzbid0IGNoYW5nZWQuXG5cbkxldCBtZSBnbyBiYWNrIGFuZCBsb29rIGF0IGBuZXQvc21jL0tjb25maWdgIGFnYWluLiBOb3BlLCBpdCAqc3RpbGwqIHJlYWRzOiBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gT2theSwgbm8sIEkgZGlkbid0IG1pc3JlYWQgaXQuIEJ1dCBub3cgbXkgZXhwZXJ0IG1pbmQgaXMgc2NyZWFtaW5nLCB3aGF0IGlzIHRoaXMgYERJQlNgPyEgVGltZSB0byBleGVjdXRlIGEgYGdyZXBgIGFuZCBzZWUgaWYgSSBjYW4gZmluZCB0aGlzIGVuaWdtYXRpYyBmZWF0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzA5LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTY6MTguMTM1NTcyMzQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjM1MzkwODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBESUJTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo1NjoyMC4zNzA5NzE0MjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5MDg5ODMxOTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBESUJTKipcblxuUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYERJQlNgLCB0aGF0J3MgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoZSBjb3JyZWN0IG5ldHdvcmsgc3RhY2sgY29uZmlndXJlZC4gVGhhdCBsaWtlbHkgbWVhbnMgSSdsbCBuZWVkIHRvIGVuYWJsZSBgSU5FVGAsIGZvciB0aGUgdXN1YWwgSVB2NCwgYW5kIEkgc2hvdWxkIGFsc28gY2hlY2sgYElORklOSUJBTkRgIHN1cHBvcnQsIGFzIEkgc3VzcGVjdCBESUJTIG1pZ2h0IGxldmVyYWdlIHRoYXQgZm9yIGhpZ2gtcGVyZm9ybWFuY2UgaW50ZXJjb25uZWN0cy5cblxuVG8gYmUgY2VydGFpbiBvZiB0aGUgZGVwZW5kZW5jaWVzIGZvciBgRElCU2AgaXRzZWxmLCBJIHNob3VsZCBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUgc2Vuc2libGUgcGxhY2UgdG8gc3RhcnQgaXMgYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBwcmVjaXNlIHJlYWQgb3V0IG9mIHRoZSByZXF1aXJlZCBvcHRpb25zIGFuZCBhbnkgaW50ZXJkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBlbnN1cmUgSSBnZXQgdGhpcyB0aGluZyBjb25maWd1cmVkIGNvcnJlY3RseSBmb3IgdGhlIHRhcmdldCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA4OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjAxOjI5LjQ2MDgwNzA0NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRjb25maWcgRElCU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XFxuICAgNzpcXHRcXHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXFxuICAgODpcXHRcXHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXFxuICAxMTpcXHRcXHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cXG4gIDEyOlxcdFxcdCAgVGhlIG1vZHVsZSBuYW1lIGlzIGRpYnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBESUJTX0xPXFxuICAxNTpcXHRcXHRib29sIFxcXCJJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIERJQlNcXG4gIDE3OlxcdFxcdGRlZmF1bHQgblxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBESUJTX0xPIGVuYWJsZXMgdGhlIGNyZWF0aW9uIG9mIGFuIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlXFxuICAyMDpcXHRcXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDE6MjkuNDYwOTIxNzM1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzkyNzAzNDY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgZW5hYmxpbmcgYFNNQ2AgbmVjZXNzaXRhdGVzIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLCBzbyBsZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgb2YgdGhvc2UgZW5hYmxlZC4gRWFzeSBlbm91Z2guIE5vdywgSSBzZWUgdGhpcyBwYXRjaCBtb2RpZmllcyBgc21jX2NkYy5jYC4gVGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBhbmQgZXZlbiBhZGRpbmcgYHNtY19jZGNfYWJvcnRfY29ubmAuIFRoZXNlIGFyZSBjb3JlIGZ1bmN0aW9ucy4gRGVmaW5pdGVseSBmdW5jdGlvbmFsIGNoYW5nZXMuIFRob3NlIHRocmVlLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBhbmQgYHNtY19jZGNfYWJvcnRfY29ubmAsIHRob3NlIGFyZSB0aGUgZm9jdXMuXG5cbldhaXQgYSBzZWNvbmQuIE5vdyBJIHNlZSB0aGF0IGFsbCB0aHJlZSBhcmUgc3RhdGljISBUaGF0IG1lYW5zIHRoZXkgaGF2ZSBpbnRlcm5hbCBsaW5rYWdlIG9ubHkuIFRoZSBpbnN0cnVjdGlvbnMgc3RpcHVsYXRlIHRvIHByZWZlciBub24tc3RhdGljIEFQSSBlbnRyeXBvaW50cy4gVGhlIHJhdGlvbmFsZSBiZWluZyB0aGF0IHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbHMsIGFuZCB0aHVzIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbi4gU28gbGV0J3MgY2hlY2s6IGFyZSB0aGVzZSBiZWluZyBpbmxpbmVkPyBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIGNhbGxlZCBmcm9tIGBzbWNfY2RjX21zZ19yZWN2YC4gVGhhdCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gSSBuZWVkIHRvIGluc3BlY3QgdGhlc2UgYXMgd2VsbC5cblxuT2theSwgbGV0J3Mgc2VlLiBgc21jZF9jZGNfcnhfdHNrbGV0YCBpcyBhbHNvIHN0YXRpYy4gQW5kIGBzbWNfY2RjX3J4X2hhbmRsZXJgIGlzIGFsc28gc3RhdGljISBUaGF0J3MgcHJvYmxlbWF0aWMuIFdoYXQgYXJlIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyB0aGVuPyBXZSBuZWVkIGEgd2F5IHRvIHJlZ2lzdGVyIG9yIHVzZSB0aGlzIGNvZGUgZnJvbSBlbHNld2hlcmUuIEknbSBnb2luZyB0byBncmVwIGZvciBgc21jX2NkY19yeF9oYW5kbGVyYCBhbmQgYHNtY2RfY2RjX3J4X3Rza2xldGAgdG8gZmluZCB0aGVpciByZWdpc3RyYXRpb24gcG9pbnRzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZW50aXJlIHRoaW5nIGlzIGJlaW5nIHVzZWQgZnJvbSB0aGUgb3V0c2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYxNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjAzOjI3LjM4Nzk1OTA0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNzAyNDMzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX3J4X2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NDc5PXZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy00ODUtXFxubmV0L3NtYy9zbWNfY2RjLmM6NDg2OnN0YXRpYyB2b2lkIHNtY19jZGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXFxubmV0L3NtYy9zbWNfY2RjLmMtNDg3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTUyNC1cXG5uZXQvc21jL3NtY19jZGMuYzo1MjU6c3RhdGljIHN0cnVjdCBzbWNfd3JfcnhfaGFuZGxlciBzbWNfY2RjX3J4X2hhbmRsZXJzW10gPSB7XFxubmV0L3NtYy9zbWNfY2RjLmMtNTI2LVxcdHtcXG5uZXQvc21jL3NtY19jZGMuYzo1Mjc6XFx0XFx0LmhhbmRsZXJcXHQ9IHNtY19jZGNfcnhfaGFuZGxlcixcXG5uZXQvc21jL3NtY19jZGMuYy01MjgtXFx0XFx0LnR5cGVcXHRcXHQ9IFNNQ19DRENfTVNHX1RZUEVcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTUzNT1pbnQgX19pbml0IHNtY19jZGNfaW5pdCh2b2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNTM5LVxcbm5ldC9zbWMvc21jX2NkYy5jOjU0MDpcXHRmb3IgKGhhbmRsZXIgPSBzbWNfY2RjX3J4X2hhbmRsZXJzOyBoYW5kbGVyLVxcdTAwM2VoYW5kbGVyOyBoYW5kbGVyKyspIHtcXG5uZXQvc21jL3NtY19jZGMuYy01NDEtXFx0XFx0SU5JVF9ITElTVF9OT0RFKFxcdTAwMjZoYW5kbGVyLVxcdTAwM2VsaXN0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDM6MjguODE0OTg3Mjg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTI4OTUwMjYyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgc21jZF9jZGNfcnhfdHNrbGV0YCBUYXNrbGV0KipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHNtY2RfY2RjX3J4X3Rza2xldGAgcm91dGluZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgd2l0aGluIHRoZSBDREMgKHByZXN1bWFibHksIENvbW11bmljYXRpb24gRGV2aWNlIENsYXNzKSByZWNlaXZlIHBhdGguIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCwgdGhlIGhhcmR3YXJlIGVudmlyb25tZW50IGFuZCB0aGUgcHJvdG9jb2wgaW52b2x2ZWQuIElzIHRoaXMgaGFuZGxpbmcgcmF3IFVTQiBkYXRhIGRpcmVjdGx5LCBvciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uPyBBcmUgd2UgbG9va2luZyBhdCBhIHNwZWNpZmljIGRldmljZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBvciBhIG1vcmUgZ2VuZXJpYyBVU0IgaW50ZXJmYWNlIGZyYW1ld29yaz8gTXkgZmlyc3Qgc3RlcCBpcyB1c3VhbGx5IHRvIG1lbnRhbGx5IHJlY29uc3RydWN0IHRoZSBjYWxsIHN0YWNrOyB3aGVyZSBkb2VzIHRoaXMgdGFza2xldCBmaXQgaW4gdGhlIHJlY2VpdmUgZmxvdz8gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcywgc3luY2hyb25pemF0aW9uIGlzc3VlcyBhbmQgYnVmZmVyIG1hbmFnZW1lbnQgY29uY2VybnMuIEEgcXVpY2sgZ2xhbmNlIHN1Z2dlc3RzIHRoYXQgdGhpcyBjb3VsZCBiZSBhIHBvaW50IHdoZXJlIGRhdGEgaW5ncmVzcyBlbnRlcnMgdXNlci1zcGFjZS5cblxuSSdtIHRoaW5raW5nIGFib3V0IHR5cGljYWwgaXNzdWVzIGF0IHRoaXMgc3RhZ2UgLSBJbnRlcnJ1cHQgU2VydmljZSBSb3V0aW5lIChJU1IpIGludGVyYWN0aW9uLCBETUEgdHJhbnNmZXJzLCBkYXRhIHZhbGlkYXRpb24uIFdoYXQga2luZCBvZiBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBidWZmZXIgb3ZlcnJ1bnMgb3IgdW5kZXJmbG93cz8gSXMgdGhlcmUgYW55IHBvdGVudGlhbCBmb3IgZGF0YSBsb3NzIHVuZGVyIGhlYXZ5IGxvYWQ/IEEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0YXNrbGV0J3MgaW1wbGVtZW50YXRpb24gaXMgcGFyYW1vdW50IHRvIGZpbmRpbmcgYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCBuZWVkcyB0byBoYW5kbGUgYWxsIHRoZSBjb21tb24gY29ybmVyIGNhc2VzIHRvIGVuc3VyZSBzdGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjowODozNC4xMDQ0OTI1ODZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzYzNzUzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jZF9jZGNfcnhfdHNrbGV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTQ0ND1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ1OC0gKi9cXG5uZXQvc21jL3NtY19jZGMuYzo0NTk6c3RhdGljIHZvaWQgc21jZF9jZGNfcnhfdHNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG5uZXQvc21jL3NtY19jZGMuYy00NjAte1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDc5PXZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtNDgwLXtcXG5uZXQvc21jL3NtY19jZGMuYzo0ODE6XFx0dGFza2xldF9zZXR1cChcXHUwMDI2Y29ubi1cXHUwMDNlcnhfdHNrbGV0LCBzbWNkX2NkY19yeF90c2tsZXQpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTQ4Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA4OjM1LjU4MDg3NzI2NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU5Mzg0Mzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU01DIENEQyBSZWNlaXZlIFBhdGgqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdHJhY2UgaG93IHRoZSBDREMgcmVjZWl2ZSBwYXRoIGlzIHNldCB1cCBmb3IgdGhpcyBTTUMgY29tcG9uZW50LiBJIHNlZSB0aGF0IHRoZSBgc21jX2NkY19yeF9oYW5kbGVyYCBmdW5jdGlvbiBpcyB0aGUga2V5IHBsYXllciBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHJlZ2lzdGVyZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwaGFzZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHNtY19jZGNfaW5pdGAgZnVuY3Rpb24uIFRoZSByZWdpc3RyYXRpb24gaXRzZWxmIGlzIGxpa2VseSBkb25lIHRocm91Z2ggdGhlIGBzbWNfd3JfcnhfaGFuZGxlcmAgY2FsbCwgd2hpY2ggaXMgYSBjb21tb24gcGF0dGVybi4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gQWRkaXRpb25hbGx5LCBJIG5vdGljZSB0aGF0IGBzbWNkX2NkY19yeF90c2tsZXRgIGlzIGFsc28gaGFuZ2luZyBhcm91bmQsIHJlZ2lzdGVyZWQgaW4gYHNtY2RfY2RjX3J4X2luaXRgLiBTbywgaXQgYXBwZWFycyB0aGVyZSdzIGEgdGFza2xldCBpbnZvbHZlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYW5kbGVyIGFuZCB0aGUgdGFza2xldCBjb29yZGluYXRlLCBidXQgZmlyc3QsIEkgd2lsbCBkb3VibGUgY2hlY2sgaG93IHRoZSBgc21jX3dyX3J4X2hhbmRsZXJgIHJlZ2lzdHJhdGlvbiB3b3Jrcy4gVGhhdCdzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwIHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50aXJlIHJlY2VpdmUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQwOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA4OjQwLjA0MDI2Mzg0M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MTE1MTI2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfd3JfcnhfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NTM1PWludCBfX2luaXQgc21jX2NkY19pbml0KHZvaWQpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy01NDEtXFx0XFx0SU5JVF9ITElTVF9OT0RFKFxcdTAwMjZoYW5kbGVyLVxcdTAwM2VsaXN0KTtcXG5uZXQvc21jL3NtY19jZGMuYzo1NDI6XFx0XFx0cmMgPSBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihoYW5kbGVyKTtcXG5uZXQvc21jL3NtY19jZGMuYy01NDMtXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjM2ND1pbnQgX19pbml0IHNtY19sbGNfaW5pdCh2b2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM3MC1cXHRcXHRJTklUX0hMSVNUX05PREUoXFx1MDAyNmhhbmRsZXItXFx1MDAzZWxpc3QpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjIzNzE6XFx0XFx0cmMgPSBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihoYW5kbGVyKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMzcyLVxcdFxcdGlmIChyYylcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9MzY2PWludCBzbWNfd3JfcmVnX3NlbmQoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3QgaWJfbXIgKm1yKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00MDctXFxubmV0L3NtYy9zbWNfd3IuYzo0MDg6aW50IHNtY193cl9yeF9yZWdpc3Rlcl9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfcnhfaGFuZGxlciAqaGFuZGxlcilcXG5uZXQvc21jL3NtY193ci5jLTQwOS17XFxuLS1cXG5uZXQvc21jL3NtY193ci5oPTEzMD12b2lkIHNtY193cl90eF93YWl0X25vX3BlbmRpbmdfc2VuZHMoc3RydWN0IHNtY19saW5rICpsaW5rKTtcXG5uZXQvc21jL3NtY193ci5oLTEzMS1cXG5uZXQvc21jL3NtY193ci5oOjEzMjppbnQgc21jX3dyX3J4X3JlZ2lzdGVyX2hhbmRsZXIoc3RydWN0IHNtY193cl9yeF9oYW5kbGVyICpoYW5kbGVyKTtcXG5uZXQvc21jL3NtY193ci5oLTEzMy1pbnQgc21jX3dyX3J4X3Bvc3RfaW5pdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjowODo0MS40ODE0MTk1NzVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzNzQ2OTQzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlRyYWNpbmcgdGhlIENhbGwgUGF0aDogYHNtY193cl9yeF9oYW5kbGVyYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGBzbWNfd3JfcnhfaGFuZGxlcmAuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgaW52b2tlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgcGF0aC4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gY29kZSB0aGF0IGNhbGxzIGl0IGlzIGdvaW5nIHRvIGJlIGtleSB0byBmaWd1cmluZyBvdXQgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHR5cGljYWwgdGVjaG5pcXVlcyB0byBsb2NhdGUgYWxsIHRoZSBjYWxsIHNpdGVzIGFuZCBzZWUgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgaXRzIGV4ZWN1dGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IGl0cyBwdXJwb3NlIGFuZCBiZWhhdmlvci4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjM4LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDg6NTMuODU2MTE2Njg4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQzNDMyMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhbmRsZXItXFx1MDAzZWhhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcnRhcy5jPTIxOD1pbnQga3ZtcHBjX3J0YXNfaGNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcnRhcy5jLTI2Mi1cXHRcXHRpZiAoZC1cXHUwMDNldG9rZW4gPT0gYmUzMl90b19jcHUoYXJncy50b2tlbikpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19ydGFzLmM6MjYzOlxcdFxcdFxcdGQtXFx1MDAzZWhhbmRsZXItXFx1MDAzZWhhbmRsZXIodmNwdSwgXFx1MDAyNmFyZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3J0YXMuYy0yNjQtXFx0XFx0XFx0cmMgPSAwO1xcbi0tXFxuZHJpdmVycy9hY3BpL3BybXQuYz0yNjg9aW50IGFjcGlfY2FsbF9wcm1faGFuZGxlcihndWlkX3QgaGFuZGxlcl9ndWlkLCB2b2lkICpwYXJhbV9idWZmZXIpXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJtdC5jLTI4My1cXG5kcml2ZXJzL2FjcGkvcHJtdC5jOjI4NDpcXHRzdGF0dXMgPSBlZmlfY2FsbF9hY3BpX3BybV9oYW5kbGVyKGhhbmRsZXItXFx1MDAzZWhhbmRsZXJfYWRkcixcXG5kcml2ZXJzL2FjcGkvcHJtdC5jLTI4NS1cXHRcXHRcXHRcXHRcXHQgICAodTY0KXBhcmFtX2J1ZmZlcixcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm10LmM9MzAyPXN0YXRpYyBhY3BpX3N0YXR1cyBhY3BpX3BsYXRmb3JtcnRfc3BhY2VfaGFuZGxlcih1MzIgZnVuY3Rpb24sXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJtdC5jLTMzMC1cXG5kcml2ZXJzL2FjcGkvcHJtdC5jOjMzMTpcXHRcXHRpZiAoIWhhbmRsZXItXFx1MDAzZWhhbmRsZXJfYWRkcikge1xcbmRyaXZlcnMvYWNwaS9wcm10LmMtMzMyLVxcdFxcdFxcdGJ1ZmZlci1cXHUwMDNlcHJtX3N0YXR1cyA9IFBSTV9IQU5ETEVSX0VSUk9SO1xcbi0tXFxuZHJpdmVycy9hY3BpL3BybXQuYy0zNDItXFxuZHJpdmVycy9hY3BpL3BybXQuYzozNDM6XFx0XFx0c3RhdHVzID0gZWZpX2NhbGxfYWNwaV9wcm1faGFuZGxlcihoYW5kbGVyLVxcdTAwM2VoYW5kbGVyX2FkZHIsXFxuZHJpdmVycy9hY3BpL3BybXQuYy0zNDQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgaGFuZGxlci1cXHUwMDNlYWNwaV9wYXJhbV9idWZmZXJfYWRkcixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jPTEzMj1zdGF0aWMgc3RydWN0IGxpc3RfaGVhZCAqcmVtb3ZlX2lycV9oYW5kbGVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMtMTY0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jOjE2NTpcXHRcXHRpZiAoaWggPT0gaGFuZGxlci1cXHUwMDNlaGFuZGxlcikge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTE2Ni1cXHRcXHRcXHQvKiBGb3VuZCBvdXIgaGFuZGxlci4gUmVtb3ZlIGl0IGZyb20gdGhlIGxpc3QuICovXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYz0xOTc9c3RhdGljIHZvaWQgdW5yZWdpc3Rlcl9hbGxfaXJxX2hhbmRsZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMtMjE2LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jOjIxNzpcXHRcXHRcXHRpZiAoaGFuZGxlciA9PSBOVUxMIHx8IGhhbmRsZXItXFx1MDAzZWhhbmRsZXIgPT0gTlVMTClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYy0yMTgtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYy0yMjgtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmM6MjI5OlxcdFxcdFxcdGlmIChoYW5kbGVyID09IE5VTEwgfHwgaGFuZGxlci1cXHUwMDNlaGFuZGxlciA9PSBOVUxMKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTIzMC1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2RldmljZS5jPTIwNzA9dm9pZCBpYl9kaXNwYXRjaF9ldmVudF9jbGllbnRzKHN0cnVjdCBpYl9ldmVudCAqZXZlbnQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9kZXZpY2UuYy0yMDc2LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaGFuZGxlciwgXFx1MDAyNmV2ZW50LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWV2ZW50X2hhbmRsZXJfbGlzdCwgbGlzdClcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9kZXZpY2UuYzoyMDc3OlxcdFxcdGhhbmRsZXItXFx1MDAzZWhhbmRsZXIoaGFuZGxlciwgZXZlbnQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2RldmljZS5jLTIwNzgtXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JvY2tjaGlwL3JraXNwMS9ya2lzcDEtcGFyYW1zLmM9MjI4OT1zdGF0aWMgdm9pZCBya2lzcDFfZXh0X3BhcmFtc19jb25maWcoc3RydWN0IHJraXNwMV9wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcm9ja2NoaXAvcmtpc3AxL3JraXNwMS1wYXJhbXMuYy0yMzE4LVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcm9ja2NoaXAvcmtpc3AxL3JraXNwMS1wYXJhbXMuYzoyMzE5OlxcdFxcdGJsb2NrX2hhbmRsZXItXFx1MDAzZWhhbmRsZXIocGFyYW1zLCBibG9jayk7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yb2NrY2hpcC9ya2lzcDEvcmtpc3AxLXBhcmFtcy5jLTIzMjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmM9MTI3OT1pd2xfbWxkX3NjYW5fYnVpbGRfY21kKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmMtMTMwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmM6MTMwMTpcXHRcXHRlcnIgPSB2ZXJfaGFuZGxlci1cXHUwMDNlaGFuZGxlcihtbGQsIHZpZiwgcGFyYW1zLCBzY2FuX3N0YXR1cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmMtMTMwMi1cXHRcXHRcXHRcXHRcXHQgICB1aWQsIG9vY19wcmlvcml0eSwgbG93X2xhdGVuY3kpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jPTI4Mjg9c3RhdGljIGludCBpd2xfbXZtX2J1aWxkX3NjYW5fY21kKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtMjg2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmM6Mjg2NDpcXHRcXHRlcnIgPSB2ZXJfaGFuZGxlci1cXHUwMDNlaGFuZGxlcihtdm0sIHZpZiwgcGFyYW1zLCB0eXBlLCB1aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYy0yODY1LVxcdFxcdHJldHVybiBlcnIgPyA6IHVpZDtcXG4tLVxcbm5ldC9pcHY0L3R1bm5lbDQuYz05NT1zdGF0aWMgaW50IHR1bm5lbDRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90dW5uZWw0LmMtMTAyLVxcdGZvcl9lYWNoX3R1bm5lbF9yY3UodHVubmVsNF9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2NC90dW5uZWw0LmM6MTAzOlxcdFxcdGlmICghaGFuZGxlci1cXHUwMDNlaGFuZGxlcihza2IpKVxcbm5ldC9pcHY0L3R1bm5lbDQuYy0xMDQtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2NC90dW5uZWw0LmM9MTQxPXN0YXRpYyBpbnQgdHVubmVsNjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90dW5uZWw0LmMtMTQ4LVxcdGZvcl9lYWNoX3R1bm5lbF9yY3UodHVubmVsNjRfaGFuZGxlcnMsIGhhbmRsZXIpXFxubmV0L2lwdjQvdHVubmVsNC5jOjE0OTpcXHRcXHRpZiAoIWhhbmRsZXItXFx1MDAzZWhhbmRsZXIoc2tiKSlcXG5uZXQvaXB2NC90dW5uZWw0LmMtMTUwLVxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L2lwdjQvdHVubmVsNC5jPTE2MT1zdGF0aWMgaW50IHR1bm5lbG1wbHM0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdHVubmVsNC5jLTE2OC1cXHRmb3JfZWFjaF90dW5uZWxfcmN1KHR1bm5lbG1wbHM0X2hhbmRsZXJzLCBoYW5kbGVyKVxcbm5ldC9pcHY0L3R1bm5lbDQuYzoxNjk6XFx0XFx0aWYgKCFoYW5kbGVyLVxcdTAwM2VoYW5kbGVyKHNrYikpXFxubmV0L2lwdjQvdHVubmVsNC5jLTE3MC1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM9OTY9c3RhdGljIGludCB4ZnJtNF9lc3BfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jLTEwMy1cXHRmb3JfZWFjaF9wcm90b2NvbF9yY3UoZXNwNF9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jOjEwNDpcXHRcXHRpZiAoKHJldCA9IGhhbmRsZXItXFx1MDAzZWhhbmRsZXIoc2tiKSkgIT0gLUVJTlZBTClcXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jLTEwNS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYz0xMjQ9c3RhdGljIGludCB4ZnJtNF9haF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmMtMTMxLVxcdGZvcl9lYWNoX3Byb3RvY29sX3JjdShhaDRfaGFuZGxlcnMsIGhhbmRsZXIpXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYzoxMzI6XFx0XFx0aWYgKChyZXQgPSBoYW5kbGVyLVxcdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xMzMtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM9MTUyPXN0YXRpYyBpbnQgeGZybTRfaXBjb21wX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xNTktXFx0Zm9yX2VhY2hfcHJvdG9jb2xfcmN1KGlwY29tcDRfaGFuZGxlcnMsIGhhbmRsZXIpXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYzoxNjA6XFx0XFx0aWYgKChyZXQgPSBoYW5kbGVyLVxcdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xNjEtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYz0xMjI9c3RhdGljIGludCB0dW5uZWxtcGxzNl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xMjktXFx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWxtcGxzNl9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2Ni90dW5uZWw2LmM6MTMwOlxcdFxcdGlmICghaGFuZGxlci1cXHUwMDNlaGFuZGxlcihza2IpKVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xMzEtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2Ni90dW5uZWw2LmM9MTQwPXN0YXRpYyBpbnQgdHVubmVsNl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xNDctXFx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWw2X2hhbmRsZXJzLCBoYW5kbGVyKVxcbm5ldC9pcHY2L3R1bm5lbDYuYzoxNDg6XFx0XFx0aWYgKCFoYW5kbGVyLVxcdTAwM2VoYW5kbGVyKHNrYikpXFxubmV0L2lwdjYvdHVubmVsNi5jLTE0OS1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYz0xODU9c3RhdGljIGludCB0dW5uZWw0Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xOTItXFx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWw0Nl9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2Ni90dW5uZWw2LmM6MTkzOlxcdFxcdGlmICghaGFuZGxlci1cXHUwMDNlaGFuZGxlcihza2IpKVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xOTQtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jPTExMT1zdGF0aWMgaW50IHhmcm02X2VzcF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmMtMTE4LVxcdGZvcl9lYWNoX3Byb3RvY29sX3JjdShlc3A2X2hhbmRsZXJzLCBoYW5kbGVyKVxcbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmM6MTE5OlxcdFxcdGlmICgocmV0ID0gaGFuZGxlci1cXHUwMDNlaGFuZGxlcihza2IpKSAhPSAtRUlOVkFMKVxcbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmMtMTIwLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jPTE0MD1zdGF0aWMgaW50IHhmcm02X2FoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYy0xNDctXFx0Zm9yX2VhY2hfcHJvdG9jb2xfcmN1KGFoNl9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jOjE0ODpcXHRcXHRpZiAoKHJldCA9IGhhbmRsZXItXFx1MDAzZWhhbmRsZXIoc2tiKSkgIT0gLUVJTlZBTClcXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTE0OS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYz0xNjk9c3RhdGljIGludCB4ZnJtNl9pcGNvbXBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTE3Ni1cXHRmb3JfZWFjaF9wcm90b2NvbF9yY3UoaXBjb21wNl9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jOjE3NzpcXHRcXHRpZiAoKHJldCA9IGhhbmRsZXItXFx1MDAzZWhhbmRsZXIoc2tiKSkgIT0gLUVJTlZBTClcXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTE3OC1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NTM1PWludCBfX2luaXQgc21jX2NkY19pbml0KHZvaWQpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy01MzktXFxubmV0L3NtYy9zbWNfY2RjLmM6NTQwOlxcdGZvciAoaGFuZGxlciA9IHNtY19jZGNfcnhfaGFuZGxlcnM7IGhhbmRsZXItXFx1MDAzZWhhbmRsZXI7IGhhbmRsZXIrKykge1xcbm5ldC9zbWMvc21jX2NkYy5jLTU0MS1cXHRcXHRJTklUX0hMSVNUX05PREUoXFx1MDAyNmhhbmRsZXItXFx1MDAzZWxpc3QpO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjM2ND1pbnQgX19pbml0IHNtY19sbGNfaW5pdCh2b2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM2OC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMzY5OlxcdGZvciAoaGFuZGxlciA9IHNtY19sbGNfcnhfaGFuZGxlcnM7IGhhbmRsZXItXFx1MDAzZWhhbmRsZXI7IGhhbmRsZXIrKykge1xcbm5ldC9zbWMvc21jX2xsYy5jLTIzNzAtXFx0XFx0SU5JVF9ITElTVF9OT0RFKFxcdTAwMjZoYW5kbGVyLVxcdTAwM2VsaXN0KTtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9NDMwPXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfd3JfcnhfZGVtdWx0aXBsZXgoc3RydWN0IGliX3djICp3YylcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtNDQ0LVxcdFxcdGlmIChoYW5kbGVyLVxcdTAwM2V0eXBlID09IHdyX3J4LVxcdTAwM2V0eXBlKVxcbm5ldC9zbWMvc21jX3dyLmM6NDQ1OlxcdFxcdFxcdGhhbmRsZXItXFx1MDAzZWhhbmRsZXIod2MsIHdyX3J4KTtcXG5uZXQvc21jL3NtY193ci5jLTQ0Ni1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA4OjU1LjI5OTU1NTQ1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDk5MzQ2MzQ4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBzbWNfd3JfcnhfZGVtdWx0aXBsZXhgIEZ1bmN0aW9uIENhbGwqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIHNob3dzIHRoYXQgYHNtY193cl9yeF9kZW11bHRpcGxleGAgaXMgY2FsbGluZyBgaGFuZGxlci1cdTAwM2VoYW5kbGVyKHdjLCB3cl9yeClgLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBoYW5kbGVyIHN0cnVjdHVyZS4gSXQncyBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiwgbGlrZWx5IHBhcnQgb2YgYSBicm9hZGVyIGRpc3BhdGNoIG1lY2hhbmlzbS4gVGhlIHBhcmFtZXRlcnMgYHdjYCBhbmQgYHdyX3J4YCBhcmUgdGhlIGludGVyZXN0aW5nIHBpZWNlcyBoZXJlLiBgd2NgIHByb2JhYmx5IHBvaW50cyB0byBzb21lIGtpbmQgb2Ygd29ya2luZyBjb250ZXh0IG9yIGNvbnRyb2wgc3RydWN0dXJlLCBhbmQgYHdyX3J4YCBzZWVtcyB0byBiZSB0aGUgcmVjZWl2ZWQgZGF0YSBpdHNlbGYuIE5vdywgbXkgbWFpbiBxdWVzdGlvbiBpcywgd2hvJ3MgYWN0dWFsbHkgKnVzaW5nKiB0aGlzIGBzbWNfd3JfcnhfZGVtdWx0aXBsZXhgIGZ1bmN0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgY2FsbGVycyB0byBmdWxseSBncm9rIHRoZSBpbnRlbnQgYW5kIHB1cnBvc2Ugb2YgdGhpcyBzcGVjaWZpYyBkZW11bHRpcGxleGluZyBzdGVwLiBJIG5lZWQgdGhlIGJpZyBwaWN0dXJlIHRvIGhhdmUgaXQgYWxsIG1ha2Ugc2Vuc2UuIFRpbWUgdG8gaW52ZXN0aWdhdGUgdGhlIGNhbGwgZ3JhcGghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzkwLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MTU6MzAuMjkzMDIyNjIyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQzNjQ4NjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY193cl9yeF9kZW11bHRpcGxleFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY193ci5jPTQwOD1pbnQgc21jX3dyX3J4X3JlZ2lzdGVyX2hhbmRsZXIoc3RydWN0IHNtY193cl9yeF9oYW5kbGVyICpoYW5kbGVyKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00MjktICovXFxubmV0L3NtYy9zbWNfd3IuYzo0MzA6c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9kZW11bHRpcGxleChzdHJ1Y3QgaWJfd2MgKndjKVxcbm5ldC9zbWMvc21jX3dyLmMtNDMxLXtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9NDQ5PXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzKHN0cnVjdCBpYl93YyB3Y1tdLCBpbnQgbnVtKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00NTgtXFx0XFx0XFx0bGluay1cXHUwMDNld3JfcnhfdHN0YW1wID0gamlmZmllcztcXG5uZXQvc21jL3NtY193ci5jOjQ1OTpcXHRcXHRcXHRzbWNfd3JfcnhfZGVtdWx0aXBsZXgoXFx1MDAyNndjW2ldKTtcXG5uZXQvc21jL3NtY193ci5jLTQ2MC1cXHRcXHRcXHRzbWNfd3JfcnhfcG9zdChsaW5rKTsgLyogcmVmaWxsIFdSIFJYICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjE1OjMyLjUzNjY3NjUyOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE1Njc5MzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIEZsb3c6IGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYCoqXG5cbkFscmlnaHQsIHNvIEkgc2VlIGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYCBpcyBjYWxsaW5nIGBzbWNfd3JfcnhfZGVtdWx0aXBsZXhgLiBOb3RoaW5nIGluaGVyZW50bHkgdW51c3VhbCB0aGVyZSwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gVGhpcyB1c3VhbGx5IG1lYW5zIHRyYWNpbmcgdGhlIGRhdGEgZmxvdy4gUmlnaHQgbm93LCBJJ20gdGhpbmtpbmcgSSBzaG91bGQgdW5kZXJzdGFuZCB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdobyBpcyBjYWxsaW5nICp0aGlzKiBmdW5jdGlvbiwgYHNtY193cl9yeF9wcm9jZXNzX2NxZXNgLiBVbmRlcnN0YW5kaW5nIGl0cyBlbnRyeSBwb2ludHMgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZSBsYXJnZXIgcGljdHVyZSBvZiBkYXRhIHByb2Nlc3Npbmcgb24gdGhpcyBzcGVjaWZpYyBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Mzc1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MTU6MzcuMDUyMzU5NjY5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc0MTUzMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY193cl9yeF9wcm9jZXNzX2NxZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfd3IuYz00MzA9c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9kZW11bHRpcGxleChzdHJ1Y3QgaWJfd2MgKndjKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00NDgtXFxubmV0L3NtYy9zbWNfd3IuYzo0NDk6c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9wcm9jZXNzX2NxZXMoc3RydWN0IGliX3djIHdjW10sIGludCBudW0pXFxubmV0L3NtYy9zbWNfd3IuYy00NTAte1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz00Nzk9c3RhdGljIHZvaWQgc21jX3dyX3J4X3Rhc2tsZXRfZm4oc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00OTctXFx0XFx0XFx0YnJlYWs7XFxubmV0L3NtYy9zbWNfd3IuYzo0OTg6XFx0XFx0c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhcXHUwMDI2d2NbMF0sIHJjKTtcXG5uZXQvc21jL3NtY193ci5jLTQ5OS1cXHR9IHdoaWxlIChyYyBcXHUwMDNlIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjoxNTozOS4zMjY1MTcxOTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU2Mjc2OTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYHNtY193cl9yeGAgVGFza2xldCoqXG5cbkFscmlnaHQsIHNvIHRoZSBgc21jX3dyX3J4X3Rhc2tsZXRfZm5gIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYHNtY193cl9yeF9wcm9jZXNzX2NxZXNgLiBUaGF0J3MgdGhlIGNvcmUgaW50ZXJhY3Rpb24sIG1ha2VzIHNlbnNlLiBOb3cgSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGlzIGVudGlyZSBwcm9jZXNzLiBUbyBlZmZlY3RpdmVseSB0cm91Ymxlc2hvb3Qgb3Igb3B0aW1pemUgdGhpcyBzZWN0aW9uLCB0aGUgY3J1Y2lhbCB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcywgd2hvIGludm9rZXMgYHNtY193cl9yeF90YXNrbGV0X2ZuYD8gV2hhdCdzIHRoZSBlbnRyeSBwb2ludD8gSXMgaXQgYSBoYXJkd2FyZSBpbnRlcnJ1cHQsIGEgdGltZXIsIG9yIGFub3RoZXIgc29mdHdhcmUgY29tcG9uZW50PyBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIGlzIGtleSB0byB0cmFjaW5nIHRoZSBkYXRhIHBhdGggYW5kIHBpbnBvaW50aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIExldCdzIGRlbHZlIGludG8gdGhhdCBjYWxsIGdyYXBoIGFuZCBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4NjIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjoxNTo0My44ODkyODk0MDFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTgzNzg3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX3dyX3J4X3Rhc2tsZXRfZm5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfd3IuYz00NDk9c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9wcm9jZXNzX2NxZXMoc3RydWN0IGliX3djIHdjW10sIGludCBudW0pXFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTQ3OC1cXG5uZXQvc21jL3NtY193ci5jOjQ3OTpzdGF0aWMgdm9pZCBzbWNfd3JfcnhfdGFza2xldF9mbihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxubmV0L3NtYy9zbWNfd3IuYy00ODAte1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz04MzU9dm9pZCBzbWNfd3JfYWRkX2RldihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXFxubmV0L3NtYy9zbWNfd3IuYy04MzYte1xcbm5ldC9zbWMvc21jX3dyLmM6ODM3OlxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VyZWN2X3Rhc2tsZXQsIHNtY193cl9yeF90YXNrbGV0X2ZuKTtcXG5uZXQvc21jL3NtY193ci5jLTgzOC1cXHR0YXNrbGV0X3NldHVwKFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlc2VuZF90YXNrbGV0LCBzbWNfd3JfdHhfdGFza2xldF9mbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjE1OjQ2LjEwNzY3MjY4OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjgxMDkxOTIzOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqVGFza2xldCBTY3J1dGlueSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gTXkgbWluZCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGlzIGBzbWNfd3JfcnhfdGFza2xldF9mbmAuIFRoZSBmdW5jdGlvbiBuYW1lIHNjcmVhbXMgXCJ0YXNrbGV0XCIgYXQgbWUsIGFuZCB0aGF0J3MgcHJlY2lzZWx5IHdoYXQgaXQgYXBwZWFycyB0byBiZS4gTXkgYnJhaW4ncyBhbHJlYWR5IG1ha2luZyBhc3NvY2lhdGlvbnMg4oCTIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLCBkZWZlcnJpbmcgd29yaywgbGlrZWx5IGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHQgY29udGV4dCBpc3N1ZXMsIHRoYXQga2luZCBvZiB0aGluZy4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIGNoYXJhY3RlcmlzdGljcyDigJMgcGVyaGFwcyBpdCdzIGEgYm90dG9tIGhhbGYgaGFuZGxlciBmb3Igc29tZSBraW5kIG9mIFJYIHBhdGggcmVsYXRlZCB0byBhbiBTTUMgb3IgQ0RDIGludGVyZmFjZSwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucy5cblxuTm93LCBteSBjdXJpb3NpdHkgaXMgcGlxdWVkLiBUaGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gd29uZGVyIHdoYXQgdGhlIGhlbGwgaXMgdGhlIHJvbGUgb2YgYHNtY2RfY2RjX3J4X3Rza2xldGAgaW4gdGhpcyBhcmNoaXRlY3R1cmUuIFdoeSBpcyB0aGlzIGZ1bmN0aW9uIG5vdCBuYW1lZCBgc21jZF93cl9yeF90YXNrbGV0X2ZuYCwgbGlrZSB0aGUgb3RoZXIgdGFza2xldD8gQXJlIHRoZXkgcmVsYXRlZD8gQXJlIHRoZXJlIGRpZmZlcmVudCBkYXRhIHBhdGhzIGludm9sdmVkPyBJcyB0aGlzIGEgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb24gdG8gaW5kaWNhdGUgYW4gYXN5bmNocm9ub3VzIHRyYW5zZmVyPyBBcmUgdGhlc2UgdHdvIHJlbGF0ZWQgb3IgaXMgYHNtY2RgIHNvbWV0aGluZyB0b3RhbGx5IGRpZmZlcmVudD8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIGxvY2F0aW9uLCBhbmQgdGhlIHVzZSBjYXNlcywgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGFyZSByZWxhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM4NiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjI0OjM0LjIxNjg2ODA5M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNTQzMTgwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNkX2NkY19yeF90c2tsZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NDQ0PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDU4LSAqL1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ1OTpzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ2MC17XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz00Nzk9dm9pZCBzbWNkX2NkY19yeF9pbml0KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jZGMuYy00ODAte1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ4MTpcXHR0YXNrbGV0X3NldHVwKFxcdTAwMjZjb25uLVxcdTAwM2VyeF90c2tsZXQsIHNtY2RfY2RjX3J4X3Rza2xldCk7XFxubmV0L3NtYy9zbWNfY2RjLmMtNDgyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MjQ6MzUuNjQyMzA3NjI1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzAxNDc4NTUwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBDREMgTW9kdWxlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBTTUMgQ0RDIGNvZGUsIGFuZCBpdCBzZWVtcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHRhc2tsZXQgaGVyZS4gUmlnaHQsIGdvdCBpdC4gTm93LCB3aGF0IGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cz8gTGV0J3Mgc2VlLi4uIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAsIGFuZCBgc21jX2NkY19hYm9ydF9jb25uYC4gR290IHRob3NlIGRvd24uIFxuXG5Ob3csIHdhaXQgYSBzZWNvbmQsIHRoZSBjb2RpbmcgZ3VpZGVsaW5lcyBhcmUgdGVsbGluZyB1cyBzb21ldGhpbmcgaW50ZXJlc3Rpbmc6IGF2b2lkIHRob3NlIHBlc2t5IGludGVybmFsLCBpbmxpbmVkIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGlmIHBvc3NpYmxlLCBhbmQgc3RpY2sgdG8gbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIGlmIHdlIGNhbi4gVGhvc2UgaW50ZXJuYWwgaGVscGVycyBkb24ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIGNvbXBsaWNhdGVzIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMuIFNvLCB0aGF0J3Mgd2hhdCB3ZSdsbCBkby4gV2Ugd2lsbCBodW50IHRocm91Z2ggYG5ldC9zbWMvc21jX2NkYy5jYCBhbmQgdHJ5IHRvIGlkZW50aWZ5IHRob3NlIHByZWZlcmFibGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRoYXQncyB0aGUgd2F5IHRvIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTk1MCwiT3V0cHV0VG9rZW5zIjo2NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjoyNjozOC42NTcwOTYxNDZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTEzODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHNtY19jZGNfW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTI2PXN0YXRpYyB2b2lkIHNtY19jZGNfdHhfaGFuZGxlcihzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqcG5kX3NuZCxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTcyLVxcbm5ldC9zbWMvc21jX2NkYy5jOjczOmludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9zbWMvc21jX2NkYy5jLTc0LVxcdFxcdFxcdCAgc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9OTQ9c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfYWRkX3BlbmRpbmdfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy0xMTEtXFxubmV0L3NtYy9zbWNfY2RjLmM6MTEyOmludCBzbWNfY2RjX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcXG5uZXQvc21jL3NtY19jZGMuYy0xMTMtXFx0XFx0ICAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqd3JfYnVmLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9MTc0PXN0YXRpYyBpbnQgc21jcl9jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTIwOC1cXG5uZXQvc21jL3NtY19jZGMuYzoyMDk6aW50IHNtY19jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jZGMuYy0yMTAte1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMjI3LVxcbm5ldC9zbWMvc21jX2NkYy5jOjIyODp2b2lkIHNtY19jZGNfd2FpdF9wZW5kX3R4X3dyKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jZGMuYy0yMjkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjoyNjozOC43MDA2MTM2NzNaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2OTA0MTE2ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBuZXQvc21jL3NtY19jZGMuY2AgLSBIdW50aW5nIGZvciBEeW5hbWljIEJlaGF2aW9yKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBsZXQncyBkcmlsbCBkb3duIGludG8gYG5ldC9zbWMvc21jX2NkYy5jYC4gV2UncmUgZGVhbGluZyB3aXRoIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgYW5kIHRoZSBDREMgKENvbnRyb2wgRGF0YSBDaGFubmVsKSBzcGVjaWZpY2FsbHksIGFuZCBJIHdhbnQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkeW5hbWljIGFzcGVjdHMgb2YgdGhpcyBjb2RlLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgdGhlaXIgbmF0dXJlLCBwcmVkaWN0YWJsZS4gSSdtIGFmdGVyIHRoZSBwYXJ0cyB0aGF0ICpjaGFuZ2UqLCB0aGF0IHJlYWN0IHRvIGlucHV0LCB0aGF0IG9yY2hlc3RyYXRlIHByb2Nlc3NlcywgdGhlIG1lYXQgYW5kIHBvdGF0b2VzIG9mIHRoZSBkYXRhIGZsb3cuIEZpbmRpbmcgdGhlc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMgaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIGJpdHMgbGl2ZSAtIHdoZXJlIHRoZSByZWFsIG9wdGltaXphdGlvbnMgY2FuIGJlIGZvdW5kLCB3aGVyZSB0aGUgZWRnZSBjYXNlcyBsdXJrLCBhbmQgd2hlcmUgSSBjYW4gZ2FpbiBkZWVwZXIgdW5kZXJzdGFuZGluZyB0byBpbXByb3ZlIHRoZSBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIG15IFwiZ29sZGVuIG51Z2dldHMuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6MTY3ODgsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozMjowNS42MDQ3MzM0NzVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTI4NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHNtY2RfY2RjX1thLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL3NtY19jZGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0yMjg9dm9pZCBzbWNfY2RjX3dhaXRfcGVuZF90eF93cihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy0yMzYtICovXFxubmV0L3NtYy9zbWNfY2RjLmM6MjM3OmludCBzbWNkX2NkY19tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtMjM4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQ1OT1zdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDc4LSAqL1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ3OTp2b2lkIHNtY2RfY2RjX3J4X2luaXQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ4MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjMyOjA1LjY0NzI2NzkzMloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjk0MzM5NzIxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbiBmb3IgU01DIFJYIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZm9jdXMgc3ltYm9scyBmb3IgdGhpcyBTTUMgUlggcGF0aCBhbmFseXNpcy4gSW5pdGlhbGx5LCBJIG5vdGljZWQgdGhhdCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSB3cmlua2xlIHNpbmNlIGl0J3MgY2FsbGVkIGZyb20gb3RoZXIgZnVuY3Rpb25zIGFsc28gd2l0aGluIHRoZSBgc3RhdGljYCBjb250ZXh0LCBuYW1lbHkgYHNtY19jZGNfbXNnX3JlY3ZgIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGJ5IGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gR2l2ZW4gdGhleSBhcmUgYWxsIGBzdGF0aWNgLCBpZGVudGlmeWluZyBhcHByb3ByaWF0ZSBmb2N1cyBzeW1ib2xzIHJlcXVpcmVzIG1vcmUgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgbWlnaHQgbm90IGJlIGlubGluZWQgYmVjYXVzZSBpdCBzZWVtcyBxdWl0ZSBzaXphYmxlLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBUbyBjaGVjayB0aGF0LCBJJ2xsIGxpc3QgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBhbmQgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCwgc2luY2UgdmFsaWRhdGlvbiBpcyBhIG5hdHVyYWwgY29tcGFuaW9uLiBJdCBzZWVtcyBsaWtlIGEgdmFsaWQgZnVuY3Rpb24gaW4gaXRzIG93biByaWdodCwgc28gaXQncyBwcm9iYWJseSB3b3J0aCBpbmNsdWRpbmcgYW5kIGFuYWx5emluZyBtb3JlIGNsb3NlbHkuXG5cbkhvd2V2ZXIsIEkgdGhpbmsgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBpdHNlbGYgaXMgYSByZWFsbHkgc3Ryb25nIGNhbmRpZGF0ZSwgc28gSSdtIGdvaW5nIHRvIGluY2x1ZGUgdGhhdCBvbmUuIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBzbWNfY2RjX3J4X2hhbmRsZXJgIGFuZCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhcmUgYWxzbyBvbiB0aGUgbGlzdC5cblxuTm93LCBsZXQgbWUgbWFrZSBzdXJlIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBSWCBwYXRoIHRoYXQgSSdtIG92ZXJsb29raW5nLiBBaCwgaGVyZSdzIGBzbWNfcnhfcmVjdm1zZ2AuIFRoYXQncyBub24tc3RhdGljLCBidXQgaXQgc2VlbXMgbGlrZSBhIGhvdC1wYXRoIGZ1bmN0aW9uLCBhIGdlbmVyaWMgb25lIGF0IHRoYXQuIFwiQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMsXCIgdGhlIGNvbW1lbnQgcmVhZHMuIFNvIEknbGwgcHJvYmFibHkgc3RheSBhd2F5IGZyb20gdGhhdCwgZ2l2ZW4gdGhhdCBpdCdzIHRoZSBTTUMgZXF1aXZhbGVudCBvZiB0aGUgYHJlY3Ztc2dgIHN5c2NhbGwuIFRoZSBgc21jX2NkY19yeF9oYW5kbGVyYCBhbmQgYHNtY2RfY2RjX3J4X3Rza2xldGAgZnVuY3Rpb25zIGFyZSBiZXR0ZXIgY2FuZGlkYXRlcywgZm9jdXNpbmcgbW9yZSBvbiB0aGUgc3BlY2lmaWMgU01DLUNEQyBsb2dpYy5cblxuT25lIG1vcmUgY29uc2lkZXJhdGlvbjogYHNtY19jZGNfYWJvcnRfY29ubmAuIEl0J3MgYHN0YXRpY2AsIGJ1dCBpdCdzIGNsZWFybHkgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBwYXRjaCwgc28gaXQncyBpbXBvcnRhbnQgdGhhdCBpdCdzIGluY2x1ZGVkIGFzIHdlbGwuXG5cblRoZXJlZm9yZSwgZm9yIHRoZSBsaXN0IG9mIEZvY3VzU3ltYm9scyBJJ20gZ29pbmcgd2l0aDogIGBzbWNfY2RjX2Fib3J0X2Nvbm5gLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBhbmQgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYC5cblxuSnVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLCBsZXQgbWUgZG91YmxlIGNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcy4gSXQgc2F5cyBgU01DYCBkZXBlbmRzIG9uIGBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gV2FpdCwgYERJQlNgPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBgRElCU2AgaW4gYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gQnV0IGlzIHRoYXQgZXZlbiB1cHN0cmVhbT8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYG5ldC9zbWMvS2NvbmZpZ2AgZmlsZSBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczMDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MTUuMDgxMjQyODdaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNTM0MDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG5uZXQvc21jL0tjb25maWctNS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM5OjE1LjE1NDc3OTk5NVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQ5MTQ5NTc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIENvbmZpZ3VyYXRpb24gZm9yIFNNQyBDREMgUHJvdG9jb2wgVmlvbGF0aW9uIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNvbWUgaW50ZXJlc3RpbmcgY2hhbmdlcyByZWxhdGVkIHRvIGhhbmRsaW5nIFNNQyBDREMgcHJvdG9jb2wgdmlvbGF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgZnV6emVyIGNvbmZpZyByZWFsbHkgZGVwZW5kcyBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYC4gV2FpdCwgd2hhdCdzIGBESUJTYD8gTGV0IG1lIGxvb2sgdGhhdCB1cCByZWFsIHF1aWNrLiBPa2F5LCBnb3QgaXQuIExvb2tzIGxpa2Ugc29tZXRoaW5nIHJlbGV2YW50IHRvIHRoaXMsIGFuZCBwcm9iYWJseSBhZGRlZCByZWNlbnRseSwgc28gSSdsbCBpbmNsdWRlIGl0LiBXaGlsZSBgSU5FVGAgaXMgZ2VuZXJhbGx5IGVuYWJsZWQsIEknbGwgZXhwbGljaXRseSBsaXN0IHRoZSBvdGhlcnMuIFNvLCBteSBpbml0aWFsIGBFbmFibGVDb25maWdzYCBpcyBgW1wiU01DXCIsIFwiSU5GSU5JQkFORFwiLCBcIkRJQlNcIl1gLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncy4gYFNNQ19ESUFHYD8gTmFoLiBgU01DX0hTX0NUUkxfQlBGYD8gRG9lc24ndCBzZWVtIHJlbGF0ZWQuXG5cbk9rYXksIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCBzZWVtcyB0aGF0IHRoaXMgcGF0Y2ggZGVmaW5lcyBhIG5ldyBmdW5jdGlvbiwgYHNtY19jZGNfYWJvcnRfY29ubmAuIFRoaXMgZnVuY3Rpb24gZXNzZW50aWFsbHkgZHJvcHMgdGhlIGNvbm5lY3Rpb24gdXBvbiBwcm90b2NvbCB2aW9sYXRpb24uIExvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSwgSSBzZWUgdGhhdCBib3RoIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgbm93IGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbiB0aGV5IGRldGVjdCBlaXRoZXIgYW4gaW52YWxpZCBzZXF1ZW5jZSBudW1iZXIgb3IgYSBwcm9kdWN0aW9uIGRpZmZlcmVuY2UuXG5cblRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIG5ldyB3YXkgdG8gaGFuZGxlIGEgc3BlY2lmaWMgZXJyb3IgY29uZGl0aW9uLiBTaW5jZSB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5ldHdvcmssIGZ1enppbmcgdGhpcyBpcyBjcnVjaWFsIHRvIGd1YXJhbnRlZSBjb3JyZWN0IGJlaGF2aW9yIHdpdGggcG90ZW50aWFsbHkgbWFsZm9ybWVkIG5ldHdvcmsgdHJhZmZpYy5cblxuVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmUgYXJlIGRlZmluaXRlbHkgYHNtY19jZGNfYWJvcnRfY29ubmAsIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLiBMZXQncyBjb25maXJtIHRoYXQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBpcyBub3QgaW5saW5lZC4gSXQgc2VlbXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgcHJvYmFibHkgaXNuJ3QgaW5saW5lZC4gYHNtY19jZGNfYWJvcnRfY29ubmAgaXMgbm90IGlubGluZSBlaXRoZXIuIGBzbWNfY2RjX21zZ19yZWN2YCBpcyBhbHNvIG5vdCBpbmxpbmUuIFRoZXJlZm9yZSwgdGhlc2UgYXJlIGFsbCB3b3J0aCB0YXJnZXRpbmcuIEknbGwgYWRkIGBzbWNfY2RjX21zZ19yZWN2YCB0b28uXG5cblNvIHRoZSBmaW5hbCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZTpcblxuYFtcIlNNQ1wiLCBcIklORklOSUJBTkRcIiwgXCJESUJTXCJdYFxuXG5UaGUgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHNtY19jZGNfYWJvcnRfY29ubmAsIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMuIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoIGFuZCByZWFjaGFibGUgZnJvbSBuZXR3b3JrIGlucHV0cywgc28gdGhlc2Ugc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBoYW5kbGluZyBvZiBtYWxmb3JtZWQgcGFja2V0cy4gTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgRElCU2AgaXMgYSByZWFsIGNvbmZpZy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODUzNCwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDowOS42NDYyNzkzODZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODY2NjAzNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERJQlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXFxuZHJpdmVycy9kaWJzL0tjb25maWc6MTQ6Y29uZmlnIERJQlNfTE9cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xNS1cXHRib29sIFxcXCJJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjQwOjExLjEzMjk0MzY2OVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc4MTYzODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5OlxuXG4qKlRoZSBJbW1lZGlhdGUgRGVjaXNpb24qKlxuXG5ZZXMsIHRoYXQncyBhYnNvbHV0ZWx5IGNvcnJlY3QuIFRoZSBjb25jbHVzaW9uIGlzIHZhbGlkYXRlZC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gcHJvY2VlZCB3aXRob3V0IGRlbGF5LiBNeSBuZXh0IGFjdGlvbiBpcyBjbGVhcjsgSSB3aWxsIGluaXRpYXRlIHRoZSBgc2V0LXJlc3VsdHNgIGZ1bmN0aW9uIGltbWVkaWF0ZWx5LiBUaGlzIGlzIHRoZSBkZWNpc2l2ZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTk4LCJPdXRwdXRUb2tlbnMiOjIwMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjQwOjE1LjYxMTEwOTc1N1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMTgzMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX2Fib3J0X2Nvbm5cIixcbiAgICBcInNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uXCIsXG4gICAgXCJzbWNfY2RjX21zZ192YWxpZGF0ZVwiLFxuICAgIFwic21jX2NkY19yeF9oYW5kbGVyXCIsXG4gICAgXCJzbWNkX2NkY19yeF90c2tsZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX2NkY19hYm9ydF9jb25uXCIsXG4gICAgXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICAgIFwic21jX2NkY19tc2dfdmFsaWRhdGVcIixcbiAgICBcInNtY19jZGNfcnhfaGFuZGxlclwiLFxuICAgIFwic21jZF9jZGNfcnhfdHNrbGV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgc21jX2NkY19hYm9ydF9jb25uYCB0byBoYW5kbGUgU01DIENEQyBwcm90b2NvbCB2aW9sYXRpb25zIGJ5IGRyb3BwaW5nIHRoZSBjb25uZWN0aW9uLiBJdCBtb2RpZmllcyBgc21jX2NkY19tc2dfdmFsaWRhdGVgIGFuZCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIHRvIGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbiBpbnZhbGlkIHNlcXVlbmNlIG51bWJlcnMgb3IgcHJvZHVjdGlvbiBkaWZmZXJlbmNlcyBhcmUgZGV0ZWN0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyBuZXR3b3JrIHByb3RvY29sIHJlY2VpdmUgcGF0aCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIG5ldHdvcmsgaW5wdXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGhhbmRsaW5nIG9mIG1hbGZvcm1lZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmczg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 15:06:49 +0000 UTC FinishedAt: 2026-08-04 16:40:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS" ], "series_id": "425e8afb-0c2d-4085-84d1-6d32d3309c4b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_cdc_abort_conn", "smc_cdc_msg_recv_action", "smc_cdc_msg_validate", "smc_cdc_rx_handler", "smcd_cdc_rx_tsklet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NDltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX2NkY19hYm9ydF9jb25uJiMzNDssCiAgICAmIzM0O3NtY19jZGNfbXNnX3JlY3ZfYWN0aW9uJiMzNDssCiAgICAmIzM0O3NtY19jZGNfbXNnX3ZhbGlkYXRlJiMzNDssCiAgICAmIzM0O3NtY19jZGNfcnhfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgc21jX2NkY19hYm9ydF9jb25uYCB0byBoYW5kbGUgU01DIENEQyBwcm90b2NvbCB2aW9sYXRpb25zIGJ5IGRyb3BwaW5nIHRoZSBjb25uZWN0aW9uLiBJdCBtb2RpZmllcyBgc21jX2NkY19tc2dfdmFsaWRhdGVgIGFuZCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIHRvIGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbiBpbnZhbGlkIHNlcXVlbmNlIG51bWJlcnMgb3IgcHJvZHVjdGlvbiBkaWZmZXJlbmNlcyBhcmUgZGV0ZWN0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyBuZXR3b3JrIHByb3RvY29sIHJlY2VpdmUgcGF0aCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIG5ldHdvcmsgaW5wdXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGhhbmRsaW5nIG9mIG1hbGZvcm1lZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjNiNjkxMTc0YzkwMjQ5NGE4ZjNmYzQ3MTU4M2ZkYjljNWQyZTZiMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTU6NTA6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmMgYi9uZXQvc21jL3NtY19jZGMuY1xuaW5kZXggMzJkNmQwM2RmMzIxNC4uZDhmNzQ3YmJjNmY2OSAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX2NkYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jZGMuY1xuQEAgLTMwNSw2ICYjNDM7MzA1LDI3IEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfaGFuZGxlX3VyZ19kYXRhX2Fycml2YWwoc3RydWN0IHNtY19zb2NrICpzbWMsXG4gXHRza19zZW5kX3NpZ3VyZyhcdTAwMjZzbWMtXHUwMDNlc2spO1xuIH1cbiBcbiYjNDM7LyogRHJvcCBhIGNvbm5lY3Rpb24gd2hvc2UgcGVlciB2aW9sYXRlZCB0aGUgQ0RDIHByb3RvY29sLiAgQGxpbmsgaXMgdGhlIGxpbmtcbiYjNDM7ICogdGhlIG9mZmVuZGluZyBtZXNzYWdlIGFycml2ZWQgb24sIG9yIE5VTEwgd2hlbiBpdCBpcyBub3Qga25vd24gdG8gdGhlIGNhbGxlclxuJiM0MzsgKiAoU01DLUQsIGFuZCB0aGUgc2hhcmVkIHJlY2VpdmUgcGF0aCkuICBXaGVuIEBsaW5rIGlzIE5VTEwgY29ubi1cdTAwM2VsbmsgaXMgbGVmdFxuJiM0MzsgKiB1bmNoYW5nZWQ6IGZvciBTTUMtUiBpdCBhbHJlYWR5IHBvaW50cyB0byB0aGUgcmlnaHQgUVA7IGZvciBTTUMtRCB0aGVyZSBpc1xuJiM0MzsgKiBubyBwZXItbGluayBRUCB0byBhYm9ydCBvbi5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHNtY19jZGNfYWJvcnRfY29ubihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19saW5rICpsaW5rKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gXHUwMDI2c21jLVx1MDAzZWNvbm47XG4mIzQzO1xuJiM0MztcdGNvbm4tXHUwMDNlb3V0X29mX3N5bmMgPSAxOyAgLyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqL1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXNlbmRfbG9jayk7XG4mIzQzO1x0Y29ubi1cdTAwM2Vsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTtcbiYjNDM7XHRpZiAobGluaylcbiYjNDM7XHRcdGNvbm4tXHUwMDNlbG5rID0gbGluaztcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXNlbmRfbG9jayk7XG4mIzQzO1x0c29ja19ob2xkKFx1MDAyNnNtYy1cdTAwM2Vzayk7IC8qIHNvY2tfcHV0IGluIGFib3J0X3dvcmsgKi9cbiYjNDM7XHRpZiAoIXF1ZXVlX3dvcmsoc21jX2Nsb3NlX3dxLCBcdTAwMjZjb25uLVx1MDAzZWFib3J0X3dvcmspKVxuJiM0MztcdFx0c29ja19wdXQoXHUwMDI2c21jLVx1MDAzZXNrKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXG4gXHRcdFx0XHQgc3RydWN0IHNtY19saW5rICpsaW5rKVxuIHtcbkBAIC0zMTQsMTcgJiM0MzszMzUsOCBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXG4gXG4gXHQvKiBjaGVjayB0aGF0IHNlcW51bSB3YXMgc2VlbiBiZWZvcmUgKi9cbiBcdGRpZmYgPSBjb25uLVx1MDAzZWxvY2FsX3J4X2N0cmwuc2Vxbm8gLSByZWN2X3NlcTtcbi1cdGlmIChkaWZmIFx1MDAzYyAwKSB7IC8qIGRpZmYgbGFyZ2VyIHRoYW4gMHg3ZmZmICovXG4tXHRcdC8qIGRyb3AgY29ubmVjdGlvbiAqL1xuLVx0XHRjb25uLVx1MDAzZW91dF9vZl9zeW5jID0gMTtcdC8qIHByZXZlbnQgYW55IGZ1cnRoZXIgcmVjZWl2ZXMgKi9cbi1cdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlc2VuZF9sb2NrKTtcbi1cdFx0Y29ubi1cdTAwM2Vsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTtcbi1cdFx0Y29ubi1cdTAwM2VsbmsgPSBsaW5rO1xuLVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXNlbmRfbG9jayk7XG4tXHRcdHNvY2tfaG9sZChcdTAwMjZzbWMtXHUwMDNlc2spOyAvKiBzb2NrX3B1dCBpbiBhYm9ydF93b3JrICovXG4tXHRcdGlmICghcXVldWVfd29yayhzbWNfY2xvc2Vfd3EsIFx1MDAyNmNvbm4tXHUwMDNlYWJvcnRfd29yaykpXG4tXHRcdFx0c29ja19wdXQoXHUwMDI2c21jLVx1MDAzZXNrKTtcbi1cdH1cbiYjNDM7XHRpZiAoZGlmZiBcdTAwM2MgMCkgLyogZGlmZiBsYXJnZXIgdGhhbiAweDdmZmYgKi9cbiYjNDM7XHRcdHNtY19jZGNfYWJvcnRfY29ubihzbWMsIGxpbmspOyAgLyogZHJvcCBjb25uZWN0aW9uICovXG4gfVxuIFxuIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxuQEAgLTM3Niw2ICYjNDM7Mzg4LDExIEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxuIFx0ZGlmZl9wcm9kID0gc21jX2N1cnNfZGlmZihjb25uLVx1MDAzZXJtYl9kZXNjLVx1MDAzZWxlbiwgXHUwMDI2cHJvZF9vbGQsXG4gXHRcdFx0XHQgIFx1MDAyNmNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybC5wcm9kKTtcbiBcdGlmIChkaWZmX3Byb2QpIHtcbiYjNDM7XHRcdGlmIChkaWZmX3Byb2QgXHUwMDNlIGNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlbGVuIC1cbiYjNDM7XHRcdFx0XHRhdG9taWNfcmVhZChcdTAwMjZjb25uLVx1MDAzZWJ5dGVzX3RvX3JjdikpIHtcbiYjNDM7XHRcdFx0c21jX2NkY19hYm9ydF9jb25uKHNtYywgTlVMTCk7XG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKGNvbm4tXHUwMDNlbG9jYWxfcnhfY3RybC5wcm9kX2ZsYWdzLnVyZ19kYXRhX3ByZXNlbnQpXG4gXHRcdFx0c21jX2NkY19oYW5kbGVfdXJnX2RhdGFfYXJyaXZhbChzbWMsIFx1MDAyNmRpZmZfcHJvZCk7XG4gXHRcdC8qIGJ5dGVzX3RvX3JjdiBpcyBkZWNyZWFzZWQgaW4gc21jX3JlY3Ztc2cgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX2Fib3J0X2Nvbm4mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfdmFsaWRhdGUmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3NtY2RfY2RjX3J4X3Rza2xldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmM2I2OTExNzRjOTAyNDk0YThmM2ZjNDcxNTgzZmRiOWM1ZDJlNmIxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxNTo1MDo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NkYy5jIGIvbmV0L3NtYy9zbWNfY2RjLmMKaW5kZXggMzJkNmQwM2RmMzIxNC4uZDhmNzQ3YmJjNmY2OSAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfY2RjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfY2RjLmMKQEAgLTMwNSw2ICYjNDM7MzA1LDI3IEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfaGFuZGxlX3VyZ19kYXRhX2Fycml2YWwoc3RydWN0IHNtY19zb2NrICpzbWMsCiAJc2tfc2VuZF9zaWd1cmcoJmFtcDtzbWMtJmd0O3NrKTsKIH0KIAomIzQzOy8qIERyb3AgYSBjb25uZWN0aW9uIHdob3NlIHBlZXIgdmlvbGF0ZWQgdGhlIENEQyBwcm90b2NvbC4gIEBsaW5rIGlzIHRoZSBsaW5rCiYjNDM7ICogdGhlIG9mZmVuZGluZyBtZXNzYWdlIGFycml2ZWQgb24sIG9yIE5VTEwgd2hlbiBpdCBpcyBub3Qga25vd24gdG8gdGhlIGNhbGxlcgomIzQzOyAqIChTTUMtRCwgYW5kIHRoZSBzaGFyZWQgcmVjZWl2ZSBwYXRoKS4gIFdoZW4gQGxpbmsgaXMgTlVMTCBjb25uLSZndDtsbmsgaXMgbGVmdAomIzQzOyAqIHVuY2hhbmdlZDogZm9yIFNNQy1SIGl0IGFscmVhZHkgcG9pbnRzIHRvIHRoZSByaWdodCBRUDsgZm9yIFNNQy1EIHRoZXJlIGlzCiYjNDM7ICogbm8gcGVyLWxpbmsgUVAgdG8gYWJvcnQgb24uCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgc21jX2NkY19hYm9ydF9jb25uKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSAmYW1wO3NtYy0mZ3Q7Y29ubjsKJiM0MzsKJiM0MzsJY29ubi0mZ3Q7b3V0X29mX3N5bmMgPSAxOyAgLyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqLwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjb25uLSZndDtzZW5kX2xvY2spOwomIzQzOwljb25uLSZndDtsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTsKJiM0MzsJaWYgKGxpbmspCiYjNDM7CQljb25uLSZndDtsbmsgPSBsaW5rOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2Nvbm4tJmd0O3NlbmRfbG9jayk7CiYjNDM7CXNvY2tfaG9sZCgmYW1wO3NtYy0mZ3Q7c2spOyAvKiBzb2NrX3B1dCBpbiBhYm9ydF93b3JrICovCiYjNDM7CWlmICghcXVldWVfd29yayhzbWNfY2xvc2Vfd3EsICZhbXA7Y29ubi0mZ3Q7YWJvcnRfd29yaykpCiYjNDM7CQlzb2NrX3B1dCgmYW1wO3NtYy0mZ3Q7c2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYywKIAkJCQkgc3RydWN0IHNtY19saW5rICpsaW5rKQogewpAQCAtMzE0LDE3ICYjNDM7MzM1LDggQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLAogCiAJLyogY2hlY2sgdGhhdCBzZXFudW0gd2FzIHNlZW4gYmVmb3JlICovCiAJZGlmZiA9IGNvbm4tJmd0O2xvY2FsX3J4X2N0cmwuc2Vxbm8gLSByZWN2X3NlcTsKLQlpZiAoZGlmZiAmbHQ7IDApIHsgLyogZGlmZiBsYXJnZXIgdGhhbiAweDdmZmYgKi8KLQkJLyogZHJvcCBjb25uZWN0aW9uICovCi0JCWNvbm4tJmd0O291dF9vZl9zeW5jID0gMTsJLyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqLwotCQlzcGluX2xvY2tfYmgoJmFtcDtjb25uLSZndDtzZW5kX2xvY2spOwotCQljb25uLSZndDtsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTsKLQkJY29ubi0mZ3Q7bG5rID0gbGluazsKLQkJc3Bpbl91bmxvY2tfYmgoJmFtcDtjb25uLSZndDtzZW5kX2xvY2spOwotCQlzb2NrX2hvbGQoJmFtcDtzbWMtJmd0O3NrKTsgLyogc29ja19wdXQgaW4gYWJvcnRfd29yayAqLwotCQlpZiAoIXF1ZXVlX3dvcmsoc21jX2Nsb3NlX3dxLCAmYW1wO2Nvbm4tJmd0O2Fib3J0X3dvcmspKQotCQkJc29ja19wdXQoJmFtcDtzbWMtJmd0O3NrKTsKLQl9CiYjNDM7CWlmIChkaWZmICZsdDsgMCkgLyogZGlmZiBsYXJnZXIgdGhhbiAweDdmZmYgKi8KJiM0MzsJCXNtY19jZGNfYWJvcnRfY29ubihzbWMsIGxpbmspOyAgLyogZHJvcCBjb25uZWN0aW9uICovCiB9CiAKIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLApAQCAtMzc2LDYgJiM0MzszODgsMTEgQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsCiAJZGlmZl9wcm9kID0gc21jX2N1cnNfZGlmZihjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuLCAmYW1wO3Byb2Rfb2xkLAogCQkJCSAgJmFtcDtjb25uLSZndDtsb2NhbF9yeF9jdHJsLnByb2QpOwogCWlmIChkaWZmX3Byb2QpIHsKJiM0MzsJCWlmIChkaWZmX3Byb2QgJmd0OyBjb25uLSZndDtybWJfZGVzYy0mZ3Q7bGVuIC0KJiM0MzsJCQkJYXRvbWljX3JlYWQoJmFtcDtjb25uLSZndDtieXRlc190b19yY3YpKSB7CiYjNDM7CQkJc21jX2NkY19hYm9ydF9jb25uKHNtYywgTlVMTCk7CiYjNDM7CQkJcmV0dXJuOwomIzQzOwkJfQogCQlpZiAoY29ubi0mZ3Q7bG9jYWxfcnhfY3RybC5wcm9kX2ZsYWdzLnVyZ19kYXRhX3ByZXNlbnQpCiAJCQlzbWNfY2RjX2hhbmRsZV91cmdfZGF0YV9hcnJpdmFsKHNtYywgJmFtcDtkaWZmX3Byb2QpOwogCQkvKiBieXRlc190b19yY3YgaXMgZGVjcmVhc2VkIGluIHNtY19yZWN2bXNnICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIGZvciBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIChTTUMpKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgbmV0L3NtYy9zbWNfY2RjLmNgLCByaWdodD8gVGhlIGtleSBoZXJlIGlzIHRoaXMgbmV3IGBzbWNfY2RjX2Fib3J0X2Nvbm5gIGZ1bmN0aW9uLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBmb3JjZWZ1bGx5IHRlcm1pbmF0ZSBhIGNvbm5lY3Rpb24gaWYgdGhlIG90aGVyIGVuZCBpcyBtaXNiZWhhdmluZyBhbmQgdmlvbGF0aW5nIHRoZSBDREMgcHJvdG9jb2wuIEdvb2QsIGEgZGVkaWNhdGVkIGZ1bmN0aW9uIGZvciBjb25uZWN0aW9uIHRlYXJkb3duLCBtYWtlcyB0aGUgY29kZSBjbGVhbmVyIGFuZCBlYXNpZXIgdG8gcmVhc29uIGFib3V0LgoKTm93LCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlZmFjdG9yZWQgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCwgcHVsbGluZyBvdXQgYW4gaW5saW5lIGJsb2NrIGFuZCByZXBsYWNpbmcgaXQgd2l0aCBhIGNhbGwgdG8gYHNtY19jZGNfYWJvcnRfY29ubmAuIFNtYXJ0LCByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uIGFuZCBpbXByb3ZpbmcgbWFpbnRhaW5hYmlsaXR5IOKAkyBhbHdheXMgYSBnb29kIHRoaW5nLiBUaGV5JiMzOTt2ZSBhbHNvIGFkZGVkIGEgY2hlY2sgd2l0aGluIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdGhhdCB3aWxsIHRyaWdnZXIgYHNtY19jZGNfYWJvcnRfY29ubmAgaWYgYGRpZmZfcHJvZGAgZXhjZWVkcyBhIGNhbGN1bGF0ZWQgdGhyZXNob2xkIHJlbGF0ZWQgdG8gcmVjZWl2ZWQgYnl0ZXMuIFRoaXMgcHJvYmFibHkgZGVhbHMgd2l0aCBzb21lIHNvcnQgb2YgYnVmZmVyIG92ZXJydW4gb3IgcHJvdG9jb2wgdmlvbGF0aW9uIGR1cmluZyBtZXNzYWdlIHJlY2VwdGlvbi4gVGhpcyB3YXJyYW50cyBhIG1vcmUgZGV0YWlsZWQgbG9vay4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBzaG91bGQgY29uZmlybSBJJiMzOTttIHdvcmtpbmcgd2l0aCB0aGUgU01DIGNvZGUsIG9yIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgYXMgYSByZWZyZXNoZXIuIFRoZSBuZXh0IHN0ZXAgaXMgYSBxdWljayBjaGVjayBvZiBgbmV0L3NtYy9zbWNfY2RjLmNgIGl0c2VsZiBhbmQgdGhlIEtjb25maWcgZm9yIFNNQywgbG9va2luZyBmb3IgdGhlIGBDT05GSUdfU01DYCBzeW1ib2wsIGp1c3QgdG8gZW5zdXJlIHRoYXQgdGhlIHByb3BlciBjb25maWd1cmF0aW9ucyBhcmUgc2V0IHVwLgoKVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQgb2YgdGhlc2UgY2hhbmdlcy4gSSYjMzk7bGwgZm9jdXMgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZDogYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCBhbmQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYC4KClRvIGdldCBhIGJldHRlciBwaWN0dXJlLCBJJiMzOTtsbCB1c2UgYGdpdCBncmVwYCB0byBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhvc2UgZnVuY3Rpb25zLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGltcGFjdCBvZiB0aGUgcGF0Y2ggYW5kIGhvdyB0aGVzZSBtb2RpZmljYXRpb25zIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgU01DIENEQyBpbXBsZW1lbnRhdGlvbi4gSSB3aWxsIG5lZWQgdG8gbG9vayBpbnRvIGBkaWZmX3Byb2RgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgd2hhdCBpcyBnb2luZyBvbiBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19jZGNfbXNnX3JlY3ZfYWN0aW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTMyOT1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMzQxLVxubmV0L3NtYy9zbWNfY2RjLmM6MzQyOnN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9zbWNfY2RjLmMtMzQzLVx0XHRcdFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTQ0ND1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbi0tXG5uZXQvc21jL3NtY19jZGMuYy00NDctXHRiaF9sb2NrX3NvY2soXHUwMDI2c21jLVx1MDAzZXNrKTtcbm5ldC9zbWMvc21jX2NkYy5jOjQ0ODpcdHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHNtYywgY2RjKTtcbm5ldC9zbWMvc21jX2NkYy5jLTQ0OS1cdGJoX3VubG9ja19zb2NrKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG4tLVxubmV0L3NtYy9zbWNfcnguYy0yOS0vKiBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0byB3YWtldXAgY29uc3VtZXJzIGJsb2NrZWQgd2l0aCBzbWNfcnhfd2FpdCgpLlxubmV0L3NtYy9zbWNfcnguYzozMDogKiBpbmRpcmVjdGx5IGNhbGxlZCBieSBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpLlxubmV0L3NtYy9zbWNfcnguYy0zMS0gKi9cbi0tXG5uZXQvc21jL3NtY19yeC5jPTM1Mj1pbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM5OC1cdFx0aWYgKHNrLVx1MDAzZXNrX3NodXRkb3duIFx1MDAyNiBSQ1ZfU0hVVERPV04pIHtcbm5ldC9zbWMvc21jX3J4LmM6Mzk5Olx0XHRcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcbm5ldC9zbWMvc21jX3J4LmMtNDAwLVx0XHRcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTAzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZToKCioqQW5hbHl6aW5nIGBzbWNfY2RjX21zZ19yZWN2YCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGBzbWNfY2RjX21zZ19yZWN2YCBiZXR0ZXIuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHRyYWNlIGl0cyB1c2FnZS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgcHJlY2lzZWx5ICp3aG8qIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gSXMgaXQgb25seSBmcm9tIGEgc3BlY2lmaWMgbW9kdWxlLCBvciBpcyBpdCBhIG1vcmUgZ2VuZXJhbCB1dGlsaXR5PyBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBjb250ZXh0LCByZXZlYWxpbmcgdGhlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGVtcGxveWVkLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byByZWFzb24gYWJvdXQgaXRzIHB1cnBvc2UgYW5kIHRoZSByb2xlIGl0IHBsYXlzIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIGFsc28gYWxsb3cgbWUgdG8gaHlwb3RoZXNpemUgYWJvdXQgdGhlIGV4cGVjdGVkIGlucHV0cyBhbmQgb3V0cHV0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfY2RjX21zZ19yZWN2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTMyOT1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMzQxLVxubmV0L3NtYy9zbWNfY2RjLmM6MzQyOnN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9zbWNfY2RjLmMtMzQzLVx0XHRcdFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ0My0vKiBjYWxsZWQgdW5kZXIgdGFza2xldCBjb250ZXh0ICovXG5uZXQvc21jL3NtY19jZGMuYzo0NDQ6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXG5uZXQvc21jL3NtY19jZGMuYy00NDUte1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ0Ny1cdGJoX2xvY2tfc29jayhcdTAwMjZzbWMtXHUwMDNlc2spO1xubmV0L3NtYy9zbWNfY2RjLmM6NDQ4Olx0c21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc21jLCBjZGMpO1xubmV0L3NtYy9zbWNfY2RjLmMtNDQ5LVx0YmhfdW5sb2NrX3NvY2soXHUwMDI2c21jLVx1MDAzZXNrKTtcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00NTk9c3RhdGljIHZvaWQgc21jZF9jZGNfcnhfdHNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5uZXQvc21jL3NtY19jZGMuYy00NzItXHRzbWMgPSBjb250YWluZXJfb2YoY29ubiwgc3RydWN0IHNtY19zb2NrLCBjb25uKTtcbm5ldC9zbWMvc21jX2NkYy5jOjQ3MzpcdHNtY19jZGNfbXNnX3JlY3Yoc21jLCAoc3RydWN0IHNtY19jZGNfbXNnICopXHUwMDI2Y2RjKTtcbm5ldC9zbWMvc21jX2NkYy5jLTQ3NC19XG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NDg2PXN0YXRpYyB2b2lkIHNtY19jZGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNTE5LVxubmV0L3NtYy9zbWNfY2RjLmM6NTIwOlx0c21jX2NkY19tc2dfcmVjdihzbWMsIGNkYyk7XG5uZXQvc21jL3NtY19jZGMuYy01MjEtb3V0OlxuLS1cbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cbm5ldC9zbWMvc21jX3J4LmMtMzEtICovXG4tLVxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTgtXHRcdGlmIChzay1cdTAwM2Vza19zaHV0ZG93biBcdTAwMjYgUkNWX1NIVVRET1dOKSB7XG5uZXQvc21jL3NtY19yeC5jOjM5OTpcdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEwMQoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipTTUMgUHJvdG9jb2wgVnVsbmVyYWJpbGl0eSBBc3Nlc3NtZW50KioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHNwZWNpZmljYWxseSwgdGhlIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgZnVuY3Rpb24uIEkgc2VlIHRoYXQgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gYm90aCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhbmQgYHNtY19jZGNfcnhfaGFuZGxlcmAuIEdvb2QsIGdvb2QuIEZ1bmN0aW9uYWxpdHkgYW5kIHJlYWNoYWJpbGl0eSBhcmUgY29uZmlybWVkLiBUaGF0JiMzOTtzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGJlY2F1c2UgU01DIGlzIGEgbmV0d29yayBwcm90b2NvbCwgbXkgZXhwZXJ0IGludHVpdGlvbiBpcyBzY3JlYW1pbmcgZm9yIGZ1enppbmcuIEkgbWVhbiwgaXQgcHJhY3RpY2FsbHkgKmJlZ3MqIGZvciBpdC4gSXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIHByb3RvY29sLWxldmVsIGZ1enppbmcuIEFsd2F5cyB0aGUgbG93LWhhbmdpbmcgZnJ1aXQgd2hlbiBpdCBjb21lcyB0byBuZXR3b3Jrcy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBpcyBzZXQgLSBJIHNlZSBhIHJlZmVyZW5jZSB0byBgQ09ORklHX1NNQ2AuIFRpbWUgdG8gcGVlayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgU01DIGZ1bmN0aW9uYWxpdHkgaXMgZXZlbiBlbmFibGVkIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gYmVmb3JlIEkgd2FzdGUgdG9vIG11Y2ggdGltZSwgYXMgSSYjMzk7bSBzdXJlIGlzIHRoZSBzYW1lIHdpdGggYW55IGV4cGVyaWVuY2VkIGV4cGVydC4gR290dGEgYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU01DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvOHh4L0tjb25maWc9MTQ2PWNvbmZpZyBJMkNfU1BJX1NNQzFfVUNPREVfUEFUQ0hcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzh4eC9LY29uZmlnLTE1MC1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvOHh4L0tjb25maWc6MTUxOmNvbmZpZyBTTUNfVUNPREVfUEFUQ0hcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvOHh4L0tjb25maWctMTUyLVx0Ym9vbCBcJiMzNDtTTUMgcmVsb2NhdGlvbiBwYXRjaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2MvS2NvbmZpZz0yMD1pZiBORVRfVkVORE9SX1NNU0NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2MvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2MvS2NvbmZpZzoyMjpjb25maWcgU01DOTFYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtTTUMgOTFDOXgvOTFDMXh4eCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgyNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBTTUMgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYFNNQ2DigKYgdGhhdCYjMzk7cyBvdXIga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIGBuZXQvc21jL0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgbG9jYXRpb24gZm9yIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBzZXR0aW5ncyByZWxhdGVkIHRvIGBTTUNgLiBUaGF0IGZpbGUgd2lsbCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cgYWJvdXQgd2hhdCBvdGhlciBjb21wb25lbnRzLCBmZWF0dXJlcywgb3IgZHJpdmVycyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgYXJlIGluIGNvbmZsaWN0IHdpdGggYFNNQ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiBpdHMgaW1wYWN0IGJlZm9yZSBJIG1ha2UgYW55IGRlY2lzaW9ucyBhYm91dCBpdHMgdXNlLiBUaW1lIHRvIGdldCBkb3duIHRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgU01DX0RJQUdcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIFNNQ1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xuICAxOTpcdFx0ICBzbWNzcy5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMwOQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDM1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipESUJTIE15c3Rlcnk6IEEgS2VybmVsIEtjb25maWcgUHV6emxlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBTTUNgIGNvbmZpZ3VyYXRpb24gaW4gdGhlIGtlcm5lbCwgYW5kIHRoZSBkZXBlbmRlbmN5IGNvbmRpdGlvbiBqdW1wcyBvdXQgYXQgbWU6IGBkZXBlbmRzIG9uIElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EICZhbXA7JmFtcDsgRElCU2AuIEkga25vdyBgSU5FVGAgYW5kIGBJTkZJTklCQU5EYCwgbm8gcHJvYmxlbSB0aGVyZS4gQnV0LCBob2xkIG9uLi4uIGBESUJTYD8gSXMgdGhhdCBhIHR5cG8/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvc21jL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgc3VyZS4gQWxyaWdodCwgSSYjMzk7bSBwZWVyaW5nIGF0IGBuZXQvc21jL0tjb25maWdgIGluIHRoZSB0cmVlLiBUaGUgZGVwZW5kZW5jeSBpczogYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYC4gV2FpdCwgaXMgbXkgbWluZCBwbGF5aW5nIHRyaWNrcyBvbiBtZT8gTGV0IG1lIGdvIGJhY2sgYW5kIHJlYWQgdGhlIG91dHB1dCBhZ2Fpbi4gTm8sIGl0ICpzdGlsbCogc2F5cyBgZGVwZW5kcyBvbiBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORCAmYW1wOyZhbXA7IERJQlNgLiBPa2F5LCBtYXliZSBJIG5lZWQgYSBzYW5pdHkgY2hlY2ssIGp1c3QgY29uZmlybWluZyBpdCBoYXNuJiMzOTt0IGNoYW5nZWQuCgpMZXQgbWUgZ28gYmFjayBhbmQgbG9vayBhdCBgbmV0L3NtYy9LY29uZmlnYCBhZ2Fpbi4gTm9wZSwgaXQgKnN0aWxsKiByZWFkczogYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYC4gT2theSwgbm8sIEkgZGlkbiYjMzk7dCBtaXNyZWFkIGl0LiBCdXQgbm93IG15IGV4cGVydCBtaW5kIGlzIHNjcmVhbWluZywgd2hhdCBpcyB0aGlzIGBESUJTYD8hIFRpbWUgdG8gZXhlY3V0ZSBhIGBncmVwYCBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgdGhpcyBlbmlnbWF0aWMgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERJQlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xNS1cdGJvb2wgXCYjMzQ7SW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwODkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBESUJTKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgRElCU2AsIHRoYXQmIzM5O3MgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgY29ycmVjdCBuZXR3b3JrIHN0YWNrIGNvbmZpZ3VyZWQuIFRoYXQgbGlrZWx5IG1lYW5zIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBJTkVUYCwgZm9yIHRoZSB1c3VhbCBJUHY0LCBhbmQgSSBzaG91bGQgYWxzbyBjaGVjayBgSU5GSU5JQkFORGAgc3VwcG9ydCwgYXMgSSBzdXNwZWN0IERJQlMgbWlnaHQgbGV2ZXJhZ2UgdGhhdCBmb3IgaGlnaC1wZXJmb3JtYW5jZSBpbnRlcmNvbm5lY3RzLgoKVG8gYmUgY2VydGFpbiBvZiB0aGUgZGVwZW5kZW5jaWVzIGZvciBgRElCU2AgaXRzZWxmLCBJIHNob3VsZCBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUgc2Vuc2libGUgcGxhY2UgdG8gc3RhcnQgaXMgYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBwcmVjaXNlIHJlYWQgb3V0IG9mIHRoZSByZXF1aXJlZCBvcHRpb25zIGFuZCBhbnkgaW50ZXJkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBlbnN1cmUgSSBnZXQgdGhpcyB0aGluZyBjb25maWd1cmVkIGNvcnJlY3RseSBmb3IgdGhlIHRhcmdldCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRjb25maWcgRElCU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlZmF1bHQgblxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgKERJQlMpIGlzIGEgY29tbXVuaWNhdGlvbiBtZXRob2QgdGhhdFxuICAgNzpcdFx0ICB1c2VzIGNvbW1vbiBwaHlzaWNhbCAoaW50ZXJuYWwpIG1lbW9yeSBmb3Igc3luY2hyb25vdXMgZGlyZWN0IGFjY2Vzc1xuICAgODpcdFx0ICBpbnRvIGEgcmVtb3RlIGJ1ZmZlci5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHByb3ZpZGUgdGhlIGFic3RyYWN0aW9uIGxheWVyIGJldHdlZW5cbiAgMTE6XHRcdCAgZGlicyBkZXZpY2VzIGFuZCBkaWJzIGNsaWVudHMgbGlrZSB0aGUgU01DIHByb3RvY29sLlxuICAxMjpcdFx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgZGlicy5cbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgRElCU19MT1xuICAxNTpcdFx0Ym9vbCBcJiMzNDtJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gRElCU1xuICAxNzpcdFx0ZGVmYXVsdCBuXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIERJQlNfTE8gZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgYW4gc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2VcbiAgMjA6XHRcdCAgbmFtZWQgbG8gd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHRyYW5zZmVycmluZyBkYXRhIHdoZW4gY29tbXVuaWNhdGlvblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjE1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGF0IGVuYWJsaW5nIGBTTUNgIG5lY2Vzc2l0YXRlcyBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYCwgc28gbGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBoYXZlIGFsbCBvZiB0aG9zZSBlbmFibGVkLiBFYXN5IGVub3VnaC4gTm93LCBJIHNlZSB0aGlzIHBhdGNoIG1vZGlmaWVzIGBzbWNfY2RjLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBhbmQgZXZlbiBhZGRpbmcgYHNtY19jZGNfYWJvcnRfY29ubmAuIFRoZXNlIGFyZSBjb3JlIGZ1bmN0aW9ucy4gRGVmaW5pdGVseSBmdW5jdGlvbmFsIGNoYW5nZXMuIFRob3NlIHRocmVlLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBhbmQgYHNtY19jZGNfYWJvcnRfY29ubmAsIHRob3NlIGFyZSB0aGUgZm9jdXMuCgpXYWl0IGEgc2Vjb25kLiBOb3cgSSBzZWUgdGhhdCBhbGwgdGhyZWUgYXJlIHN0YXRpYyEgVGhhdCBtZWFucyB0aGV5IGhhdmUgaW50ZXJuYWwgbGlua2FnZSBvbmx5LiBUaGUgaW5zdHJ1Y3Rpb25zIHN0aXB1bGF0ZSB0byBwcmVmZXIgbm9uLXN0YXRpYyBBUEkgZW50cnlwb2ludHMuIFRoZSByYXRpb25hbGUgYmVpbmcgdGhhdCBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2xzLCBhbmQgdGh1cyBjYW5ub3QgYmUgdXNlZCBhcyBhbiBlbnRyeSBwb2ludCBmb3IgZXh0ZXJuYWwgaW50ZXJhY3Rpb24uIFNvIGxldCYjMzk7cyBjaGVjazogYXJlIHRoZXNlIGJlaW5nIGlubGluZWQ/IGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgaXMgY2FsbGVkIGZyb20gYHNtY19jZGNfbXNnX3JlY3ZgLiBUaGF0IGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYHNtY2RfY2RjX3J4X3Rza2xldGAgYW5kIGBzbWNfY2RjX3J4X2hhbmRsZXJgLiBJIG5lZWQgdG8gaW5zcGVjdCB0aGVzZSBhcyB3ZWxsLgoKT2theSwgbGV0JiMzOTtzIHNlZS4gYHNtY2RfY2RjX3J4X3Rza2xldGAgaXMgYWxzbyBzdGF0aWMuIEFuZCBgc21jX2NkY19yeF9oYW5kbGVyYCBpcyBhbHNvIHN0YXRpYyEgVGhhdCYjMzk7cyBwcm9ibGVtYXRpYy4gV2hhdCBhcmUgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHRoZW4/IFdlIG5lZWQgYSB3YXkgdG8gcmVnaXN0ZXIgb3IgdXNlIHRoaXMgY29kZSBmcm9tIGVsc2V3aGVyZS4gSSYjMzk7bSBnb2luZyB0byBncmVwIGZvciBgc21jX2NkY19yeF9oYW5kbGVyYCBhbmQgYHNtY2RfY2RjX3J4X3Rza2xldGAgdG8gZmluZCB0aGVpciByZWdpc3RyYXRpb24gcG9pbnRzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZW50aXJlIHRoaW5nIGlzIGJlaW5nIHVzZWQgZnJvbSB0aGUgb3V0c2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTQ3OT12b2lkIHNtY2RfY2RjX3J4X2luaXQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ4NS1cbm5ldC9zbWMvc21jX2NkYy5jOjQ4NjpzdGF0aWMgdm9pZCBzbWNfY2RjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxubmV0L3NtYy9zbWNfY2RjLmMtNDg3LXtcbi0tXG5uZXQvc21jL3NtY19jZGMuYy01MjQtXG5uZXQvc21jL3NtY19jZGMuYzo1MjU6c3RhdGljIHN0cnVjdCBzbWNfd3JfcnhfaGFuZGxlciBzbWNfY2RjX3J4X2hhbmRsZXJzW10gPSB7XG5uZXQvc21jL3NtY19jZGMuYy01MjYtXHR7XG5uZXQvc21jL3NtY19jZGMuYzo1Mjc6XHRcdC5oYW5kbGVyXHQ9IHNtY19jZGNfcnhfaGFuZGxlcixcbm5ldC9zbWMvc21jX2NkYy5jLTUyOC1cdFx0LnR5cGVcdFx0PSBTTUNfQ0RDX01TR19UWVBFXG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NTM1PWludCBfX2luaXQgc21jX2NkY19pbml0KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNTM5LVxubmV0L3NtYy9zbWNfY2RjLmM6NTQwOlx0Zm9yIChoYW5kbGVyID0gc21jX2NkY19yeF9oYW5kbGVyczsgaGFuZGxlci1cdTAwM2VoYW5kbGVyOyBoYW5kbGVyJiM0MzsmIzQzOykge1xubmV0L3NtYy9zbWNfY2RjLmMtNTQxLVx0XHRJTklUX0hMSVNUX05PREUoXHUwMDI2aGFuZGxlci1cdTAwM2VsaXN0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg0NwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYHNtY2RfY2RjX3J4X3Rza2xldGAgVGFza2xldCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHNtY2RfY2RjX3J4X3Rza2xldGAgcm91dGluZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgd2l0aGluIHRoZSBDREMgKHByZXN1bWFibHksIENvbW11bmljYXRpb24gRGV2aWNlIENsYXNzKSByZWNlaXZlIHBhdGguIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCwgdGhlIGhhcmR3YXJlIGVudmlyb25tZW50IGFuZCB0aGUgcHJvdG9jb2wgaW52b2x2ZWQuIElzIHRoaXMgaGFuZGxpbmcgcmF3IFVTQiBkYXRhIGRpcmVjdGx5LCBvciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uPyBBcmUgd2UgbG9va2luZyBhdCBhIHNwZWNpZmljIGRldmljZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBvciBhIG1vcmUgZ2VuZXJpYyBVU0IgaW50ZXJmYWNlIGZyYW1ld29yaz8gTXkgZmlyc3Qgc3RlcCBpcyB1c3VhbGx5IHRvIG1lbnRhbGx5IHJlY29uc3RydWN0IHRoZSBjYWxsIHN0YWNrOyB3aGVyZSBkb2VzIHRoaXMgdGFza2xldCBmaXQgaW4gdGhlIHJlY2VpdmUgZmxvdz8gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgYW5kIGJ1ZmZlciBtYW5hZ2VtZW50IGNvbmNlcm5zLiBBIHF1aWNrIGdsYW5jZSBzdWdnZXN0cyB0aGF0IHRoaXMgY291bGQgYmUgYSBwb2ludCB3aGVyZSBkYXRhIGluZ3Jlc3MgZW50ZXJzIHVzZXItc3BhY2UuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHR5cGljYWwgaXNzdWVzIGF0IHRoaXMgc3RhZ2UgLSBJbnRlcnJ1cHQgU2VydmljZSBSb3V0aW5lIChJU1IpIGludGVyYWN0aW9uLCBETUEgdHJhbnNmZXJzLCBkYXRhIHZhbGlkYXRpb24uIFdoYXQga2luZCBvZiBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBidWZmZXIgb3ZlcnJ1bnMgb3IgdW5kZXJmbG93cz8gSXMgdGhlcmUgYW55IHBvdGVudGlhbCBmb3IgZGF0YSBsb3NzIHVuZGVyIGhlYXZ5IGxvYWQ/IEEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0YXNrbGV0JiMzOTtzIGltcGxlbWVudGF0aW9uIGlzIHBhcmFtb3VudCB0byBmaW5kaW5nIGFueSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQgbmVlZHMgdG8gaGFuZGxlIGFsbCB0aGUgY29tbW9uIGNvcm5lciBjYXNlcyB0byBlbnN1cmUgc3RhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNkX2NkY19yeF90c2tsZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9NDQ0PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ1OC0gKi9cbm5ldC9zbWMvc21jX2NkYy5jOjQ1OTpzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxubmV0L3NtYy9zbWNfY2RjLmMtNDYwLXtcbi0tXG5uZXQvc21jL3NtY19jZGMuYz00Nzk9dm9pZCBzbWNkX2NkY19yeF9pbml0KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTQ4MC17XG5uZXQvc21jL3NtY19jZGMuYzo0ODE6XHR0YXNrbGV0X3NldHVwKFx1MDAyNmNvbm4tXHUwMDNlcnhfdHNrbGV0LCBzbWNkX2NkY19yeF90c2tsZXQpO1xubmV0L3NtYy9zbWNfY2RjLmMtNDgyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQwOAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBTTUMgQ0RDIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdHJhY2UgaG93IHRoZSBDREMgcmVjZWl2ZSBwYXRoIGlzIHNldCB1cCBmb3IgdGhpcyBTTUMgY29tcG9uZW50LiBJIHNlZSB0aGF0IHRoZSBgc21jX2NkY19yeF9oYW5kbGVyYCBmdW5jdGlvbiBpcyB0aGUga2V5IHBsYXllciBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyByZWdpc3RlcmVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBzbWNfY2RjX2luaXRgIGZ1bmN0aW9uLiBUaGUgcmVnaXN0cmF0aW9uIGl0c2VsZiBpcyBsaWtlbHkgZG9uZSB0aHJvdWdoIHRoZSBgc21jX3dyX3J4X2hhbmRsZXJgIGNhbGwsIHdoaWNoIGlzIGEgY29tbW9uIHBhdHRlcm4uIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBBZGRpdGlvbmFsbHksIEkgbm90aWNlIHRoYXQgYHNtY2RfY2RjX3J4X3Rza2xldGAgaXMgYWxzbyBoYW5naW5nIGFyb3VuZCwgcmVnaXN0ZXJlZCBpbiBgc21jZF9jZGNfcnhfaW5pdGAuIFNvLCBpdCBhcHBlYXJzIHRoZXJlJiMzOTtzIGEgdGFza2xldCBpbnZvbHZlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYW5kbGVyIGFuZCB0aGUgdGFza2xldCBjb29yZGluYXRlLCBidXQgZmlyc3QsIEkgd2lsbCBkb3VibGUgY2hlY2sgaG93IHRoZSBgc21jX3dyX3J4X2hhbmRsZXJgIHJlZ2lzdHJhdGlvbiB3b3Jrcy4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcCB0byBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGVudGlyZSByZWNlaXZlIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY193cl9yeF9yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz01MzU9aW50IF9faW5pdCBzbWNfY2RjX2luaXQodm9pZClcbi0tXG5uZXQvc21jL3NtY19jZGMuYy01NDEtXHRcdElOSVRfSExJU1RfTk9ERShcdTAwMjZoYW5kbGVyLVx1MDAzZWxpc3QpO1xubmV0L3NtYy9zbWNfY2RjLmM6NTQyOlx0XHRyYyA9IHNtY193cl9yeF9yZWdpc3Rlcl9oYW5kbGVyKGhhbmRsZXIpO1xubmV0L3NtYy9zbWNfY2RjLmMtNTQzLVx0XHRpZiAocmMpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjM2ND1pbnQgX19pbml0IHNtY19sbGNfaW5pdCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzNzAtXHRcdElOSVRfSExJU1RfTk9ERShcdTAwMjZoYW5kbGVyLVx1MDAzZWxpc3QpO1xubmV0L3NtYy9zbWNfbGxjLmM6MjM3MTpcdFx0cmMgPSBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihoYW5kbGVyKTtcbm5ldC9zbWMvc21jX2xsYy5jLTIzNzItXHRcdGlmIChyYylcbi0tXG5uZXQvc21jL3NtY193ci5jPTM2Nj1pbnQgc21jX3dyX3JlZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IGliX21yICptcilcbi0tXG5uZXQvc21jL3NtY193ci5jLTQwNy1cbm5ldC9zbWMvc21jX3dyLmM6NDA4OmludCBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihzdHJ1Y3Qgc21jX3dyX3J4X2hhbmRsZXIgKmhhbmRsZXIpXG5uZXQvc21jL3NtY193ci5jLTQwOS17XG4tLVxubmV0L3NtYy9zbWNfd3IuaD0xMzA9dm9pZCBzbWNfd3JfdHhfd2FpdF9ub19wZW5kaW5nX3NlbmRzKHN0cnVjdCBzbWNfbGluayAqbGluayk7XG5uZXQvc21jL3NtY193ci5oLTEzMS1cbm5ldC9zbWMvc21jX3dyLmg6MTMyOmludCBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihzdHJ1Y3Qgc21jX3dyX3J4X2hhbmRsZXIgKmhhbmRsZXIpO1xubmV0L3NtYy9zbWNfd3IuaC0xMzMtaW50IHNtY193cl9yeF9wb3N0X2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMzgKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipUcmFjaW5nIHRoZSBDYWxsIFBhdGg6IGBzbWNfd3JfcnhfaGFuZGxlcmAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYHNtY193cl9yeF9oYW5kbGVyYC4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkIGZyb20/IEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBwYXRoLiBVbmRlcnN0YW5kaW5nIHRoZSB1cHN0cmVhbSBjb2RlIHRoYXQgY2FsbHMgaXQgaXMgZ29pbmcgdG8gYmUga2V5IHRvIGZpZ3VyaW5nIG91dCBpdHMgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHR5cGljYWwgdGVjaG5pcXVlcyB0byBsb2NhdGUgYWxsIHRoZSBjYWxsIHNpdGVzIGFuZCBzZWUgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgaXRzIGV4ZWN1dGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IGl0cyBwdXJwb3NlIGFuZCBiZWhhdmlvci4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhbmRsZXItXHUwMDNlaGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19ydGFzLmM9MjE4PWludCBrdm1wcGNfcnRhc19oY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcnRhcy5jLTI2Mi1cdFx0aWYgKGQtXHUwMDNldG9rZW4gPT0gYmUzMl90b19jcHUoYXJncy50b2tlbikpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3J0YXMuYzoyNjM6XHRcdFx0ZC1cdTAwM2VoYW5kbGVyLVx1MDAzZWhhbmRsZXIodmNwdSwgXHUwMDI2YXJncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19ydGFzLmMtMjY0LVx0XHRcdHJjID0gMDtcbi0tXG5kcml2ZXJzL2FjcGkvcHJtdC5jPTI2OD1pbnQgYWNwaV9jYWxsX3BybV9oYW5kbGVyKGd1aWRfdCBoYW5kbGVyX2d1aWQsIHZvaWQgKnBhcmFtX2J1ZmZlcilcbi0tXG5kcml2ZXJzL2FjcGkvcHJtdC5jLTI4My1cbmRyaXZlcnMvYWNwaS9wcm10LmM6Mjg0Olx0c3RhdHVzID0gZWZpX2NhbGxfYWNwaV9wcm1faGFuZGxlcihoYW5kbGVyLVx1MDAzZWhhbmRsZXJfYWRkcixcbmRyaXZlcnMvYWNwaS9wcm10LmMtMjg1LVx0XHRcdFx0XHQgICAodTY0KXBhcmFtX2J1ZmZlcixcbi0tXG5kcml2ZXJzL2FjcGkvcHJtdC5jPTMwMj1zdGF0aWMgYWNwaV9zdGF0dXMgYWNwaV9wbGF0Zm9ybXJ0X3NwYWNlX2hhbmRsZXIodTMyIGZ1bmN0aW9uLFxuLS1cbmRyaXZlcnMvYWNwaS9wcm10LmMtMzMwLVxuZHJpdmVycy9hY3BpL3BybXQuYzozMzE6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyX2FkZHIpIHtcbmRyaXZlcnMvYWNwaS9wcm10LmMtMzMyLVx0XHRcdGJ1ZmZlci1cdTAwM2Vwcm1fc3RhdHVzID0gUFJNX0hBTkRMRVJfRVJST1I7XG4tLVxuZHJpdmVycy9hY3BpL3BybXQuYy0zNDItXG5kcml2ZXJzL2FjcGkvcHJtdC5jOjM0MzpcdFx0c3RhdHVzID0gZWZpX2NhbGxfYWNwaV9wcm1faGFuZGxlcihoYW5kbGVyLVx1MDAzZWhhbmRsZXJfYWRkcixcbmRyaXZlcnMvYWNwaS9wcm10LmMtMzQ0LVx0XHRcdFx0XHRcdCAgIGhhbmRsZXItXHUwMDNlYWNwaV9wYXJhbV9idWZmZXJfYWRkcixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYz0xMzI9c3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgKnJlbW92ZV9pcnFfaGFuZGxlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYy0xNjQtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYzoxNjU6XHRcdGlmIChpaCA9PSBoYW5kbGVyLVx1MDAzZWhhbmRsZXIpIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTE2Ni1cdFx0XHQvKiBGb3VuZCBvdXIgaGFuZGxlci4gUmVtb3ZlIGl0IGZyb20gdGhlIGxpc3QuICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmM9MTk3PXN0YXRpYyB2b2lkIHVucmVnaXN0ZXJfYWxsX2lycV9oYW5kbGVycyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYy0yMTYtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYzoyMTc6XHRcdFx0aWYgKGhhbmRsZXIgPT0gTlVMTCB8fCBoYW5kbGVyLVx1MDAzZWhhbmRsZXIgPT0gTlVMTClcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTIxOC1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTIyOC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jOjIyOTpcdFx0XHRpZiAoaGFuZGxlciA9PSBOVUxMIHx8IGhhbmRsZXItXHUwMDNlaGFuZGxlciA9PSBOVUxMKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMtMjMwLVx0XHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvZGV2aWNlLmM9MjA3MD12b2lkIGliX2Rpc3BhdGNoX2V2ZW50X2NsaWVudHMoc3RydWN0IGliX2V2ZW50ICpldmVudClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9kZXZpY2UuYy0yMDc2LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShoYW5kbGVyLCBcdTAwMjZldmVudC1cdTAwM2VkZXZpY2UtXHUwMDNlZXZlbnRfaGFuZGxlcl9saXN0LCBsaXN0KVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvZGV2aWNlLmM6MjA3NzpcdFx0aGFuZGxlci1cdTAwM2VoYW5kbGVyKGhhbmRsZXIsIGV2ZW50KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2RldmljZS5jLTIwNzgtXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yb2NrY2hpcC9ya2lzcDEvcmtpc3AxLXBhcmFtcy5jPTIyODk9c3RhdGljIHZvaWQgcmtpc3AxX2V4dF9wYXJhbXNfY29uZmlnKHN0cnVjdCBya2lzcDFfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yb2NrY2hpcC9ya2lzcDEvcmtpc3AxLXBhcmFtcy5jLTIzMTgtXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JvY2tjaGlwL3JraXNwMS9ya2lzcDEtcGFyYW1zLmM6MjMxOTpcdFx0YmxvY2tfaGFuZGxlci1cdTAwM2VoYW5kbGVyKHBhcmFtcywgYmxvY2spO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yb2NrY2hpcC9ya2lzcDEvcmtpc3AxLXBhcmFtcy5jLTIzMjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jPTEyNzk9aXdsX21sZF9zY2FuX2J1aWxkX2NtZChzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3NjYW4uYy0xMzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jOjEzMDE6XHRcdGVyciA9IHZlcl9oYW5kbGVyLVx1MDAzZWhhbmRsZXIobWxkLCB2aWYsIHBhcmFtcywgc2Nhbl9zdGF0dXMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmMtMTMwMi1cdFx0XHRcdFx0ICAgdWlkLCBvb2NfcHJpb3JpdHksIGxvd19sYXRlbmN5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmM9MjgyOD1zdGF0aWMgaW50IGl3bF9tdm1fYnVpbGRfc2Nhbl9jbWQoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtMjg2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYzoyODY0Olx0XHRlcnIgPSB2ZXJfaGFuZGxlci1cdTAwM2VoYW5kbGVyKG12bSwgdmlmLCBwYXJhbXMsIHR5cGUsIHVpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtMjg2NS1cdFx0cmV0dXJuIGVyciA/IDogdWlkO1xuLS1cbm5ldC9pcHY0L3R1bm5lbDQuYz05NT1zdGF0aWMgaW50IHR1bm5lbDRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdHVubmVsNC5jLTEwMi1cdGZvcl9lYWNoX3R1bm5lbF9yY3UodHVubmVsNF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3R1bm5lbDQuYzoxMDM6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpXG5uZXQvaXB2NC90dW5uZWw0LmMtMTA0LVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L3R1bm5lbDQuYz0xNDE9c3RhdGljIGludCB0dW5uZWw2NF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90dW5uZWw0LmMtMTQ4LVx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWw2NF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3R1bm5lbDQuYzoxNDk6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpXG5uZXQvaXB2NC90dW5uZWw0LmMtMTUwLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L3R1bm5lbDQuYz0xNjE9c3RhdGljIGludCB0dW5uZWxtcGxzNF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90dW5uZWw0LmMtMTY4LVx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWxtcGxzNF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3R1bm5lbDQuYzoxNjk6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpXG5uZXQvaXB2NC90dW5uZWw0LmMtMTcwLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM9OTY9c3RhdGljIGludCB4ZnJtNF9lc3BfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xMDMtXHRmb3JfZWFjaF9wcm90b2NvbF9yY3UoZXNwNF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM6MTA0Olx0XHRpZiAoKHJldCA9IGhhbmRsZXItXHUwMDNlaGFuZGxlcihza2IpKSAhPSAtRUlOVkFMKVxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xMDUtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jPTEyND1zdGF0aWMgaW50IHhmcm00X2FoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmMtMTMxLVx0Zm9yX2VhY2hfcHJvdG9jb2xfcmN1KGFoNF9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM6MTMyOlx0XHRpZiAoKHJldCA9IGhhbmRsZXItXHUwMDNlaGFuZGxlcihza2IpKSAhPSAtRUlOVkFMKVxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xMzMtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jPTE1Mj1zdGF0aWMgaW50IHhmcm00X2lwY29tcF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jLTE1OS1cdGZvcl9lYWNoX3Byb3RvY29sX3JjdShpcGNvbXA0X2hhbmRsZXJzLCBoYW5kbGVyKVxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYzoxNjA6XHRcdGlmICgocmV0ID0gaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jLTE2MS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9pcHY2L3R1bm5lbDYuYz0xMjI9c3RhdGljIGludCB0dW5uZWxtcGxzNl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni90dW5uZWw2LmMtMTI5LVx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWxtcGxzNl9oYW5kbGVycywgaGFuZGxlcilcbm5ldC9pcHY2L3R1bm5lbDYuYzoxMzA6XHRcdGlmICghaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpXG5uZXQvaXB2Ni90dW5uZWw2LmMtMTMxLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY2L3R1bm5lbDYuYz0xNDA9c3RhdGljIGludCB0dW5uZWw2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3R1bm5lbDYuYy0xNDctXHRmb3JfZWFjaF90dW5uZWxfcmN1KHR1bm5lbDZfaGFuZGxlcnMsIGhhbmRsZXIpXG5uZXQvaXB2Ni90dW5uZWw2LmM6MTQ4Olx0XHRpZiAoIWhhbmRsZXItXHUwMDNlaGFuZGxlcihza2IpKVxubmV0L2lwdjYvdHVubmVsNi5jLTE0OS1cdFx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvaXB2Ni90dW5uZWw2LmM9MTg1PXN0YXRpYyBpbnQgdHVubmVsNDZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdHVubmVsNi5jLTE5Mi1cdGZvcl9lYWNoX3R1bm5lbF9yY3UodHVubmVsNDZfaGFuZGxlcnMsIGhhbmRsZXIpXG5uZXQvaXB2Ni90dW5uZWw2LmM6MTkzOlx0XHRpZiAoIWhhbmRsZXItXHUwMDNlaGFuZGxlcihza2IpKVxubmV0L2lwdjYvdHVubmVsNi5jLTE5NC1cdFx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jPTExMT1zdGF0aWMgaW50IHhmcm02X2VzcF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTExOC1cdGZvcl9lYWNoX3Byb3RvY29sX3JjdShlc3A2X2hhbmRsZXJzLCBoYW5kbGVyKVxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYzoxMTk6XHRcdGlmICgocmV0ID0gaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTEyMC1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmM9MTQwPXN0YXRpYyBpbnQgeGZybTZfYWhfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYy0xNDctXHRmb3JfZWFjaF9wcm90b2NvbF9yY3UoYWg2X2hhbmRsZXJzLCBoYW5kbGVyKVxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYzoxNDg6XHRcdGlmICgocmV0ID0gaGFuZGxlci1cdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTE0OS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmM9MTY5PXN0YXRpYyBpbnQgeGZybTZfaXBjb21wX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmMtMTc2LVx0Zm9yX2VhY2hfcHJvdG9jb2xfcmN1KGlwY29tcDZfaGFuZGxlcnMsIGhhbmRsZXIpXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jOjE3NzpcdFx0aWYgKChyZXQgPSBoYW5kbGVyLVx1MDAzZWhhbmRsZXIoc2tiKSkgIT0gLUVJTlZBTClcbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmMtMTc4LVx0XHRcdHJldHVybiByZXQ7XG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NTM1PWludCBfX2luaXQgc21jX2NkY19pbml0KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtNTM5LVxubmV0L3NtYy9zbWNfY2RjLmM6NTQwOlx0Zm9yIChoYW5kbGVyID0gc21jX2NkY19yeF9oYW5kbGVyczsgaGFuZGxlci1cdTAwM2VoYW5kbGVyOyBoYW5kbGVyJiM0MzsmIzQzOykge1xubmV0L3NtYy9zbWNfY2RjLmMtNTQxLVx0XHRJTklUX0hMSVNUX05PREUoXHUwMDI2aGFuZGxlci1cdTAwM2VsaXN0KTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMzY0PWludCBfX2luaXQgc21jX2xsY19pbml0KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjM2OC1cbm5ldC9zbWMvc21jX2xsYy5jOjIzNjk6XHRmb3IgKGhhbmRsZXIgPSBzbWNfbGxjX3J4X2hhbmRsZXJzOyBoYW5kbGVyLVx1MDAzZWhhbmRsZXI7IGhhbmRsZXImIzQzOyYjNDM7KSB7XG5uZXQvc21jL3NtY19sbGMuYy0yMzcwLVx0XHRJTklUX0hMSVNUX05PREUoXHUwMDI2aGFuZGxlci1cdTAwM2VsaXN0KTtcbi0tXG5uZXQvc21jL3NtY193ci5jPTQzMD1zdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X2RlbXVsdGlwbGV4KHN0cnVjdCBpYl93YyAqd2MpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00NDQtXHRcdGlmIChoYW5kbGVyLVx1MDAzZXR5cGUgPT0gd3JfcngtXHUwMDNldHlwZSlcbm5ldC9zbWMvc21jX3dyLmM6NDQ1Olx0XHRcdGhhbmRsZXItXHUwMDNlaGFuZGxlcih3Yywgd3JfcngpO1xubmV0L3NtYy9zbWNfd3IuYy00NDYtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT42bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzkwCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgc21jX3dyX3J4X2RlbXVsdGlwbGV4YCBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIHNob3dzIHRoYXQgYHNtY193cl9yeF9kZW11bHRpcGxleGAgaXMgY2FsbGluZyBgaGFuZGxlci0mZ3Q7aGFuZGxlcih3Yywgd3JfcngpYC4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGhhbmRsZXIgc3RydWN0dXJlLiBJdCYjMzk7cyBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiwgbGlrZWx5IHBhcnQgb2YgYSBicm9hZGVyIGRpc3BhdGNoIG1lY2hhbmlzbS4gVGhlIHBhcmFtZXRlcnMgYHdjYCBhbmQgYHdyX3J4YCBhcmUgdGhlIGludGVyZXN0aW5nIHBpZWNlcyBoZXJlLiBgd2NgIHByb2JhYmx5IHBvaW50cyB0byBzb21lIGtpbmQgb2Ygd29ya2luZyBjb250ZXh0IG9yIGNvbnRyb2wgc3RydWN0dXJlLCBhbmQgYHdyX3J4YCBzZWVtcyB0byBiZSB0aGUgcmVjZWl2ZWQgZGF0YSBpdHNlbGYuIE5vdywgbXkgbWFpbiBxdWVzdGlvbiBpcywgd2hvJiMzOTtzIGFjdHVhbGx5ICp1c2luZyogdGhpcyBgc21jX3dyX3J4X2RlbXVsdGlwbGV4YCBmdW5jdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNhbGxlcnMgdG8gZnVsbHkgZ3JvayB0aGUgaW50ZW50IGFuZCBwdXJwb3NlIG9mIHRoaXMgc3BlY2lmaWMgZGVtdWx0aXBsZXhpbmcgc3RlcC4gSSBuZWVkIHRoZSBiaWcgcGljdHVyZSB0byBoYXZlIGl0IGFsbCBtYWtlIHNlbnNlLiBUaW1lIHRvIGludmVzdGlnYXRlIHRoZSBjYWxsIGdyYXBoIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfd3JfcnhfZGVtdWx0aXBsZXgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfd3IuYz00MDg9aW50IHNtY193cl9yeF9yZWdpc3Rlcl9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfcnhfaGFuZGxlciAqaGFuZGxlcilcbi0tXG5uZXQvc21jL3NtY193ci5jLTQyOS0gKi9cbm5ldC9zbWMvc21jX3dyLmM6NDMwOnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfd3JfcnhfZGVtdWx0aXBsZXgoc3RydWN0IGliX3djICp3Yylcbm5ldC9zbWMvc21jX3dyLmMtNDMxLXtcbi0tXG5uZXQvc21jL3NtY193ci5jPTQ0OT1zdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhzdHJ1Y3QgaWJfd2Mgd2NbXSwgaW50IG51bSlcbi0tXG5uZXQvc21jL3NtY193ci5jLTQ1OC1cdFx0XHRsaW5rLVx1MDAzZXdyX3J4X3RzdGFtcCA9IGppZmZpZXM7XG5uZXQvc21jL3NtY193ci5jOjQ1OTpcdFx0XHRzbWNfd3JfcnhfZGVtdWx0aXBsZXgoXHUwMDI2d2NbaV0pO1xubmV0L3NtYy9zbWNfd3IuYy00NjAtXHRcdFx0c21jX3dyX3J4X3Bvc3QobGluayk7IC8qIHJlZmlsbCBXUiBSWCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDM3NQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIEZsb3c6IGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYCoqCgpBbHJpZ2h0LCBzbyBJIHNlZSBgc21jX3dyX3J4X3Byb2Nlc3NfY3Flc2AgaXMgY2FsbGluZyBgc21jX3dyX3J4X2RlbXVsdGlwbGV4YC4gTm90aGluZyBpbmhlcmVudGx5IHVudXN1YWwgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIFRoaXMgdXN1YWxseSBtZWFucyB0cmFjaW5nIHRoZSBkYXRhIGZsb3cuIFJpZ2h0IG5vdywgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCB1bmRlcnN0YW5kIHRoZSB1cHN0cmVhbSBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hvIGlzIGNhbGxpbmcgKnRoaXMqIGZ1bmN0aW9uLCBgc21jX3dyX3J4X3Byb2Nlc3NfY3Flc2AuIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGxhcmdlciBwaWN0dXJlIG9mIGRhdGEgcHJvY2Vzc2luZyBvbiB0aGlzIHNwZWNpZmljIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY193ci5jPTQzMD1zdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X2RlbXVsdGlwbGV4KHN0cnVjdCBpYl93YyAqd2MpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00NDgtXG5uZXQvc21jL3NtY193ci5jOjQ0OTpzdGF0aWMgaW5saW5lIHZvaWQgc21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhzdHJ1Y3QgaWJfd2Mgd2NbXSwgaW50IG51bSlcbm5ldC9zbWMvc21jX3dyLmMtNDUwLXtcbi0tXG5uZXQvc21jL3NtY193ci5jPTQ3OT1zdGF0aWMgdm9pZCBzbWNfd3JfcnhfdGFza2xldF9mbihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L3NtYy9zbWNfd3IuYy00OTctXHRcdFx0YnJlYWs7XG5uZXQvc21jL3NtY193ci5jOjQ5ODpcdFx0c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhcdTAwMjZ3Y1swXSwgcmMpO1xubmV0L3NtYy9zbWNfd3IuYy00OTktXHR9IHdoaWxlIChyYyBcdTAwM2UgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODYyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYHNtY193cl9yeGAgVGFza2xldCoqCgpBbHJpZ2h0LCBzbyB0aGUgYHNtY193cl9yeF90YXNrbGV0X2ZuYCBmdW5jdGlvbiBpcyBjYWxsaW5nIGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBpbnRlcmFjdGlvbiwgbWFrZXMgc2Vuc2UuIE5vdyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgZW50aXJlIHByb2Nlc3MuIFRvIGVmZmVjdGl2ZWx5IHRyb3VibGVzaG9vdCBvciBvcHRpbWl6ZSB0aGlzIHNlY3Rpb24sIHRoZSBjcnVjaWFsIHRoaW5nIHRvIGludmVzdGlnYXRlIGlzLCB3aG8gaW52b2tlcyBgc21jX3dyX3J4X3Rhc2tsZXRfZm5gPyBXaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludD8gSXMgaXQgYSBoYXJkd2FyZSBpbnRlcnJ1cHQsIGEgdGltZXIsIG9yIGFub3RoZXIgc29mdHdhcmUgY29tcG9uZW50PyBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIGlzIGtleSB0byB0cmFjaW5nIHRoZSBkYXRhIHBhdGggYW5kIHBpbnBvaW50aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQgY2FsbCBncmFwaCBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY193cl9yeF90YXNrbGV0X2ZuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX3dyLmM9NDQ5PXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzKHN0cnVjdCBpYl93YyB3Y1tdLCBpbnQgbnVtKVxuLS1cbm5ldC9zbWMvc21jX3dyLmMtNDc4LVxubmV0L3NtYy9zbWNfd3IuYzo0Nzk6c3RhdGljIHZvaWQgc21jX3dyX3J4X3Rhc2tsZXRfZm4oc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxubmV0L3NtYy9zbWNfd3IuYy00ODAte1xuLS1cbm5ldC9zbWMvc21jX3dyLmM9ODM1PXZvaWQgc21jX3dyX2FkZF9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxubmV0L3NtYy9zbWNfd3IuYy04MzYte1xubmV0L3NtYy9zbWNfd3IuYzo4Mzc6XHR0YXNrbGV0X3NldHVwKFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlY3ZfdGFza2xldCwgc21jX3dyX3J4X3Rhc2tsZXRfZm4pO1xubmV0L3NtYy9zbWNfd3IuYy04MzgtXHR0YXNrbGV0X3NldHVwKFx1MDAyNnNtY2liZGV2LVx1MDAzZXNlbmRfdGFza2xldCwgc21jX3dyX3R4X3Rhc2tsZXRfZm4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM4NgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqVGFza2xldCBTY3J1dGlueSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBtaW5kIGlzIGltbWVkaWF0ZWx5IGRyYXduIHRvIHRoaXMgYHNtY193cl9yeF90YXNrbGV0X2ZuYC4gVGhlIGZ1bmN0aW9uIG5hbWUgc2NyZWFtcyAmIzM0O3Rhc2tsZXQmIzM0OyBhdCBtZSwgYW5kIHRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoYXQgaXQgYXBwZWFycyB0byBiZS4gTXkgYnJhaW4mIzM5O3MgYWxyZWFkeSBtYWtpbmcgYXNzb2NpYXRpb25zIOKAkyBhc3luY2hyb25vdXMgcHJvY2Vzc2luZywgZGVmZXJyaW5nIHdvcmssIGxpa2VseSBkZWFsaW5nIHdpdGggaW50ZXJydXB0IGNvbnRleHQgaXNzdWVzLCB0aGF0IGtpbmQgb2YgdGhpbmcuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgY2hhcmFjdGVyaXN0aWNzIOKAkyBwZXJoYXBzIGl0JiMzOTtzIGEgYm90dG9tIGhhbGYgaGFuZGxlciBmb3Igc29tZSBraW5kIG9mIFJYIHBhdGggcmVsYXRlZCB0byBhbiBTTUMgb3IgQ0RDIGludGVyZmFjZSwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucy4KCk5vdywgbXkgY3VyaW9zaXR5IGlzIHBpcXVlZC4gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIHdvbmRlciB3aGF0IHRoZSBoZWxsIGlzIHRoZSByb2xlIG9mIGBzbWNkX2NkY19yeF90c2tsZXRgIGluIHRoaXMgYXJjaGl0ZWN0dXJlLiBXaHkgaXMgdGhpcyBmdW5jdGlvbiBub3QgbmFtZWQgYHNtY2Rfd3JfcnhfdGFza2xldF9mbmAsIGxpa2UgdGhlIG90aGVyIHRhc2tsZXQ/IEFyZSB0aGV5IHJlbGF0ZWQ/IEFyZSB0aGVyZSBkaWZmZXJlbnQgZGF0YSBwYXRocyBpbnZvbHZlZD8gSXMgdGhpcyBhIHN0YW5kYXJkIG5hbWluZyBjb252ZW50aW9uIHRvIGluZGljYXRlIGFuIGFzeW5jaHJvbm91cyB0cmFuc2Zlcj8gQXJlIHRoZXNlIHR3byByZWxhdGVkIG9yIGlzIGBzbWNkYCBzb21ldGhpbmcgdG90YWxseSBkaWZmZXJlbnQ/IEkgbmVlZCB0byBhbmFseXplIGl0cyBsb2NhdGlvbiwgYW5kIHRoZSB1c2UgY2FzZXMsIHRvIGRldGVybWluZSBpZiB0aGVzZSBhcmUgcmVsYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jZF9jZGNfcnhfdHNrbGV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTQ0ND1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcbi0tXG5uZXQvc21jL3NtY19jZGMuYy00NTgtICovXG5uZXQvc21jL3NtY19jZGMuYzo0NTk6c3RhdGljIHZvaWQgc21jZF9jZGNfcnhfdHNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbm5ldC9zbWMvc21jX2NkYy5jLTQ2MC17XG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9NDc5PXZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jZGMuYy00ODAte1xubmV0L3NtYy9zbWNfY2RjLmM6NDgxOlx0dGFza2xldF9zZXR1cChcdTAwMjZjb25uLVx1MDAzZXJ4X3Rza2xldCwgc21jZF9jZGNfcnhfdHNrbGV0KTtcbm5ldC9zbWMvc21jX2NkYy5jLTQ4Mi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTUwCgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIENEQyBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgU01DIENEQyBjb2RlLCBhbmQgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgdGFza2xldCBoZXJlLiBSaWdodCwgZ290IGl0LiBOb3csIHdoYXQgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzPyBMZXQmIzM5O3Mgc2VlLi4uIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAsIGFuZCBgc21jX2NkY19hYm9ydF9jb25uYC4gR290IHRob3NlIGRvd24uIAoKTm93LCB3YWl0IGEgc2Vjb25kLCB0aGUgY29kaW5nIGd1aWRlbGluZXMgYXJlIHRlbGxpbmcgdXMgc29tZXRoaW5nIGludGVyZXN0aW5nOiBhdm9pZCB0aG9zZSBwZXNreSBpbnRlcm5hbCwgaW5saW5lZCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBpZiBwb3NzaWJsZSwgYW5kIHN0aWNrIHRvIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpZiB3ZSBjYW4uIFRob3NlIGludGVybmFsIGhlbHBlcnMgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcywgd2hpY2ggY29tcGxpY2F0ZXMgZGVidWdnaW5nIGFuZCBhbmFseXNpcy4gU28sIHRoYXQmIzM5O3Mgd2hhdCB3ZSYjMzk7bGwgZG8uIFdlIHdpbGwgaHVudCB0aHJvdWdoIGBuZXQvc21jL3NtY19jZGMuY2AgYW5kIHRyeSB0byBpZGVudGlmeSB0aG9zZSBwcmVmZXJhYmxlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIHRoZSB3YXkgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIHNtY19jZGNfW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTI2PXN0YXRpYyB2b2lkIHNtY19jZGNfdHhfaGFuZGxlcihzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqcG5kX3NuZCxcbi0tXG5uZXQvc21jL3NtY19jZGMuYy03Mi1cbm5ldC9zbWMvc21jX2NkYy5jOjczOmludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxubmV0L3NtYy9zbWNfY2RjLmMtNzQtXHRcdFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfY2RjLmM9OTQ9c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfYWRkX3BlbmRpbmdfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMTExLVxubmV0L3NtYy9zbWNfY2RjLmM6MTEyOmludCBzbWNfY2RjX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbm5ldC9zbWMvc21jX2NkYy5jLTExMy1cdFx0ICAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqd3JfYnVmLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTE3ND1zdGF0aWMgaW50IHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMjA4LVxubmV0L3NtYy9zbWNfY2RjLmM6MjA5OmludCBzbWNfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jZGMuYy0yMTAte1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTIyNy1cbm5ldC9zbWMvc21jX2NkYy5jOjIyODp2b2lkIHNtY19jZGNfd2FpdF9wZW5kX3R4X3dyKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NkYy5jLTIyOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Nzg4CgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbmV0L3NtYy9zbWNfY2RjLmNgIC0gSHVudGluZyBmb3IgRHluYW1pYyBCZWhhdmlvcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIGBuZXQvc21jL3NtY19jZGMuY2AuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBhbmQgdGhlIENEQyAoQ29udHJvbCBEYXRhIENoYW5uZWwpIHNwZWNpZmljYWxseSwgYW5kIEkgd2FudCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGR5bmFtaWMgYXNwZWN0cyBvZiB0aGlzIGNvZGUuIFN0YXRpYyBmdW5jdGlvbnMgYXJlLCBieSB0aGVpciBuYXR1cmUsIHByZWRpY3RhYmxlLiBJJiMzOTttIGFmdGVyIHRoZSBwYXJ0cyB0aGF0ICpjaGFuZ2UqLCB0aGF0IHJlYWN0IHRvIGlucHV0LCB0aGF0IG9yY2hlc3RyYXRlIHByb2Nlc3NlcywgdGhlIG1lYXQgYW5kIHBvdGF0b2VzIG9mIHRoZSBkYXRhIGZsb3cuIEZpbmRpbmcgdGhlc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMgaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIGJpdHMgbGl2ZSAtIHdoZXJlIHRoZSByZWFsIG9wdGltaXphdGlvbnMgY2FuIGJlIGZvdW5kLCB3aGVyZSB0aGUgZWRnZSBjYXNlcyBsdXJrLCBhbmQgd2hlcmUgSSBjYW4gZ2FpbiBkZWVwZXIgdW5kZXJzdGFuZGluZyB0byBpbXByb3ZlIHRoZSBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCBteSAmIzM0O2dvbGRlbiBudWdnZXRzLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIHNtY2RfY2RjX1thLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz0yMjg9dm9pZCBzbWNfY2RjX3dhaXRfcGVuZF90eF93cihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtMjM2LSAqL1xubmV0L3NtYy9zbWNfY2RjLmM6MjM3OmludCBzbWNkX2NkY19tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jZGMuYy0yMzgte1xuLS1cbm5ldC9zbWMvc21jX2NkYy5jPTQ1OT1zdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTQ3OC0gKi9cbm5ldC9zbWMvc21jX2NkYy5jOjQ3OTp2b2lkIHNtY2RfY2RjX3J4X2luaXQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY2RjLmMtNDgwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczMDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbiBmb3IgU01DIFJYIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIFNNQyBSWCBwYXRoIGFuYWx5c2lzLiBJbml0aWFsbHksIEkgbm90aWNlZCB0aGF0IGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHdyaW5rbGUgc2luY2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gb3RoZXIgZnVuY3Rpb25zIGFsc28gd2l0aGluIHRoZSBgc3RhdGljYCBjb250ZXh0LCBuYW1lbHkgYHNtY19jZGNfbXNnX3JlY3ZgIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGJ5IGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gR2l2ZW4gdGhleSBhcmUgYWxsIGBzdGF0aWNgLCBpZGVudGlmeWluZyBhcHByb3ByaWF0ZSBmb2N1cyBzeW1ib2xzIHJlcXVpcmVzIG1vcmUgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIG1pZ2h0IG5vdCBiZSBpbmxpbmVkIGJlY2F1c2UgaXQgc2VlbXMgcXVpdGUgc2l6YWJsZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVG8gY2hlY2sgdGhhdCwgSSYjMzk7bGwgbGlzdCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBzaW5jZSB2YWxpZGF0aW9uIGlzIGEgbmF0dXJhbCBjb21wYW5pb24uIEl0IHNlZW1zIGxpa2UgYSB2YWxpZCBmdW5jdGlvbiBpbiBpdHMgb3duIHJpZ2h0LCBzbyBpdCYjMzk7cyBwcm9iYWJseSB3b3J0aCBpbmNsdWRpbmcgYW5kIGFuYWx5emluZyBtb3JlIGNsb3NlbHkuCgpIb3dldmVyLCBJIHRoaW5rIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgaXRzZWxmIGlzIGEgcmVhbGx5IHN0cm9uZyBjYW5kaWRhdGUsIHNvIEkmIzM5O20gZ29pbmcgdG8gaW5jbHVkZSB0aGF0IG9uZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IGBzbWNfY2RjX3J4X2hhbmRsZXJgIGFuZCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhcmUgYWxzbyBvbiB0aGUgbGlzdC4KCk5vdywgbGV0IG1lIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIFJYIHBhdGggdGhhdCBJJiMzOTttIG92ZXJsb29raW5nLiBBaCwgaGVyZSYjMzk7cyBgc21jX3J4X3JlY3Ztc2dgLiBUaGF0JiMzOTtzIG5vbi1zdGF0aWMsIGJ1dCBpdCBzZWVtcyBsaWtlIGEgaG90LXBhdGggZnVuY3Rpb24sIGEgZ2VuZXJpYyBvbmUgYXQgdGhhdC4gJiMzNDtBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucywmIzM0OyB0aGUgY29tbWVudCByZWFkcy4gU28gSSYjMzk7bGwgcHJvYmFibHkgc3RheSBhd2F5IGZyb20gdGhhdCwgZ2l2ZW4gdGhhdCBpdCYjMzk7cyB0aGUgU01DIGVxdWl2YWxlbnQgb2YgdGhlIGByZWN2bXNnYCBzeXNjYWxsLiBUaGUgYHNtY19jZGNfcnhfaGFuZGxlcmAgYW5kIGBzbWNkX2NkY19yeF90c2tsZXRgIGZ1bmN0aW9ucyBhcmUgYmV0dGVyIGNhbmRpZGF0ZXMsIGZvY3VzaW5nIG1vcmUgb24gdGhlIHNwZWNpZmljIFNNQy1DREMgbG9naWMuCgpPbmUgbW9yZSBjb25zaWRlcmF0aW9uOiBgc21jX2NkY19hYm9ydF9jb25uYC4gSXQmIzM5O3MgYHN0YXRpY2AsIGJ1dCBpdCYjMzk7cyBjbGVhcmx5IGEgY3JpdGljYWwgcGFydCBvZiB0aGUgcGF0Y2gsIHNvIGl0JiMzOTtzIGltcG9ydGFudCB0aGF0IGl0JiMzOTtzIGluY2x1ZGVkIGFzIHdlbGwuCgpUaGVyZWZvcmUsIGZvciB0aGUgbGlzdCBvZiBGb2N1c1N5bWJvbHMgSSYjMzk7bSBnb2luZyB3aXRoOiAgYHNtY19jZGNfYWJvcnRfY29ubmAsIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLgoKSnVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cywgbGV0IG1lIGRvdWJsZSBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIEl0IHNheXMgYFNNQ2AgZGVwZW5kcyBvbiBgSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTYC4gV2FpdCwgYERJQlNgPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBgRElCU2AgaW4gYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gQnV0IGlzIHRoYXQgZXZlbiB1cHN0cmVhbT8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYG5ldC9zbWMvS2NvbmZpZ2AgZmlsZSBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5uZXQvc21jL0tjb25maWctNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1MzQKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA5MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBDb25maWd1cmF0aW9uIGZvciBTTUMgQ0RDIFByb3RvY29sIFZpb2xhdGlvbiBIYW5kbGluZyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzIHJlbGF0ZWQgdG8gaGFuZGxpbmcgU01DIENEQyBwcm90b2NvbCB2aW9sYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZSBmdXp6ZXIgY29uZmlnIHJlYWxseSBkZXBlbmRzIG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLiBXYWl0LCB3aGF0JiMzOTtzIGBESUJTYD8gTGV0IG1lIGxvb2sgdGhhdCB1cCByZWFsIHF1aWNrLiBPa2F5LCBnb3QgaXQuIExvb2tzIGxpa2Ugc29tZXRoaW5nIHJlbGV2YW50IHRvIHRoaXMsIGFuZCBwcm9iYWJseSBhZGRlZCByZWNlbnRseSwgc28gSSYjMzk7bGwgaW5jbHVkZSBpdC4gV2hpbGUgYElORVRgIGlzIGdlbmVyYWxseSBlbmFibGVkLCBJJiMzOTtsbCBleHBsaWNpdGx5IGxpc3QgdGhlIG90aGVycy4gU28sIG15IGluaXRpYWwgYEVuYWJsZUNvbmZpZ3NgIGlzIGBbJiMzNDtTTUMmIzM0OywgJiMzNDtJTkZJTklCQU5EJiMzNDssICYjMzQ7RElCUyYjMzQ7XWAuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBmb3IgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIGBTTUNfRElBR2A/IE5haC4gYFNNQ19IU19DVFJMX0JQRmA/IERvZXNuJiMzOTt0IHNlZW0gcmVsYXRlZC4KCk9rYXksIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCBzZWVtcyB0aGF0IHRoaXMgcGF0Y2ggZGVmaW5lcyBhIG5ldyBmdW5jdGlvbiwgYHNtY19jZGNfYWJvcnRfY29ubmAuIFRoaXMgZnVuY3Rpb24gZXNzZW50aWFsbHkgZHJvcHMgdGhlIGNvbm5lY3Rpb24gdXBvbiBwcm90b2NvbCB2aW9sYXRpb24uIExvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSwgSSBzZWUgdGhhdCBib3RoIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgbm93IGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbiB0aGV5IGRldGVjdCBlaXRoZXIgYW4gaW52YWxpZCBzZXF1ZW5jZSBudW1iZXIgb3IgYSBwcm9kdWN0aW9uIGRpZmZlcmVuY2UuCgpUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBuZXcgd2F5IHRvIGhhbmRsZSBhIHNwZWNpZmljIGVycm9yIGNvbmRpdGlvbi4gU2luY2UgdGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXR3b3JrLCBmdXp6aW5nIHRoaXMgaXMgY3J1Y2lhbCB0byBndWFyYW50ZWUgY29ycmVjdCBiZWhhdmlvciB3aXRoIHBvdGVudGlhbGx5IG1hbGZvcm1lZCBuZXR3b3JrIHRyYWZmaWMuCgpUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZSBhcmUgZGVmaW5pdGVseSBgc21jX2NkY19hYm9ydF9jb25uYCwgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCwgYW5kIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAuIExldCYjMzk7cyBjb25maXJtIHRoYXQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBpcyBub3QgaW5saW5lZC4gSXQgc2VlbXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgcHJvYmFibHkgaXNuJiMzOTt0IGlubGluZWQuIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIGlzIG5vdCBpbmxpbmUgZWl0aGVyLiBgc21jX2NkY19tc2dfcmVjdmAgaXMgYWxzbyBub3QgaW5saW5lLiBUaGVyZWZvcmUsIHRoZXNlIGFyZSBhbGwgd29ydGggdGFyZ2V0aW5nLiBJJiMzOTtsbCBhZGQgYHNtY19jZGNfbXNnX3JlY3ZgIHRvby4KClNvIHRoZSBmaW5hbCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZToKCmBbJiMzNDtTTUMmIzM0OywgJiMzNDtJTkZJTklCQU5EJiMzNDssICYjMzQ7RElCUyYjMzQ7XWAKClRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uLCBgc21jX2NkY19hYm9ydF9jb25uYCwgdG8gaGFuZGxlIFNNQyBDREMgcHJvdG9jb2wgdmlvbGF0aW9ucy4gSXQgbW9kaWZpZXMgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCBhbmQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCB0byBjYWxsIHRoaXMgbmV3IGZ1bmN0aW9uIHdoZW4gaW52YWxpZCBzZXF1ZW5jZSBudW1iZXJzIG9yIHByb2R1Y3Rpb24gZGlmZmVyZW5jZXMgYXJlIGRldGVjdGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBTTUMgbmV0d29yayBwcm90b2NvbCByZWNlaXZlIHBhdGggYW5kIHJlYWNoYWJsZSBmcm9tIG5ldHdvcmsgaW5wdXRzLCBzbyB0aGVzZSBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGhhbmRsaW5nIG9mIG1hbGZvcm1lZCBwYWNrZXRzLiBOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBESUJTYCBpcyBhIHJlYWwgY29uZmlnLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBESUJTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xuZHJpdmVycy9kaWJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE5OAoJCQkJCQkJb3V0cHV0OiAyMDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnk6CgoqKlRoZSBJbW1lZGlhdGUgRGVjaXNpb24qKgoKWWVzLCB0aGF0JiMzOTtzIGFic29sdXRlbHkgY29ycmVjdC4gVGhlIGNvbmNsdXNpb24gaXMgdmFsaWRhdGVkLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBwcm9jZWVkIHdpdGhvdXQgZGVsYXkuIE15IG5leHQgYWN0aW9uIGlzIGNsZWFyOyBJIHdpbGwgaW5pdGlhdGUgdGhlIGBzZXQtcmVzdWx0c2AgZnVuY3Rpb24gaW1tZWRpYXRlbHkuIFRoaXMgaXMgdGhlIGRlY2lzaXZlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX2Fib3J0X2Nvbm4mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfdmFsaWRhdGUmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3NtY2RfY2RjX3J4X3Rza2xldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfY2RjX2Fib3J0X2Nvbm4mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfcmVjdl9hY3Rpb24mIzM0OywKICAgICYjMzQ7c21jX2NkY19tc2dfdmFsaWRhdGUmIzM0OywKICAgICYjMzQ7c21jX2NkY19yeF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3NtY2RfY2RjX3J4X3Rza2xldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo1MDo0Ny42MTA1NTU4NDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTY4MDkwNzU2NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5GSU5JQkFORFwiLFxuICAgIFwiRElCU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19jZGNfYWJvcnRfY29ublwiLFxuICAgIFwic21jX2NkY19tc2dfcmVjdl9hY3Rpb25cIixcbiAgICBcInNtY19jZGNfbXNnX3ZhbGlkYXRlXCIsXG4gICAgXCJzbWNfY2RjX3J4X2hhbmRsZXJcIixcbiAgICBcInNtY2RfY2RjX3J4X3Rza2xldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYHNtY19jZGNfYWJvcnRfY29ubmAgdG8gaGFuZGxlIFNNQyBDREMgcHJvdG9jb2wgdmlvbGF0aW9ucyBieSBkcm9wcGluZyB0aGUgY29ubmVjdGlvbi4gSXQgbW9kaWZpZXMgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCBhbmQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCB0byBjYWxsIHRoaXMgbmV3IGZ1bmN0aW9uIHdoZW4gaW52YWxpZCBzZXF1ZW5jZSBudW1iZXJzIG9yIHByb2R1Y3Rpb24gZGlmZmVyZW5jZXMgYXJlIGRldGVjdGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBTTUMgbmV0d29yayBwcm90b2NvbCByZWNlaXZlIHBhdGgsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSBuZXR3b3JrIGlucHV0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBoYW5kbGluZyBvZiBtYWxmb3JtZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTA6NDcuNjEwNTYwODUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgxNDEwNzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjNiNjkxMTc0YzkwMjQ5NGE4ZjNmYzQ3MTU4M2ZkYjljNWQyZTZiMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjUwOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NkYy5jIGIvbmV0L3NtYy9zbWNfY2RjLmNcXG5pbmRleCAzMmQ2ZDAzZGYzMjE0Li5kOGY3NDdiYmM2ZjY5IDEwMDY0NFxcbi0tLSBhL25ldC9zbWMvc21jX2NkYy5jXFxuKysrIGIvbmV0L3NtYy9zbWNfY2RjLmNcXG5AQCAtMzA1LDYgKzMwNSwyNyBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX2hhbmRsZV91cmdfZGF0YV9hcnJpdmFsKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbiBcXHRza19zZW5kX3NpZ3VyZyhcXHUwMDI2c21jLVxcdTAwM2Vzayk7XFxuIH1cXG4gXFxuKy8qIERyb3AgYSBjb25uZWN0aW9uIHdob3NlIHBlZXIgdmlvbGF0ZWQgdGhlIENEQyBwcm90b2NvbC4gIEBsaW5rIGlzIHRoZSBsaW5rXFxuKyAqIHRoZSBvZmZlbmRpbmcgbWVzc2FnZSBhcnJpdmVkIG9uLCBvciBOVUxMIHdoZW4gaXQgaXMgbm90IGtub3duIHRvIHRoZSBjYWxsZXJcXG4rICogKFNNQy1ELCBhbmQgdGhlIHNoYXJlZCByZWNlaXZlIHBhdGgpLiAgV2hlbiBAbGluayBpcyBOVUxMIGNvbm4tXFx1MDAzZWxuayBpcyBsZWZ0XFxuKyAqIHVuY2hhbmdlZDogZm9yIFNNQy1SIGl0IGFscmVhZHkgcG9pbnRzIHRvIHRoZSByaWdodCBRUDsgZm9yIFNNQy1EIHRoZXJlIGlzXFxuKyAqIG5vIHBlci1saW5rIFFQIHRvIGFib3J0IG9uLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgc21jX2NkY19hYm9ydF9jb25uKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxuK3tcXG4rXFx0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gXFx1MDAyNnNtYy1cXHUwMDNlY29ubjtcXG4rXFxuK1xcdGNvbm4tXFx1MDAzZW91dF9vZl9zeW5jID0gMTsgIC8qIHByZXZlbnQgYW55IGZ1cnRoZXIgcmVjZWl2ZXMgKi9cXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjb25uLVxcdTAwM2VzZW5kX2xvY2spO1xcbitcXHRjb25uLVxcdTAwM2Vsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3MucGVlcl9jb25uX2Fib3J0ID0gMTtcXG4rXFx0aWYgKGxpbmspXFxuK1xcdFxcdGNvbm4tXFx1MDAzZWxuayA9IGxpbms7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjb25uLVxcdTAwM2VzZW5kX2xvY2spO1xcbitcXHRzb2NrX2hvbGQoXFx1MDAyNnNtYy1cXHUwMDNlc2spOyAvKiBzb2NrX3B1dCBpbiBhYm9ydF93b3JrICovXFxuK1xcdGlmICghcXVldWVfd29yayhzbWNfY2xvc2Vfd3EsIFxcdTAwMjZjb25uLVxcdTAwM2VhYm9ydF93b3JrKSlcXG4rXFx0XFx0c29ja19wdXQoXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxuIHtcXG5AQCAtMzE0LDE3ICszMzUsOCBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ192YWxpZGF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMsXFxuIFxcbiBcXHQvKiBjaGVjayB0aGF0IHNlcW51bSB3YXMgc2VlbiBiZWZvcmUgKi9cXG4gXFx0ZGlmZiA9IGNvbm4tXFx1MDAzZWxvY2FsX3J4X2N0cmwuc2Vxbm8gLSByZWN2X3NlcTtcXG4tXFx0aWYgKGRpZmYgXFx1MDAzYyAwKSB7IC8qIGRpZmYgbGFyZ2VyIHRoYW4gMHg3ZmZmICovXFxuLVxcdFxcdC8qIGRyb3AgY29ubmVjdGlvbiAqL1xcbi1cXHRcXHRjb25uLVxcdTAwM2VvdXRfb2Zfc3luYyA9IDE7XFx0LyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqL1xcbi1cXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmNvbm4tXFx1MDAzZXNlbmRfbG9jayk7XFxuLVxcdFxcdGNvbm4tXFx1MDAzZWxvY2FsX3R4X2N0cmwuY29ubl9zdGF0ZV9mbGFncy5wZWVyX2Nvbm5fYWJvcnQgPSAxO1xcbi1cXHRcXHRjb25uLVxcdTAwM2VsbmsgPSBsaW5rO1xcbi1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y29ubi1cXHUwMDNlc2VuZF9sb2NrKTtcXG4tXFx0XFx0c29ja19ob2xkKFxcdTAwMjZzbWMtXFx1MDAzZXNrKTsgLyogc29ja19wdXQgaW4gYWJvcnRfd29yayAqL1xcbi1cXHRcXHRpZiAoIXF1ZXVlX3dvcmsoc21jX2Nsb3NlX3dxLCBcXHUwMDI2Y29ubi1cXHUwMDNlYWJvcnRfd29yaykpXFxuLVxcdFxcdFxcdHNvY2tfcHV0KFxcdTAwMjZzbWMtXFx1MDAzZXNrKTtcXG4tXFx0fVxcbitcXHRpZiAoZGlmZiBcXHUwMDNjIDApIC8qIGRpZmYgbGFyZ2VyIHRoYW4gMHg3ZmZmICovXFxuK1xcdFxcdHNtY19jZGNfYWJvcnRfY29ubihzbWMsIGxpbmspOyAgLyogZHJvcCBjb25uZWN0aW9uICovXFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbkBAIC0zNzYsNiArMzg4LDExIEBAIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbiBcXHRkaWZmX3Byb2QgPSBzbWNfY3Vyc19kaWZmKGNvbm4tXFx1MDAzZXJtYl9kZXNjLVxcdTAwM2VsZW4sIFxcdTAwMjZwcm9kX29sZCxcXG4gXFx0XFx0XFx0XFx0ICBcXHUwMDI2Y29ubi1cXHUwMDNlbG9jYWxfcnhfY3RybC5wcm9kKTtcXG4gXFx0aWYgKGRpZmZfcHJvZCkge1xcbitcXHRcXHRpZiAoZGlmZl9wcm9kIFxcdTAwM2UgY29ubi1cXHUwMDNlcm1iX2Rlc2MtXFx1MDAzZWxlbiAtXFxuK1xcdFxcdFxcdFxcdGF0b21pY19yZWFkKFxcdTAwMjZjb25uLVxcdTAwM2VieXRlc190b19yY3YpKSB7XFxuK1xcdFxcdFxcdHNtY19jZGNfYWJvcnRfY29ubihzbWMsIE5VTEwpO1xcbitcXHRcXHRcXHRyZXR1cm47XFxuK1xcdFxcdH1cXG4gXFx0XFx0aWYgKGNvbm4tXFx1MDAzZWxvY2FsX3J4X2N0cmwucHJvZF9mbGFncy51cmdfZGF0YV9wcmVzZW50KVxcbiBcXHRcXHRcXHRzbWNfY2RjX2hhbmRsZV91cmdfZGF0YV9hcnJpdmFsKHNtYywgXFx1MDAyNmRpZmZfcHJvZCk7XFxuIFxcdFxcdC8qIGJ5dGVzX3RvX3JjdiBpcyBkZWNyZWFzZWQgaW4gc21jX3JlY3Ztc2cgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTA6NDguODkyNjM5ODk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjk2NjgwODY1ODI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX2Fib3J0X2Nvbm5cIixcbiAgICBcInNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uXCIsXG4gICAgXCJzbWNfY2RjX21zZ192YWxpZGF0ZVwiLFxuICAgIFwic21jX2NkY19yeF9oYW5kbGVyXCIsXG4gICAgXCJzbWNkX2NkY19yeF90c2tsZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYzYjY5MTE3NGM5MDI0OTRhOGYzZmM0NzE1ODNmZGI5YzVkMmU2YjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjUwOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY2RjLmMgYi9uZXQvc21jL3NtY19jZGMuY1xuaW5kZXggMzJkNmQwM2RmMzIxNC4uZDhmNzQ3YmJjNmY2OSAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX2NkYy5jXG4rKysgYi9uZXQvc21jL3NtY19jZGMuY1xuQEAgLTMwNSw2ICszMDUsMjcgQEAgc3RhdGljIHZvaWQgc21jX2NkY19oYW5kbGVfdXJnX2RhdGFfYXJyaXZhbChzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbiBcdHNrX3NlbmRfc2lndXJnKFx1MDAyNnNtYy1cdTAwM2Vzayk7XG4gfVxuIFxuKy8qIERyb3AgYSBjb25uZWN0aW9uIHdob3NlIHBlZXIgdmlvbGF0ZWQgdGhlIENEQyBwcm90b2NvbC4gIEBsaW5rIGlzIHRoZSBsaW5rXG4rICogdGhlIG9mZmVuZGluZyBtZXNzYWdlIGFycml2ZWQgb24sIG9yIE5VTEwgd2hlbiBpdCBpcyBub3Qga25vd24gdG8gdGhlIGNhbGxlclxuKyAqIChTTUMtRCwgYW5kIHRoZSBzaGFyZWQgcmVjZWl2ZSBwYXRoKS4gIFdoZW4gQGxpbmsgaXMgTlVMTCBjb25uLVx1MDAzZWxuayBpcyBsZWZ0XG4rICogdW5jaGFuZ2VkOiBmb3IgU01DLVIgaXQgYWxyZWFkeSBwb2ludHMgdG8gdGhlIHJpZ2h0IFFQOyBmb3IgU01DLUQgdGhlcmUgaXNcbisgKiBubyBwZXItbGluayBRUCB0byBhYm9ydCBvbi5cbisgKi9cbitzdGF0aWMgdm9pZCBzbWNfY2RjX2Fib3J0X2Nvbm4oc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfbGluayAqbGluaylcbit7XG4rXHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBcdTAwMjZzbWMtXHUwMDNlY29ubjtcbitcbitcdGNvbm4tXHUwMDNlb3V0X29mX3N5bmMgPSAxOyAgLyogcHJldmVudCBhbnkgZnVydGhlciByZWNlaXZlcyAqL1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlc2VuZF9sb2NrKTtcbitcdGNvbm4tXHUwMDNlbG9jYWxfdHhfY3RybC5jb25uX3N0YXRlX2ZsYWdzLnBlZXJfY29ubl9hYm9ydCA9IDE7XG4rXHRpZiAobGluaylcbitcdFx0Y29ubi1cdTAwM2VsbmsgPSBsaW5rO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29ubi1cdTAwM2VzZW5kX2xvY2spO1xuK1x0c29ja19ob2xkKFx1MDAyNnNtYy1cdTAwM2Vzayk7IC8qIHNvY2tfcHV0IGluIGFib3J0X3dvcmsgKi9cbitcdGlmICghcXVldWVfd29yayhzbWNfY2xvc2Vfd3EsIFx1MDAyNmNvbm4tXHUwMDNlYWJvcnRfd29yaykpXG4rXHRcdHNvY2tfcHV0KFx1MDAyNnNtYy1cdTAwM2Vzayk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3ZhbGlkYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYyxcbiBcdFx0XHRcdCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG4ge1xuQEAgLTMxNCwxNyArMzM1LDggQEAgc3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxuIFxuIFx0LyogY2hlY2sgdGhhdCBzZXFudW0gd2FzIHNlZW4gYmVmb3JlICovXG4gXHRkaWZmID0gY29ubi1cdTAwM2Vsb2NhbF9yeF9jdHJsLnNlcW5vIC0gcmVjdl9zZXE7XG4tXHRpZiAoZGlmZiBcdTAwM2MgMCkgeyAvKiBkaWZmIGxhcmdlciB0aGFuIDB4N2ZmZiAqL1xuLVx0XHQvKiBkcm9wIGNvbm5lY3Rpb24gKi9cbi1cdFx0Y29ubi1cdTAwM2VvdXRfb2Zfc3luYyA9IDE7XHQvKiBwcmV2ZW50IGFueSBmdXJ0aGVyIHJlY2VpdmVzICovXG4tXHRcdHNwaW5fbG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXNlbmRfbG9jayk7XG4tXHRcdGNvbm4tXHUwMDNlbG9jYWxfdHhfY3RybC5jb25uX3N0YXRlX2ZsYWdzLnBlZXJfY29ubl9hYm9ydCA9IDE7XG4tXHRcdGNvbm4tXHUwMDNlbG5rID0gbGluaztcbi1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29ubi1cdTAwM2VzZW5kX2xvY2spO1xuLVx0XHRzb2NrX2hvbGQoXHUwMDI2c21jLVx1MDAzZXNrKTsgLyogc29ja19wdXQgaW4gYWJvcnRfd29yayAqL1xuLVx0XHRpZiAoIXF1ZXVlX3dvcmsoc21jX2Nsb3NlX3dxLCBcdTAwMjZjb25uLVx1MDAzZWFib3J0X3dvcmspKVxuLVx0XHRcdHNvY2tfcHV0KFx1MDAyNnNtYy1cdTAwM2Vzayk7XG4tXHR9XG4rXHRpZiAoZGlmZiBcdTAwM2MgMCkgLyogZGlmZiBsYXJnZXIgdGhhbiAweDdmZmYgKi9cbitcdFx0c21jX2NkY19hYm9ydF9jb25uKHNtYywgbGluayk7ICAvKiBkcm9wIGNvbm5lY3Rpb24gKi9cbiB9XG4gXG4gc3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oc3RydWN0IHNtY19zb2NrICpzbWMsXG5AQCAtMzc2LDYgKzM4OCwxMSBAQCBzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbiBcdGRpZmZfcHJvZCA9IHNtY19jdXJzX2RpZmYoY29ubi1cdTAwM2VybWJfZGVzYy1cdTAwM2VsZW4sIFx1MDAyNnByb2Rfb2xkLFxuIFx0XHRcdFx0ICBcdTAwMjZjb25uLVx1MDAzZWxvY2FsX3J4X2N0cmwucHJvZCk7XG4gXHRpZiAoZGlmZl9wcm9kKSB7XG4rXHRcdGlmIChkaWZmX3Byb2QgXHUwMDNlIGNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlbGVuIC1cbitcdFx0XHRcdGF0b21pY19yZWFkKFx1MDAyNmNvbm4tXHUwMDNlYnl0ZXNfdG9fcmN2KSkge1xuK1x0XHRcdHNtY19jZGNfYWJvcnRfY29ubihzbWMsIE5VTEwpO1xuK1x0XHRcdHJldHVybjtcbitcdFx0fVxuIFx0XHRpZiAoY29ubi1cdTAwM2Vsb2NhbF9yeF9jdHJsLnByb2RfZmxhZ3MudXJnX2RhdGFfcHJlc2VudClcbiBcdFx0XHRzbWNfY2RjX2hhbmRsZV91cmdfZGF0YV9hcnJpdmFsKHNtYywgXHUwMDI2ZGlmZl9wcm9kKTtcbiBcdFx0LyogYnl0ZXNfdG9fcmN2IGlzIGRlY3JlYXNlZCBpbiBzbWNfcmVjdm1zZyAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTA6NDguODkyNjQxMDg0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQ2MzU3NTA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgKFNNQykqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgbmV0L3NtYy9zbWNfY2RjLmNgLCByaWdodD8gVGhlIGtleSBoZXJlIGlzIHRoaXMgbmV3IGBzbWNfY2RjX2Fib3J0X2Nvbm5gIGZ1bmN0aW9uLiBJdCdzIGRlc2lnbmVkIHRvIGZvcmNlZnVsbHkgdGVybWluYXRlIGEgY29ubmVjdGlvbiBpZiB0aGUgb3RoZXIgZW5kIGlzIG1pc2JlaGF2aW5nIGFuZCB2aW9sYXRpbmcgdGhlIENEQyBwcm90b2NvbC4gR29vZCwgYSBkZWRpY2F0ZWQgZnVuY3Rpb24gZm9yIGNvbm5lY3Rpb24gdGVhcmRvd24sIG1ha2VzIHRoZSBjb2RlIGNsZWFuZXIgYW5kIGVhc2llciB0byByZWFzb24gYWJvdXQuXG5cbk5vdywgaXQgbG9va3MgbGlrZSB0aGV5J3ZlIHJlZmFjdG9yZWQgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCwgcHVsbGluZyBvdXQgYW4gaW5saW5lIGJsb2NrIGFuZCByZXBsYWNpbmcgaXQgd2l0aCBhIGNhbGwgdG8gYHNtY19jZGNfYWJvcnRfY29ubmAuIFNtYXJ0LCByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uIGFuZCBpbXByb3ZpbmcgbWFpbnRhaW5hYmlsaXR5IOKAkyBhbHdheXMgYSBnb29kIHRoaW5nLiBUaGV5J3ZlIGFsc28gYWRkZWQgYSBjaGVjayB3aXRoaW4gYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCB0aGF0IHdpbGwgdHJpZ2dlciBgc21jX2NkY19hYm9ydF9jb25uYCBpZiBgZGlmZl9wcm9kYCBleGNlZWRzIGEgY2FsY3VsYXRlZCB0aHJlc2hvbGQgcmVsYXRlZCB0byByZWNlaXZlZCBieXRlcy4gVGhpcyBwcm9iYWJseSBkZWFscyB3aXRoIHNvbWUgc29ydCBvZiBidWZmZXIgb3ZlcnJ1biBvciBwcm90b2NvbCB2aW9sYXRpb24gZHVyaW5nIG1lc3NhZ2UgcmVjZXB0aW9uLiBUaGlzIHdhcnJhbnRzIGEgbW9yZSBkZXRhaWxlZCBsb29rLlxuXG5GaXJzdCB0aGluZ3MgZmlyc3QsIEkgc2hvdWxkIGNvbmZpcm0gSSdtIHdvcmtpbmcgd2l0aCB0aGUgU01DIGNvZGUsIG9yIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgYXMgYSByZWZyZXNoZXIuIFRoZSBuZXh0IHN0ZXAgaXMgYSBxdWljayBjaGVjayBvZiBgbmV0L3NtYy9zbWNfY2RjLmNgIGl0c2VsZiBhbmQgdGhlIEtjb25maWcgZm9yIFNNQywgbG9va2luZyBmb3IgdGhlIGBDT05GSUdfU01DYCBzeW1ib2wsIGp1c3QgdG8gZW5zdXJlIHRoYXQgdGhlIHByb3BlciBjb25maWd1cmF0aW9ucyBhcmUgc2V0IHVwLlxuXG5UaGVuLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGVzZSBjaGFuZ2VzLiBJJ2xsIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAuXG5cblRvIGdldCBhIGJldHRlciBwaWN0dXJlLCBJJ2xsIHVzZSBgZ2l0IGdyZXBgIHRvIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgaW1wYWN0IG9mIHRoZSBwYXRjaCBhbmQgaG93IHRoZXNlIG1vZGlmaWNhdGlvbnMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBTTUMgQ0RDIGltcGxlbWVudGF0aW9uLiBJIHdpbGwgbmVlZCB0byBsb29rIGludG8gYGRpZmZfcHJvZGAgdG8gZnVsbHkgdW5kZXJzdGFuZCB3aGF0IGlzIGdvaW5nIG9uIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTAsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo1MDo1Ny4zNTYyMTgzNDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0OTcxNzk2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0zMjk9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMzQxLVxcbm5ldC9zbWMvc21jX2NkYy5jOjM0MjpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL3NtY19jZGMuYy0zNDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDQ0PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDQ3LVxcdGJoX2xvY2tfc29jayhcXHUwMDI2c21jLVxcdTAwM2Vzayk7XFxubmV0L3NtYy9zbWNfY2RjLmM6NDQ4OlxcdHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKHNtYywgY2RjKTtcXG5uZXQvc21jL3NtY19jZGMuYy00NDktXFx0YmhfdW5sb2NrX3NvY2soXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0yOS0vKiBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0byB3YWtldXAgY29uc3VtZXJzIGJsb2NrZWQgd2l0aCBzbWNfcnhfd2FpdCgpLlxcbm5ldC9zbWMvc21jX3J4LmM6MzA6ICogaW5kaXJlY3RseSBjYWxsZWQgYnkgc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKS5cXG5uZXQvc21jL3NtY19yeC5jLTMxLSAqL1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYz0zNTI9aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM5OC1cXHRcXHRpZiAoc2stXFx1MDAzZXNrX3NodXRkb3duIFxcdTAwMjYgUkNWX1NIVVRET1dOKSB7XFxubmV0L3NtYy9zbWNfcnguYzozOTk6XFx0XFx0XFx0Lyogc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBjb3VsZCBoYXZlIHJ1biBhZnRlclxcbm5ldC9zbWMvc21jX3J4LmMtNDAwLVxcdFxcdFxcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTA6NTguOTA1OTQxNDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY3MDY5MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZTpcblxuKipBbmFseXppbmcgYHNtY19jZGNfbXNnX3JlY3ZgKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBgc21jX2NkY19tc2dfcmVjdmAgYmV0dGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIHRyYWNlIGl0cyB1c2FnZS4gSSdsbCBuZWVkIHRvIHNlZSBwcmVjaXNlbHkgKndobyogaXMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBJcyBpdCBvbmx5IGZyb20gYSBzcGVjaWZpYyBtb2R1bGUsIG9yIGlzIGl0IGEgbW9yZSBnZW5lcmFsIHV0aWxpdHk/IEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNvbnRleHQsIHJldmVhbGluZyB0aGUgc2NlbmFyaW9zIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgZW1wbG95ZWQuIEZyb20gdGhlcmUsIEkgY2FuIGJlZ2luIHRvIHJlYXNvbiBhYm91dCBpdHMgcHVycG9zZSBhbmQgdGhlIHJvbGUgaXQgcGxheXMgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaGUgY2FsbGluZyBjb250ZXh0IHdpbGwgYWxzbyBhbGxvdyBtZSB0byBoeXBvdGhlc2l6ZSBhYm91dCB0aGUgZXhwZWN0ZWQgaW5wdXRzIGFuZCBvdXRwdXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTAzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTE6MDIuMTczMDEyNzA3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTc0MTc3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2NkY19tc2dfcmVjdlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0zMjk9c3RhdGljIHZvaWQgc21jX2NkY19tc2dfdmFsaWRhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMzQxLVxcbm5ldC9zbWMvc21jX2NkYy5jOjM0MjpzdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL3NtY19jZGMuYy0zNDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDQzLS8qIGNhbGxlZCB1bmRlciB0YXNrbGV0IGNvbnRleHQgKi9cXG5uZXQvc21jL3NtY19jZGMuYzo0NDQ6c3RhdGljIHZvaWQgc21jX2NkY19tc2dfcmVjdihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfbXNnICpjZGMpXFxubmV0L3NtYy9zbWNfY2RjLmMtNDQ1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ0Ny1cXHRiaF9sb2NrX3NvY2soXFx1MDAyNnNtYy1cXHUwMDNlc2spO1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ0ODpcXHRzbWNfY2RjX21zZ19yZWN2X2FjdGlvbihzbWMsIGNkYyk7XFxubmV0L3NtYy9zbWNfY2RjLmMtNDQ5LVxcdGJoX3VubG9ja19zb2NrKFxcdTAwMjZzbWMtXFx1MDAzZXNrKTtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQ1OT1zdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDcyLVxcdHNtYyA9IGNvbnRhaW5lcl9vZihjb25uLCBzdHJ1Y3Qgc21jX3NvY2ssIGNvbm4pO1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ3MzpcXHRzbWNfY2RjX21zZ19yZWN2KHNtYywgKHN0cnVjdCBzbWNfY2RjX21zZyAqKVxcdTAwMjZjZGMpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTQ3NC19XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz00ODY9c3RhdGljIHZvaWQgc21jX2NkY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTUxOS1cXG5uZXQvc21jL3NtY19jZGMuYzo1MjA6XFx0c21jX2NkY19tc2dfcmVjdihzbWMsIGNkYyk7XFxubmV0L3NtYy9zbWNfY2RjLmMtNTIxLW91dDpcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMjktLyogY2FsbGJhY2sgaW1wbGVtZW50YXRpb24gdG8gd2FrZXVwIGNvbnN1bWVycyBibG9ja2VkIHdpdGggc21jX3J4X3dhaXQoKS5cXG5uZXQvc21jL3NtY19yeC5jOjMwOiAqIGluZGlyZWN0bHkgY2FsbGVkIGJ5IHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkuXFxubmV0L3NtYy9zbWNfcnguYy0zMS0gKi9cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmM9MzUyPWludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTgtXFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zaHV0ZG93biBcXHUwMDI2IFJDVl9TSFVURE9XTikge1xcbm5ldC9zbWMvc21jX3J4LmM6Mzk5OlxcdFxcdFxcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cXHRcXHRcXHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjUxOjAzLjc5MDQzODIzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTg0OTgyMjAwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKlNNQyBQcm90b2NvbCBWdWxuZXJhYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHNwZWNpZmljYWxseSwgdGhlIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgZnVuY3Rpb24uIEkgc2VlIHRoYXQgaXQncyByZWFjaGFibGUgZnJvbSBib3RoIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gR29vZCwgZ29vZC4gRnVuY3Rpb25hbGl0eSBhbmQgcmVhY2hhYmlsaXR5IGFyZSBjb25maXJtZWQuIFRoYXQncyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIGJlY2F1c2UgU01DIGlzIGEgbmV0d29yayBwcm90b2NvbCwgbXkgZXhwZXJ0IGludHVpdGlvbiBpcyBzY3JlYW1pbmcgZm9yIGZ1enppbmcuIEkgbWVhbiwgaXQgcHJhY3RpY2FsbHkgKmJlZ3MqIGZvciBpdC4gSXQncyBhIHByaW1lIHRhcmdldCBmb3IgcHJvdG9jb2wtbGV2ZWwgZnV6emluZy4gQWx3YXlzIHRoZSBsb3ctaGFuZ2luZyBmcnVpdCB3aGVuIGl0IGNvbWVzIHRvIG5ldHdvcmtzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBpcyBzZXQgLSBJIHNlZSBhIHJlZmVyZW5jZSB0byBgQ09ORklHX1NNQ2AuIFRpbWUgdG8gcGVlayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgU01DIGZ1bmN0aW9uYWxpdHkgaXMgZXZlbiBlbmFibGVkIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gYmVmb3JlIEkgd2FzdGUgdG9vIG11Y2ggdGltZSwgYXMgSSdtIHN1cmUgaXMgdGhlIHNhbWUgd2l0aCBhbnkgZXhwZXJpZW5jZWQgZXhwZXJ0LiBHb3R0YSBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTAxLCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTY6MDMuNjQwMjYyNTc1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDI0NDYyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzh4eC9LY29uZmlnPTE0Nj1jb25maWcgSTJDX1NQSV9TTUMxX1VDT0RFX1BBVENIXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzh4eC9LY29uZmlnLTE1MC1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzh4eC9LY29uZmlnOjE1MTpjb25maWcgU01DX1VDT0RFX1BBVENIXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84eHgvS2NvbmZpZy0xNTItXFx0Ym9vbCBcXFwiU01DIHJlbG9jYXRpb24gcGF0Y2hcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9TTVNDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2MvS2NvbmZpZzoyMjpjb25maWcgU01DOTFYXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJTTUMgOTFDOXgvOTFDMXh4eCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0xMy1cXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0yMi1cXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo1NjowNS44NDI3MTUxNTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDg1NDE3MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBTTUMgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBgU01DYOKApiB0aGF0J3Mgb3VyIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gYG5ldC9zbWMvS2NvbmZpZ2AuIFRoYXQncyB0aGUgbGlrZWx5IGxvY2F0aW9uIGZvciBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWwgc2V0dGluZ3MgcmVsYXRlZCB0byBgU01DYC4gVGhhdCBmaWxlIHdpbGwgdGVsbCBtZSBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93IGFib3V0IHdoYXQgb3RoZXIgY29tcG9uZW50cywgZmVhdHVyZXMsIG9yIGRyaXZlcnMgbmVlZCB0byBiZSBlbmFibGVkIG9yIGFyZSBpbiBjb25mbGljdCB3aXRoIGBTTUNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgaXRzIGltcGFjdCBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMgYWJvdXQgaXRzIHVzZS4gVGltZSB0byBnZXQgZG93biB0byB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgyNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjU2OjExLjMyODEzNTE3MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTTUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU01DLVIgcHJvdmlkZXMgYSBcXFwic29ja2V0cyBvdmVyIFJETUFcXFwiIHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcXG4gICA3OlxcdFxcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXFxuICAgODpcXHRcXHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXFxuICAgOTpcXHRcXHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcXG4gIDEwOlxcdFxcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBTTUNfRElBR1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBTTUNcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcXG4gIDE5OlxcdFxcdCAgc21jc3MuXFxuICAyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTY6MTEuMzI4MTk1MzcxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MDczNzQ2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRElCUyBNeXN0ZXJ5OiBBIEtlcm5lbCBLY29uZmlnIFB1enpsZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFNNQ2AgY29uZmlndXJhdGlvbiBpbiB0aGUga2VybmVsLCBhbmQgdGhlIGRlcGVuZGVuY3kgY29uZGl0aW9uIGp1bXBzIG91dCBhdCBtZTogYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU2AuIEkga25vdyBgSU5FVGAgYW5kIGBJTkZJTklCQU5EYCwgbm8gcHJvYmxlbSB0aGVyZS4gQnV0LCBob2xkIG9uLi4uIGBESUJTYD8gSXMgdGhhdCBhIHR5cG8/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvc21jL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgc3VyZS4gQWxyaWdodCwgSSdtIHBlZXJpbmcgYXQgYG5ldC9zbWMvS2NvbmZpZ2AgaW4gdGhlIHRyZWUuIFRoZSBkZXBlbmRlbmN5IGlzOiBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gV2FpdCwgaXMgbXkgbWluZCBwbGF5aW5nIHRyaWNrcyBvbiBtZT8gTGV0IG1lIGdvIGJhY2sgYW5kIHJlYWQgdGhlIG91dHB1dCBhZ2Fpbi4gTm8sIGl0ICpzdGlsbCogc2F5cyBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gT2theSwgbWF5YmUgSSBuZWVkIGEgc2FuaXR5IGNoZWNrLCBqdXN0IGNvbmZpcm1pbmcgaXQgaGFzbid0IGNoYW5nZWQuXG5cbkxldCBtZSBnbyBiYWNrIGFuZCBsb29rIGF0IGBuZXQvc21jL0tjb25maWdgIGFnYWluLiBOb3BlLCBpdCAqc3RpbGwqIHJlYWRzOiBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gT2theSwgbm8sIEkgZGlkbid0IG1pc3JlYWQgaXQuIEJ1dCBub3cgbXkgZXhwZXJ0IG1pbmQgaXMgc2NyZWFtaW5nLCB3aGF0IGlzIHRoaXMgYERJQlNgPyEgVGltZSB0byBleGVjdXRlIGEgYGdyZXBgIGFuZCBzZWUgaWYgSSBjYW4gZmluZCB0aGlzIGVuaWdtYXRpYyBmZWF0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzA5LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTY6MTguMTM1NTcyMzQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjM1MzkwODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBESUJTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo1NjoyMC4zNzA5NzE0MjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5MDg5ODMxOTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBESUJTKipcblxuUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYERJQlNgLCB0aGF0J3MgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoZSBjb3JyZWN0IG5ldHdvcmsgc3RhY2sgY29uZmlndXJlZC4gVGhhdCBsaWtlbHkgbWVhbnMgSSdsbCBuZWVkIHRvIGVuYWJsZSBgSU5FVGAsIGZvciB0aGUgdXN1YWwgSVB2NCwgYW5kIEkgc2hvdWxkIGFsc28gY2hlY2sgYElORklOSUJBTkRgIHN1cHBvcnQsIGFzIEkgc3VzcGVjdCBESUJTIG1pZ2h0IGxldmVyYWdlIHRoYXQgZm9yIGhpZ2gtcGVyZm9ybWFuY2UgaW50ZXJjb25uZWN0cy5cblxuVG8gYmUgY2VydGFpbiBvZiB0aGUgZGVwZW5kZW5jaWVzIGZvciBgRElCU2AgaXRzZWxmLCBJIHNob3VsZCBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUgc2Vuc2libGUgcGxhY2UgdG8gc3RhcnQgaXMgYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBwcmVjaXNlIHJlYWQgb3V0IG9mIHRoZSByZXF1aXJlZCBvcHRpb25zIGFuZCBhbnkgaW50ZXJkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBlbnN1cmUgSSBnZXQgdGhpcyB0aGluZyBjb25maWd1cmVkIGNvcnJlY3RseSBmb3IgdGhlIHRhcmdldCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA4OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjAxOjI5LjQ2MDgwNzA0NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRjb25maWcgRElCU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XFxuICAgNzpcXHRcXHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXFxuICAgODpcXHRcXHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXFxuICAxMTpcXHRcXHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cXG4gIDEyOlxcdFxcdCAgVGhlIG1vZHVsZSBuYW1lIGlzIGRpYnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBESUJTX0xPXFxuICAxNTpcXHRcXHRib29sIFxcXCJJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIERJQlNcXG4gIDE3OlxcdFxcdGRlZmF1bHQgblxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBESUJTX0xPIGVuYWJsZXMgdGhlIGNyZWF0aW9uIG9mIGFuIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlXFxuICAyMDpcXHRcXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDE6MjkuNDYwOTIxNzM1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzkyNzAzNDY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgZW5hYmxpbmcgYFNNQ2AgbmVjZXNzaXRhdGVzIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLCBzbyBsZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgb2YgdGhvc2UgZW5hYmxlZC4gRWFzeSBlbm91Z2guIE5vdywgSSBzZWUgdGhpcyBwYXRjaCBtb2RpZmllcyBgc21jX2NkYy5jYC4gVGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBhbmQgZXZlbiBhZGRpbmcgYHNtY19jZGNfYWJvcnRfY29ubmAuIFRoZXNlIGFyZSBjb3JlIGZ1bmN0aW9ucy4gRGVmaW5pdGVseSBmdW5jdGlvbmFsIGNoYW5nZXMuIFRob3NlIHRocmVlLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLCBhbmQgYHNtY19jZGNfYWJvcnRfY29ubmAsIHRob3NlIGFyZSB0aGUgZm9jdXMuXG5cbldhaXQgYSBzZWNvbmQuIE5vdyBJIHNlZSB0aGF0IGFsbCB0aHJlZSBhcmUgc3RhdGljISBUaGF0IG1lYW5zIHRoZXkgaGF2ZSBpbnRlcm5hbCBsaW5rYWdlIG9ubHkuIFRoZSBpbnN0cnVjdGlvbnMgc3RpcHVsYXRlIHRvIHByZWZlciBub24tc3RhdGljIEFQSSBlbnRyeXBvaW50cy4gVGhlIHJhdGlvbmFsZSBiZWluZyB0aGF0IHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbHMsIGFuZCB0aHVzIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbi4gU28gbGV0J3MgY2hlY2s6IGFyZSB0aGVzZSBiZWluZyBpbmxpbmVkPyBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIGNhbGxlZCBmcm9tIGBzbWNfY2RjX21zZ19yZWN2YC4gVGhhdCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gSSBuZWVkIHRvIGluc3BlY3QgdGhlc2UgYXMgd2VsbC5cblxuT2theSwgbGV0J3Mgc2VlLiBgc21jZF9jZGNfcnhfdHNrbGV0YCBpcyBhbHNvIHN0YXRpYy4gQW5kIGBzbWNfY2RjX3J4X2hhbmRsZXJgIGlzIGFsc28gc3RhdGljISBUaGF0J3MgcHJvYmxlbWF0aWMuIFdoYXQgYXJlIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyB0aGVuPyBXZSBuZWVkIGEgd2F5IHRvIHJlZ2lzdGVyIG9yIHVzZSB0aGlzIGNvZGUgZnJvbSBlbHNld2hlcmUuIEknbSBnb2luZyB0byBncmVwIGZvciBgc21jX2NkY19yeF9oYW5kbGVyYCBhbmQgYHNtY2RfY2RjX3J4X3Rza2xldGAgdG8gZmluZCB0aGVpciByZWdpc3RyYXRpb24gcG9pbnRzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZW50aXJlIHRoaW5nIGlzIGJlaW5nIHVzZWQgZnJvbSB0aGUgb3V0c2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYxNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjAzOjI3LjM4Nzk1OTA0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNzAyNDMzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfY2RjX3J4X2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NDc5PXZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy00ODUtXFxubmV0L3NtYy9zbWNfY2RjLmM6NDg2OnN0YXRpYyB2b2lkIHNtY19jZGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXFxubmV0L3NtYy9zbWNfY2RjLmMtNDg3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTUyNC1cXG5uZXQvc21jL3NtY19jZGMuYzo1MjU6c3RhdGljIHN0cnVjdCBzbWNfd3JfcnhfaGFuZGxlciBzbWNfY2RjX3J4X2hhbmRsZXJzW10gPSB7XFxubmV0L3NtYy9zbWNfY2RjLmMtNTI2LVxcdHtcXG5uZXQvc21jL3NtY19jZGMuYzo1Mjc6XFx0XFx0LmhhbmRsZXJcXHQ9IHNtY19jZGNfcnhfaGFuZGxlcixcXG5uZXQvc21jL3NtY19jZGMuYy01MjgtXFx0XFx0LnR5cGVcXHRcXHQ9IFNNQ19DRENfTVNHX1RZUEVcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTUzNT1pbnQgX19pbml0IHNtY19jZGNfaW5pdCh2b2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNTM5LVxcbm5ldC9zbWMvc21jX2NkYy5jOjU0MDpcXHRmb3IgKGhhbmRsZXIgPSBzbWNfY2RjX3J4X2hhbmRsZXJzOyBoYW5kbGVyLVxcdTAwM2VoYW5kbGVyOyBoYW5kbGVyKyspIHtcXG5uZXQvc21jL3NtY19jZGMuYy01NDEtXFx0XFx0SU5JVF9ITElTVF9OT0RFKFxcdTAwMjZoYW5kbGVyLVxcdTAwM2VsaXN0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDM6MjguODE0OTg3Mjg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTI4OTUwMjYyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgc21jZF9jZGNfcnhfdHNrbGV0YCBUYXNrbGV0KipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHNtY2RfY2RjX3J4X3Rza2xldGAgcm91dGluZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgd2l0aGluIHRoZSBDREMgKHByZXN1bWFibHksIENvbW11bmljYXRpb24gRGV2aWNlIENsYXNzKSByZWNlaXZlIHBhdGguIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCwgdGhlIGhhcmR3YXJlIGVudmlyb25tZW50IGFuZCB0aGUgcHJvdG9jb2wgaW52b2x2ZWQuIElzIHRoaXMgaGFuZGxpbmcgcmF3IFVTQiBkYXRhIGRpcmVjdGx5LCBvciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uPyBBcmUgd2UgbG9va2luZyBhdCBhIHNwZWNpZmljIGRldmljZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBvciBhIG1vcmUgZ2VuZXJpYyBVU0IgaW50ZXJmYWNlIGZyYW1ld29yaz8gTXkgZmlyc3Qgc3RlcCBpcyB1c3VhbGx5IHRvIG1lbnRhbGx5IHJlY29uc3RydWN0IHRoZSBjYWxsIHN0YWNrOyB3aGVyZSBkb2VzIHRoaXMgdGFza2xldCBmaXQgaW4gdGhlIHJlY2VpdmUgZmxvdz8gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcywgc3luY2hyb25pemF0aW9uIGlzc3VlcyBhbmQgYnVmZmVyIG1hbmFnZW1lbnQgY29uY2VybnMuIEEgcXVpY2sgZ2xhbmNlIHN1Z2dlc3RzIHRoYXQgdGhpcyBjb3VsZCBiZSBhIHBvaW50IHdoZXJlIGRhdGEgaW5ncmVzcyBlbnRlcnMgdXNlci1zcGFjZS5cblxuSSdtIHRoaW5raW5nIGFib3V0IHR5cGljYWwgaXNzdWVzIGF0IHRoaXMgc3RhZ2UgLSBJbnRlcnJ1cHQgU2VydmljZSBSb3V0aW5lIChJU1IpIGludGVyYWN0aW9uLCBETUEgdHJhbnNmZXJzLCBkYXRhIHZhbGlkYXRpb24uIFdoYXQga2luZCBvZiBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBidWZmZXIgb3ZlcnJ1bnMgb3IgdW5kZXJmbG93cz8gSXMgdGhlcmUgYW55IHBvdGVudGlhbCBmb3IgZGF0YSBsb3NzIHVuZGVyIGhlYXZ5IGxvYWQ/IEEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0YXNrbGV0J3MgaW1wbGVtZW50YXRpb24gaXMgcGFyYW1vdW50IHRvIGZpbmRpbmcgYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCBuZWVkcyB0byBoYW5kbGUgYWxsIHRoZSBjb21tb24gY29ybmVyIGNhc2VzIHRvIGVuc3VyZSBzdGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjowODozNC4xMDQ0OTI1ODZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzYzNzUzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jZF9jZGNfcnhfdHNrbGV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTQ0ND1zdGF0aWMgdm9pZCBzbWNfY2RjX21zZ19yZWN2KHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2NkY19tc2cgKmNkYylcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ1OC0gKi9cXG5uZXQvc21jL3NtY19jZGMuYzo0NTk6c3RhdGljIHZvaWQgc21jZF9jZGNfcnhfdHNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG5uZXQvc21jL3NtY19jZGMuYy00NjAte1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NDc5PXZvaWQgc21jZF9jZGNfcnhfaW5pdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtNDgwLXtcXG5uZXQvc21jL3NtY19jZGMuYzo0ODE6XFx0dGFza2xldF9zZXR1cChcXHUwMDI2Y29ubi1cXHUwMDNlcnhfdHNrbGV0LCBzbWNkX2NkY19yeF90c2tsZXQpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTQ4Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA4OjM1LjU4MDg3NzI2NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU5Mzg0Mzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU01DIENEQyBSZWNlaXZlIFBhdGgqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdHJhY2UgaG93IHRoZSBDREMgcmVjZWl2ZSBwYXRoIGlzIHNldCB1cCBmb3IgdGhpcyBTTUMgY29tcG9uZW50LiBJIHNlZSB0aGF0IHRoZSBgc21jX2NkY19yeF9oYW5kbGVyYCBmdW5jdGlvbiBpcyB0aGUga2V5IHBsYXllciBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHJlZ2lzdGVyZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwaGFzZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHNtY19jZGNfaW5pdGAgZnVuY3Rpb24uIFRoZSByZWdpc3RyYXRpb24gaXRzZWxmIGlzIGxpa2VseSBkb25lIHRocm91Z2ggdGhlIGBzbWNfd3JfcnhfaGFuZGxlcmAgY2FsbCwgd2hpY2ggaXMgYSBjb21tb24gcGF0dGVybi4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gQWRkaXRpb25hbGx5LCBJIG5vdGljZSB0aGF0IGBzbWNkX2NkY19yeF90c2tsZXRgIGlzIGFsc28gaGFuZ2luZyBhcm91bmQsIHJlZ2lzdGVyZWQgaW4gYHNtY2RfY2RjX3J4X2luaXRgLiBTbywgaXQgYXBwZWFycyB0aGVyZSdzIGEgdGFza2xldCBpbnZvbHZlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYW5kbGVyIGFuZCB0aGUgdGFza2xldCBjb29yZGluYXRlLCBidXQgZmlyc3QsIEkgd2lsbCBkb3VibGUgY2hlY2sgaG93IHRoZSBgc21jX3dyX3J4X2hhbmRsZXJgIHJlZ2lzdHJhdGlvbiB3b3Jrcy4gVGhhdCdzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwIHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50aXJlIHJlY2VpdmUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQwOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA4OjQwLjA0MDI2Mzg0M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MTE1MTI2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfd3JfcnhfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NTM1PWludCBfX2luaXQgc21jX2NkY19pbml0KHZvaWQpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy01NDEtXFx0XFx0SU5JVF9ITElTVF9OT0RFKFxcdTAwMjZoYW5kbGVyLVxcdTAwM2VsaXN0KTtcXG5uZXQvc21jL3NtY19jZGMuYzo1NDI6XFx0XFx0cmMgPSBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihoYW5kbGVyKTtcXG5uZXQvc21jL3NtY19jZGMuYy01NDMtXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjM2ND1pbnQgX19pbml0IHNtY19sbGNfaW5pdCh2b2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM3MC1cXHRcXHRJTklUX0hMSVNUX05PREUoXFx1MDAyNmhhbmRsZXItXFx1MDAzZWxpc3QpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjIzNzE6XFx0XFx0cmMgPSBzbWNfd3JfcnhfcmVnaXN0ZXJfaGFuZGxlcihoYW5kbGVyKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMzcyLVxcdFxcdGlmIChyYylcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9MzY2PWludCBzbWNfd3JfcmVnX3NlbmQoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3QgaWJfbXIgKm1yKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00MDctXFxubmV0L3NtYy9zbWNfd3IuYzo0MDg6aW50IHNtY193cl9yeF9yZWdpc3Rlcl9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfcnhfaGFuZGxlciAqaGFuZGxlcilcXG5uZXQvc21jL3NtY193ci5jLTQwOS17XFxuLS1cXG5uZXQvc21jL3NtY193ci5oPTEzMD12b2lkIHNtY193cl90eF93YWl0X25vX3BlbmRpbmdfc2VuZHMoc3RydWN0IHNtY19saW5rICpsaW5rKTtcXG5uZXQvc21jL3NtY193ci5oLTEzMS1cXG5uZXQvc21jL3NtY193ci5oOjEzMjppbnQgc21jX3dyX3J4X3JlZ2lzdGVyX2hhbmRsZXIoc3RydWN0IHNtY193cl9yeF9oYW5kbGVyICpoYW5kbGVyKTtcXG5uZXQvc21jL3NtY193ci5oLTEzMy1pbnQgc21jX3dyX3J4X3Bvc3RfaW5pdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjowODo0MS40ODE0MTk1NzVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzNzQ2OTQzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlRyYWNpbmcgdGhlIENhbGwgUGF0aDogYHNtY193cl9yeF9oYW5kbGVyYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGBzbWNfd3JfcnhfaGFuZGxlcmAuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgaW52b2tlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgcGF0aC4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gY29kZSB0aGF0IGNhbGxzIGl0IGlzIGdvaW5nIHRvIGJlIGtleSB0byBmaWd1cmluZyBvdXQgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHR5cGljYWwgdGVjaG5pcXVlcyB0byBsb2NhdGUgYWxsIHRoZSBjYWxsIHNpdGVzIGFuZCBzZWUgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgaXRzIGV4ZWN1dGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IGl0cyBwdXJwb3NlIGFuZCBiZWhhdmlvci4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjM4LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDg6NTMuODU2MTE2Njg4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQzNDMyMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhbmRsZXItXFx1MDAzZWhhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcnRhcy5jPTIxOD1pbnQga3ZtcHBjX3J0YXNfaGNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcnRhcy5jLTI2Mi1cXHRcXHRpZiAoZC1cXHUwMDNldG9rZW4gPT0gYmUzMl90b19jcHUoYXJncy50b2tlbikpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19ydGFzLmM6MjYzOlxcdFxcdFxcdGQtXFx1MDAzZWhhbmRsZXItXFx1MDAzZWhhbmRsZXIodmNwdSwgXFx1MDAyNmFyZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3J0YXMuYy0yNjQtXFx0XFx0XFx0cmMgPSAwO1xcbi0tXFxuZHJpdmVycy9hY3BpL3BybXQuYz0yNjg9aW50IGFjcGlfY2FsbF9wcm1faGFuZGxlcihndWlkX3QgaGFuZGxlcl9ndWlkLCB2b2lkICpwYXJhbV9idWZmZXIpXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJtdC5jLTI4My1cXG5kcml2ZXJzL2FjcGkvcHJtdC5jOjI4NDpcXHRzdGF0dXMgPSBlZmlfY2FsbF9hY3BpX3BybV9oYW5kbGVyKGhhbmRsZXItXFx1MDAzZWhhbmRsZXJfYWRkcixcXG5kcml2ZXJzL2FjcGkvcHJtdC5jLTI4NS1cXHRcXHRcXHRcXHRcXHQgICAodTY0KXBhcmFtX2J1ZmZlcixcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm10LmM9MzAyPXN0YXRpYyBhY3BpX3N0YXR1cyBhY3BpX3BsYXRmb3JtcnRfc3BhY2VfaGFuZGxlcih1MzIgZnVuY3Rpb24sXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJtdC5jLTMzMC1cXG5kcml2ZXJzL2FjcGkvcHJtdC5jOjMzMTpcXHRcXHRpZiAoIWhhbmRsZXItXFx1MDAzZWhhbmRsZXJfYWRkcikge1xcbmRyaXZlcnMvYWNwaS9wcm10LmMtMzMyLVxcdFxcdFxcdGJ1ZmZlci1cXHUwMDNlcHJtX3N0YXR1cyA9IFBSTV9IQU5ETEVSX0VSUk9SO1xcbi0tXFxuZHJpdmVycy9hY3BpL3BybXQuYy0zNDItXFxuZHJpdmVycy9hY3BpL3BybXQuYzozNDM6XFx0XFx0c3RhdHVzID0gZWZpX2NhbGxfYWNwaV9wcm1faGFuZGxlcihoYW5kbGVyLVxcdTAwM2VoYW5kbGVyX2FkZHIsXFxuZHJpdmVycy9hY3BpL3BybXQuYy0zNDQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgaGFuZGxlci1cXHUwMDNlYWNwaV9wYXJhbV9idWZmZXJfYWRkcixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jPTEzMj1zdGF0aWMgc3RydWN0IGxpc3RfaGVhZCAqcmVtb3ZlX2lycV9oYW5kbGVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMtMTY0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jOjE2NTpcXHRcXHRpZiAoaWggPT0gaGFuZGxlci1cXHUwMDNlaGFuZGxlcikge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTE2Ni1cXHRcXHRcXHQvKiBGb3VuZCBvdXIgaGFuZGxlci4gUmVtb3ZlIGl0IGZyb20gdGhlIGxpc3QuICovXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYz0xOTc9c3RhdGljIHZvaWQgdW5yZWdpc3Rlcl9hbGxfaXJxX2hhbmRsZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMtMjE2LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jOjIxNzpcXHRcXHRcXHRpZiAoaGFuZGxlciA9PSBOVUxMIHx8IGhhbmRsZXItXFx1MDAzZWhhbmRsZXIgPT0gTlVMTClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYy0yMTgtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYy0yMjgtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmM6MjI5OlxcdFxcdFxcdGlmIChoYW5kbGVyID09IE5VTEwgfHwgaGFuZGxlci1cXHUwMDNlaGFuZGxlciA9PSBOVUxMKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jLTIzMC1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2RldmljZS5jPTIwNzA9dm9pZCBpYl9kaXNwYXRjaF9ldmVudF9jbGllbnRzKHN0cnVjdCBpYl9ldmVudCAqZXZlbnQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9kZXZpY2UuYy0yMDc2LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaGFuZGxlciwgXFx1MDAyNmV2ZW50LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWV2ZW50X2hhbmRsZXJfbGlzdCwgbGlzdClcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9kZXZpY2UuYzoyMDc3OlxcdFxcdGhhbmRsZXItXFx1MDAzZWhhbmRsZXIoaGFuZGxlciwgZXZlbnQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2RldmljZS5jLTIwNzgtXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JvY2tjaGlwL3JraXNwMS9ya2lzcDEtcGFyYW1zLmM9MjI4OT1zdGF0aWMgdm9pZCBya2lzcDFfZXh0X3BhcmFtc19jb25maWcoc3RydWN0IHJraXNwMV9wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcm9ja2NoaXAvcmtpc3AxL3JraXNwMS1wYXJhbXMuYy0yMzE4LVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcm9ja2NoaXAvcmtpc3AxL3JraXNwMS1wYXJhbXMuYzoyMzE5OlxcdFxcdGJsb2NrX2hhbmRsZXItXFx1MDAzZWhhbmRsZXIocGFyYW1zLCBibG9jayk7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yb2NrY2hpcC9ya2lzcDEvcmtpc3AxLXBhcmFtcy5jLTIzMjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmM9MTI3OT1pd2xfbWxkX3NjYW5fYnVpbGRfY21kKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmMtMTMwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmM6MTMwMTpcXHRcXHRlcnIgPSB2ZXJfaGFuZGxlci1cXHUwMDNlaGFuZGxlcihtbGQsIHZpZiwgcGFyYW1zLCBzY2FuX3N0YXR1cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmMtMTMwMi1cXHRcXHRcXHRcXHRcXHQgICB1aWQsIG9vY19wcmlvcml0eSwgbG93X2xhdGVuY3kpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jPTI4Mjg9c3RhdGljIGludCBpd2xfbXZtX2J1aWxkX3NjYW5fY21kKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtMjg2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmM6Mjg2NDpcXHRcXHRlcnIgPSB2ZXJfaGFuZGxlci1cXHUwMDNlaGFuZGxlcihtdm0sIHZpZiwgcGFyYW1zLCB0eXBlLCB1aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYy0yODY1LVxcdFxcdHJldHVybiBlcnIgPyA6IHVpZDtcXG4tLVxcbm5ldC9pcHY0L3R1bm5lbDQuYz05NT1zdGF0aWMgaW50IHR1bm5lbDRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90dW5uZWw0LmMtMTAyLVxcdGZvcl9lYWNoX3R1bm5lbF9yY3UodHVubmVsNF9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2NC90dW5uZWw0LmM6MTAzOlxcdFxcdGlmICghaGFuZGxlci1cXHUwMDNlaGFuZGxlcihza2IpKVxcbm5ldC9pcHY0L3R1bm5lbDQuYy0xMDQtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2NC90dW5uZWw0LmM9MTQxPXN0YXRpYyBpbnQgdHVubmVsNjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90dW5uZWw0LmMtMTQ4LVxcdGZvcl9lYWNoX3R1bm5lbF9yY3UodHVubmVsNjRfaGFuZGxlcnMsIGhhbmRsZXIpXFxubmV0L2lwdjQvdHVubmVsNC5jOjE0OTpcXHRcXHRpZiAoIWhhbmRsZXItXFx1MDAzZWhhbmRsZXIoc2tiKSlcXG5uZXQvaXB2NC90dW5uZWw0LmMtMTUwLVxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L2lwdjQvdHVubmVsNC5jPTE2MT1zdGF0aWMgaW50IHR1bm5lbG1wbHM0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdHVubmVsNC5jLTE2OC1cXHRmb3JfZWFjaF90dW5uZWxfcmN1KHR1bm5lbG1wbHM0X2hhbmRsZXJzLCBoYW5kbGVyKVxcbm5ldC9pcHY0L3R1bm5lbDQuYzoxNjk6XFx0XFx0aWYgKCFoYW5kbGVyLVxcdTAwM2VoYW5kbGVyKHNrYikpXFxubmV0L2lwdjQvdHVubmVsNC5jLTE3MC1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM9OTY9c3RhdGljIGludCB4ZnJtNF9lc3BfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jLTEwMy1cXHRmb3JfZWFjaF9wcm90b2NvbF9yY3UoZXNwNF9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jOjEwNDpcXHRcXHRpZiAoKHJldCA9IGhhbmRsZXItXFx1MDAzZWhhbmRsZXIoc2tiKSkgIT0gLUVJTlZBTClcXG5uZXQvaXB2NC94ZnJtNF9wcm90b2NvbC5jLTEwNS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYz0xMjQ9c3RhdGljIGludCB4ZnJtNF9haF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmMtMTMxLVxcdGZvcl9lYWNoX3Byb3RvY29sX3JjdShhaDRfaGFuZGxlcnMsIGhhbmRsZXIpXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYzoxMzI6XFx0XFx0aWYgKChyZXQgPSBoYW5kbGVyLVxcdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xMzMtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbm5ldC9pcHY0L3hmcm00X3Byb3RvY29sLmM9MTUyPXN0YXRpYyBpbnQgeGZybTRfaXBjb21wX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xNTktXFx0Zm9yX2VhY2hfcHJvdG9jb2xfcmN1KGlwY29tcDRfaGFuZGxlcnMsIGhhbmRsZXIpXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYzoxNjA6XFx0XFx0aWYgKChyZXQgPSBoYW5kbGVyLVxcdTAwM2VoYW5kbGVyKHNrYikpICE9IC1FSU5WQUwpXFxubmV0L2lwdjQveGZybTRfcHJvdG9jb2wuYy0xNjEtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYz0xMjI9c3RhdGljIGludCB0dW5uZWxtcGxzNl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xMjktXFx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWxtcGxzNl9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2Ni90dW5uZWw2LmM6MTMwOlxcdFxcdGlmICghaGFuZGxlci1cXHUwMDNlaGFuZGxlcihza2IpKVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xMzEtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2Ni90dW5uZWw2LmM9MTQwPXN0YXRpYyBpbnQgdHVubmVsNl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xNDctXFx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWw2X2hhbmRsZXJzLCBoYW5kbGVyKVxcbm5ldC9pcHY2L3R1bm5lbDYuYzoxNDg6XFx0XFx0aWYgKCFoYW5kbGVyLVxcdTAwM2VoYW5kbGVyKHNrYikpXFxubmV0L2lwdjYvdHVubmVsNi5jLTE0OS1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYz0xODU9c3RhdGljIGludCB0dW5uZWw0Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xOTItXFx0Zm9yX2VhY2hfdHVubmVsX3JjdSh0dW5uZWw0Nl9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2Ni90dW5uZWw2LmM6MTkzOlxcdFxcdGlmICghaGFuZGxlci1cXHUwMDNlaGFuZGxlcihza2IpKVxcbm5ldC9pcHY2L3R1bm5lbDYuYy0xOTQtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jPTExMT1zdGF0aWMgaW50IHhmcm02X2VzcF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmMtMTE4LVxcdGZvcl9lYWNoX3Byb3RvY29sX3JjdShlc3A2X2hhbmRsZXJzLCBoYW5kbGVyKVxcbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmM6MTE5OlxcdFxcdGlmICgocmV0ID0gaGFuZGxlci1cXHUwMDNlaGFuZGxlcihza2IpKSAhPSAtRUlOVkFMKVxcbm5ldC9pcHY2L3hmcm02X3Byb3RvY29sLmMtMTIwLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jPTE0MD1zdGF0aWMgaW50IHhmcm02X2FoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYy0xNDctXFx0Zm9yX2VhY2hfcHJvdG9jb2xfcmN1KGFoNl9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jOjE0ODpcXHRcXHRpZiAoKHJldCA9IGhhbmRsZXItXFx1MDAzZWhhbmRsZXIoc2tiKSkgIT0gLUVJTlZBTClcXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTE0OS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L2lwdjYveGZybTZfcHJvdG9jb2wuYz0xNjk9c3RhdGljIGludCB4ZnJtNl9pcGNvbXBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTE3Ni1cXHRmb3JfZWFjaF9wcm90b2NvbF9yY3UoaXBjb21wNl9oYW5kbGVycywgaGFuZGxlcilcXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jOjE3NzpcXHRcXHRpZiAoKHJldCA9IGhhbmRsZXItXFx1MDAzZWhhbmRsZXIoc2tiKSkgIT0gLUVJTlZBTClcXG5uZXQvaXB2Ni94ZnJtNl9wcm90b2NvbC5jLTE3OC1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9NTM1PWludCBfX2luaXQgc21jX2NkY19pbml0KHZvaWQpXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy01MzktXFxubmV0L3NtYy9zbWNfY2RjLmM6NTQwOlxcdGZvciAoaGFuZGxlciA9IHNtY19jZGNfcnhfaGFuZGxlcnM7IGhhbmRsZXItXFx1MDAzZWhhbmRsZXI7IGhhbmRsZXIrKykge1xcbm5ldC9zbWMvc21jX2NkYy5jLTU0MS1cXHRcXHRJTklUX0hMSVNUX05PREUoXFx1MDAyNmhhbmRsZXItXFx1MDAzZWxpc3QpO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjM2ND1pbnQgX19pbml0IHNtY19sbGNfaW5pdCh2b2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM2OC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMzY5OlxcdGZvciAoaGFuZGxlciA9IHNtY19sbGNfcnhfaGFuZGxlcnM7IGhhbmRsZXItXFx1MDAzZWhhbmRsZXI7IGhhbmRsZXIrKykge1xcbm5ldC9zbWMvc21jX2xsYy5jLTIzNzAtXFx0XFx0SU5JVF9ITElTVF9OT0RFKFxcdTAwMjZoYW5kbGVyLVxcdTAwM2VsaXN0KTtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9NDMwPXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfd3JfcnhfZGVtdWx0aXBsZXgoc3RydWN0IGliX3djICp3YylcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtNDQ0LVxcdFxcdGlmIChoYW5kbGVyLVxcdTAwM2V0eXBlID09IHdyX3J4LVxcdTAwM2V0eXBlKVxcbm5ldC9zbWMvc21jX3dyLmM6NDQ1OlxcdFxcdFxcdGhhbmRsZXItXFx1MDAzZWhhbmRsZXIod2MsIHdyX3J4KTtcXG5uZXQvc21jL3NtY193ci5jLTQ0Ni1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA4OjU1LjI5OTU1NTQ1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDk5MzQ2MzQ4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBzbWNfd3JfcnhfZGVtdWx0aXBsZXhgIEZ1bmN0aW9uIENhbGwqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIHNob3dzIHRoYXQgYHNtY193cl9yeF9kZW11bHRpcGxleGAgaXMgY2FsbGluZyBgaGFuZGxlci1cdTAwM2VoYW5kbGVyKHdjLCB3cl9yeClgLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBoYW5kbGVyIHN0cnVjdHVyZS4gSXQncyBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiwgbGlrZWx5IHBhcnQgb2YgYSBicm9hZGVyIGRpc3BhdGNoIG1lY2hhbmlzbS4gVGhlIHBhcmFtZXRlcnMgYHdjYCBhbmQgYHdyX3J4YCBhcmUgdGhlIGludGVyZXN0aW5nIHBpZWNlcyBoZXJlLiBgd2NgIHByb2JhYmx5IHBvaW50cyB0byBzb21lIGtpbmQgb2Ygd29ya2luZyBjb250ZXh0IG9yIGNvbnRyb2wgc3RydWN0dXJlLCBhbmQgYHdyX3J4YCBzZWVtcyB0byBiZSB0aGUgcmVjZWl2ZWQgZGF0YSBpdHNlbGYuIE5vdywgbXkgbWFpbiBxdWVzdGlvbiBpcywgd2hvJ3MgYWN0dWFsbHkgKnVzaW5nKiB0aGlzIGBzbWNfd3JfcnhfZGVtdWx0aXBsZXhgIGZ1bmN0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgY2FsbGVycyB0byBmdWxseSBncm9rIHRoZSBpbnRlbnQgYW5kIHB1cnBvc2Ugb2YgdGhpcyBzcGVjaWZpYyBkZW11bHRpcGxleGluZyBzdGVwLiBJIG5lZWQgdGhlIGJpZyBwaWN0dXJlIHRvIGhhdmUgaXQgYWxsIG1ha2Ugc2Vuc2UuIFRpbWUgdG8gaW52ZXN0aWdhdGUgdGhlIGNhbGwgZ3JhcGghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzkwLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MTU6MzAuMjkzMDIyNjIyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQzNjQ4NjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY193cl9yeF9kZW11bHRpcGxleFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY193ci5jPTQwOD1pbnQgc21jX3dyX3J4X3JlZ2lzdGVyX2hhbmRsZXIoc3RydWN0IHNtY193cl9yeF9oYW5kbGVyICpoYW5kbGVyKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00MjktICovXFxubmV0L3NtYy9zbWNfd3IuYzo0MzA6c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9kZW11bHRpcGxleChzdHJ1Y3QgaWJfd2MgKndjKVxcbm5ldC9zbWMvc21jX3dyLmMtNDMxLXtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9NDQ5PXN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzKHN0cnVjdCBpYl93YyB3Y1tdLCBpbnQgbnVtKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00NTgtXFx0XFx0XFx0bGluay1cXHUwMDNld3JfcnhfdHN0YW1wID0gamlmZmllcztcXG5uZXQvc21jL3NtY193ci5jOjQ1OTpcXHRcXHRcXHRzbWNfd3JfcnhfZGVtdWx0aXBsZXgoXFx1MDAyNndjW2ldKTtcXG5uZXQvc21jL3NtY193ci5jLTQ2MC1cXHRcXHRcXHRzbWNfd3JfcnhfcG9zdChsaW5rKTsgLyogcmVmaWxsIFdSIFJYICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjE1OjMyLjUzNjY3NjUyOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE1Njc5MzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIEZsb3c6IGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYCoqXG5cbkFscmlnaHQsIHNvIEkgc2VlIGBzbWNfd3JfcnhfcHJvY2Vzc19jcWVzYCBpcyBjYWxsaW5nIGBzbWNfd3JfcnhfZGVtdWx0aXBsZXhgLiBOb3RoaW5nIGluaGVyZW50bHkgdW51c3VhbCB0aGVyZSwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gVGhpcyB1c3VhbGx5IG1lYW5zIHRyYWNpbmcgdGhlIGRhdGEgZmxvdy4gUmlnaHQgbm93LCBJJ20gdGhpbmtpbmcgSSBzaG91bGQgdW5kZXJzdGFuZCB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdobyBpcyBjYWxsaW5nICp0aGlzKiBmdW5jdGlvbiwgYHNtY193cl9yeF9wcm9jZXNzX2NxZXNgLiBVbmRlcnN0YW5kaW5nIGl0cyBlbnRyeSBwb2ludHMgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZSBsYXJnZXIgcGljdHVyZSBvZiBkYXRhIHByb2Nlc3Npbmcgb24gdGhpcyBzcGVjaWZpYyBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Mzc1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MTU6MzcuMDUyMzU5NjY5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc0MTUzMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY193cl9yeF9wcm9jZXNzX2NxZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfd3IuYz00MzA9c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9kZW11bHRpcGxleChzdHJ1Y3QgaWJfd2MgKndjKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00NDgtXFxubmV0L3NtYy9zbWNfd3IuYzo0NDk6c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9wcm9jZXNzX2NxZXMoc3RydWN0IGliX3djIHdjW10sIGludCBudW0pXFxubmV0L3NtYy9zbWNfd3IuYy00NTAte1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz00Nzk9c3RhdGljIHZvaWQgc21jX3dyX3J4X3Rhc2tsZXRfZm4oc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy00OTctXFx0XFx0XFx0YnJlYWs7XFxubmV0L3NtYy9zbWNfd3IuYzo0OTg6XFx0XFx0c21jX3dyX3J4X3Byb2Nlc3NfY3FlcyhcXHUwMDI2d2NbMF0sIHJjKTtcXG5uZXQvc21jL3NtY193ci5jLTQ5OS1cXHR9IHdoaWxlIChyYyBcXHUwMDNlIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjoxNTozOS4zMjY1MTcxOTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU2Mjc2OTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYHNtY193cl9yeGAgVGFza2xldCoqXG5cbkFscmlnaHQsIHNvIHRoZSBgc21jX3dyX3J4X3Rhc2tsZXRfZm5gIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYHNtY193cl9yeF9wcm9jZXNzX2NxZXNgLiBUaGF0J3MgdGhlIGNvcmUgaW50ZXJhY3Rpb24sIG1ha2VzIHNlbnNlLiBOb3cgSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGlzIGVudGlyZSBwcm9jZXNzLiBUbyBlZmZlY3RpdmVseSB0cm91Ymxlc2hvb3Qgb3Igb3B0aW1pemUgdGhpcyBzZWN0aW9uLCB0aGUgY3J1Y2lhbCB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcywgd2hvIGludm9rZXMgYHNtY193cl9yeF90YXNrbGV0X2ZuYD8gV2hhdCdzIHRoZSBlbnRyeSBwb2ludD8gSXMgaXQgYSBoYXJkd2FyZSBpbnRlcnJ1cHQsIGEgdGltZXIsIG9yIGFub3RoZXIgc29mdHdhcmUgY29tcG9uZW50PyBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIGlzIGtleSB0byB0cmFjaW5nIHRoZSBkYXRhIHBhdGggYW5kIHBpbnBvaW50aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIExldCdzIGRlbHZlIGludG8gdGhhdCBjYWxsIGdyYXBoIGFuZCBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4NjIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjoxNTo0My44ODkyODk0MDFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTgzNzg3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX3dyX3J4X3Rhc2tsZXRfZm5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfd3IuYz00NDk9c3RhdGljIGlubGluZSB2b2lkIHNtY193cl9yeF9wcm9jZXNzX2NxZXMoc3RydWN0IGliX3djIHdjW10sIGludCBudW0pXFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTQ3OC1cXG5uZXQvc21jL3NtY193ci5jOjQ3OTpzdGF0aWMgdm9pZCBzbWNfd3JfcnhfdGFza2xldF9mbihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxubmV0L3NtYy9zbWNfd3IuYy00ODAte1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz04MzU9dm9pZCBzbWNfd3JfYWRkX2RldihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXFxubmV0L3NtYy9zbWNfd3IuYy04MzYte1xcbm5ldC9zbWMvc21jX3dyLmM6ODM3OlxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VyZWN2X3Rhc2tsZXQsIHNtY193cl9yeF90YXNrbGV0X2ZuKTtcXG5uZXQvc21jL3NtY193ci5jLTgzOC1cXHR0YXNrbGV0X3NldHVwKFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlc2VuZF90YXNrbGV0LCBzbWNfd3JfdHhfdGFza2xldF9mbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjE1OjQ2LjEwNzY3MjY4OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjgxMDkxOTIzOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqVGFza2xldCBTY3J1dGlueSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gTXkgbWluZCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGlzIGBzbWNfd3JfcnhfdGFza2xldF9mbmAuIFRoZSBmdW5jdGlvbiBuYW1lIHNjcmVhbXMgXCJ0YXNrbGV0XCIgYXQgbWUsIGFuZCB0aGF0J3MgcHJlY2lzZWx5IHdoYXQgaXQgYXBwZWFycyB0byBiZS4gTXkgYnJhaW4ncyBhbHJlYWR5IG1ha2luZyBhc3NvY2lhdGlvbnMg4oCTIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLCBkZWZlcnJpbmcgd29yaywgbGlrZWx5IGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHQgY29udGV4dCBpc3N1ZXMsIHRoYXQga2luZCBvZiB0aGluZy4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIGNoYXJhY3RlcmlzdGljcyDigJMgcGVyaGFwcyBpdCdzIGEgYm90dG9tIGhhbGYgaGFuZGxlciBmb3Igc29tZSBraW5kIG9mIFJYIHBhdGggcmVsYXRlZCB0byBhbiBTTUMgb3IgQ0RDIGludGVyZmFjZSwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucy5cblxuTm93LCBteSBjdXJpb3NpdHkgaXMgcGlxdWVkLiBUaGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gd29uZGVyIHdoYXQgdGhlIGhlbGwgaXMgdGhlIHJvbGUgb2YgYHNtY2RfY2RjX3J4X3Rza2xldGAgaW4gdGhpcyBhcmNoaXRlY3R1cmUuIFdoeSBpcyB0aGlzIGZ1bmN0aW9uIG5vdCBuYW1lZCBgc21jZF93cl9yeF90YXNrbGV0X2ZuYCwgbGlrZSB0aGUgb3RoZXIgdGFza2xldD8gQXJlIHRoZXkgcmVsYXRlZD8gQXJlIHRoZXJlIGRpZmZlcmVudCBkYXRhIHBhdGhzIGludm9sdmVkPyBJcyB0aGlzIGEgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb24gdG8gaW5kaWNhdGUgYW4gYXN5bmNocm9ub3VzIHRyYW5zZmVyPyBBcmUgdGhlc2UgdHdvIHJlbGF0ZWQgb3IgaXMgYHNtY2RgIHNvbWV0aGluZyB0b3RhbGx5IGRpZmZlcmVudD8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIGxvY2F0aW9uLCBhbmQgdGhlIHVzZSBjYXNlcywgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGFyZSByZWxhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM4NiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjI0OjM0LjIxNjg2ODA5M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNTQzMTgwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNkX2NkY19yeF90c2tsZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NDQ0PXN0YXRpYyB2b2lkIHNtY19jZGNfbXNnX3JlY3Yoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX21zZyAqY2RjKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDU4LSAqL1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ1OTpzdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ2MC17XFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYz00Nzk9dm9pZCBzbWNkX2NkY19yeF9pbml0KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jZGMuYy00ODAte1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ4MTpcXHR0YXNrbGV0X3NldHVwKFxcdTAwMjZjb25uLVxcdTAwM2VyeF90c2tsZXQsIHNtY2RfY2RjX3J4X3Rza2xldCk7XFxubmV0L3NtYy9zbWNfY2RjLmMtNDgyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MjQ6MzUuNjQyMzA3NjI1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzAxNDc4NTUwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBDREMgTW9kdWxlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBTTUMgQ0RDIGNvZGUsIGFuZCBpdCBzZWVtcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHRhc2tsZXQgaGVyZS4gUmlnaHQsIGdvdCBpdC4gTm93LCB3aGF0IGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cz8gTGV0J3Mgc2VlLi4uIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAsIGFuZCBgc21jX2NkY19hYm9ydF9jb25uYC4gR290IHRob3NlIGRvd24uIFxuXG5Ob3csIHdhaXQgYSBzZWNvbmQsIHRoZSBjb2RpbmcgZ3VpZGVsaW5lcyBhcmUgdGVsbGluZyB1cyBzb21ldGhpbmcgaW50ZXJlc3Rpbmc6IGF2b2lkIHRob3NlIHBlc2t5IGludGVybmFsLCBpbmxpbmVkIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGlmIHBvc3NpYmxlLCBhbmQgc3RpY2sgdG8gbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIGlmIHdlIGNhbi4gVGhvc2UgaW50ZXJuYWwgaGVscGVycyBkb24ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIGNvbXBsaWNhdGVzIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMuIFNvLCB0aGF0J3Mgd2hhdCB3ZSdsbCBkby4gV2Ugd2lsbCBodW50IHRocm91Z2ggYG5ldC9zbWMvc21jX2NkYy5jYCBhbmQgdHJ5IHRvIGlkZW50aWZ5IHRob3NlIHByZWZlcmFibGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRoYXQncyB0aGUgd2F5IHRvIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTk1MCwiT3V0cHV0VG9rZW5zIjo2NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjoyNjozOC42NTcwOTYxNDZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTEzODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHNtY19jZGNfW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTI2PXN0YXRpYyB2b2lkIHNtY19jZGNfdHhfaGFuZGxlcihzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqcG5kX3NuZCxcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTcyLVxcbm5ldC9zbWMvc21jX2NkYy5jOjczOmludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9zbWMvc21jX2NkYy5jLTc0LVxcdFxcdFxcdCAgc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9OTQ9c3RhdGljIGlubGluZSB2b2lkIHNtY19jZGNfYWRkX3BlbmRpbmdfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy0xMTEtXFxubmV0L3NtYy9zbWNfY2RjLmM6MTEyOmludCBzbWNfY2RjX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcXG5uZXQvc21jL3NtY19jZGMuYy0xMTMtXFx0XFx0ICAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqd3JfYnVmLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9MTc0PXN0YXRpYyBpbnQgc21jcl9jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTIwOC1cXG5uZXQvc21jL3NtY19jZGMuYzoyMDk6aW50IHNtY19jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jZGMuYy0yMTAte1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMjI3LVxcbm5ldC9zbWMvc21jX2NkYy5jOjIyODp2b2lkIHNtY19jZGNfd2FpdF9wZW5kX3R4X3dyKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jZGMuYy0yMjkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjoyNjozOC43MDA2MTM2NzNaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2OTA0MTE2ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBuZXQvc21jL3NtY19jZGMuY2AgLSBIdW50aW5nIGZvciBEeW5hbWljIEJlaGF2aW9yKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBsZXQncyBkcmlsbCBkb3duIGludG8gYG5ldC9zbWMvc21jX2NkYy5jYC4gV2UncmUgZGVhbGluZyB3aXRoIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgYW5kIHRoZSBDREMgKENvbnRyb2wgRGF0YSBDaGFubmVsKSBzcGVjaWZpY2FsbHksIGFuZCBJIHdhbnQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkeW5hbWljIGFzcGVjdHMgb2YgdGhpcyBjb2RlLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgdGhlaXIgbmF0dXJlLCBwcmVkaWN0YWJsZS4gSSdtIGFmdGVyIHRoZSBwYXJ0cyB0aGF0ICpjaGFuZ2UqLCB0aGF0IHJlYWN0IHRvIGlucHV0LCB0aGF0IG9yY2hlc3RyYXRlIHByb2Nlc3NlcywgdGhlIG1lYXQgYW5kIHBvdGF0b2VzIG9mIHRoZSBkYXRhIGZsb3cuIEZpbmRpbmcgdGhlc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMgaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIGJpdHMgbGl2ZSAtIHdoZXJlIHRoZSByZWFsIG9wdGltaXphdGlvbnMgY2FuIGJlIGZvdW5kLCB3aGVyZSB0aGUgZWRnZSBjYXNlcyBsdXJrLCBhbmQgd2hlcmUgSSBjYW4gZ2FpbiBkZWVwZXIgdW5kZXJzdGFuZGluZyB0byBpbXByb3ZlIHRoZSBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIG15IFwiZ29sZGVuIG51Z2dldHMuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6MTY3ODgsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozMjowNS42MDQ3MzM0NzVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTI4NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHNtY2RfY2RjX1thLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL3NtY19jZGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jZGMuYz0yMjg9dm9pZCBzbWNfY2RjX3dhaXRfcGVuZF90eF93cihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy0yMzYtICovXFxubmV0L3NtYy9zbWNfY2RjLmM6MjM3OmludCBzbWNkX2NkY19tc2dfc2VuZChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY2RjLmMtMjM4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jPTQ1OT1zdGF0aWMgdm9pZCBzbWNkX2NkY19yeF90c2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtNDc4LSAqL1xcbm5ldC9zbWMvc21jX2NkYy5jOjQ3OTp2b2lkIHNtY2RfY2RjX3J4X2luaXQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbm5ldC9zbWMvc21jX2NkYy5jLTQ4MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjMyOjA1LjY0NzI2NzkzMloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjk0MzM5NzIxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbiBmb3IgU01DIFJYIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZm9jdXMgc3ltYm9scyBmb3IgdGhpcyBTTUMgUlggcGF0aCBhbmFseXNpcy4gSW5pdGlhbGx5LCBJIG5vdGljZWQgdGhhdCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSB3cmlua2xlIHNpbmNlIGl0J3MgY2FsbGVkIGZyb20gb3RoZXIgZnVuY3Rpb25zIGFsc28gd2l0aGluIHRoZSBgc3RhdGljYCBjb250ZXh0LCBuYW1lbHkgYHNtY19jZGNfbXNnX3JlY3ZgIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGJ5IGBzbWNkX2NkY19yeF90c2tsZXRgIGFuZCBgc21jX2NkY19yeF9oYW5kbGVyYC4gR2l2ZW4gdGhleSBhcmUgYWxsIGBzdGF0aWNgLCBpZGVudGlmeWluZyBhcHByb3ByaWF0ZSBmb2N1cyBzeW1ib2xzIHJlcXVpcmVzIG1vcmUgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgbWlnaHQgbm90IGJlIGlubGluZWQgYmVjYXVzZSBpdCBzZWVtcyBxdWl0ZSBzaXphYmxlLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBUbyBjaGVjayB0aGF0LCBJJ2xsIGxpc3QgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBhbmQgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYCwgc2luY2UgdmFsaWRhdGlvbiBpcyBhIG5hdHVyYWwgY29tcGFuaW9uLiBJdCBzZWVtcyBsaWtlIGEgdmFsaWQgZnVuY3Rpb24gaW4gaXRzIG93biByaWdodCwgc28gaXQncyBwcm9iYWJseSB3b3J0aCBpbmNsdWRpbmcgYW5kIGFuYWx5emluZyBtb3JlIGNsb3NlbHkuXG5cbkhvd2V2ZXIsIEkgdGhpbmsgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBpdHNlbGYgaXMgYSByZWFsbHkgc3Ryb25nIGNhbmRpZGF0ZSwgc28gSSdtIGdvaW5nIHRvIGluY2x1ZGUgdGhhdCBvbmUuIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBzbWNfY2RjX3J4X2hhbmRsZXJgIGFuZCBgc21jZF9jZGNfcnhfdHNrbGV0YCBhcmUgYWxzbyBvbiB0aGUgbGlzdC5cblxuTm93LCBsZXQgbWUgbWFrZSBzdXJlIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBSWCBwYXRoIHRoYXQgSSdtIG92ZXJsb29raW5nLiBBaCwgaGVyZSdzIGBzbWNfcnhfcmVjdm1zZ2AuIFRoYXQncyBub24tc3RhdGljLCBidXQgaXQgc2VlbXMgbGlrZSBhIGhvdC1wYXRoIGZ1bmN0aW9uLCBhIGdlbmVyaWMgb25lIGF0IHRoYXQuIFwiQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMsXCIgdGhlIGNvbW1lbnQgcmVhZHMuIFNvIEknbGwgcHJvYmFibHkgc3RheSBhd2F5IGZyb20gdGhhdCwgZ2l2ZW4gdGhhdCBpdCdzIHRoZSBTTUMgZXF1aXZhbGVudCBvZiB0aGUgYHJlY3Ztc2dgIHN5c2NhbGwuIFRoZSBgc21jX2NkY19yeF9oYW5kbGVyYCBhbmQgYHNtY2RfY2RjX3J4X3Rza2xldGAgZnVuY3Rpb25zIGFyZSBiZXR0ZXIgY2FuZGlkYXRlcywgZm9jdXNpbmcgbW9yZSBvbiB0aGUgc3BlY2lmaWMgU01DLUNEQyBsb2dpYy5cblxuT25lIG1vcmUgY29uc2lkZXJhdGlvbjogYHNtY19jZGNfYWJvcnRfY29ubmAuIEl0J3MgYHN0YXRpY2AsIGJ1dCBpdCdzIGNsZWFybHkgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBwYXRjaCwgc28gaXQncyBpbXBvcnRhbnQgdGhhdCBpdCdzIGluY2x1ZGVkIGFzIHdlbGwuXG5cblRoZXJlZm9yZSwgZm9yIHRoZSBsaXN0IG9mIEZvY3VzU3ltYm9scyBJJ20gZ29pbmcgd2l0aDogIGBzbWNfY2RjX2Fib3J0X2Nvbm5gLCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gLCBhbmQgYHNtY19jZGNfbXNnX3ZhbGlkYXRlYC5cblxuSnVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLCBsZXQgbWUgZG91YmxlIGNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcy4gSXQgc2F5cyBgU01DYCBkZXBlbmRzIG9uIGBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gV2FpdCwgYERJQlNgPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBgRElCU2AgaW4gYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gQnV0IGlzIHRoYXQgZXZlbiB1cHN0cmVhbT8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYG5ldC9zbWMvS2NvbmZpZ2AgZmlsZSBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczMDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MTUuMDgxMjQyODdaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNTM0MDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG5uZXQvc21jL0tjb25maWctNS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM5OjE1LjE1NDc3OTk5NVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQ5MTQ5NTc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIENvbmZpZ3VyYXRpb24gZm9yIFNNQyBDREMgUHJvdG9jb2wgVmlvbGF0aW9uIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNvbWUgaW50ZXJlc3RpbmcgY2hhbmdlcyByZWxhdGVkIHRvIGhhbmRsaW5nIFNNQyBDREMgcHJvdG9jb2wgdmlvbGF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgZnV6emVyIGNvbmZpZyByZWFsbHkgZGVwZW5kcyBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYC4gV2FpdCwgd2hhdCdzIGBESUJTYD8gTGV0IG1lIGxvb2sgdGhhdCB1cCByZWFsIHF1aWNrLiBPa2F5LCBnb3QgaXQuIExvb2tzIGxpa2Ugc29tZXRoaW5nIHJlbGV2YW50IHRvIHRoaXMsIGFuZCBwcm9iYWJseSBhZGRlZCByZWNlbnRseSwgc28gSSdsbCBpbmNsdWRlIGl0LiBXaGlsZSBgSU5FVGAgaXMgZ2VuZXJhbGx5IGVuYWJsZWQsIEknbGwgZXhwbGljaXRseSBsaXN0IHRoZSBvdGhlcnMuIFNvLCBteSBpbml0aWFsIGBFbmFibGVDb25maWdzYCBpcyBgW1wiU01DXCIsIFwiSU5GSU5JQkFORFwiLCBcIkRJQlNcIl1gLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncy4gYFNNQ19ESUFHYD8gTmFoLiBgU01DX0hTX0NUUkxfQlBGYD8gRG9lc24ndCBzZWVtIHJlbGF0ZWQuXG5cbk9rYXksIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCBzZWVtcyB0aGF0IHRoaXMgcGF0Y2ggZGVmaW5lcyBhIG5ldyBmdW5jdGlvbiwgYHNtY19jZGNfYWJvcnRfY29ubmAuIFRoaXMgZnVuY3Rpb24gZXNzZW50aWFsbHkgZHJvcHMgdGhlIGNvbm5lY3Rpb24gdXBvbiBwcm90b2NvbCB2aW9sYXRpb24uIExvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSwgSSBzZWUgdGhhdCBib3RoIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgbm93IGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbiB0aGV5IGRldGVjdCBlaXRoZXIgYW4gaW52YWxpZCBzZXF1ZW5jZSBudW1iZXIgb3IgYSBwcm9kdWN0aW9uIGRpZmZlcmVuY2UuXG5cblRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIG5ldyB3YXkgdG8gaGFuZGxlIGEgc3BlY2lmaWMgZXJyb3IgY29uZGl0aW9uLiBTaW5jZSB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5ldHdvcmssIGZ1enppbmcgdGhpcyBpcyBjcnVjaWFsIHRvIGd1YXJhbnRlZSBjb3JyZWN0IGJlaGF2aW9yIHdpdGggcG90ZW50aWFsbHkgbWFsZm9ybWVkIG5ldHdvcmsgdHJhZmZpYy5cblxuVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmUgYXJlIGRlZmluaXRlbHkgYHNtY19jZGNfYWJvcnRfY29ubmAsIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAsIGFuZCBgc21jX2NkY19tc2dfdmFsaWRhdGVgLiBMZXQncyBjb25maXJtIHRoYXQgYHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uYCBpcyBub3QgaW5saW5lZC4gSXQgc2VlbXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgcHJvYmFibHkgaXNuJ3QgaW5saW5lZC4gYHNtY19jZGNfYWJvcnRfY29ubmAgaXMgbm90IGlubGluZSBlaXRoZXIuIGBzbWNfY2RjX21zZ19yZWN2YCBpcyBhbHNvIG5vdCBpbmxpbmUuIFRoZXJlZm9yZSwgdGhlc2UgYXJlIGFsbCB3b3J0aCB0YXJnZXRpbmcuIEknbGwgYWRkIGBzbWNfY2RjX21zZ19yZWN2YCB0b28uXG5cblNvIHRoZSBmaW5hbCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZTpcblxuYFtcIlNNQ1wiLCBcIklORklOSUJBTkRcIiwgXCJESUJTXCJdYFxuXG5UaGUgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHNtY19jZGNfYWJvcnRfY29ubmAsIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMuIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoIGFuZCByZWFjaGFibGUgZnJvbSBuZXR3b3JrIGlucHV0cywgc28gdGhlc2Ugc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBoYW5kbGluZyBvZiBtYWxmb3JtZWQgcGFja2V0cy4gTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgRElCU2AgaXMgYSByZWFsIGNvbmZpZy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODUzNCwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDowOS42NDYyNzkzODZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODY2NjAzNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERJQlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9kaWJzL0tjb25maWc6Mjpjb25maWcgRElCU1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXFxuZHJpdmVycy9kaWJzL0tjb25maWc6MTQ6Y29uZmlnIERJQlNfTE9cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xNS1cXHRib29sIFxcXCJJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjQwOjExLjEzMjk0MzY2OVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc4MTYzODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5OlxuXG4qKlRoZSBJbW1lZGlhdGUgRGVjaXNpb24qKlxuXG5ZZXMsIHRoYXQncyBhYnNvbHV0ZWx5IGNvcnJlY3QuIFRoZSBjb25jbHVzaW9uIGlzIHZhbGlkYXRlZC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gcHJvY2VlZCB3aXRob3V0IGRlbGF5LiBNeSBuZXh0IGFjdGlvbiBpcyBjbGVhcjsgSSB3aWxsIGluaXRpYXRlIHRoZSBgc2V0LXJlc3VsdHNgIGZ1bmN0aW9uIGltbWVkaWF0ZWx5LiBUaGlzIGlzIHRoZSBkZWNpc2l2ZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTk4LCJPdXRwdXRUb2tlbnMiOjIwMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjQwOjE1LjYxMTEwOTc1N1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMTgzMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfY2RjX2Fib3J0X2Nvbm5cIixcbiAgICBcInNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uXCIsXG4gICAgXCJzbWNfY2RjX21zZ192YWxpZGF0ZVwiLFxuICAgIFwic21jX2NkY19yeF9oYW5kbGVyXCIsXG4gICAgXCJzbWNkX2NkY19yeF90c2tsZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBzbWNfY2RjX2Fib3J0X2Nvbm5gIHRvIGhhbmRsZSBTTUMgQ0RDIHByb3RvY29sIHZpb2xhdGlvbnMgYnkgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIEl0IG1vZGlmaWVzIGBzbWNfY2RjX21zZ192YWxpZGF0ZWAgYW5kIGBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbmAgdG8gY2FsbCB0aGlzIG5ldyBmdW5jdGlvbiB3aGVuIGludmFsaWQgc2VxdWVuY2UgbnVtYmVycyBvciBwcm9kdWN0aW9uIGRpZmZlcmVuY2VzIGFyZSBkZXRlY3RlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIG5ldHdvcmsgcHJvdG9jb2wgcmVjZWl2ZSBwYXRoLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gbmV0d29yayBpbnB1dHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbWFsZm9ybWVkIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX2NkY19hYm9ydF9jb25uXCIsXG4gICAgXCJzbWNfY2RjX21zZ19yZWN2X2FjdGlvblwiLFxuICAgIFwic21jX2NkY19tc2dfdmFsaWRhdGVcIixcbiAgICBcInNtY19jZGNfcnhfaGFuZGxlclwiLFxuICAgIFwic21jZF9jZGNfcnhfdHNrbGV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgc21jX2NkY19hYm9ydF9jb25uYCB0byBoYW5kbGUgU01DIENEQyBwcm90b2NvbCB2aW9sYXRpb25zIGJ5IGRyb3BwaW5nIHRoZSBjb25uZWN0aW9uLiBJdCBtb2RpZmllcyBgc21jX2NkY19tc2dfdmFsaWRhdGVgIGFuZCBgc21jX2NkY19tc2dfcmVjdl9hY3Rpb25gIHRvIGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbiBpbnZhbGlkIHNlcXVlbmNlIG51bWJlcnMgb3IgcHJvZHVjdGlvbiBkaWZmZXJlbmNlcyBhcmUgZGV0ZWN0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyBuZXR3b3JrIHByb3RvY29sIHJlY2VpdmUgcGF0aCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIG5ldHdvcmsgaW5wdXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGhhbmRsaW5nIG9mIG1hbGZvcm1lZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmczg[1] Phase: Succeeded StartedAt: 2026-08-04 16:40:38 +0000 UTC FinishedAt: 2026-08-04 16:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 16:40:38 +0000 UTC FinishedAt: 2026-08-04 16:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2] Phase: Succeeded StartedAt: 2026-08-04 16:40:38 +0000 UTC FinishedAt: 2026-08-04 18:19:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 16:40:38 +0000 UTC FinishedAt: 2026-08-04 18:19:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 16:40:38 +0000 UTC FinishedAt: 2026-08-04 16:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 16:40:38 +0000 UTC FinishedAt: 2026-08-04 16:40:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhmczg/series-workflowhmczg-convert-artifact-2343866859/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 16:40:48 +0000 UTC FinishedAt: 2026-08-04 17:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 16:40:48 +0000 UTC FinishedAt: 2026-08-04 17:02:00 +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:*e55e656e-0e08-47e2-ac4c-48e035063251,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-workflowhmczg/series-workflowhmczg-convert-artifact-2343866859/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": "b3b5e29b-6077-491e-b450-691646a9f599", "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-workflowhmczg/series-workflowhmczg-build-action-1389823465/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 16:40:48 +0000 UTC FinishedAt: 2026-08-04 17:01:47 +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:*e55e656e-0e08-47e2-ac4c-48e035063251,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-workflowhmczg/series-workflowhmczg-convert-artifact-2343866859/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": "b3b5e29b-6077-491e-b450-691646a9f599", "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-workflowhmczg/series-workflowhmczg-build-action-1389823465/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 17:02:00 +0000 UTC FinishedAt: 2026-08-04 17:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 17:02:00 +0000 UTC FinishedAt: 2026-08-04 17:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 17:02:00 +0000 UTC FinishedAt: 2026-08-04 17:02:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 17:02:00 +0000 UTC FinishedAt: 2026-08-04 17:02:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhmczg/series-workflowhmczg-convert-artifact-2529173698/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 17:02:10 +0000 UTC FinishedAt: 2026-08-04 17:04:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 17:02:10 +0000 UTC FinishedAt: 2026-08-04 17:03:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b3b5e29b-6077-491e-b450-691646a9f599,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-workflowhmczg/series-workflowhmczg-build-action-1389823465/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-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 17:04:03 +0000 UTC FinishedAt: 2026-08-04 17:04:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 17:04:03 +0000 UTC FinishedAt: 2026-08-04 17:04:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 17:04:03 +0000 UTC FinishedAt: 2026-08-04 17:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 17:04:03 +0000 UTC FinishedAt: 2026-08-04 17:23:56 +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:*e55e656e-0e08-47e2-ac4c-48e035063251,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-workflowhmczg/series-workflowhmczg-convert-artifact-2529173698/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": "05e61bdf-b367-4c57-88a1-abcb61bcce52", "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-workflowhmczg/series-workflowhmczg-build-action-3384726294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 17:04:03 +0000 UTC FinishedAt: 2026-08-04 17:23:46 +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:*e55e656e-0e08-47e2-ac4c-48e035063251,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-workflowhmczg/series-workflowhmczg-convert-artifact-2529173698/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": "05e61bdf-b367-4c57-88a1-abcb61bcce52", "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-workflowhmczg/series-workflowhmczg-build-action-3384726294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 17:23:56 +0000 UTC FinishedAt: 2026-08-04 17:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 17:23:56 +0000 UTC FinishedAt: 2026-08-04 17:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 17:23:56 +0000 UTC FinishedAt: 2026-08-04 17:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 17:23:56 +0000 UTC FinishedAt: 2026-08-04 17:25:50 +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:*05e61bdf-b367-4c57-88a1-abcb61bcce52,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-workflowhmczg/series-workflowhmczg-build-action-3384726294/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-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 17:26:00 +0000 UTC FinishedAt: 2026-08-04 18:19:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 17:26:00 +0000 UTC FinishedAt: 2026-08-04 18:19:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"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:*b3b5e29b-6077-491e-b450-691646a9f599,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*05e61bdf-b367-4c57-88a1-abcb61bcce52,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-workflowhmczg/series-workflowhmczg-build-action-1389823465/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-workflowhmczg/series-workflowhmczg-build-action-3384726294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 17:26:00 +0000 UTC FinishedAt: 2026-08-04 17:26:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 17:26:00 +0000 UTC FinishedAt: 2026-08-04 17:26:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"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-workflowhmczg/series-workflowhmczg-convert-artifact-439998455/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 17:26:00 +0000 UTC FinishedAt: 2026-08-04 17:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 17:26:00 +0000 UTC FinishedAt: 2026-08-04 17:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 17:26:00 +0000 UTC FinishedAt: 2026-08-04 17:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 17:26:11 +0000 UTC FinishedAt: 2026-08-04 18:19:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhmczg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_cdc_abort_conn","smc_cdc_msg_recv_action","smc_cdc_msg_validate","smc_cdc_rx_handler","smcd_cdc_rx_tsklet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS"],"series_id":"425e8afb-0c2d-4085-84d1-6d32d3309c4b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 17:26:11 +0000 UTC FinishedAt: 2026-08-04 18:19:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b3b5e29b-6077-491e-b450-691646a9f599,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*05e61bdf-b367-4c57-88a1-abcb61bcce52,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-workflowhmczg/series-workflowhmczg-build-action-1389823465/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-workflowhmczg/series-workflowhmczg-build-action-3384726294/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-workflowhmczg/series-workflowhmczg-convert-artifact-439998455/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,}