Name: series-workflow9jg2q Phase: Succeeded StartedAt: 2026-07-02 06:14:16 +0000 UTC FinishedAt: 2026-07-02 10:53:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[0] Phase: Succeeded StartedAt: 2026-07-02 06:14:16 +0000 UTC FinishedAt: 2026-07-02 06:27:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 06:14:16 +0000 UTC FinishedAt: 2026-07-02 06:27:48 +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": "d6e81529749190123aa0040626c7e5dbc20fdc9a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU", "NET_FOU_IP_TUNNELS", "NET_IPGRE", "NET_IPGRE_BROADCAST", "IPV6_GRE" ], "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": "d6e81529749190123aa0040626c7e5dbc20fdc9a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU", "NET_FOU_IP_TUNNELS", "NET_IPGRE", "NET_IPGRE_BROADCAST", "IPV6_GRE" ], "series_id": "bd198228-1dbd-456b-b0d5-4a321024bae5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__udp4_lib_mcast_deliver", "__udp6_lib_mcast_deliver" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkVfQlJPQURDQVNUJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyJiMzNDssCiAgICAmIzM0O19fdWRwNl9saWJfbWNhc3RfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMDhiOWRiNTE0ZjUyOWRlNWU5MzY4ZGU2MzYxZGVmNzc3OTE2NzNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwNjoyNjoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHAuYyBiL25ldC9pcHY0L3VkcC5jXG5pbmRleCA3MGY2Y2JkNGVmNzNiZi4uYjA5MTA2NTkzOTFlZjAgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC91ZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdWRwLmNcbkBAIC0yNDc1LDYgJiM0MzsyNDc1LDcgQEAgc3RhdGljIGludCBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c3RydWN0IHVkcF9oc2xvdCAqaHNsb3Q7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcbiBcdGJvb2wgdXNlX2hhc2gyO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRoYXNoMl9hbnkgPSAwO1xuIFx0aGFzaDIgPSAwO1xuQEAgLTI1MTksOCAmIzQzOzI1MjAsOSBAQCBzdGF0aWMgaW50IF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHR9XG4gXG4gXHRpZiAoZmlyc3QpIHtcbi1cdFx0aWYgKHVkcF9xdWV1ZV9yY3Zfc2tiKGZpcnN0LCBza2IpIFx1MDAzZSAwKVxuLVx0XHRcdGNvbnN1bWVfc2tiKHNrYik7XG4mIzQzO1x0XHRyZXQgPSB1ZHBfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKTtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNlIDApXG4mIzQzO1x0XHRcdHJldHVybiAtcmV0O1xuIFx0fSBlbHNlIHtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdF9fVURQX0lOQ19TVEFUUyhuZXQsIFVEUF9NSUJfSUdOT1JFRE1VTFRJKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni91ZHAuYyBiL25ldC9pcHY2L3VkcC5jXG5pbmRleCAxNWUwMzIxOTRlY2NjMy4uZmYyZTM4OWUyODZiYTYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni91ZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvdWRwLmNcbkBAIC05NDksNiAmIzQzOzk0OSw3IEBAIHN0YXRpYyBpbnQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCB1ZHBfaHNsb3QgKmhzbG90O1xuIFx0c3RydWN0IHNrX2J1ZmYgKm5za2I7XG4gXHRib29sIHVzZV9oYXNoMjtcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0aGFzaDJfYW55ID0gMDtcbiBcdGhhc2gyID0gMDtcbkBAIC05OTgsOCAmIzQzOzk5OSw5IEBAIHN0YXRpYyBpbnQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH1cbiBcbiBcdGlmIChmaXJzdCkge1xuLVx0XHRpZiAodWRwdjZfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKSBcdTAwM2UgMClcbi1cdFx0XHRjb25zdW1lX3NrYihza2IpO1xuJiM0MztcdFx0cmV0ID0gdWRwdjZfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKTtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNlIDApXG4mIzQzO1x0XHRcdHJldHVybiAtcmV0O1xuIFx0fSBlbHNlIHtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdF9fVURQNl9JTkNfU1RBVFMobmV0LCBVRFBfTUlCX0lHTk9SRURNVUxUSSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uN2U5YWU5MzdjZmZhN2UgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuQEAgLTM5LDYgJiM0MzszOSw3IEBAIFRFU1RfUFJPR1MgOj0gXFxcbiBcdGZpYl9ydWxlX3Rlc3RzLnNoIFxcXG4gXHRmaWJfdGVzdHMuc2ggXFxcbiBcdGZpbl9hY2tfbGF0LnNoIFxcXG4mIzQzO1x0Zm91X21jYXN0X2VuY2FwLnNoIFxcXG4gXHRmcV9iYW5kX3BrdGxpbWl0LnNoIFxcXG4gXHRncmVfZ3NvLnNoIFxcXG4gXHRncmVfaXB2Nl9sbGFkZHIuc2ggXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44ZGI5NjMzZjRjMjgzZVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaFxuQEAgLTAsMCAmIzQzOzEsMTEyIEBAXG4mIzQzOyMhL2Jpbi9iYXNoXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I1xuJiM0MzsjIFRlc3QgdGhhdCBVRFAgZW5jYXBzdWxhdGlvbiAoRk9VKSBjb3JyZWN0bHkgaGFuZGxlcyBwYWNrZXQgcmVzdWJtaXRcbiYjNDM7IyB3aGVuIHBhY2tldHMgYXJlIGRlbGl2ZXJlZCB2aWEgdGhlIG11bHRpY2FzdCBVRFAgZGVsaXZlcnkgcGF0aC5cbiYjNDM7I1xuJiM0MzsjIFdoZW4gYSBGT1UtZW5jYXBzdWxhdGVkIHBhY2tldCBhcnJpdmVzIHdpdGggYSBtdWx0aWNhc3QgZGVzdGluYXRpb24gSVAsXG4mIzQzOyMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2xcbiYjNDM7IyBoYW5kbGVyIChlLmcuLCBHUkUpIHJhdGhlciB0aGFuIGNvbnN1bWluZyBpdC4gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXRcbiYjNDM7IyBieSBjcmVhdGluZyBhIEZPVS9HUkVUQVAgdHVubmVsIHdpdGggYSBtdWx0aWNhc3QgcmVtb3RlIGFkZHJlc3MgYW5kXG4mIzQzOyMgc2VuZGluZyBwaW5nIHRocm91Z2ggaXQuXG4mIzQzOyNcbiYjNDM7IyBUaGUgZWFybHkgZGVtdXggb3B0aW1pemF0aW9uIGNhbiBtYXNrIHRoaXMgaXNzdWUgYnkgcm91dGluZyBwYWNrZXRzIHZpYVxuJiM0MzsjIHRoZSB1bmljYXN0IHBhdGggKHVkcF91bmljYXN0X3Jjdl9za2IpLCBzbyB3ZSBkaXNhYmxlIGl0IHRvIGZvcmNlXG4mIzQzOyMgcGFja2V0cyB0aHJvdWdoIF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcigpLlxuJiM0MztcbiYjNDM7c291cmNlIGxpYi5zaFxuJiM0MztcbiYjNDM7TlNFTkRFUj1cJiMzNDtcJiMzNDtcbiYjNDM7TlJFQ1Y9XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MztjbGVhbnVwKCkge1xuJiM0MztcdGNsZWFudXBfYWxsX25zXG4mIzQzO31cbiYjNDM7XG4mIzQzO3RyYXAgY2xlYW51cCBFWElUXG4mIzQzO1xuJiM0MztzZXR1cCgpIHtcbiYjNDM7XHRzZXR1cF9ucyBOU0VOREVSIE5SRUNWXG4mIzQzO1xuJiM0MztcdGlwIGxpbmsgYWRkIHZldGhfcyB0eXBlIHZldGggcGVlciBuYW1lIHZldGhfclxuJiM0MztcdGlwIGxpbmsgc2V0IHZldGhfcyBuZXRucyBcJiMzNDskTlNFTkRFUlwmIzM0O1xuJiM0MztcdGlwIGxpbmsgc2V0IHZldGhfciBuZXRucyBcJiMzNDskTlJFQ1ZcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5TRU5ERVJcJiMzNDsgYWRkciBhZGQgMTAuMC4wLjEvMjQgZGV2IHZldGhfc1xuJiM0MztcdGlwIC1uIFwmIzM0OyROU0VOREVSXCYjMzQ7IGxpbmsgc2V0IHZldGhfcyB1cFxuJiM0MztcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlJFQ1ZcJiMzNDsgYWRkciBhZGQgMTAuMC4wLjIvMjQgZGV2IHZldGhfclxuJiM0MztcdGlwIC1uIFwmIzM0OyROUkVDVlwmIzM0OyBsaW5rIHNldCB2ZXRoX3IgdXBcbiYjNDM7XG4mIzQzO1x0IyBEaXNhYmxlIGVhcmx5IGRlbXV4IHRvIGZvcmNlIG11bHRpY2FzdCBkZWxpdmVyeSBwYXRoXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlJFQ1ZcJiMzNDsgc3lzY3RsIC13cSBuZXQuaXB2NC5pcF9lYXJseV9kZW11eD0wXG4mIzQzO1xuJiM0MztcdCMgSm9pbiBtdWx0aWNhc3QgZ3JvdXAgb24gcmVjZWl2ZXJcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlJFQ1ZcJiMzNDsgYWRkciBhZGQgMjM5LjAuMC4xLzMyIGRldiB2ZXRoX3IgYXV0b2pvaW5cbiYjNDM7XG4mIzQzO1x0IyBNdWx0aWNhc3Qgcm91dGVzXG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5SRUNWXCYjMzQ7IHJvdXRlIGFkZCAyMzkuMC4wLjAvOCBkZXYgdmV0aF9yXG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5TRU5ERVJcJiMzNDsgcm91dGUgYWRkIDIzOS4wLjAuMC84IGRldiB2ZXRoX3NcbiYjNDM7XG4mIzQzO1x0IyBTZW5kZXI6IEdSRVRBUCB3aXRoIEZPVSBlbmNhcCAobm8gRk9VIGxpc3RlbmVyIG5lZWRlZCBvbiBUWCBzaWRlKVxuJiM0MztcdGlwIC1uIFwmIzM0OyROU0VOREVSXCYjMzQ7IGxpbmsgYWRkIGVvdWRwMCB0eXBlIGdyZXRhcCBcXFxuJiM0MztcdFx0cmVtb3RlIDIzOS4wLjAuMSBsb2NhbCAxMC4wLjAuMSBcXFxuJiM0MztcdFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxuJiM0MztcdFx0a2V5IDIzOS4wLjAuMVxuJiM0MztcdGlwIC1uIFwmIzM0OyROU0VOREVSXCYjMzQ7IGxpbmsgc2V0IGVvdWRwMCB1cFxuJiM0MztcdGlwIC1uIFwmIzM0OyROU0VOREVSXCYjMzQ7IGFkZHIgYWRkIDE5Mi4xNjguOTkuMS8yNCBkZXYgZW91ZHAwXG4mIzQzO1xuJiM0MztcdCMgUmVjZWl2ZXI6IEZPVSBsaXN0ZW5lciAmIzQzOyBHUkVUQVBcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROUkVDVlwmIzM0OyBpcCBmb3UgYWRkIHBvcnQgNDc5NyBpcHByb3RvIDQ3XG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5SRUNWXCYjMzQ7IGxpbmsgYWRkIGVvdWRwMCB0eXBlIGdyZXRhcCBcXFxuJiM0MztcdFx0cmVtb3RlIDIzOS4wLjAuMSBsb2NhbCAxMC4wLjAuMiBcXFxuJiM0MztcdFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxuJiM0MztcdFx0a2V5IDIzOS4wLjAuMVxuJiM0MztcdGlwIC1uIFwmIzM0OyROUkVDVlwmIzM0OyBsaW5rIHNldCBlb3VkcDAgdXBcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlJFQ1ZcJiMzNDsgYWRkciBhZGQgMTkyLjE2OC45OS4yLzI0IGRldiBlb3VkcDBcbiYjNDM7XG4mIzQzO1x0IyBTdGF0aWMgbmVpZ2ggZW50cnkgb24gc2VuZGVyOiBBUlAgcmVwbGllcyBjYW5ub3QgdHJhdmVyc2UgdGhlXG4mIzQzO1x0IyBtdWx0aWNhc3QgdHVubmVsIGJhY2ssIHNvIHByZS1wb3B1bGF0ZSB0aGUgbmVpZ2hib3IgY2FjaGUuXG4mIzQzO1x0bG9jYWwgcmVjdl9tYWNcbiYjNDM7XHRyZWN2X21hYz0kKGlwIC1uIFwmIzM0OyROUkVDVlwmIzM0OyBsaW5rIHNob3cgZW91ZHAwIHwgYXdrICYjMzk7L2V0aGVyL3twcmludCAkMn0mIzM5OylcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlNFTkRFUlwmIzM0OyBuZWlnaCBhZGQgMTkyLjE2OC45OS4yIGxsYWRkciBcJiMzNDskcmVjdl9tYWNcJiMzNDsgZGV2IGVvdWRwMFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztnZXRfcnhfcGFja2V0cygpIHtcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlJFQ1ZcJiMzNDsgLXMgbGluayBzaG93IGVvdWRwMCB8IGF3ayAmIzM5Oy9SWDove2dldGxpbmU7IHByaW50ICQyfSYjMzk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3Rlc3RfZm91X21jYXN0X2VuY2FwKCkge1xuJiM0MztcdGxvY2FsIGNvdW50PTEwMFxuJiM0MztcdGxvY2FsIHJ4X2JlZm9yZVxuJiM0MztcdGxvY2FsIHJ4X2FmdGVyXG4mIzQzO1x0bG9jYWwgcnhfZGVsdGFcbiYjNDM7XG4mIzQzO1x0IyBXYXJtdXA6IGxldCBhbnkgaW5pdGlhbCBicm9hZGNhc3QvQVJQIHRyYWZmaWMgc2V0dGxlXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNFTkRFUlwmIzM0OyBwaW5nIC1jIDEgLVcgMSAxOTIuMTY4Ljk5LjIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxXG4mIzQzO1x0c2xlZXAgMVxuJiM0MztcbiYjNDM7XHRyeF9iZWZvcmU9JChnZXRfcnhfcGFja2V0cylcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU0VOREVSXCYjMzQ7IHBpbmcgLWMgJGNvdW50IC1XIDEgMTkyLjE2OC45OS4yIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuJiM0MztcdHNsZWVwIDFcbiYjNDM7XHRyeF9hZnRlcj0kKGdldF9yeF9wYWNrZXRzKVxuJiM0MztcbiYjNDM7XHRyeF9kZWx0YT0kKChyeF9hZnRlciAtIHJ4X2JlZm9yZSkpXG4mIzQzO1xuJiM0MztcdGlmIFsgXCYjMzQ7JHJ4X2RlbHRhXCYjMzQ7IC1nZSBcJiMzNDskY291bnRcJiMzNDsgXTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDtQQVNTOiByZWNlaXZlZCAkcnhfZGVsdGEvJGNvdW50IHBhY2tldHMgdmlhIG11bHRpY2FzdCBGT1UvR1JFVEFQXCYjMzQ7XG4mIzQzO1x0XHRyZXR1cm4gXCYjMzQ7JGtzZnRfcGFzc1wmIzM0O1xuJiM0MztcdGVsaWYgWyBcJiMzNDskcnhfZGVsdGFcJiMzNDsgLWd0IDAgXTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDtGQUlMOiBvbmx5ICRyeF9kZWx0YS8kY291bnQgcGFja2V0cyByZWNlaXZlZCAocGFydGlhbCBkZWxpdmVyeSlcJiMzNDtcbiYjNDM7XHRcdHJldHVybiBcJiMzNDska3NmdF9mYWlsXCYjMzQ7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0ZWNobyBcJiMzNDtGQUlMOiAwLyRjb3VudCBwYWNrZXRzIHJlY2VpdmVkIChtdWx0aWNhc3QgZW5jYXAgcmVzdWJtaXQgYnJva2VuKVwmIzM0O1xuJiM0MztcdFx0cmV0dXJuIFwmIzM0OyRrc2Z0X2ZhaWxcJiMzNDtcbiYjNDM7XHRmaVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztlY2hvIFwmIzM0O1RFU1Q6IEZPVS9HUkVUQVAgbXVsdGljYXN0IGVuY2Fwc3VsYXRpb24gcmVzdWJtaXRcJiMzNDtcbiYjNDM7XG4mIzQzO3NldHVwXG4mIzQzO3Rlc3RfZm91X21jYXN0X2VuY2FwXG4mIzQzO2V4aXQgJD9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRk9VJiMzNDssCiAgICAmIzM0O05FVF9GT1VfSVBfVFVOTkVMUyYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0JST0FEQ0FTVCYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fdWRwNF9saWJfbWNhc3RfZGVsaXZlciYjMzQ7LAogICAgJiMzNDtfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgVURQIG11bHRpY2FzdCBkZWxpdmVyeSBwYXRocyAoX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyIGFuZCBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXIpIHRvIGNvcnJlY3RseSBoYW5kbGUgcGFja2V0IHJlc3VibWlzc2lvbiBmb3IgZW5jYXBzdWxhdGVkIHBhY2tldHMgKGUuZy4sIEZPVS9HUkVUQVApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgY29kZSwgZml4aW5nIGEgYnVnIHdoZXJlIHN1Y2ggcGFja2V0cyB3ZXJlIGluY29ycmVjdGx5IGNvbnN1bWVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBkZWxpdmVyeSBmdW5jdGlvbnMgd2l0aCBGT1UgYW5kIEdSRSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDhiOWRiNTE0ZjUyOWRlNWU5MzY4ZGU2MzYxZGVmNzc3OTE2NzNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAwNjoyNjoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcC5jIGIvbmV0L2lwdjQvdWRwLmMKaW5kZXggNzBmNmNiZDRlZjczYmYuLmIwOTEwNjU5MzkxZWYwIDEwMDY0NAotLS0gYS9uZXQvaXB2NC91ZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC91ZHAuYwpAQCAtMjQ3NSw2ICYjNDM7MjQ3NSw3IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgdWRwX2hzbG90ICpoc2xvdDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKIAlib29sIHVzZV9oYXNoMjsKJiM0MzsJaW50IHJldDsKIAogCWhhc2gyX2FueSA9IDA7CiAJaGFzaDIgPSAwOwpAQCAtMjUxOSw4ICYjNDM7MjUyMCw5IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl9CiAKIAlpZiAoZmlyc3QpIHsKLQkJaWYgKHVkcF9xdWV1ZV9yY3Zfc2tiKGZpcnN0LCBza2IpICZndDsgMCkKLQkJCWNvbnN1bWVfc2tiKHNrYik7CiYjNDM7CQlyZXQgPSB1ZHBfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKTsKJiM0MzsJCWlmIChyZXQgJmd0OyAwKQomIzQzOwkJCXJldHVybiAtcmV0OwogCX0gZWxzZSB7CiAJCWtmcmVlX3NrYihza2IpOwogCQlfX1VEUF9JTkNfU1RBVFMobmV0LCBVRFBfTUlCX0lHTk9SRURNVUxUSSk7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni91ZHAuYyBiL25ldC9pcHY2L3VkcC5jCmluZGV4IDE1ZTAzMjE5NGVjY2MzLi5mZjJlMzg5ZTI4NmJhNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdWRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvdWRwLmMKQEAgLTk0OSw2ICYjNDM7OTQ5LDcgQEAgc3RhdGljIGludCBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXN0cnVjdCB1ZHBfaHNsb3QgKmhzbG90OwogCXN0cnVjdCBza19idWZmICpuc2tiOwogCWJvb2wgdXNlX2hhc2gyOwomIzQzOwlpbnQgcmV0OwogCiAJaGFzaDJfYW55ID0gMDsKIAloYXNoMiA9IDA7CkBAIC05OTgsOCAmIzQzOzk5OSw5IEBAIHN0YXRpYyBpbnQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl9CiAKIAlpZiAoZmlyc3QpIHsKLQkJaWYgKHVkcHY2X3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYikgJmd0OyAwKQotCQkJY29uc3VtZV9za2Ioc2tiKTsKJiM0MzsJCXJldCA9IHVkcHY2X3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7CiYjNDM7CQlpZiAocmV0ICZndDsgMCkKJiM0MzsJCQlyZXR1cm4gLXJldDsKIAl9IGVsc2UgewogCQlrZnJlZV9za2Ioc2tiKTsKIAkJX19VRFA2X0lOQ19TVEFUUyhuZXQsIFVEUF9NSUJfSUdOT1JFRE1VTFRJKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQppbmRleCA3MDhkOTYwYWUwN2Q1Yi4uN2U5YWU5MzdjZmZhN2UgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKQEAgLTM5LDYgJiM0MzszOSw3IEBAIFRFU1RfUFJPR1MgOj0gXAogCWZpYl9ydWxlX3Rlc3RzLnNoIFwKIAlmaWJfdGVzdHMuc2ggXAogCWZpbl9hY2tfbGF0LnNoIFwKJiM0MzsJZm91X21jYXN0X2VuY2FwLnNoIFwKIAlmcV9iYW5kX3BrdGxpbWl0LnNoIFwKIAlncmVfZ3NvLnNoIFwKIAlncmVfaXB2Nl9sbGFkZHIuc2ggXApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhkYjk2MzNmNGMyODNlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaApAQCAtMCwwICYjNDM7MSwxMTIgQEAKJiM0MzsjIS9iaW4vYmFzaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBUZXN0IHRoYXQgVURQIGVuY2Fwc3VsYXRpb24gKEZPVSkgY29ycmVjdGx5IGhhbmRsZXMgcGFja2V0IHJlc3VibWl0CiYjNDM7IyB3aGVuIHBhY2tldHMgYXJlIGRlbGl2ZXJlZCB2aWEgdGhlIG11bHRpY2FzdCBVRFAgZGVsaXZlcnkgcGF0aC4KJiM0MzsjCiYjNDM7IyBXaGVuIGEgRk9VLWVuY2Fwc3VsYXRlZCBwYWNrZXQgYXJyaXZlcyB3aXRoIGEgbXVsdGljYXN0IGRlc3RpbmF0aW9uIElQLAomIzQzOyMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2wKJiM0MzsjIGhhbmRsZXIgKGUuZy4sIEdSRSkgcmF0aGVyIHRoYW4gY29uc3VtaW5nIGl0LiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdAomIzQzOyMgYnkgY3JlYXRpbmcgYSBGT1UvR1JFVEFQIHR1bm5lbCB3aXRoIGEgbXVsdGljYXN0IHJlbW90ZSBhZGRyZXNzIGFuZAomIzQzOyMgc2VuZGluZyBwaW5nIHRocm91Z2ggaXQuCiYjNDM7IwomIzQzOyMgVGhlIGVhcmx5IGRlbXV4IG9wdGltaXphdGlvbiBjYW4gbWFzayB0aGlzIGlzc3VlIGJ5IHJvdXRpbmcgcGFja2V0cyB2aWEKJiM0MzsjIHRoZSB1bmljYXN0IHBhdGggKHVkcF91bmljYXN0X3Jjdl9za2IpLCBzbyB3ZSBkaXNhYmxlIGl0IHRvIGZvcmNlCiYjNDM7IyBwYWNrZXRzIHRocm91Z2ggX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkuCiYjNDM7CiYjNDM7c291cmNlIGxpYi5zaAomIzQzOwomIzQzO05TRU5ERVI9JiMzNDsmIzM0OwomIzQzO05SRUNWPSYjMzQ7JiMzNDsKJiM0MzsKJiM0MztjbGVhbnVwKCkgewomIzQzOwljbGVhbnVwX2FsbF9ucwomIzQzO30KJiM0MzsKJiM0Mzt0cmFwIGNsZWFudXAgRVhJVAomIzQzOwomIzQzO3NldHVwKCkgewomIzQzOwlzZXR1cF9ucyBOU0VOREVSIE5SRUNWCiYjNDM7CiYjNDM7CWlwIGxpbmsgYWRkIHZldGhfcyB0eXBlIHZldGggcGVlciBuYW1lIHZldGhfcgomIzQzOwlpcCBsaW5rIHNldCB2ZXRoX3MgbmV0bnMgJiMzNDskTlNFTkRFUiYjMzQ7CiYjNDM7CWlwIGxpbmsgc2V0IHZldGhfciBuZXRucyAmIzM0OyROUkVDViYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uICYjMzQ7JE5TRU5ERVImIzM0OyBhZGRyIGFkZCAxMC4wLjAuMS8yNCBkZXYgdmV0aF9zCiYjNDM7CWlwIC1uICYjMzQ7JE5TRU5ERVImIzM0OyBsaW5rIHNldCB2ZXRoX3MgdXAKJiM0MzsKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBhZGRyIGFkZCAxMC4wLjAuMi8yNCBkZXYgdmV0aF9yCiYjNDM7CWlwIC1uICYjMzQ7JE5SRUNWJiMzNDsgbGluayBzZXQgdmV0aF9yIHVwCiYjNDM7CiYjNDM7CSMgRGlzYWJsZSBlYXJseSBkZW11eCB0byBmb3JjZSBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5SRUNWJiMzNDsgc3lzY3RsIC13cSBuZXQuaXB2NC5pcF9lYXJseV9kZW11eD0wCiYjNDM7CiYjNDM7CSMgSm9pbiBtdWx0aWNhc3QgZ3JvdXAgb24gcmVjZWl2ZXIKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBhZGRyIGFkZCAyMzkuMC4wLjEvMzIgZGV2IHZldGhfciBhdXRvam9pbgomIzQzOwomIzQzOwkjIE11bHRpY2FzdCByb3V0ZXMKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyByb3V0ZSBhZGQgMjM5LjAuMC4wLzggZGV2IHZldGhfcgomIzQzOwlpcCAtbiAmIzM0OyROU0VOREVSJiMzNDsgcm91dGUgYWRkIDIzOS4wLjAuMC84IGRldiB2ZXRoX3MKJiM0MzsKJiM0MzsJIyBTZW5kZXI6IEdSRVRBUCB3aXRoIEZPVSBlbmNhcCAobm8gRk9VIGxpc3RlbmVyIG5lZWRlZCBvbiBUWCBzaWRlKQomIzQzOwlpcCAtbiAmIzM0OyROU0VOREVSJiMzNDsgbGluayBhZGQgZW91ZHAwIHR5cGUgZ3JldGFwIFwKJiM0MzsJCXJlbW90ZSAyMzkuMC4wLjEgbG9jYWwgMTAuMC4wLjEgXAomIzQzOwkJZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcCiYjNDM7CQlrZXkgMjM5LjAuMC4xCiYjNDM7CWlwIC1uICYjMzQ7JE5TRU5ERVImIzM0OyBsaW5rIHNldCBlb3VkcDAgdXAKJiM0MzsJaXAgLW4gJiMzNDskTlNFTkRFUiYjMzQ7IGFkZHIgYWRkIDE5Mi4xNjguOTkuMS8yNCBkZXYgZW91ZHAwCiYjNDM7CiYjNDM7CSMgUmVjZWl2ZXI6IEZPVSBsaXN0ZW5lciAmIzQzOyBHUkVUQVAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROUkVDViYjMzQ7IGlwIGZvdSBhZGQgcG9ydCA0Nzk3IGlwcHJvdG8gNDcKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBsaW5rIGFkZCBlb3VkcDAgdHlwZSBncmV0YXAgXAomIzQzOwkJcmVtb3RlIDIzOS4wLjAuMSBsb2NhbCAxMC4wLjAuMiBcCiYjNDM7CQllbmNhcCBmb3UgZW5jYXAtc3BvcnQgNDc5NyBlbmNhcC1kcG9ydCA0Nzk3IFwKJiM0MzsJCWtleSAyMzkuMC4wLjEKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBsaW5rIHNldCBlb3VkcDAgdXAKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBhZGRyIGFkZCAxOTIuMTY4Ljk5LjIvMjQgZGV2IGVvdWRwMAomIzQzOwomIzQzOwkjIFN0YXRpYyBuZWlnaCBlbnRyeSBvbiBzZW5kZXI6IEFSUCByZXBsaWVzIGNhbm5vdCB0cmF2ZXJzZSB0aGUKJiM0MzsJIyBtdWx0aWNhc3QgdHVubmVsIGJhY2ssIHNvIHByZS1wb3B1bGF0ZSB0aGUgbmVpZ2hib3IgY2FjaGUuCiYjNDM7CWxvY2FsIHJlY3ZfbWFjCiYjNDM7CXJlY3ZfbWFjPSQoaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBsaW5rIHNob3cgZW91ZHAwIHwgYXdrICYjMzk7L2V0aGVyL3twcmludCAkMn0mIzM5OykKJiM0MzsJaXAgLW4gJiMzNDskTlNFTkRFUiYjMzQ7IG5laWdoIGFkZCAxOTIuMTY4Ljk5LjIgbGxhZGRyICYjMzQ7JHJlY3ZfbWFjJiMzNDsgZGV2IGVvdWRwMAomIzQzO30KJiM0MzsKJiM0MztnZXRfcnhfcGFja2V0cygpIHsKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyAtcyBsaW5rIHNob3cgZW91ZHAwIHwgYXdrICYjMzk7L1JYOi97Z2V0bGluZTsgcHJpbnQgJDJ9JiMzOTsKJiM0Mzt9CiYjNDM7CiYjNDM7dGVzdF9mb3VfbWNhc3RfZW5jYXAoKSB7CiYjNDM7CWxvY2FsIGNvdW50PTEwMAomIzQzOwlsb2NhbCByeF9iZWZvcmUKJiM0MzsJbG9jYWwgcnhfYWZ0ZXIKJiM0MzsJbG9jYWwgcnhfZGVsdGEKJiM0MzsKJiM0MzsJIyBXYXJtdXA6IGxldCBhbnkgaW5pdGlhbCBicm9hZGNhc3QvQVJQIHRyYWZmaWMgc2V0dGxlCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNFTkRFUiYjMzQ7IHBpbmcgLWMgMSAtVyAxIDE5Mi4xNjguOTkuMiAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxCiYjNDM7CXNsZWVwIDEKJiM0MzsKJiM0MzsJcnhfYmVmb3JlPSQoZ2V0X3J4X3BhY2tldHMpCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNFTkRFUiYjMzQ7IHBpbmcgLWMgJGNvdW50IC1XIDEgMTkyLjE2OC45OS4yICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEKJiM0MzsJc2xlZXAgMQomIzQzOwlyeF9hZnRlcj0kKGdldF9yeF9wYWNrZXRzKQomIzQzOwomIzQzOwlyeF9kZWx0YT0kKChyeF9hZnRlciAtIHJ4X2JlZm9yZSkpCiYjNDM7CiYjNDM7CWlmIFsgJiMzNDskcnhfZGVsdGEmIzM0OyAtZ2UgJiMzNDskY291bnQmIzM0OyBdOyB0aGVuCiYjNDM7CQllY2hvICYjMzQ7UEFTUzogcmVjZWl2ZWQgJHJ4X2RlbHRhLyRjb3VudCBwYWNrZXRzIHZpYSBtdWx0aWNhc3QgRk9VL0dSRVRBUCYjMzQ7CiYjNDM7CQlyZXR1cm4gJiMzNDska3NmdF9wYXNzJiMzNDsKJiM0MzsJZWxpZiBbICYjMzQ7JHJ4X2RlbHRhJiMzNDsgLWd0IDAgXTsgdGhlbgomIzQzOwkJZWNobyAmIzM0O0ZBSUw6IG9ubHkgJHJ4X2RlbHRhLyRjb3VudCBwYWNrZXRzIHJlY2VpdmVkIChwYXJ0aWFsIGRlbGl2ZXJ5KSYjMzQ7CiYjNDM7CQlyZXR1cm4gJiMzNDska3NmdF9mYWlsJiMzNDsKJiM0MzsJZWxzZQomIzQzOwkJZWNobyAmIzM0O0ZBSUw6IDAvJGNvdW50IHBhY2tldHMgcmVjZWl2ZWQgKG11bHRpY2FzdCBlbmNhcCByZXN1Ym1pdCBicm9rZW4pJiMzNDsKJiM0MzsJCXJldHVybiAmIzM0OyRrc2Z0X2ZhaWwmIzM0OwomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MztlY2hvICYjMzQ7VEVTVDogRk9VL0dSRVRBUCBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvbiByZXN1Ym1pdCYjMzQ7CiYjNDM7CiYjNDM7c2V0dXAKJiM0Mzt0ZXN0X2ZvdV9tY2FzdF9lbmNhcAomIzQzO2V4aXQgJD8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDMzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVRFAgTXVsdGljYXN0IERlbGl2ZXJ5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgbWFraW5nIGEgcHJldHR5IGZ1bmRhbWVudGFsIGNoYW5nZSB0byBob3cgVURQIG11bHRpY2FzdCBkZWxpdmVyeSB3b3Jrcywgc3BlY2lmaWNhbGx5IGluIGBuZXQvaXB2NC91ZHAuY2AgYW5kIGBuZXQvaXB2Ni91ZHAuY2AuIEl0JiMzOTtzIGFsdGVyaW5nIGBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJgIGFuZCBgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyYC4gRXNzZW50aWFsbHksIGluc3RlYWQgb2YgaW1tZWRpYXRlbHkgY29uc3VtaW5nIHRoZSBgc2tiYCBpZiBgdWRwX3F1ZXVlX3Jjdl9za2JgIHJldHVybnMgYSBwb3NpdGl2ZSB2YWx1ZSAoaW1wbHlpbmcgdGhlIHBhY2tldCBuZWVkcyBmdXJ0aGVyIHByb2Nlc3NpbmcsIGxpa2UgZW5jYXBzdWxhdGlvbiksIGl0IG5vdyAqcmV0dXJucyogYSBuZWdhdGl2ZSBlcnJvciBjb2RlIGJhc2VkIG9uIHRoYXQgcG9zaXRpdmUgdmFsdWUsIGAtcmV0YC4gVGhhdCBtZWFucyB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKiB0byB0aGUgY29yZSBtdWx0aWNhc3QgcGF0aC4gVGhlIGlkZWEgaXMgdGhhdCB0aGUgcGFja2V0IG5lZWRzIHRvIGJlIHJlc3VibWl0dGVkIHRvIGEgcHJvdG9jb2wgaGFuZGxlciB3aGVuIGVuY2Fwc3VsYXRlZCAoRk9VL0dSRVRBUCkuCgpUaGlzIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUsIGJ1dCBjcml0aWNhbCwgaXNzdWVzLCBlc3BlY2lhbGx5IGFyb3VuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCBlbmNhcHN1bGF0aW9uIGFuZCBob3cgdGhlIHN0YWNrIGhhbmRsZXMgdGhlc2Ugc3BlY2lhbCBjYXNlcy4gU28gdGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBkZWZpbml0ZWx5IGBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJgIGFuZCBgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyYC4KCkkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoIGZ1bGx5LCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gRk9VLCBHUkUsIGFuZCBVRFAgbXVsdGljYXN0LiBJJiMzOTtsbCBzZWFyY2ggdGhlIHNvdXJjZSBmb3IgdGhvc2UgY29uZmlndXJhdGlvbiBzeW1ib2xzLiBHb3R0YSBzZWUgd2hhdCYjMzk7cyBuZWVkZWQgdG8gdHJpZ2dlciB0aGUgbmV3IHJldHVybiBwYXRoIGFuZCBpdHMgc3Vic2VxdWVudCBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0ZPVSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTMxNj1jb25maWcgTkVUX1VEUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMyMC1cbm5ldC9pcHY0L0tjb25maWc6MzIxOmNvbmZpZyBORVRfRk9VXG5uZXQvaXB2NC9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0lQOiBGb28gKElQIHByb3RvY29scykgb3ZlciBVRFBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMyOS1cbm5ldC9pcHY0L0tjb25maWc6MzMwOmNvbmZpZyBORVRfRk9VX0lQX1RVTk5FTFNcbm5ldC9pcHY0L0tjb25maWctMzMxLVx0Ym9vbCBcJiMzNDtJUDogRk9VIGVuY2Fwc3VsYXRpb24gb2YgSVAgdHVubmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggc3VtbWFyaXppbmcgdGhlIHByb21wdCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqR1JFIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiAmIzM0O0xldCYjMzk7cyBjaGVjayBHUkUgY29uZmlncy4mIzM0OyBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBhc3N1bWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIG5ldHdvcmsgc2NlbmFyaW8sIGFuZCB0aGUgdXNlIG9mIEdlbmVyaWMgUm91dGluZyBFbmNhcHN1bGF0aW9uIChHUkUpIHR1bm5lbHMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IG1lYW5zIGEgdmFyaWV0eSBvZiBwb3RlbnRpYWwgYXJlYXMgbmVlZCBhdHRlbnRpb24uIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBhIG1lbnRhbCBjaGVja2xpc3Q6CgoqICAgKipVbmRlcmx5aW5nIE5ldHdvcms6KiogRmlyc3QsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHBoeXNpY2FsIGxheWVyLiBXaGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uPyBBcmUgdGhlIHVuZGVybHlpbmcgSVAgbmV0d29ya3MgZnVuY3Rpb25pbmcgb3B0aW1hbGx5PyBMYXRlbmN5LCBwYWNrZXQgbG9zcywgYmFuZHdpZHRoIOKAkyB0aGVzZSBiYXNpYyBtZXRyaWNzIGFyZSBjcml0aWNhbCBmb3IgYSBzdGFibGUgR1JFIHR1bm5lbC4gV2UgY2FuJiMzOTt0IGJ1aWxkIGEgc3Ryb25nIGhvdXNlIG9uIGEgd2VhayBmb3VuZGF0aW9uLgoqICAgKipFbmNhcHN1bGF0aW9uICZhbXA7IERlY2Fwc3VsYXRpb246KiogSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGVuY2Fwc3VsYXRpb24gYW5kIGRlY2Fwc3VsYXRpb24gcHJvY2Vzc2VzLiBBcmUgdGhlIEdSRSBoZWFkZXJzIGNvbmZpZ3VyZWQgY29ycmVjdGx5PyBNaXNtYXRjaGVkIHNvdXJjZS9kZXN0aW5hdGlvbiBJUCBhZGRyZXNzZXMgYXJlIHRoZSBiYW5lIG9mIG15IGV4aXN0ZW5jZS4gV2hhdCBhYm91dCB0aGUgcHJvdG9jb2wgdHlwZSBiZWluZyBlbmNhcHN1bGF0ZWQ/IEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3Mgc2V0IHByb3Blcmx5IGZvciB3aGF0ZXZlciB3ZSYjMzk7cmUgcm91dGluZyBvdmVyIHRoZSB0dW5uZWwuCiogICAqKlR1bm5lbCBJbnRlcmZhY2VzOioqIFRoaXMgaXMgY3JpdGljYWwuIEhvdyBhcmUgdGhlIHR1bm5lbCBpbnRlcmZhY2VzIGNvbmZpZ3VyZWQgb24gZWFjaCBlbmQ/IEFyZSB0aGUgSVAgYWRkcmVzc2VzLCBNVFVzLCBhbmQgdHVubmVsIG1vZGVzIGNvcnJlY3Q/IFN0YXRpYyB2cy4gZHluYW1pYyByb3V0aW5nIG92ZXIgdGhlIHR1bm5lbCDigJMgdGhhdCBkaWN0YXRlcyBhIHdob2xlIGRpZmZlcmVudCBzZXQgb2YgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyLgoqICAgKipSb3V0aW5nIFByb3RvY29sczoqKiBXaGF0IHJvdXRpbmcgcHJvdG9jb2wsIGlmIGFueSwgaXMgYmVpbmcgdXNlZCBvdmVyIHRoZSBHUkUgdHVubmVsPyBPU1BGLCBCR1AsIFJJUCwgb3Igc3RhdGljIHJvdXRlcz8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IGV2YWx1YXRpbmcgdGhlIG5laWdoYm9yIHJlbGF0aW9uc2hpcHMsIHJvdXRlIHByb3BhZ2F0aW9uLCBhbmQgcG90ZW50aWFsIHJvdXRpbmcgbG9vcHMgdGhhdCBjb3VsZCBiZSBwcmVzZW50LgoqICAgKipTZWN1cml0eToqKiBJcyB0aGVyZSBhbnkga2luZCBvZiBzZWN1cml0eSBpbiBwbGFjZT8gSSYjMzk7bSBhc2tpbmcgYWJvdXQgYWNjZXNzIGNvbnRyb2wgbGlzdHMgKEFDTHMpLCBmaXJld2FsbHMsIG9yIGV2ZW4gSVBTZWMgdHVubmVscyBzaXR0aW5nICp1bmRlcm5lYXRoKiB0aGUgR1JFIHR1bm5lbC4gU2VjdXJpdHkgb2Z0ZW4gZ2V0cyBvdmVybG9va2VkLCBhbmQgYSBtaXNjb25maWd1cmVkIGZpcmV3YWxsIGNvdWxkIGJlIGJsb2NraW5nIHRoZSBlbmNhcHN1bGF0ZWQgdHJhZmZpYy4KKiAgICoqVHJvdWJsZXNob290aW5nIFRvb2xzOioqIExldCYjMzk7cyBzZWUgd2hhdCB0b29scyBjYW4gYmUgdXNlZCB0byBtb25pdG9yIHRoZSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gY2hlY2sgdHVubmVsIGNvdW50ZXJzIGZvciBkcm9wcGVkIHBhY2tldHMgYW5kIGVycm9ycywgYW5kIGxvb2sgYXQgcGFja2V0IGNhcHR1cmVzIHRvIHZlcmlmeSB0aGUgdHJhZmZpYyBmbG93IGluc2lkZSBhbmQgb3V0c2lkZSB0aGUgdHVubmVsLiBJIGFtIGV4cGVjdGluZyBzb21lIG9mIHRoZXNlIHRvb2xzIHRvIGJlIHV0aWxpemVkIGluIG9yZGVyIHRvIGlkZW50aWZ5IGlzc3Vlcy4KCkluIHNob3J0LCAmIzM0O0xldCYjMzk7cyBjaGVjayBHUkUgY29uZmlncyYjMzQ7IGlzIGEgUGFuZG9yYSYjMzk7cyBCb3ggb2YgcG90ZW50aWFsIHByb2JsZW1zIGFuZCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcy4gSSYjMzk7bSByZWFkeSB0byBkaWcgaW4gYW5kIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcbm5ldC9pcHY0L0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cbm5ldC9pcHY0L0tjb25maWc6MjA3OmNvbmZpZyBORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7SVA6IGJyb2FkY2FzdCBHUkUgb3ZlciBJUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MDYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIHRob3NlIElQdjYgR1JFIGNvbmZpZ3VyYXRpb25zOgoKKipBbmFseXppbmcgSVB2NiBHUkUgQ29uZmlndXJhdGlvbnMqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzaG93IG9uIHRoZSByb2FkLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgSVB2NiBHUkUgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggY2hlY2suIEkmIzM5O2xsIG5lZWQgdG8gdmVyaWZ5IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFkZHJlc3NlcywgZW5zdXJlIHRoZSB0dW5uZWwgaXMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgYXMgSVB2NiBhbmQgdGhhdCBpdCYjMzk7cyBjb3JyZWN0bHkgZW5jYXBzdWxhdGVkLiBPZiBjb3Vyc2UsIHRoZSByb3V0aW5nIGNvbmZpZ3VyYXRpb25zIG9uIGJvdGggZW5kcyBhcmUgYWJzb2x1dGVseSBjcml0aWNhbCAtIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aG9zZSBhcmUgYWR2ZXJ0aXNpbmcgdGhlIGNvcnJlY3Qgcm91dGVzIGFuZCB0aGF0IHRoZSBwYWNrZXRzIGFyZSB0cmF2ZXJzaW5nIHRoZSBpbnRlbmRlZCBwYXRoLgoKVGhlbiB0aGVyZSYjMzk7cyB0aGUgcXVlc3Rpb24gb2YgZnJhZ21lbnRhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIE1UVSBzZXR0aW5ncyBhcmUgYXBwcm9wcmlhdGUgb24gYm90aCB0aGUgdHVubmVsIGludGVyZmFjZSBhbmQgdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgaW50ZXJmYWNlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGluZGljYXRpb25zIG9mIHBhY2tldCBsb3NzIGR1ZSB0byBmcmFnbWVudGF0aW9uIGlzc3Vlcy4gSXMgZnJhZ21lbnRhdGlvbiBoYXBwZW5pbmcsIGFuZCBpZiBzbywgd2hlcmU/CgpOZXh0LCBJJiMzOTtsbCB0dXJuIG15IGF0dGVudGlvbiB0byBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gQXJlIHRoZXJlIGFueSBhY2Nlc3MgY29udHJvbCBsaXN0cyAoQUNMcykgaW1wYWN0aW5nIHRoZSBHUkUgdHJhZmZpYz8gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGJlIGludGVyZmVyaW5nIHdpdGggdGhlIHR1bm5lbCYjMzk7cyBvcGVyYXRpb24/IEFuZCwgSSYjMzk7bGwgbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgZW5jcnlwdGlvbiBsZXZlbCBhcyB3ZWxsLiBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIEdSRSBvcHRpb25zIGJlaW5nIHVzZWQsIHN1Y2ggYXMga2V5aW5nIG9yIGNoZWNrc3Vtcy4KCkZpbmFsbHksIEkmIzM5O2xsIGNoZWNrIGZvciBnZW5lcmFsIHR1bm5lbCBoZWFsdGggYW5kIHN0YXR1czogSG93IGlzIHRoZSB0dW5uZWwgcmVzcG9uZGluZz8gQXJlIHRoZXJlIGFueSBlcnJvcnMgb3IgY291bnRlcnMgdGhhdCBhcmUgaW5jcmVhc2luZz8gQXJlIHRoZSB0dW5uZWwgaW50ZXJmYWNlcyB1cCBhbmQgaW4gdGhlIGV4cGVjdGVkIHN0YXRlPyBBbmQsIGhhdmUgdGhlcmUgYmVlbiBhbnkgcGFzdCBpc3N1ZXM/IEkgd2lsbCBiZSBhYmxlIHRvIGdldCBhIGdvb2Qgb3ZlcmFsbCBwaWN0dXJlIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgcHJvYmxlbXMsIGFuZCB3aGF0IHRoZXkgbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfR1JFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9MTk5PWNvbmZpZyBJUFY2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTc5CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEZPVSBUdW5uZWwgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgYSB0ZXN0IHNldHVwIHRoYXQgbGV2ZXJhZ2VzIEZPVSAoVURQLWJhc2VkIGVuY2Fwc3VsYXRpb24pIHR1bm5lbHMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGVuc3VyaW5nIHRoZSBrZXJuZWwgaXMgcHJvcGVybHkgY29uZmlndXJlZCB0byBzdXBwb3J0IHRoaXMuIFRoZSB0ZXN0IHNwZWNpZmljYWxseSBtZW50aW9ucyBhZGRpbmcgYSBGT1UgdHVubmVsIHVzaW5nIGBpcCBmb3UgYWRkIHBvcnQgNDc5NyBpcHByb3RvIDQ3YCBhbmQgYSBHUkUgdHVubmVsIHdpdGggRk9VIGVuY2Fwc3VsYXRpb24gdmlhIGBpcCBsaW5rIGFkZCBlb3VkcDAgdHlwZSBncmV0YXAgLi4uIGVuY2FwIGZvdWAuCgpUaGVyZWZvcmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgRk9VIGNvbXBvbmVudHMgYXJlIGVuYWJsZWQ6IGBORVRfRk9VYCwgb2YgY291cnNlLCBhbmQgYE5FVF9JUEdSRWAgZm9yIHRoZSBHUkUgZW5jYXBzdWxhdGlvbi4gVGhlIHRlc3QgbWlnaHQgYmUgZG9pbmcgYnJvYWRjYXN0LCBzbyBJJiMzOTtsbCBhbHNvIGNvbnNpZGVyIGBORVRfSVBHUkVfQlJPQURDQVNUYC4gR2l2ZW4gdGhhdCBGT1UgY2FuIHdvcmsgb3ZlciBJUHY2LCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBgSVBWNl9HUkVgIGFzIHdlbGwsIGV2ZW4gdGhvdWdoIElQdjQgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIGV4YW1wbGUgYGlwcHJvdG8gNDdgLgoKTm93LCBJIHRoaW5rIHRoZXJlIG1heSBiZSBhbiBhZGRpdGlvbmFsIG9wdGlvbiBhdCBwbGF5IGhlcmUuLi4gSSBuZWVkIHRvIGNoZWNrIGBORVRfRk9VX0lQX1RVTk5FTFNgLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBvbmUgbWlnaHQgYmUgKnRoZSogY3J1Y2lhbCBzZXR0aW5nIHRvIGVuc3VyZSB0aGUgd2hvbGUgdGVzdCBzdWl0ZSB3b3JrcyBhcyBleHBlY3RlZC4gSSYjMzk7bGwgZm9jdXMgb24gdGhpcyBvbmUgZm9yIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxuLS1cbm5ldC9pcHY0L0tjb25maWctMzI5LVxubmV0L2lwdjQvS2NvbmZpZzozMzA6Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xubmV0L2lwdjQvS2NvbmZpZy0zMzEtXHRib29sIFwmIzM0O0lQOiBGT1UgZW5jYXBzdWxhdGlvbiBvZiBJUCB0dW5uZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2ODAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBNdWx0aWNhc3QgRGVsaXZlcnkgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCYjMzk7cyBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IG1lY2hhbmlzbXMuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvcmUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgYWN0dWFsIHBhY2tldCBkaXN0cmlidXRpb24uIExldCYjMzk7cyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyYCBhbmQgYF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcmAuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgcG90ZW50aWFsIGRpZmZlcmVuY2VzIGluIHRoZWlyIGxvZ2ljLCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyAob3IgbGFjayB0aGVyZW9mISksIGFuZCwgaW1wb3J0YW50bHksIGFueSBkaXNjcmVwYW5jaWVzIGluIGVycm9yIGhhbmRsaW5nIGJldHdlZW4gSVB2NCBhbmQgSVB2NiBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aHdheXMuIEkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCwgc3BlY2lmaWNhbGx5IHRoZSBtdWx0aWNhc3QgZ3JvdXAgbWVtYmVyc2hpcHMgYW5kIGhvdyB0aGV5IGFyZSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBzb2NrZXRzIHJlY2VpdmUgd2hpY2ggcGFja2V0cy4gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgcm91dGluZyBzdWJzeXN0ZW0gYW5kIGFueSBhc3NvY2lhdGVkIHJhY2UgY29uZGl0aW9ucyB3aXRoIGdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlcyBpcyBhbHNvIGNyaXRpY2FsIGhlcmUuIEkgZXhwZWN0IHRoYXQgYSBjbG9zZSByZXZpZXcgb2YgdGhlc2UgZnVuY3Rpb25zIHdpbGwgaGlnaGxpZ2h0IHRoZSBhcmNoaXRlY3R1cmUmIzM5O3MgaW5oZXJlbnQgYXNzdW1wdGlvbnMsIHBvdGVudGlhbCBib3R0bGVuZWNrcywgYW5kIGFueSBhcmVhcyB3aGVyZSBJUHY2LXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSBvciBzZWN1cml0eSByZWxhdGl2ZSB0byBJUHY0IGltcGxlbWVudGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcC5jPTI0NDc9Ym9vbCB1ZHBfc2tfcnhfZHN0X3NldChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBkc3RfZW50cnkgKmRzdClcbi0tXG5uZXQvaXB2NC91ZHAuYy0yNDYzLSAqL1xubmV0L2lwdjQvdWRwLmM6MjQ2NDpzdGF0aWMgaW50IF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC91ZHAuYy0yNDY1LVx0XHRcdFx0ICAgIHN0cnVjdCB1ZHBoZHIgICp1aCxcbi0tXG5uZXQvaXB2NC91ZHAuYz0yNTkwPWludCB1ZHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdWRwLmMtMjY0OC1cdGlmIChydC1cdTAwM2VydF9mbGFncyBcdTAwMjYgKFJUQ0ZfQlJPQURDQVNUfFJUQ0ZfTVVMVElDQVNUKSlcbm5ldC9pcHY0L3VkcC5jOjI2NDk6XHRcdHJldHVybiBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIobmV0LCBza2IsIHVoLCBzYWRkciwgZGFkZHIpO1xubmV0L2lwdjQvdWRwLmMtMjY1MC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoLTctIyBXaGVuIGEgRk9VLWVuY2Fwc3VsYXRlZCBwYWNrZXQgYXJyaXZlcyB3aXRoIGEgbXVsdGljYXN0IGRlc3RpbmF0aW9uIElQLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaDo4OiMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtOS0jIGhhbmRsZXIgKGUuZy4sIEdSRSkgcmF0aGVyIHRoYW4gY29uc3VtaW5nIGl0LiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtMTQtIyB0aGUgdW5pY2FzdCBwYXRoICh1ZHBfdW5pY2FzdF9yY3Zfc2tiKSwgc28gd2UgZGlzYWJsZSBpdCB0byBmb3JjZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaDoxNTojIHBhY2tldHMgdGhyb3VnaCBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIoKS5cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtMTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NTYKCQkJCQkJCW91dHB1dDogMTg5CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoaXMgVURQIE11bHRpY2FzdCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIGlzIGludGVyZXN0aW5nLiBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRhcmdldHMgYF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcmAgYW5kIGBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJgLiBUaGVzZSBhcmUgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciBkZWxpdmVyaW5nIG11bHRpY2FzdCBVRFAgcGFja2V0cywgc28gdGhleSYjMzk7cmUgZGVmaW5pdGVseSBpbXBvcnRhbnQgYW5kIGFjdGl2ZWx5IHVzZWQuIFRoZSBjaGFuZ2UgaXRzZWxmIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGJ1ZyB3aGVyZSBlbmNhcHN1bGF0ZWQgbXVsdGljYXN0IHBhY2tldHMsIGxpa2UgdGhvc2UgZnJvbSBGT1UgKFVEUC1vdmVyLUlQKSBvciBHUkUsIHdlcmUgZ2V0dGluZyBkcm9wcGVkIG9yIG1pc2hhbmRsZWQuIEluc3RlYWQgb2YgYmVpbmcgY29ycmVjdGx5IHBhc3NlZCB0byB0aGUgaW5uZXIgcHJvdG9jb2wgaGFuZGxlciwgdGhleSB3ZXJlIGp1c3QgYmVpbmcgY29uc3VtZWQuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGVuY2Fwc3VsYXRpb24gaXNzdWUuCgpUaGUgY29uZmlnIG9wdGlvbnMgbmVlZGVkIHRvIHJlcHJvZHVjZSBvciB0cmlnZ2VyIHRoaXMgYXJlIGhlbHBmdWwuIEkmIzM5O2xsIGRlZmluaXRlbHkgd2FudCB0byBlbnN1cmUgYE5FVF9GT1VgLCBgTkVUX0ZPVV9JUF9UVU5ORUxTYCwgYE5FVF9JUEdSRWAsIGBORVRfSVBHUkVfQlJPQURDQVNUYCwgYW5kIGBJUFY2X0dSRWAgYXJlIGVuYWJsZWQgZHVyaW5nIHRlc3RpbmcuIFRob3NlIGFyZSB0aGUga2V5cyB0byByZXByb2R1Y2luZyB0aGUgcHJvYmxlbWF0aWMgc2NlbmFyaW9zLgoKVGhlIGtleSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZGVsaXZlcnkgZnVuY3Rpb25zLiBJdCBzZWVtcyBsaWtlbHkgdGhhdCBmdXp6aW5nIHRob3NlIHdpdGggRk9VIGFuZCBHUkUgdHJhZmZpYyB3b3VsZCBiZSBtb3N0IGVmZmVjdGl2ZSBhdCB1bmNvdmVyaW5nIGFueSByZW1haW5pbmcgaXNzdWVzIG9yIHJlZ3Jlc3Npb25zLiBUaGUgcmVhc29uaW5nIGhlcmUgaXMgc29saWQ7IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgbmV0d29yayBjb2RlLCBhbmQgdGhhdCYjMzk7cyBwcmVjaXNlbHkgd2hlcmUgSSYjMzk7ZCBzdGFydCBteSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkVfQlJPQURDQVNUJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyJiMzNDssCiAgICAmIzM0O19fdWRwNl9saWJfbWNhc3RfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkVfQlJPQURDQVNUJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyJiMzNDssCiAgICAmIzM0O19fdWRwNl9saWJfbWNhc3RfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjoyMC40NTY4NzA1MDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQ1MTMwMDM1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCIsXG4gICAgXCJORVRfRk9VX0lQX1RVTk5FTFNcIixcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiTkVUX0lQR1JFX0JST0FEQ0FTVFwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJcIixcbiAgICBcIl9fdWRwNl9saWJfbWNhc3RfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFVEUCBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aHMgKF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlciBhbmQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKSB0byBjb3JyZWN0bHkgaGFuZGxlIHBhY2tldCByZXN1Ym1pc3Npb24gZm9yIGVuY2Fwc3VsYXRlZCBwYWNrZXRzIChlLmcuLCBGT1UvR1JFVEFQKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIGNvZGUsIGZpeGluZyBhIGJ1ZyB3aGVyZSBzdWNoIHBhY2tldHMgd2VyZSBpbmNvcnJlY3RseSBjb25zdW1lZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgZGVsaXZlcnkgZnVuY3Rpb25zIHdpdGggRk9VIGFuZCBHUkUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6MjAuNDU2ODk0NTIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTkxMTM3NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmMDhiOWRiNTE0ZjUyOWRlNWU5MzY4ZGU2MzYxZGVmNzc3OTE2NzNiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMDY6MjY6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwLmMgYi9uZXQvaXB2NC91ZHAuY1xcbmluZGV4IDcwZjZjYmQ0ZWY3M2JmLi5iMDkxMDY1OTM5MWVmMCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC91ZHAuY1xcbisrKyBiL25ldC9pcHY0L3VkcC5jXFxuQEAgLTI0NzUsNiArMjQ3NSw3IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0c3RydWN0IHVkcF9oc2xvdCAqaHNsb3Q7XFxuIFxcdHN0cnVjdCBza19idWZmICpuc2tiO1xcbiBcXHRib29sIHVzZV9oYXNoMjtcXG4rXFx0aW50IHJldDtcXG4gXFxuIFxcdGhhc2gyX2FueSA9IDA7XFxuIFxcdGhhc2gyID0gMDtcXG5AQCAtMjUxOSw4ICsyNTIwLDkgQEAgc3RhdGljIGludCBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoZmlyc3QpIHtcXG4tXFx0XFx0aWYgKHVkcF9xdWV1ZV9yY3Zfc2tiKGZpcnN0LCBza2IpIFxcdTAwM2UgMClcXG4tXFx0XFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG4rXFx0XFx0cmV0ID0gdWRwX3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRyZXR1cm4gLXJldDtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdF9fVURQX0lOQ19TVEFUUyhuZXQsIFVEUF9NSUJfSUdOT1JFRE1VTFRJKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdWRwLmMgYi9uZXQvaXB2Ni91ZHAuY1xcbmluZGV4IDE1ZTAzMjE5NGVjY2MzLi5mZjJlMzg5ZTI4NmJhNiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni91ZHAuY1xcbisrKyBiL25ldC9pcHY2L3VkcC5jXFxuQEAgLTk0OSw2ICs5NDksNyBAQCBzdGF0aWMgaW50IF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHN0cnVjdCB1ZHBfaHNsb3QgKmhzbG90O1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcXG4gXFx0Ym9vbCB1c2VfaGFzaDI7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRoYXNoMl9hbnkgPSAwO1xcbiBcXHRoYXNoMiA9IDA7XFxuQEAgLTk5OCw4ICs5OTksOSBAQCBzdGF0aWMgaW50IF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChmaXJzdCkge1xcbi1cXHRcXHRpZiAodWRwdjZfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKSBcXHUwMDNlIDApXFxuLVxcdFxcdFxcdGNvbnN1bWVfc2tiKHNrYik7XFxuK1xcdFxcdHJldCA9IHVkcHY2X3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRyZXR1cm4gLXJldDtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdF9fVURQNl9JTkNfU1RBVFMobmV0LCBVRFBfTUlCX0lHTk9SRURNVUxUSSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi43ZTlhZTkzN2NmZmE3ZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG5AQCAtMzksNiArMzksNyBAQCBURVNUX1BST0dTIDo9IFxcXFxcXG4gXFx0ZmliX3J1bGVfdGVzdHMuc2ggXFxcXFxcbiBcXHRmaWJfdGVzdHMuc2ggXFxcXFxcbiBcXHRmaW5fYWNrX2xhdC5zaCBcXFxcXFxuK1xcdGZvdV9tY2FzdF9lbmNhcC5zaCBcXFxcXFxuIFxcdGZxX2JhbmRfcGt0bGltaXQuc2ggXFxcXFxcbiBcXHRncmVfZ3NvLnNoIFxcXFxcXG4gXFx0Z3JlX2lwdjZfbGxhZGRyLnNoIFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44ZGI5NjMzZjRjMjgzZVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoXFxuQEAgLTAsMCArMSwxMTIgQEBcXG4rIyEvYmluL2Jhc2hcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgVGVzdCB0aGF0IFVEUCBlbmNhcHN1bGF0aW9uIChGT1UpIGNvcnJlY3RseSBoYW5kbGVzIHBhY2tldCByZXN1Ym1pdFxcbisjIHdoZW4gcGFja2V0cyBhcmUgZGVsaXZlcmVkIHZpYSB0aGUgbXVsdGljYXN0IFVEUCBkZWxpdmVyeSBwYXRoLlxcbisjXFxuKyMgV2hlbiBhIEZPVS1lbmNhcHN1bGF0ZWQgcGFja2V0IGFycml2ZXMgd2l0aCBhIG11bHRpY2FzdCBkZXN0aW5hdGlvbiBJUCxcXG4rIyBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIoKSBtdXN0IHJlc3VibWl0IGl0IHRvIHRoZSBpbm5lciBwcm90b2NvbFxcbisjIGhhbmRsZXIgKGUuZy4sIEdSRSkgcmF0aGVyIHRoYW4gY29uc3VtaW5nIGl0LiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdFxcbisjIGJ5IGNyZWF0aW5nIGEgRk9VL0dSRVRBUCB0dW5uZWwgd2l0aCBhIG11bHRpY2FzdCByZW1vdGUgYWRkcmVzcyBhbmRcXG4rIyBzZW5kaW5nIHBpbmcgdGhyb3VnaCBpdC5cXG4rI1xcbisjIFRoZSBlYXJseSBkZW11eCBvcHRpbWl6YXRpb24gY2FuIG1hc2sgdGhpcyBpc3N1ZSBieSByb3V0aW5nIHBhY2tldHMgdmlhXFxuKyMgdGhlIHVuaWNhc3QgcGF0aCAodWRwX3VuaWNhc3RfcmN2X3NrYiksIHNvIHdlIGRpc2FibGUgaXQgdG8gZm9yY2VcXG4rIyBwYWNrZXRzIHRocm91Z2ggX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkuXFxuK1xcbitzb3VyY2UgbGliLnNoXFxuK1xcbitOU0VOREVSPVxcXCJcXFwiXFxuK05SRUNWPVxcXCJcXFwiXFxuK1xcbitjbGVhbnVwKCkge1xcbitcXHRjbGVhbnVwX2FsbF9uc1xcbit9XFxuK1xcbit0cmFwIGNsZWFudXAgRVhJVFxcbitcXG4rc2V0dXAoKSB7XFxuK1xcdHNldHVwX25zIE5TRU5ERVIgTlJFQ1ZcXG4rXFxuK1xcdGlwIGxpbmsgYWRkIHZldGhfcyB0eXBlIHZldGggcGVlciBuYW1lIHZldGhfclxcbitcXHRpcCBsaW5rIHNldCB2ZXRoX3MgbmV0bnMgXFxcIiROU0VOREVSXFxcIlxcbitcXHRpcCBsaW5rIHNldCB2ZXRoX3IgbmV0bnMgXFxcIiROUkVDVlxcXCJcXG4rXFxuK1xcdGlwIC1uIFxcXCIkTlNFTkRFUlxcXCIgYWRkciBhZGQgMTAuMC4wLjEvMjQgZGV2IHZldGhfc1xcbitcXHRpcCAtbiBcXFwiJE5TRU5ERVJcXFwiIGxpbmsgc2V0IHZldGhfcyB1cFxcbitcXG4rXFx0aXAgLW4gXFxcIiROUkVDVlxcXCIgYWRkciBhZGQgMTAuMC4wLjIvMjQgZGV2IHZldGhfclxcbitcXHRpcCAtbiBcXFwiJE5SRUNWXFxcIiBsaW5rIHNldCB2ZXRoX3IgdXBcXG4rXFxuK1xcdCMgRGlzYWJsZSBlYXJseSBkZW11eCB0byBmb3JjZSBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlJFQ1ZcXFwiIHN5c2N0bCAtd3EgbmV0LmlwdjQuaXBfZWFybHlfZGVtdXg9MFxcbitcXG4rXFx0IyBKb2luIG11bHRpY2FzdCBncm91cCBvbiByZWNlaXZlclxcbitcXHRpcCAtbiBcXFwiJE5SRUNWXFxcIiBhZGRyIGFkZCAyMzkuMC4wLjEvMzIgZGV2IHZldGhfciBhdXRvam9pblxcbitcXG4rXFx0IyBNdWx0aWNhc3Qgcm91dGVzXFxuK1xcdGlwIC1uIFxcXCIkTlJFQ1ZcXFwiIHJvdXRlIGFkZCAyMzkuMC4wLjAvOCBkZXYgdmV0aF9yXFxuK1xcdGlwIC1uIFxcXCIkTlNFTkRFUlxcXCIgcm91dGUgYWRkIDIzOS4wLjAuMC84IGRldiB2ZXRoX3NcXG4rXFxuK1xcdCMgU2VuZGVyOiBHUkVUQVAgd2l0aCBGT1UgZW5jYXAgKG5vIEZPVSBsaXN0ZW5lciBuZWVkZWQgb24gVFggc2lkZSlcXG4rXFx0aXAgLW4gXFxcIiROU0VOREVSXFxcIiBsaW5rIGFkZCBlb3VkcDAgdHlwZSBncmV0YXAgXFxcXFxcbitcXHRcXHRyZW1vdGUgMjM5LjAuMC4xIGxvY2FsIDEwLjAuMC4xIFxcXFxcXG4rXFx0XFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxcXFxuK1xcdFxcdGtleSAyMzkuMC4wLjFcXG4rXFx0aXAgLW4gXFxcIiROU0VOREVSXFxcIiBsaW5rIHNldCBlb3VkcDAgdXBcXG4rXFx0aXAgLW4gXFxcIiROU0VOREVSXFxcIiBhZGRyIGFkZCAxOTIuMTY4Ljk5LjEvMjQgZGV2IGVvdWRwMFxcbitcXG4rXFx0IyBSZWNlaXZlcjogRk9VIGxpc3RlbmVyICsgR1JFVEFQXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROUkVDVlxcXCIgaXAgZm91IGFkZCBwb3J0IDQ3OTcgaXBwcm90byA0N1xcbitcXHRpcCAtbiBcXFwiJE5SRUNWXFxcIiBsaW5rIGFkZCBlb3VkcDAgdHlwZSBncmV0YXAgXFxcXFxcbitcXHRcXHRyZW1vdGUgMjM5LjAuMC4xIGxvY2FsIDEwLjAuMC4yIFxcXFxcXG4rXFx0XFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxcXFxuK1xcdFxcdGtleSAyMzkuMC4wLjFcXG4rXFx0aXAgLW4gXFxcIiROUkVDVlxcXCIgbGluayBzZXQgZW91ZHAwIHVwXFxuK1xcdGlwIC1uIFxcXCIkTlJFQ1ZcXFwiIGFkZHIgYWRkIDE5Mi4xNjguOTkuMi8yNCBkZXYgZW91ZHAwXFxuK1xcbitcXHQjIFN0YXRpYyBuZWlnaCBlbnRyeSBvbiBzZW5kZXI6IEFSUCByZXBsaWVzIGNhbm5vdCB0cmF2ZXJzZSB0aGVcXG4rXFx0IyBtdWx0aWNhc3QgdHVubmVsIGJhY2ssIHNvIHByZS1wb3B1bGF0ZSB0aGUgbmVpZ2hib3IgY2FjaGUuXFxuK1xcdGxvY2FsIHJlY3ZfbWFjXFxuK1xcdHJlY3ZfbWFjPSQoaXAgLW4gXFxcIiROUkVDVlxcXCIgbGluayBzaG93IGVvdWRwMCB8IGF3ayAnL2V0aGVyL3twcmludCAkMn0nKVxcbitcXHRpcCAtbiBcXFwiJE5TRU5ERVJcXFwiIG5laWdoIGFkZCAxOTIuMTY4Ljk5LjIgbGxhZGRyIFxcXCIkcmVjdl9tYWNcXFwiIGRldiBlb3VkcDBcXG4rfVxcbitcXG4rZ2V0X3J4X3BhY2tldHMoKSB7XFxuK1xcdGlwIC1uIFxcXCIkTlJFQ1ZcXFwiIC1zIGxpbmsgc2hvdyBlb3VkcDAgfCBhd2sgJy9SWDove2dldGxpbmU7IHByaW50ICQyfSdcXG4rfVxcbitcXG4rdGVzdF9mb3VfbWNhc3RfZW5jYXAoKSB7XFxuK1xcdGxvY2FsIGNvdW50PTEwMFxcbitcXHRsb2NhbCByeF9iZWZvcmVcXG4rXFx0bG9jYWwgcnhfYWZ0ZXJcXG4rXFx0bG9jYWwgcnhfZGVsdGFcXG4rXFxuK1xcdCMgV2FybXVwOiBsZXQgYW55IGluaXRpYWwgYnJvYWRjYXN0L0FSUCB0cmFmZmljIHNldHRsZVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNFTkRFUlxcXCIgcGluZyAtYyAxIC1XIDEgMTkyLjE2OC45OS4yIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbitcXHRzbGVlcCAxXFxuK1xcbitcXHRyeF9iZWZvcmU9JChnZXRfcnhfcGFja2V0cylcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TRU5ERVJcXFwiIHBpbmcgLWMgJGNvdW50IC1XIDEgMTkyLjE2OC45OS4yIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbitcXHRzbGVlcCAxXFxuK1xcdHJ4X2FmdGVyPSQoZ2V0X3J4X3BhY2tldHMpXFxuK1xcbitcXHRyeF9kZWx0YT0kKChyeF9hZnRlciAtIHJ4X2JlZm9yZSkpXFxuK1xcbitcXHRpZiBbIFxcXCIkcnhfZGVsdGFcXFwiIC1nZSBcXFwiJGNvdW50XFxcIiBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIlBBU1M6IHJlY2VpdmVkICRyeF9kZWx0YS8kY291bnQgcGFja2V0cyB2aWEgbXVsdGljYXN0IEZPVS9HUkVUQVBcXFwiXFxuK1xcdFxcdHJldHVybiBcXFwiJGtzZnRfcGFzc1xcXCJcXG4rXFx0ZWxpZiBbIFxcXCIkcnhfZGVsdGFcXFwiIC1ndCAwIF07IHRoZW5cXG4rXFx0XFx0ZWNobyBcXFwiRkFJTDogb25seSAkcnhfZGVsdGEvJGNvdW50IHBhY2tldHMgcmVjZWl2ZWQgKHBhcnRpYWwgZGVsaXZlcnkpXFxcIlxcbitcXHRcXHRyZXR1cm4gXFxcIiRrc2Z0X2ZhaWxcXFwiXFxuK1xcdGVsc2VcXG4rXFx0XFx0ZWNobyBcXFwiRkFJTDogMC8kY291bnQgcGFja2V0cyByZWNlaXZlZCAobXVsdGljYXN0IGVuY2FwIHJlc3VibWl0IGJyb2tlbilcXFwiXFxuK1xcdFxcdHJldHVybiBcXFwiJGtzZnRfZmFpbFxcXCJcXG4rXFx0ZmlcXG4rfVxcbitcXG4rZWNobyBcXFwiVEVTVDogRk9VL0dSRVRBUCBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvbiByZXN1Ym1pdFxcXCJcXG4rXFxuK3NldHVwXFxuK3Rlc3RfZm91X21jYXN0X2VuY2FwXFxuK2V4aXQgJD9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6MjAuOTc2ODYxNjE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTkzMTI5NjAyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCIsXG4gICAgXCJORVRfRk9VX0lQX1RVTk5FTFNcIixcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiTkVUX0lQR1JFX0JST0FEQ0FTVFwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJcIixcbiAgICBcIl9fdWRwNl9saWJfbWNhc3RfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFVEUCBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aHMgKF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlciBhbmQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKSB0byBjb3JyZWN0bHkgaGFuZGxlIHBhY2tldCByZXN1Ym1pc3Npb24gZm9yIGVuY2Fwc3VsYXRlZCBwYWNrZXRzIChlLmcuLCBGT1UvR1JFVEFQKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIGNvZGUsIGZpeGluZyBhIGJ1ZyB3aGVyZSBzdWNoIHBhY2tldHMgd2VyZSBpbmNvcnJlY3RseSBjb25zdW1lZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgZGVsaXZlcnkgZnVuY3Rpb25zIHdpdGggRk9VIGFuZCBHUkUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmMDhiOWRiNTE0ZjUyOWRlNWU5MzY4ZGU2MzYxZGVmNzc3OTE2NzNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwNjoyNjoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcC5jIGIvbmV0L2lwdjQvdWRwLmNcbmluZGV4IDcwZjZjYmQ0ZWY3M2JmLi5iMDkxMDY1OTM5MWVmMCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3VkcC5jXG4rKysgYi9uZXQvaXB2NC91ZHAuY1xuQEAgLTI0NzUsNiArMjQ3NSw3IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCB1ZHBfaHNsb3QgKmhzbG90O1xuIFx0c3RydWN0IHNrX2J1ZmYgKm5za2I7XG4gXHRib29sIHVzZV9oYXNoMjtcbitcdGludCByZXQ7XG4gXG4gXHRoYXNoMl9hbnkgPSAwO1xuIFx0aGFzaDIgPSAwO1xuQEAgLTI1MTksOCArMjUyMCw5IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH1cbiBcbiBcdGlmIChmaXJzdCkge1xuLVx0XHRpZiAodWRwX3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYikgXHUwMDNlIDApXG4tXHRcdFx0Y29uc3VtZV9za2Ioc2tiKTtcbitcdFx0cmV0ID0gdWRwX3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7XG4rXHRcdGlmIChyZXQgXHUwMDNlIDApXG4rXHRcdFx0cmV0dXJuIC1yZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0X19VRFBfSU5DX1NUQVRTKG5ldCwgVURQX01JQl9JR05PUkVETVVMVEkpO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3VkcC5jIGIvbmV0L2lwdjYvdWRwLmNcbmluZGV4IDE1ZTAzMjE5NGVjY2MzLi5mZjJlMzg5ZTI4NmJhNiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3VkcC5jXG4rKysgYi9uZXQvaXB2Ni91ZHAuY1xuQEAgLTk0OSw2ICs5NDksNyBAQCBzdGF0aWMgaW50IF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzdHJ1Y3QgdWRwX2hzbG90ICpoc2xvdDtcbiBcdHN0cnVjdCBza19idWZmICpuc2tiO1xuIFx0Ym9vbCB1c2VfaGFzaDI7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aGFzaDJfYW55ID0gMDtcbiBcdGhhc2gyID0gMDtcbkBAIC05OTgsOCArOTk5LDkgQEAgc3RhdGljIGludCBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0fVxuIFxuIFx0aWYgKGZpcnN0KSB7XG4tXHRcdGlmICh1ZHB2Nl9xdWV1ZV9yY3Zfc2tiKGZpcnN0LCBza2IpIFx1MDAzZSAwKVxuLVx0XHRcdGNvbnN1bWVfc2tiKHNrYik7XG4rXHRcdHJldCA9IHVkcHY2X3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7XG4rXHRcdGlmIChyZXQgXHUwMDNlIDApXG4rXHRcdFx0cmV0dXJuIC1yZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0X19VRFA2X0lOQ19TVEFUUyhuZXQsIFVEUF9NSUJfSUdOT1JFRE1VTFRJKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi43ZTlhZTkzN2NmZmE3ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5AQCAtMzksNiArMzksNyBAQCBURVNUX1BST0dTIDo9IFxcXG4gXHRmaWJfcnVsZV90ZXN0cy5zaCBcXFxuIFx0ZmliX3Rlc3RzLnNoIFxcXG4gXHRmaW5fYWNrX2xhdC5zaCBcXFxuK1x0Zm91X21jYXN0X2VuY2FwLnNoIFxcXG4gXHRmcV9iYW5kX3BrdGxpbWl0LnNoIFxcXG4gXHRncmVfZ3NvLnNoIFxcXG4gXHRncmVfaXB2Nl9sbGFkZHIuc2ggXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44ZGI5NjMzZjRjMjgzZVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaFxuQEAgLTAsMCArMSwxMTIgQEBcbisjIS9iaW4vYmFzaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBUZXN0IHRoYXQgVURQIGVuY2Fwc3VsYXRpb24gKEZPVSkgY29ycmVjdGx5IGhhbmRsZXMgcGFja2V0IHJlc3VibWl0XG4rIyB3aGVuIHBhY2tldHMgYXJlIGRlbGl2ZXJlZCB2aWEgdGhlIG11bHRpY2FzdCBVRFAgZGVsaXZlcnkgcGF0aC5cbisjXG4rIyBXaGVuIGEgRk9VLWVuY2Fwc3VsYXRlZCBwYWNrZXQgYXJyaXZlcyB3aXRoIGEgbXVsdGljYXN0IGRlc3RpbmF0aW9uIElQLFxuKyMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2xcbisjIGhhbmRsZXIgKGUuZy4sIEdSRSkgcmF0aGVyIHRoYW4gY29uc3VtaW5nIGl0LiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdFxuKyMgYnkgY3JlYXRpbmcgYSBGT1UvR1JFVEFQIHR1bm5lbCB3aXRoIGEgbXVsdGljYXN0IHJlbW90ZSBhZGRyZXNzIGFuZFxuKyMgc2VuZGluZyBwaW5nIHRocm91Z2ggaXQuXG4rI1xuKyMgVGhlIGVhcmx5IGRlbXV4IG9wdGltaXphdGlvbiBjYW4gbWFzayB0aGlzIGlzc3VlIGJ5IHJvdXRpbmcgcGFja2V0cyB2aWFcbisjIHRoZSB1bmljYXN0IHBhdGggKHVkcF91bmljYXN0X3Jjdl9za2IpLCBzbyB3ZSBkaXNhYmxlIGl0IHRvIGZvcmNlXG4rIyBwYWNrZXRzIHRocm91Z2ggX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkuXG4rXG4rc291cmNlIGxpYi5zaFxuK1xuK05TRU5ERVI9XCJcIlxuK05SRUNWPVwiXCJcbitcbitjbGVhbnVwKCkge1xuK1x0Y2xlYW51cF9hbGxfbnNcbit9XG4rXG4rdHJhcCBjbGVhbnVwIEVYSVRcbitcbitzZXR1cCgpIHtcbitcdHNldHVwX25zIE5TRU5ERVIgTlJFQ1ZcbitcbitcdGlwIGxpbmsgYWRkIHZldGhfcyB0eXBlIHZldGggcGVlciBuYW1lIHZldGhfclxuK1x0aXAgbGluayBzZXQgdmV0aF9zIG5ldG5zIFwiJE5TRU5ERVJcIlxuK1x0aXAgbGluayBzZXQgdmV0aF9yIG5ldG5zIFwiJE5SRUNWXCJcbitcbitcdGlwIC1uIFwiJE5TRU5ERVJcIiBhZGRyIGFkZCAxMC4wLjAuMS8yNCBkZXYgdmV0aF9zXG4rXHRpcCAtbiBcIiROU0VOREVSXCIgbGluayBzZXQgdmV0aF9zIHVwXG4rXG4rXHRpcCAtbiBcIiROUkVDVlwiIGFkZHIgYWRkIDEwLjAuMC4yLzI0IGRldiB2ZXRoX3JcbitcdGlwIC1uIFwiJE5SRUNWXCIgbGluayBzZXQgdmV0aF9yIHVwXG4rXG4rXHQjIERpc2FibGUgZWFybHkgZGVtdXggdG8gZm9yY2UgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlJFQ1ZcIiBzeXNjdGwgLXdxIG5ldC5pcHY0LmlwX2Vhcmx5X2RlbXV4PTBcbitcbitcdCMgSm9pbiBtdWx0aWNhc3QgZ3JvdXAgb24gcmVjZWl2ZXJcbitcdGlwIC1uIFwiJE5SRUNWXCIgYWRkciBhZGQgMjM5LjAuMC4xLzMyIGRldiB2ZXRoX3IgYXV0b2pvaW5cbitcbitcdCMgTXVsdGljYXN0IHJvdXRlc1xuK1x0aXAgLW4gXCIkTlJFQ1ZcIiByb3V0ZSBhZGQgMjM5LjAuMC4wLzggZGV2IHZldGhfclxuK1x0aXAgLW4gXCIkTlNFTkRFUlwiIHJvdXRlIGFkZCAyMzkuMC4wLjAvOCBkZXYgdmV0aF9zXG4rXG4rXHQjIFNlbmRlcjogR1JFVEFQIHdpdGggRk9VIGVuY2FwIChubyBGT1UgbGlzdGVuZXIgbmVlZGVkIG9uIFRYIHNpZGUpXG4rXHRpcCAtbiBcIiROU0VOREVSXCIgbGluayBhZGQgZW91ZHAwIHR5cGUgZ3JldGFwIFxcXG4rXHRcdHJlbW90ZSAyMzkuMC4wLjEgbG9jYWwgMTAuMC4wLjEgXFxcbitcdFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxuK1x0XHRrZXkgMjM5LjAuMC4xXG4rXHRpcCAtbiBcIiROU0VOREVSXCIgbGluayBzZXQgZW91ZHAwIHVwXG4rXHRpcCAtbiBcIiROU0VOREVSXCIgYWRkciBhZGQgMTkyLjE2OC45OS4xLzI0IGRldiBlb3VkcDBcbitcbitcdCMgUmVjZWl2ZXI6IEZPVSBsaXN0ZW5lciArIEdSRVRBUFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROUkVDVlwiIGlwIGZvdSBhZGQgcG9ydCA0Nzk3IGlwcHJvdG8gNDdcbitcdGlwIC1uIFwiJE5SRUNWXCIgbGluayBhZGQgZW91ZHAwIHR5cGUgZ3JldGFwIFxcXG4rXHRcdHJlbW90ZSAyMzkuMC4wLjEgbG9jYWwgMTAuMC4wLjIgXFxcbitcdFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxuK1x0XHRrZXkgMjM5LjAuMC4xXG4rXHRpcCAtbiBcIiROUkVDVlwiIGxpbmsgc2V0IGVvdWRwMCB1cFxuK1x0aXAgLW4gXCIkTlJFQ1ZcIiBhZGRyIGFkZCAxOTIuMTY4Ljk5LjIvMjQgZGV2IGVvdWRwMFxuK1xuK1x0IyBTdGF0aWMgbmVpZ2ggZW50cnkgb24gc2VuZGVyOiBBUlAgcmVwbGllcyBjYW5ub3QgdHJhdmVyc2UgdGhlXG4rXHQjIG11bHRpY2FzdCB0dW5uZWwgYmFjaywgc28gcHJlLXBvcHVsYXRlIHRoZSBuZWlnaGJvciBjYWNoZS5cbitcdGxvY2FsIHJlY3ZfbWFjXG4rXHRyZWN2X21hYz0kKGlwIC1uIFwiJE5SRUNWXCIgbGluayBzaG93IGVvdWRwMCB8IGF3ayAnL2V0aGVyL3twcmludCAkMn0nKVxuK1x0aXAgLW4gXCIkTlNFTkRFUlwiIG5laWdoIGFkZCAxOTIuMTY4Ljk5LjIgbGxhZGRyIFwiJHJlY3ZfbWFjXCIgZGV2IGVvdWRwMFxuK31cbitcbitnZXRfcnhfcGFja2V0cygpIHtcbitcdGlwIC1uIFwiJE5SRUNWXCIgLXMgbGluayBzaG93IGVvdWRwMCB8IGF3ayAnL1JYOi97Z2V0bGluZTsgcHJpbnQgJDJ9J1xuK31cbitcbit0ZXN0X2ZvdV9tY2FzdF9lbmNhcCgpIHtcbitcdGxvY2FsIGNvdW50PTEwMFxuK1x0bG9jYWwgcnhfYmVmb3JlXG4rXHRsb2NhbCByeF9hZnRlclxuK1x0bG9jYWwgcnhfZGVsdGFcbitcbitcdCMgV2FybXVwOiBsZXQgYW55IGluaXRpYWwgYnJvYWRjYXN0L0FSUCB0cmFmZmljIHNldHRsZVxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU0VOREVSXCIgcGluZyAtYyAxIC1XIDEgMTkyLjE2OC45OS4yIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuK1x0c2xlZXAgMVxuK1xuK1x0cnhfYmVmb3JlPSQoZ2V0X3J4X3BhY2tldHMpXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TRU5ERVJcIiBwaW5nIC1jICRjb3VudCAtVyAxIDE5Mi4xNjguOTkuMiBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbitcdHNsZWVwIDFcbitcdHJ4X2FmdGVyPSQoZ2V0X3J4X3BhY2tldHMpXG4rXG4rXHRyeF9kZWx0YT0kKChyeF9hZnRlciAtIHJ4X2JlZm9yZSkpXG4rXG4rXHRpZiBbIFwiJHJ4X2RlbHRhXCIgLWdlIFwiJGNvdW50XCIgXTsgdGhlblxuK1x0XHRlY2hvIFwiUEFTUzogcmVjZWl2ZWQgJHJ4X2RlbHRhLyRjb3VudCBwYWNrZXRzIHZpYSBtdWx0aWNhc3QgRk9VL0dSRVRBUFwiXG4rXHRcdHJldHVybiBcIiRrc2Z0X3Bhc3NcIlxuK1x0ZWxpZiBbIFwiJHJ4X2RlbHRhXCIgLWd0IDAgXTsgdGhlblxuK1x0XHRlY2hvIFwiRkFJTDogb25seSAkcnhfZGVsdGEvJGNvdW50IHBhY2tldHMgcmVjZWl2ZWQgKHBhcnRpYWwgZGVsaXZlcnkpXCJcbitcdFx0cmV0dXJuIFwiJGtzZnRfZmFpbFwiXG4rXHRlbHNlXG4rXHRcdGVjaG8gXCJGQUlMOiAwLyRjb3VudCBwYWNrZXRzIHJlY2VpdmVkIChtdWx0aWNhc3QgZW5jYXAgcmVzdWJtaXQgYnJva2VuKVwiXG4rXHRcdHJldHVybiBcIiRrc2Z0X2ZhaWxcIlxuK1x0Zmlcbit9XG4rXG4rZWNobyBcIlRFU1Q6IEZPVS9HUkVUQVAgbXVsdGljYXN0IGVuY2Fwc3VsYXRpb24gcmVzdWJtaXRcIlxuK1xuK3NldHVwXG4rdGVzdF9mb3VfbWNhc3RfZW5jYXBcbitleGl0ICQ/XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjoyMC45NzY4NjMzMjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjUyNTkwMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVEUCBNdWx0aWNhc3QgRGVsaXZlcnkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgY2hhbmdlIHRvIGhvdyBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHdvcmtzLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9pcHY0L3VkcC5jYCBhbmQgYG5ldC9pcHY2L3VkcC5jYC4gSXQncyBhbHRlcmluZyBgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyYCBhbmQgYF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcmAuIEVzc2VudGlhbGx5LCBpbnN0ZWFkIG9mIGltbWVkaWF0ZWx5IGNvbnN1bWluZyB0aGUgYHNrYmAgaWYgYHVkcF9xdWV1ZV9yY3Zfc2tiYCByZXR1cm5zIGEgcG9zaXRpdmUgdmFsdWUgKGltcGx5aW5nIHRoZSBwYWNrZXQgbmVlZHMgZnVydGhlciBwcm9jZXNzaW5nLCBsaWtlIGVuY2Fwc3VsYXRpb24pLCBpdCBub3cgKnJldHVybnMqIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBiYXNlZCBvbiB0aGF0IHBvc2l0aXZlIHZhbHVlLCBgLXJldGAuIFRoYXQgbWVhbnMgdGhpcyBpcyBhICpmdW5jdGlvbmFsIGNoYW5nZSogdG8gdGhlIGNvcmUgbXVsdGljYXN0IHBhdGguIFRoZSBpZGVhIGlzIHRoYXQgdGhlIHBhY2tldCBuZWVkcyB0byBiZSByZXN1Ym1pdHRlZCB0byBhIHByb3RvY29sIGhhbmRsZXIgd2hlbiBlbmNhcHN1bGF0ZWQgKEZPVS9HUkVUQVApLlxuXG5UaGlzIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUsIGJ1dCBjcml0aWNhbCwgaXNzdWVzLCBlc3BlY2lhbGx5IGFyb3VuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCBlbmNhcHN1bGF0aW9uIGFuZCBob3cgdGhlIHN0YWNrIGhhbmRsZXMgdGhlc2Ugc3BlY2lhbCBjYXNlcy4gU28gdGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBkZWZpbml0ZWx5IGBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJgIGFuZCBgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyYC5cblxuSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGggZnVsbHksIGVzcGVjaWFsbHkgcmVsYXRlZCB0byBGT1UsIEdSRSwgYW5kIFVEUCBtdWx0aWNhc3QuIEknbGwgc2VhcmNoIHRoZSBzb3VyY2UgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb24gc3ltYm9scy4gR290dGEgc2VlIHdoYXQncyBuZWVkZWQgdG8gdHJpZ2dlciB0aGUgbmV3IHJldHVybiBwYXRoIGFuZCBpdHMgc3Vic2VxdWVudCBoYW5kbGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA2OjI2OjI3LjIyOTQ1NjI4NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzM3MDA1NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfRk9VXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MzE2PWNvbmZpZyBORVRfVURQX1RVTk5FTFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMjAtXFxubmV0L2lwdjQvS2NvbmZpZzozMjE6Y29uZmlnIE5FVF9GT1VcXG5uZXQvaXB2NC9LY29uZmlnLTMyMi1cXHR0cmlzdGF0ZSBcXFwiSVA6IEZvbyAoSVAgcHJvdG9jb2xzKSBvdmVyIFVEUFxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzI5LVxcbm5ldC9pcHY0L0tjb25maWc6MzMwOmNvbmZpZyBORVRfRk9VX0lQX1RVTk5FTFNcXG5uZXQvaXB2NC9LY29uZmlnLTMzMS1cXHRib29sIFxcXCJJUDogRk9VIGVuY2Fwc3VsYXRpb24gb2YgSVAgdHVubmVsc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6MzAuNTY2NDY2NjU3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA0NDM5MzgyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSBwcm9tcHQgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipHUkUgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gXCJMZXQncyBjaGVjayBHUkUgY29uZmlncy5cIiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGFzc3VtZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBuZXR3b3JrIHNjZW5hcmlvLCBhbmQgdGhlIHVzZSBvZiBHZW5lcmljIFJvdXRpbmcgRW5jYXBzdWxhdGlvbiAoR1JFKSB0dW5uZWxzLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBtZWFucyBhIHZhcmlldHkgb2YgcG90ZW50aWFsIGFyZWFzIG5lZWQgYXR0ZW50aW9uLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggYSBtZW50YWwgY2hlY2tsaXN0OlxuXG4qICAgKipVbmRlcmx5aW5nIE5ldHdvcms6KiogRmlyc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgcGh5c2ljYWwgbGF5ZXIuIFdoYXQncyB0aGUgZm91bmRhdGlvbj8gQXJlIHRoZSB1bmRlcmx5aW5nIElQIG5ldHdvcmtzIGZ1bmN0aW9uaW5nIG9wdGltYWxseT8gTGF0ZW5jeSwgcGFja2V0IGxvc3MsIGJhbmR3aWR0aCDigJMgdGhlc2UgYmFzaWMgbWV0cmljcyBhcmUgY3JpdGljYWwgZm9yIGEgc3RhYmxlIEdSRSB0dW5uZWwuIFdlIGNhbid0IGJ1aWxkIGEgc3Ryb25nIGhvdXNlIG9uIGEgd2VhayBmb3VuZGF0aW9uLlxuKiAgICoqRW5jYXBzdWxhdGlvbiBcdTAwMjYgRGVjYXBzdWxhdGlvbjoqKiBJIG5lZWQgdG8gbG9vayBhdCB0aGUgZW5jYXBzdWxhdGlvbiBhbmQgZGVjYXBzdWxhdGlvbiBwcm9jZXNzZXMuIEFyZSB0aGUgR1JFIGhlYWRlcnMgY29uZmlndXJlZCBjb3JyZWN0bHk/IE1pc21hdGNoZWQgc291cmNlL2Rlc3RpbmF0aW9uIElQIGFkZHJlc3NlcyBhcmUgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLiBXaGF0IGFib3V0IHRoZSBwcm90b2NvbCB0eXBlIGJlaW5nIGVuY2Fwc3VsYXRlZD8gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIHNldCBwcm9wZXJseSBmb3Igd2hhdGV2ZXIgd2UncmUgcm91dGluZyBvdmVyIHRoZSB0dW5uZWwuXG4qICAgKipUdW5uZWwgSW50ZXJmYWNlczoqKiBUaGlzIGlzIGNyaXRpY2FsLiBIb3cgYXJlIHRoZSB0dW5uZWwgaW50ZXJmYWNlcyBjb25maWd1cmVkIG9uIGVhY2ggZW5kPyBBcmUgdGhlIElQIGFkZHJlc3NlcywgTVRVcywgYW5kIHR1bm5lbCBtb2RlcyBjb3JyZWN0PyBTdGF0aWMgdnMuIGR5bmFtaWMgcm91dGluZyBvdmVyIHRoZSB0dW5uZWwg4oCTIHRoYXQgZGljdGF0ZXMgYSB3aG9sZSBkaWZmZXJlbnQgc2V0IG9mIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci5cbiogICAqKlJvdXRpbmcgUHJvdG9jb2xzOioqIFdoYXQgcm91dGluZyBwcm90b2NvbCwgaWYgYW55LCBpcyBiZWluZyB1c2VkIG92ZXIgdGhlIEdSRSB0dW5uZWw/IE9TUEYsIEJHUCwgUklQLCBvciBzdGF0aWMgcm91dGVzPyBJJ20gYWxyZWFkeSBtZW50YWxseSBldmFsdWF0aW5nIHRoZSBuZWlnaGJvciByZWxhdGlvbnNoaXBzLCByb3V0ZSBwcm9wYWdhdGlvbiwgYW5kIHBvdGVudGlhbCByb3V0aW5nIGxvb3BzIHRoYXQgY291bGQgYmUgcHJlc2VudC5cbiogICAqKlNlY3VyaXR5OioqIElzIHRoZXJlIGFueSBraW5kIG9mIHNlY3VyaXR5IGluIHBsYWNlPyBJJ20gYXNraW5nIGFib3V0IGFjY2VzcyBjb250cm9sIGxpc3RzIChBQ0xzKSwgZmlyZXdhbGxzLCBvciBldmVuIElQU2VjIHR1bm5lbHMgc2l0dGluZyAqdW5kZXJuZWF0aCogdGhlIEdSRSB0dW5uZWwuIFNlY3VyaXR5IG9mdGVuIGdldHMgb3Zlcmxvb2tlZCwgYW5kIGEgbWlzY29uZmlndXJlZCBmaXJld2FsbCBjb3VsZCBiZSBibG9ja2luZyB0aGUgZW5jYXBzdWxhdGVkIHRyYWZmaWMuXG4qICAgKipUcm91Ymxlc2hvb3RpbmcgVG9vbHM6KiogTGV0J3Mgc2VlIHdoYXQgdG9vbHMgY2FuIGJlIHVzZWQgdG8gbW9uaXRvciB0aGUgY29uZmlndXJhdGlvbi4gSSB3YW50IHRvIGNoZWNrIHR1bm5lbCBjb3VudGVycyBmb3IgZHJvcHBlZCBwYWNrZXRzIGFuZCBlcnJvcnMsIGFuZCBsb29rIGF0IHBhY2tldCBjYXB0dXJlcyB0byB2ZXJpZnkgdGhlIHRyYWZmaWMgZmxvdyBpbnNpZGUgYW5kIG91dHNpZGUgdGhlIHR1bm5lbC4gSSBhbSBleHBlY3Rpbmcgc29tZSBvZiB0aGVzZSB0b29scyB0byBiZSB1dGlsaXplZCBpbiBvcmRlciB0byBpZGVudGlmeSBpc3N1ZXMuXG5cbkluIHNob3J0LCBcIkxldCdzIGNoZWNrIEdSRSBjb25maWdzXCIgaXMgYSBQYW5kb3JhJ3MgQm94IG9mIHBvdGVudGlhbCBwcm9ibGVtcyBhbmQgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuIEknbSByZWFkeSB0byBkaWcgaW4gYW5kIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MTgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA2OjI2OjM1LjYxMDg2NDg2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTc3MTg3ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUEdSRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTkxLVxcbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxcbm5ldC9pcHY0L0tjb25maWctMjA4LVxcdGJvb2wgXFxcIklQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA2OjI2OjM4LjI2ODU4OTcxNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTI3NjkzMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIHRob3NlIElQdjYgR1JFIGNvbmZpZ3VyYXRpb25zOlxuXG4qKkFuYWx5emluZyBJUHY2IEdSRSBDb25maWd1cmF0aW9ucyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc2hvdyBvbiB0aGUgcm9hZC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIElQdjYgR1JFIGNvbmZpZ3VyYXRpb25zLiBMZXQncyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggY2hlY2suIEknbGwgbmVlZCB0byB2ZXJpZnkgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzc2VzLCBlbnN1cmUgdGhlIHR1bm5lbCBpcyBjb3JyZWN0bHkgY29uZmlndXJlZCBhcyBJUHY2IGFuZCB0aGF0IGl0J3MgY29ycmVjdGx5IGVuY2Fwc3VsYXRlZC4gT2YgY291cnNlLCB0aGUgcm91dGluZyBjb25maWd1cmF0aW9ucyBvbiBib3RoIGVuZHMgYXJlIGFic29sdXRlbHkgY3JpdGljYWwgLSBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aG9zZSBhcmUgYWR2ZXJ0aXNpbmcgdGhlIGNvcnJlY3Qgcm91dGVzIGFuZCB0aGF0IHRoZSBwYWNrZXRzIGFyZSB0cmF2ZXJzaW5nIHRoZSBpbnRlbmRlZCBwYXRoLlxuXG5UaGVuIHRoZXJlJ3MgdGhlIHF1ZXN0aW9uIG9mIGZyYWdtZW50YXRpb24uIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIE1UVSBzZXR0aW5ncyBhcmUgYXBwcm9wcmlhdGUgb24gYm90aCB0aGUgdHVubmVsIGludGVyZmFjZSBhbmQgdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgaW50ZXJmYWNlcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgcGFja2V0IGxvc3MgZHVlIHRvIGZyYWdtZW50YXRpb24gaXNzdWVzLiBJcyBmcmFnbWVudGF0aW9uIGhhcHBlbmluZywgYW5kIGlmIHNvLCB3aGVyZT9cblxuTmV4dCwgSSdsbCB0dXJuIG15IGF0dGVudGlvbiB0byBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gQXJlIHRoZXJlIGFueSBhY2Nlc3MgY29udHJvbCBsaXN0cyAoQUNMcykgaW1wYWN0aW5nIHRoZSBHUkUgdHJhZmZpYz8gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGJlIGludGVyZmVyaW5nIHdpdGggdGhlIHR1bm5lbCdzIG9wZXJhdGlvbj8gQW5kLCBJJ2xsIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGVuY3J5cHRpb24gbGV2ZWwgYXMgd2VsbC4gSSdsbCBiZSBsb29raW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIEdSRSBvcHRpb25zIGJlaW5nIHVzZWQsIHN1Y2ggYXMga2V5aW5nIG9yIGNoZWNrc3Vtcy5cblxuRmluYWxseSwgSSdsbCBjaGVjayBmb3IgZ2VuZXJhbCB0dW5uZWwgaGVhbHRoIGFuZCBzdGF0dXM6IEhvdyBpcyB0aGUgdHVubmVsIHJlc3BvbmRpbmc/IEFyZSB0aGVyZSBhbnkgZXJyb3JzIG9yIGNvdW50ZXJzIHRoYXQgYXJlIGluY3JlYXNpbmc/IEFyZSB0aGUgdHVubmVsIGludGVyZmFjZXMgdXAgYW5kIGluIHRoZSBleHBlY3RlZCBzdGF0ZT8gQW5kLCBoYXZlIHRoZXJlIGJlZW4gYW55IHBhc3QgaXNzdWVzPyBJIHdpbGwgYmUgYWJsZSB0byBnZXQgYSBnb29kIG92ZXJhbGwgcGljdHVyZSB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIHByb2JsZW1zLCBhbmQgd2hhdCB0aGV5IG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzA2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjo0MS43NjEzNjEyMDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwNDcwNjMyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9HUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0xOTk9Y29uZmlnIElQVjZfVFVOTkVMXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogR1JFIHR1bm5lbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6NDQuNTY2MDcxOTg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3NDc1NDY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBGT1UgVHVubmVsIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gdGFraW5nIGEgbG9vayBhdCBhIHRlc3Qgc2V0dXAgdGhhdCBsZXZlcmFnZXMgRk9VIChVRFAtYmFzZWQgZW5jYXBzdWxhdGlvbikgdHVubmVscy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgZW5zdXJpbmcgdGhlIGtlcm5lbCBpcyBwcm9wZXJseSBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhpcy4gVGhlIHRlc3Qgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGFkZGluZyBhIEZPVSB0dW5uZWwgdXNpbmcgYGlwIGZvdSBhZGQgcG9ydCA0Nzk3IGlwcHJvdG8gNDdgIGFuZCBhIEdSRSB0dW5uZWwgd2l0aCBGT1UgZW5jYXBzdWxhdGlvbiB2aWEgYGlwIGxpbmsgYWRkIGVvdWRwMCB0eXBlIGdyZXRhcCAuLi4gZW5jYXAgZm91YC5cblxuVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb3JlIEZPVSBjb21wb25lbnRzIGFyZSBlbmFibGVkOiBgTkVUX0ZPVWAsIG9mIGNvdXJzZSwgYW5kIGBORVRfSVBHUkVgIGZvciB0aGUgR1JFIGVuY2Fwc3VsYXRpb24uIFRoZSB0ZXN0IG1pZ2h0IGJlIGRvaW5nIGJyb2FkY2FzdCwgc28gSSdsbCBhbHNvIGNvbnNpZGVyIGBORVRfSVBHUkVfQlJPQURDQVNUYC4gR2l2ZW4gdGhhdCBGT1UgY2FuIHdvcmsgb3ZlciBJUHY2LCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBJUFY2X0dSRWAgYXMgd2VsbCwgZXZlbiB0aG91Z2ggSVB2NCBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGUgZXhhbXBsZSBgaXBwcm90byA0N2AuXG5cbk5vdywgSSB0aGluayB0aGVyZSBtYXkgYmUgYW4gYWRkaXRpb25hbCBvcHRpb24gYXQgcGxheSBoZXJlLi4uIEkgbmVlZCB0byBjaGVjayBgTkVUX0ZPVV9JUF9UVU5ORUxTYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgb25lIG1pZ2h0IGJlICp0aGUqIGNydWNpYWwgc2V0dGluZyB0byBlbnN1cmUgdGhlIHdob2xlIHRlc3Qgc3VpdGUgd29ya3MgYXMgZXhwZWN0ZWQuIEknbGwgZm9jdXMgb24gdGhpcyBvbmUgZm9yIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE3OSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjo0OC4zNDA4Mjk1OTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzIzOTEwMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMjktXFxubmV0L2lwdjQvS2NvbmZpZzozMzA6Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xcbm5ldC9pcHY0L0tjb25maWctMzMxLVxcdGJvb2wgXFxcIklQOiBGT1UgZW5jYXBzdWxhdGlvbiBvZiBJUCB0dW5uZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjo1MC44NzMyMjYwNTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0OTk3NDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgTXVsdGljYXN0IERlbGl2ZXJ5IEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCdzIFVEUCBtdWx0aWNhc3QgZGVsaXZlcnkgbWVjaGFuaXNtcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29yZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBhY3R1YWwgcGFja2V0IGRpc3RyaWJ1dGlvbi4gTGV0J3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcmAgYW5kIGBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJgLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgcG90ZW50aWFsIGRpZmZlcmVuY2VzIGluIHRoZWlyIGxvZ2ljLCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyAob3IgbGFjayB0aGVyZW9mISksIGFuZCwgaW1wb3J0YW50bHksIGFueSBkaXNjcmVwYW5jaWVzIGluIGVycm9yIGhhbmRsaW5nIGJldHdlZW4gSVB2NCBhbmQgSVB2NiBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aHdheXMuIEknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoLCBzcGVjaWZpY2FsbHkgdGhlIG11bHRpY2FzdCBncm91cCBtZW1iZXJzaGlwcyBhbmQgaG93IHRoZXkgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHNvY2tldHMgcmVjZWl2ZSB3aGljaCBwYWNrZXRzLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSByb3V0aW5nIHN1YnN5c3RlbSBhbmQgYW55IGFzc29jaWF0ZWQgcmFjZSBjb25kaXRpb25zIHdpdGggZ3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2VzIGlzIGFsc28gY3JpdGljYWwgaGVyZS4gSSBleHBlY3QgdGhhdCBhIGNsb3NlIHJldmlldyBvZiB0aGVzZSBmdW5jdGlvbnMgd2lsbCBoaWdobGlnaHQgdGhlIGFyY2hpdGVjdHVyZSdzIGluaGVyZW50IGFzc3VtcHRpb25zLCBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGFuZCBhbnkgYXJlYXMgd2hlcmUgSVB2Ni1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucyBtaWdodCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc2VjdXJpdHkgcmVsYXRpdmUgdG8gSVB2NCBpbXBsZW1lbnRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2ODAsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjo1NC4zMjMyMDMzMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0NjY3NjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwLmM9MjQ0Nz1ib29sIHVkcF9za19yeF9kc3Rfc2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxcbi0tXFxubmV0L2lwdjQvdWRwLmMtMjQ2My0gKi9cXG5uZXQvaXB2NC91ZHAuYzoyNDY0OnN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC91ZHAuYy0yNDY1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgdWRwaGRyICAqdWgsXFxuLS1cXG5uZXQvaXB2NC91ZHAuYz0yNTkwPWludCB1ZHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC91ZHAuYy0yNjQ4LVxcdGlmIChydC1cXHUwMDNlcnRfZmxhZ3MgXFx1MDAyNiAoUlRDRl9CUk9BRENBU1R8UlRDRl9NVUxUSUNBU1QpKVxcbm5ldC9pcHY0L3VkcC5jOjI2NDk6XFx0XFx0cmV0dXJuIF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcihuZXQsIHNrYiwgdWgsIHNhZGRyLCBkYWRkcik7XFxubmV0L2lwdjQvdWRwLmMtMjY1MC1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtNy0jIFdoZW4gYSBGT1UtZW5jYXBzdWxhdGVkIHBhY2tldCBhcnJpdmVzIHdpdGggYSBtdWx0aWNhc3QgZGVzdGluYXRpb24gSVAsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaDo4OiMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2xcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoLTktIyBoYW5kbGVyIChlLmcuLCBHUkUpIHJhdGhlciB0aGFuIGNvbnN1bWluZyBpdC4gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXRcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtMTQtIyB0aGUgdW5pY2FzdCBwYXRoICh1ZHBfdW5pY2FzdF9yY3Zfc2tiKSwgc28gd2UgZGlzYWJsZSBpdCB0byBmb3JjZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2g6MTU6IyBwYWNrZXRzIHRocm91Z2ggX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkuXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaC0xNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6NTYuODY5ODg1NzQxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTgzOTI5NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBVRFAgTXVsdGljYXN0IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBpcyBpbnRlcmVzdGluZy4gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRhcmdldHMgYF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcmAgYW5kIGBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJgLiBUaGVzZSBhcmUgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciBkZWxpdmVyaW5nIG11bHRpY2FzdCBVRFAgcGFja2V0cywgc28gdGhleSdyZSBkZWZpbml0ZWx5IGltcG9ydGFudCBhbmQgYWN0aXZlbHkgdXNlZC4gVGhlIGNoYW5nZSBpdHNlbGYgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGFkZHJlc3NpbmcgYSBidWcgd2hlcmUgZW5jYXBzdWxhdGVkIG11bHRpY2FzdCBwYWNrZXRzLCBsaWtlIHRob3NlIGZyb20gRk9VIChVRFAtb3Zlci1JUCkgb3IgR1JFLCB3ZXJlIGdldHRpbmcgZHJvcHBlZCBvciBtaXNoYW5kbGVkLiBJbnN0ZWFkIG9mIGJlaW5nIGNvcnJlY3RseSBwYXNzZWQgdG8gdGhlIGlubmVyIHByb3RvY29sIGhhbmRsZXIsIHRoZXkgd2VyZSBqdXN0IGJlaW5nIGNvbnN1bWVkLiBUaGF0J3MgYSBjbGFzc2ljIGVuY2Fwc3VsYXRpb24gaXNzdWUuXG5cblRoZSBjb25maWcgb3B0aW9ucyBuZWVkZWQgdG8gcmVwcm9kdWNlIG9yIHRyaWdnZXIgdGhpcyBhcmUgaGVscGZ1bC4gSSdsbCBkZWZpbml0ZWx5IHdhbnQgdG8gZW5zdXJlIGBORVRfRk9VYCwgYE5FVF9GT1VfSVBfVFVOTkVMU2AsIGBORVRfSVBHUkVgLCBgTkVUX0lQR1JFX0JST0FEQ0FTVGAsIGFuZCBgSVBWNl9HUkVgIGFyZSBlbmFibGVkIGR1cmluZyB0ZXN0aW5nLiBUaG9zZSBhcmUgdGhlIGtleXMgdG8gcmVwcm9kdWNpbmcgdGhlIHByb2JsZW1hdGljIHNjZW5hcmlvcy5cblxuVGhlIGtleSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZGVsaXZlcnkgZnVuY3Rpb25zLiBJdCBzZWVtcyBsaWtlbHkgdGhhdCBmdXp6aW5nIHRob3NlIHdpdGggRk9VIGFuZCBHUkUgdHJhZmZpYyB3b3VsZCBiZSBtb3N0IGVmZmVjdGl2ZSBhdCB1bmNvdmVyaW5nIGFueSByZW1haW5pbmcgaXNzdWVzIG9yIHJlZ3Jlc3Npb25zLiBUaGUgcmVhc29uaW5nIGhlcmUgaXMgc29saWQ7IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgbmV0d29yayBjb2RlLCBhbmQgdGhhdCdzIHByZWNpc2VseSB3aGVyZSBJJ2Qgc3RhcnQgbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NTYsIk91dHB1dFRva2VucyI6MTg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA2OjI3OjAyLjc2ODI4MjA4M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTg2OTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiLFxuICAgIFwiTkVUX0ZPVV9JUF9UVU5ORUxTXCIsXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIk5FVF9JUEdSRV9CUk9BRENBU1RcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyXCIsXG4gICAgXCJfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiLFxuICAgIFwiTkVUX0ZPVV9JUF9UVU5ORUxTXCIsXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIk5FVF9JUEdSRV9CUk9BRENBU1RcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyXCIsXG4gICAgXCJfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jg2q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 06:14:16 +0000 UTC FinishedAt: 2026-07-02 06:27:04 +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": "d6e81529749190123aa0040626c7e5dbc20fdc9a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU", "NET_FOU_IP_TUNNELS", "NET_IPGRE", "NET_IPGRE_BROADCAST", "IPV6_GRE" ], "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": "d6e81529749190123aa0040626c7e5dbc20fdc9a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU", "NET_FOU_IP_TUNNELS", "NET_IPGRE", "NET_IPGRE_BROADCAST", "IPV6_GRE" ], "series_id": "bd198228-1dbd-456b-b0d5-4a321024bae5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__udp4_lib_mcast_deliver", "__udp6_lib_mcast_deliver" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkVfQlJPQURDQVNUJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyJiMzNDssCiAgICAmIzM0O19fdWRwNl9saWJfbWNhc3RfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMDhiOWRiNTE0ZjUyOWRlNWU5MzY4ZGU2MzYxZGVmNzc3OTE2NzNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwNjoyNjoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHAuYyBiL25ldC9pcHY0L3VkcC5jXG5pbmRleCA3MGY2Y2JkNGVmNzNiZi4uYjA5MTA2NTkzOTFlZjAgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC91ZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdWRwLmNcbkBAIC0yNDc1LDYgJiM0MzsyNDc1LDcgQEAgc3RhdGljIGludCBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c3RydWN0IHVkcF9oc2xvdCAqaHNsb3Q7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcbiBcdGJvb2wgdXNlX2hhc2gyO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRoYXNoMl9hbnkgPSAwO1xuIFx0aGFzaDIgPSAwO1xuQEAgLTI1MTksOCAmIzQzOzI1MjAsOSBAQCBzdGF0aWMgaW50IF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHR9XG4gXG4gXHRpZiAoZmlyc3QpIHtcbi1cdFx0aWYgKHVkcF9xdWV1ZV9yY3Zfc2tiKGZpcnN0LCBza2IpIFx1MDAzZSAwKVxuLVx0XHRcdGNvbnN1bWVfc2tiKHNrYik7XG4mIzQzO1x0XHRyZXQgPSB1ZHBfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKTtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNlIDApXG4mIzQzO1x0XHRcdHJldHVybiAtcmV0O1xuIFx0fSBlbHNlIHtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdF9fVURQX0lOQ19TVEFUUyhuZXQsIFVEUF9NSUJfSUdOT1JFRE1VTFRJKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni91ZHAuYyBiL25ldC9pcHY2L3VkcC5jXG5pbmRleCAxNWUwMzIxOTRlY2NjMy4uZmYyZTM4OWUyODZiYTYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni91ZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvdWRwLmNcbkBAIC05NDksNiAmIzQzOzk0OSw3IEBAIHN0YXRpYyBpbnQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCB1ZHBfaHNsb3QgKmhzbG90O1xuIFx0c3RydWN0IHNrX2J1ZmYgKm5za2I7XG4gXHRib29sIHVzZV9oYXNoMjtcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0aGFzaDJfYW55ID0gMDtcbiBcdGhhc2gyID0gMDtcbkBAIC05OTgsOCAmIzQzOzk5OSw5IEBAIHN0YXRpYyBpbnQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH1cbiBcbiBcdGlmIChmaXJzdCkge1xuLVx0XHRpZiAodWRwdjZfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKSBcdTAwM2UgMClcbi1cdFx0XHRjb25zdW1lX3NrYihza2IpO1xuJiM0MztcdFx0cmV0ID0gdWRwdjZfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKTtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNlIDApXG4mIzQzO1x0XHRcdHJldHVybiAtcmV0O1xuIFx0fSBlbHNlIHtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdF9fVURQNl9JTkNfU1RBVFMobmV0LCBVRFBfTUlCX0lHTk9SRURNVUxUSSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uN2U5YWU5MzdjZmZhN2UgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuQEAgLTM5LDYgJiM0MzszOSw3IEBAIFRFU1RfUFJPR1MgOj0gXFxcbiBcdGZpYl9ydWxlX3Rlc3RzLnNoIFxcXG4gXHRmaWJfdGVzdHMuc2ggXFxcbiBcdGZpbl9hY2tfbGF0LnNoIFxcXG4mIzQzO1x0Zm91X21jYXN0X2VuY2FwLnNoIFxcXG4gXHRmcV9iYW5kX3BrdGxpbWl0LnNoIFxcXG4gXHRncmVfZ3NvLnNoIFxcXG4gXHRncmVfaXB2Nl9sbGFkZHIuc2ggXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44ZGI5NjMzZjRjMjgzZVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaFxuQEAgLTAsMCAmIzQzOzEsMTEyIEBAXG4mIzQzOyMhL2Jpbi9iYXNoXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I1xuJiM0MzsjIFRlc3QgdGhhdCBVRFAgZW5jYXBzdWxhdGlvbiAoRk9VKSBjb3JyZWN0bHkgaGFuZGxlcyBwYWNrZXQgcmVzdWJtaXRcbiYjNDM7IyB3aGVuIHBhY2tldHMgYXJlIGRlbGl2ZXJlZCB2aWEgdGhlIG11bHRpY2FzdCBVRFAgZGVsaXZlcnkgcGF0aC5cbiYjNDM7I1xuJiM0MzsjIFdoZW4gYSBGT1UtZW5jYXBzdWxhdGVkIHBhY2tldCBhcnJpdmVzIHdpdGggYSBtdWx0aWNhc3QgZGVzdGluYXRpb24gSVAsXG4mIzQzOyMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2xcbiYjNDM7IyBoYW5kbGVyIChlLmcuLCBHUkUpIHJhdGhlciB0aGFuIGNvbnN1bWluZyBpdC4gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXRcbiYjNDM7IyBieSBjcmVhdGluZyBhIEZPVS9HUkVUQVAgdHVubmVsIHdpdGggYSBtdWx0aWNhc3QgcmVtb3RlIGFkZHJlc3MgYW5kXG4mIzQzOyMgc2VuZGluZyBwaW5nIHRocm91Z2ggaXQuXG4mIzQzOyNcbiYjNDM7IyBUaGUgZWFybHkgZGVtdXggb3B0aW1pemF0aW9uIGNhbiBtYXNrIHRoaXMgaXNzdWUgYnkgcm91dGluZyBwYWNrZXRzIHZpYVxuJiM0MzsjIHRoZSB1bmljYXN0IHBhdGggKHVkcF91bmljYXN0X3Jjdl9za2IpLCBzbyB3ZSBkaXNhYmxlIGl0IHRvIGZvcmNlXG4mIzQzOyMgcGFja2V0cyB0aHJvdWdoIF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcigpLlxuJiM0MztcbiYjNDM7c291cmNlIGxpYi5zaFxuJiM0MztcbiYjNDM7TlNFTkRFUj1cJiMzNDtcJiMzNDtcbiYjNDM7TlJFQ1Y9XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MztjbGVhbnVwKCkge1xuJiM0MztcdGNsZWFudXBfYWxsX25zXG4mIzQzO31cbiYjNDM7XG4mIzQzO3RyYXAgY2xlYW51cCBFWElUXG4mIzQzO1xuJiM0MztzZXR1cCgpIHtcbiYjNDM7XHRzZXR1cF9ucyBOU0VOREVSIE5SRUNWXG4mIzQzO1xuJiM0MztcdGlwIGxpbmsgYWRkIHZldGhfcyB0eXBlIHZldGggcGVlciBuYW1lIHZldGhfclxuJiM0MztcdGlwIGxpbmsgc2V0IHZldGhfcyBuZXRucyBcJiMzNDskTlNFTkRFUlwmIzM0O1xuJiM0MztcdGlwIGxpbmsgc2V0IHZldGhfciBuZXRucyBcJiMzNDskTlJFQ1ZcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5TRU5ERVJcJiMzNDsgYWRkciBhZGQgMTAuMC4wLjEvMjQgZGV2IHZldGhfc1xuJiM0MztcdGlwIC1uIFwmIzM0OyROU0VOREVSXCYjMzQ7IGxpbmsgc2V0IHZldGhfcyB1cFxuJiM0MztcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlJFQ1ZcJiMzNDsgYWRkciBhZGQgMTAuMC4wLjIvMjQgZGV2IHZldGhfclxuJiM0MztcdGlwIC1uIFwmIzM0OyROUkVDVlwmIzM0OyBsaW5rIHNldCB2ZXRoX3IgdXBcbiYjNDM7XG4mIzQzO1x0IyBEaXNhYmxlIGVhcmx5IGRlbXV4IHRvIGZvcmNlIG11bHRpY2FzdCBkZWxpdmVyeSBwYXRoXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlJFQ1ZcJiMzNDsgc3lzY3RsIC13cSBuZXQuaXB2NC5pcF9lYXJseV9kZW11eD0wXG4mIzQzO1xuJiM0MztcdCMgSm9pbiBtdWx0aWNhc3QgZ3JvdXAgb24gcmVjZWl2ZXJcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlJFQ1ZcJiMzNDsgYWRkciBhZGQgMjM5LjAuMC4xLzMyIGRldiB2ZXRoX3IgYXV0b2pvaW5cbiYjNDM7XG4mIzQzO1x0IyBNdWx0aWNhc3Qgcm91dGVzXG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5SRUNWXCYjMzQ7IHJvdXRlIGFkZCAyMzkuMC4wLjAvOCBkZXYgdmV0aF9yXG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5TRU5ERVJcJiMzNDsgcm91dGUgYWRkIDIzOS4wLjAuMC84IGRldiB2ZXRoX3NcbiYjNDM7XG4mIzQzO1x0IyBTZW5kZXI6IEdSRVRBUCB3aXRoIEZPVSBlbmNhcCAobm8gRk9VIGxpc3RlbmVyIG5lZWRlZCBvbiBUWCBzaWRlKVxuJiM0MztcdGlwIC1uIFwmIzM0OyROU0VOREVSXCYjMzQ7IGxpbmsgYWRkIGVvdWRwMCB0eXBlIGdyZXRhcCBcXFxuJiM0MztcdFx0cmVtb3RlIDIzOS4wLjAuMSBsb2NhbCAxMC4wLjAuMSBcXFxuJiM0MztcdFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxuJiM0MztcdFx0a2V5IDIzOS4wLjAuMVxuJiM0MztcdGlwIC1uIFwmIzM0OyROU0VOREVSXCYjMzQ7IGxpbmsgc2V0IGVvdWRwMCB1cFxuJiM0MztcdGlwIC1uIFwmIzM0OyROU0VOREVSXCYjMzQ7IGFkZHIgYWRkIDE5Mi4xNjguOTkuMS8yNCBkZXYgZW91ZHAwXG4mIzQzO1xuJiM0MztcdCMgUmVjZWl2ZXI6IEZPVSBsaXN0ZW5lciAmIzQzOyBHUkVUQVBcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROUkVDVlwmIzM0OyBpcCBmb3UgYWRkIHBvcnQgNDc5NyBpcHByb3RvIDQ3XG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5SRUNWXCYjMzQ7IGxpbmsgYWRkIGVvdWRwMCB0eXBlIGdyZXRhcCBcXFxuJiM0MztcdFx0cmVtb3RlIDIzOS4wLjAuMSBsb2NhbCAxMC4wLjAuMiBcXFxuJiM0MztcdFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxuJiM0MztcdFx0a2V5IDIzOS4wLjAuMVxuJiM0MztcdGlwIC1uIFwmIzM0OyROUkVDVlwmIzM0OyBsaW5rIHNldCBlb3VkcDAgdXBcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlJFQ1ZcJiMzNDsgYWRkciBhZGQgMTkyLjE2OC45OS4yLzI0IGRldiBlb3VkcDBcbiYjNDM7XG4mIzQzO1x0IyBTdGF0aWMgbmVpZ2ggZW50cnkgb24gc2VuZGVyOiBBUlAgcmVwbGllcyBjYW5ub3QgdHJhdmVyc2UgdGhlXG4mIzQzO1x0IyBtdWx0aWNhc3QgdHVubmVsIGJhY2ssIHNvIHByZS1wb3B1bGF0ZSB0aGUgbmVpZ2hib3IgY2FjaGUuXG4mIzQzO1x0bG9jYWwgcmVjdl9tYWNcbiYjNDM7XHRyZWN2X21hYz0kKGlwIC1uIFwmIzM0OyROUkVDVlwmIzM0OyBsaW5rIHNob3cgZW91ZHAwIHwgYXdrICYjMzk7L2V0aGVyL3twcmludCAkMn0mIzM5OylcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlNFTkRFUlwmIzM0OyBuZWlnaCBhZGQgMTkyLjE2OC45OS4yIGxsYWRkciBcJiMzNDskcmVjdl9tYWNcJiMzNDsgZGV2IGVvdWRwMFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztnZXRfcnhfcGFja2V0cygpIHtcbiYjNDM7XHRpcCAtbiBcJiMzNDskTlJFQ1ZcJiMzNDsgLXMgbGluayBzaG93IGVvdWRwMCB8IGF3ayAmIzM5Oy9SWDove2dldGxpbmU7IHByaW50ICQyfSYjMzk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3Rlc3RfZm91X21jYXN0X2VuY2FwKCkge1xuJiM0MztcdGxvY2FsIGNvdW50PTEwMFxuJiM0MztcdGxvY2FsIHJ4X2JlZm9yZVxuJiM0MztcdGxvY2FsIHJ4X2FmdGVyXG4mIzQzO1x0bG9jYWwgcnhfZGVsdGFcbiYjNDM7XG4mIzQzO1x0IyBXYXJtdXA6IGxldCBhbnkgaW5pdGlhbCBicm9hZGNhc3QvQVJQIHRyYWZmaWMgc2V0dGxlXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNFTkRFUlwmIzM0OyBwaW5nIC1jIDEgLVcgMSAxOTIuMTY4Ljk5LjIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxXG4mIzQzO1x0c2xlZXAgMVxuJiM0MztcbiYjNDM7XHRyeF9iZWZvcmU9JChnZXRfcnhfcGFja2V0cylcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU0VOREVSXCYjMzQ7IHBpbmcgLWMgJGNvdW50IC1XIDEgMTkyLjE2OC45OS4yIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuJiM0MztcdHNsZWVwIDFcbiYjNDM7XHRyeF9hZnRlcj0kKGdldF9yeF9wYWNrZXRzKVxuJiM0MztcbiYjNDM7XHRyeF9kZWx0YT0kKChyeF9hZnRlciAtIHJ4X2JlZm9yZSkpXG4mIzQzO1xuJiM0MztcdGlmIFsgXCYjMzQ7JHJ4X2RlbHRhXCYjMzQ7IC1nZSBcJiMzNDskY291bnRcJiMzNDsgXTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDtQQVNTOiByZWNlaXZlZCAkcnhfZGVsdGEvJGNvdW50IHBhY2tldHMgdmlhIG11bHRpY2FzdCBGT1UvR1JFVEFQXCYjMzQ7XG4mIzQzO1x0XHRyZXR1cm4gXCYjMzQ7JGtzZnRfcGFzc1wmIzM0O1xuJiM0MztcdGVsaWYgWyBcJiMzNDskcnhfZGVsdGFcJiMzNDsgLWd0IDAgXTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDtGQUlMOiBvbmx5ICRyeF9kZWx0YS8kY291bnQgcGFja2V0cyByZWNlaXZlZCAocGFydGlhbCBkZWxpdmVyeSlcJiMzNDtcbiYjNDM7XHRcdHJldHVybiBcJiMzNDska3NmdF9mYWlsXCYjMzQ7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0ZWNobyBcJiMzNDtGQUlMOiAwLyRjb3VudCBwYWNrZXRzIHJlY2VpdmVkIChtdWx0aWNhc3QgZW5jYXAgcmVzdWJtaXQgYnJva2VuKVwmIzM0O1xuJiM0MztcdFx0cmV0dXJuIFwmIzM0OyRrc2Z0X2ZhaWxcJiMzNDtcbiYjNDM7XHRmaVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztlY2hvIFwmIzM0O1RFU1Q6IEZPVS9HUkVUQVAgbXVsdGljYXN0IGVuY2Fwc3VsYXRpb24gcmVzdWJtaXRcJiMzNDtcbiYjNDM7XG4mIzQzO3NldHVwXG4mIzQzO3Rlc3RfZm91X21jYXN0X2VuY2FwXG4mIzQzO2V4aXQgJD9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRk9VJiMzNDssCiAgICAmIzM0O05FVF9GT1VfSVBfVFVOTkVMUyYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0JST0FEQ0FTVCYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fdWRwNF9saWJfbWNhc3RfZGVsaXZlciYjMzQ7LAogICAgJiMzNDtfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgVURQIG11bHRpY2FzdCBkZWxpdmVyeSBwYXRocyAoX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyIGFuZCBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXIpIHRvIGNvcnJlY3RseSBoYW5kbGUgcGFja2V0IHJlc3VibWlzc2lvbiBmb3IgZW5jYXBzdWxhdGVkIHBhY2tldHMgKGUuZy4sIEZPVS9HUkVUQVApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgY29kZSwgZml4aW5nIGEgYnVnIHdoZXJlIHN1Y2ggcGFja2V0cyB3ZXJlIGluY29ycmVjdGx5IGNvbnN1bWVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBkZWxpdmVyeSBmdW5jdGlvbnMgd2l0aCBGT1UgYW5kIEdSRSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDhiOWRiNTE0ZjUyOWRlNWU5MzY4ZGU2MzYxZGVmNzc3OTE2NzNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAwNjoyNjoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcC5jIGIvbmV0L2lwdjQvdWRwLmMKaW5kZXggNzBmNmNiZDRlZjczYmYuLmIwOTEwNjU5MzkxZWYwIDEwMDY0NAotLS0gYS9uZXQvaXB2NC91ZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC91ZHAuYwpAQCAtMjQ3NSw2ICYjNDM7MjQ3NSw3IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgdWRwX2hzbG90ICpoc2xvdDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKIAlib29sIHVzZV9oYXNoMjsKJiM0MzsJaW50IHJldDsKIAogCWhhc2gyX2FueSA9IDA7CiAJaGFzaDIgPSAwOwpAQCAtMjUxOSw4ICYjNDM7MjUyMCw5IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl9CiAKIAlpZiAoZmlyc3QpIHsKLQkJaWYgKHVkcF9xdWV1ZV9yY3Zfc2tiKGZpcnN0LCBza2IpICZndDsgMCkKLQkJCWNvbnN1bWVfc2tiKHNrYik7CiYjNDM7CQlyZXQgPSB1ZHBfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKTsKJiM0MzsJCWlmIChyZXQgJmd0OyAwKQomIzQzOwkJCXJldHVybiAtcmV0OwogCX0gZWxzZSB7CiAJCWtmcmVlX3NrYihza2IpOwogCQlfX1VEUF9JTkNfU1RBVFMobmV0LCBVRFBfTUlCX0lHTk9SRURNVUxUSSk7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni91ZHAuYyBiL25ldC9pcHY2L3VkcC5jCmluZGV4IDE1ZTAzMjE5NGVjY2MzLi5mZjJlMzg5ZTI4NmJhNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdWRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvdWRwLmMKQEAgLTk0OSw2ICYjNDM7OTQ5LDcgQEAgc3RhdGljIGludCBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXN0cnVjdCB1ZHBfaHNsb3QgKmhzbG90OwogCXN0cnVjdCBza19idWZmICpuc2tiOwogCWJvb2wgdXNlX2hhc2gyOwomIzQzOwlpbnQgcmV0OwogCiAJaGFzaDJfYW55ID0gMDsKIAloYXNoMiA9IDA7CkBAIC05OTgsOCAmIzQzOzk5OSw5IEBAIHN0YXRpYyBpbnQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl9CiAKIAlpZiAoZmlyc3QpIHsKLQkJaWYgKHVkcHY2X3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYikgJmd0OyAwKQotCQkJY29uc3VtZV9za2Ioc2tiKTsKJiM0MzsJCXJldCA9IHVkcHY2X3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7CiYjNDM7CQlpZiAocmV0ICZndDsgMCkKJiM0MzsJCQlyZXR1cm4gLXJldDsKIAl9IGVsc2UgewogCQlrZnJlZV9za2Ioc2tiKTsKIAkJX19VRFA2X0lOQ19TVEFUUyhuZXQsIFVEUF9NSUJfSUdOT1JFRE1VTFRJKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQppbmRleCA3MDhkOTYwYWUwN2Q1Yi4uN2U5YWU5MzdjZmZhN2UgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKQEAgLTM5LDYgJiM0MzszOSw3IEBAIFRFU1RfUFJPR1MgOj0gXAogCWZpYl9ydWxlX3Rlc3RzLnNoIFwKIAlmaWJfdGVzdHMuc2ggXAogCWZpbl9hY2tfbGF0LnNoIFwKJiM0MzsJZm91X21jYXN0X2VuY2FwLnNoIFwKIAlmcV9iYW5kX3BrdGxpbWl0LnNoIFwKIAlncmVfZ3NvLnNoIFwKIAlncmVfaXB2Nl9sbGFkZHIuc2ggXApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhkYjk2MzNmNGMyODNlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaApAQCAtMCwwICYjNDM7MSwxMTIgQEAKJiM0MzsjIS9iaW4vYmFzaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBUZXN0IHRoYXQgVURQIGVuY2Fwc3VsYXRpb24gKEZPVSkgY29ycmVjdGx5IGhhbmRsZXMgcGFja2V0IHJlc3VibWl0CiYjNDM7IyB3aGVuIHBhY2tldHMgYXJlIGRlbGl2ZXJlZCB2aWEgdGhlIG11bHRpY2FzdCBVRFAgZGVsaXZlcnkgcGF0aC4KJiM0MzsjCiYjNDM7IyBXaGVuIGEgRk9VLWVuY2Fwc3VsYXRlZCBwYWNrZXQgYXJyaXZlcyB3aXRoIGEgbXVsdGljYXN0IGRlc3RpbmF0aW9uIElQLAomIzQzOyMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2wKJiM0MzsjIGhhbmRsZXIgKGUuZy4sIEdSRSkgcmF0aGVyIHRoYW4gY29uc3VtaW5nIGl0LiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdAomIzQzOyMgYnkgY3JlYXRpbmcgYSBGT1UvR1JFVEFQIHR1bm5lbCB3aXRoIGEgbXVsdGljYXN0IHJlbW90ZSBhZGRyZXNzIGFuZAomIzQzOyMgc2VuZGluZyBwaW5nIHRocm91Z2ggaXQuCiYjNDM7IwomIzQzOyMgVGhlIGVhcmx5IGRlbXV4IG9wdGltaXphdGlvbiBjYW4gbWFzayB0aGlzIGlzc3VlIGJ5IHJvdXRpbmcgcGFja2V0cyB2aWEKJiM0MzsjIHRoZSB1bmljYXN0IHBhdGggKHVkcF91bmljYXN0X3Jjdl9za2IpLCBzbyB3ZSBkaXNhYmxlIGl0IHRvIGZvcmNlCiYjNDM7IyBwYWNrZXRzIHRocm91Z2ggX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkuCiYjNDM7CiYjNDM7c291cmNlIGxpYi5zaAomIzQzOwomIzQzO05TRU5ERVI9JiMzNDsmIzM0OwomIzQzO05SRUNWPSYjMzQ7JiMzNDsKJiM0MzsKJiM0MztjbGVhbnVwKCkgewomIzQzOwljbGVhbnVwX2FsbF9ucwomIzQzO30KJiM0MzsKJiM0Mzt0cmFwIGNsZWFudXAgRVhJVAomIzQzOwomIzQzO3NldHVwKCkgewomIzQzOwlzZXR1cF9ucyBOU0VOREVSIE5SRUNWCiYjNDM7CiYjNDM7CWlwIGxpbmsgYWRkIHZldGhfcyB0eXBlIHZldGggcGVlciBuYW1lIHZldGhfcgomIzQzOwlpcCBsaW5rIHNldCB2ZXRoX3MgbmV0bnMgJiMzNDskTlNFTkRFUiYjMzQ7CiYjNDM7CWlwIGxpbmsgc2V0IHZldGhfciBuZXRucyAmIzM0OyROUkVDViYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uICYjMzQ7JE5TRU5ERVImIzM0OyBhZGRyIGFkZCAxMC4wLjAuMS8yNCBkZXYgdmV0aF9zCiYjNDM7CWlwIC1uICYjMzQ7JE5TRU5ERVImIzM0OyBsaW5rIHNldCB2ZXRoX3MgdXAKJiM0MzsKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBhZGRyIGFkZCAxMC4wLjAuMi8yNCBkZXYgdmV0aF9yCiYjNDM7CWlwIC1uICYjMzQ7JE5SRUNWJiMzNDsgbGluayBzZXQgdmV0aF9yIHVwCiYjNDM7CiYjNDM7CSMgRGlzYWJsZSBlYXJseSBkZW11eCB0byBmb3JjZSBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5SRUNWJiMzNDsgc3lzY3RsIC13cSBuZXQuaXB2NC5pcF9lYXJseV9kZW11eD0wCiYjNDM7CiYjNDM7CSMgSm9pbiBtdWx0aWNhc3QgZ3JvdXAgb24gcmVjZWl2ZXIKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBhZGRyIGFkZCAyMzkuMC4wLjEvMzIgZGV2IHZldGhfciBhdXRvam9pbgomIzQzOwomIzQzOwkjIE11bHRpY2FzdCByb3V0ZXMKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyByb3V0ZSBhZGQgMjM5LjAuMC4wLzggZGV2IHZldGhfcgomIzQzOwlpcCAtbiAmIzM0OyROU0VOREVSJiMzNDsgcm91dGUgYWRkIDIzOS4wLjAuMC84IGRldiB2ZXRoX3MKJiM0MzsKJiM0MzsJIyBTZW5kZXI6IEdSRVRBUCB3aXRoIEZPVSBlbmNhcCAobm8gRk9VIGxpc3RlbmVyIG5lZWRlZCBvbiBUWCBzaWRlKQomIzQzOwlpcCAtbiAmIzM0OyROU0VOREVSJiMzNDsgbGluayBhZGQgZW91ZHAwIHR5cGUgZ3JldGFwIFwKJiM0MzsJCXJlbW90ZSAyMzkuMC4wLjEgbG9jYWwgMTAuMC4wLjEgXAomIzQzOwkJZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcCiYjNDM7CQlrZXkgMjM5LjAuMC4xCiYjNDM7CWlwIC1uICYjMzQ7JE5TRU5ERVImIzM0OyBsaW5rIHNldCBlb3VkcDAgdXAKJiM0MzsJaXAgLW4gJiMzNDskTlNFTkRFUiYjMzQ7IGFkZHIgYWRkIDE5Mi4xNjguOTkuMS8yNCBkZXYgZW91ZHAwCiYjNDM7CiYjNDM7CSMgUmVjZWl2ZXI6IEZPVSBsaXN0ZW5lciAmIzQzOyBHUkVUQVAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROUkVDViYjMzQ7IGlwIGZvdSBhZGQgcG9ydCA0Nzk3IGlwcHJvdG8gNDcKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBsaW5rIGFkZCBlb3VkcDAgdHlwZSBncmV0YXAgXAomIzQzOwkJcmVtb3RlIDIzOS4wLjAuMSBsb2NhbCAxMC4wLjAuMiBcCiYjNDM7CQllbmNhcCBmb3UgZW5jYXAtc3BvcnQgNDc5NyBlbmNhcC1kcG9ydCA0Nzk3IFwKJiM0MzsJCWtleSAyMzkuMC4wLjEKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBsaW5rIHNldCBlb3VkcDAgdXAKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBhZGRyIGFkZCAxOTIuMTY4Ljk5LjIvMjQgZGV2IGVvdWRwMAomIzQzOwomIzQzOwkjIFN0YXRpYyBuZWlnaCBlbnRyeSBvbiBzZW5kZXI6IEFSUCByZXBsaWVzIGNhbm5vdCB0cmF2ZXJzZSB0aGUKJiM0MzsJIyBtdWx0aWNhc3QgdHVubmVsIGJhY2ssIHNvIHByZS1wb3B1bGF0ZSB0aGUgbmVpZ2hib3IgY2FjaGUuCiYjNDM7CWxvY2FsIHJlY3ZfbWFjCiYjNDM7CXJlY3ZfbWFjPSQoaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyBsaW5rIHNob3cgZW91ZHAwIHwgYXdrICYjMzk7L2V0aGVyL3twcmludCAkMn0mIzM5OykKJiM0MzsJaXAgLW4gJiMzNDskTlNFTkRFUiYjMzQ7IG5laWdoIGFkZCAxOTIuMTY4Ljk5LjIgbGxhZGRyICYjMzQ7JHJlY3ZfbWFjJiMzNDsgZGV2IGVvdWRwMAomIzQzO30KJiM0MzsKJiM0MztnZXRfcnhfcGFja2V0cygpIHsKJiM0MzsJaXAgLW4gJiMzNDskTlJFQ1YmIzM0OyAtcyBsaW5rIHNob3cgZW91ZHAwIHwgYXdrICYjMzk7L1JYOi97Z2V0bGluZTsgcHJpbnQgJDJ9JiMzOTsKJiM0Mzt9CiYjNDM7CiYjNDM7dGVzdF9mb3VfbWNhc3RfZW5jYXAoKSB7CiYjNDM7CWxvY2FsIGNvdW50PTEwMAomIzQzOwlsb2NhbCByeF9iZWZvcmUKJiM0MzsJbG9jYWwgcnhfYWZ0ZXIKJiM0MzsJbG9jYWwgcnhfZGVsdGEKJiM0MzsKJiM0MzsJIyBXYXJtdXA6IGxldCBhbnkgaW5pdGlhbCBicm9hZGNhc3QvQVJQIHRyYWZmaWMgc2V0dGxlCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNFTkRFUiYjMzQ7IHBpbmcgLWMgMSAtVyAxIDE5Mi4xNjguOTkuMiAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxCiYjNDM7CXNsZWVwIDEKJiM0MzsKJiM0MzsJcnhfYmVmb3JlPSQoZ2V0X3J4X3BhY2tldHMpCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNFTkRFUiYjMzQ7IHBpbmcgLWMgJGNvdW50IC1XIDEgMTkyLjE2OC45OS4yICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEKJiM0MzsJc2xlZXAgMQomIzQzOwlyeF9hZnRlcj0kKGdldF9yeF9wYWNrZXRzKQomIzQzOwomIzQzOwlyeF9kZWx0YT0kKChyeF9hZnRlciAtIHJ4X2JlZm9yZSkpCiYjNDM7CiYjNDM7CWlmIFsgJiMzNDskcnhfZGVsdGEmIzM0OyAtZ2UgJiMzNDskY291bnQmIzM0OyBdOyB0aGVuCiYjNDM7CQllY2hvICYjMzQ7UEFTUzogcmVjZWl2ZWQgJHJ4X2RlbHRhLyRjb3VudCBwYWNrZXRzIHZpYSBtdWx0aWNhc3QgRk9VL0dSRVRBUCYjMzQ7CiYjNDM7CQlyZXR1cm4gJiMzNDska3NmdF9wYXNzJiMzNDsKJiM0MzsJZWxpZiBbICYjMzQ7JHJ4X2RlbHRhJiMzNDsgLWd0IDAgXTsgdGhlbgomIzQzOwkJZWNobyAmIzM0O0ZBSUw6IG9ubHkgJHJ4X2RlbHRhLyRjb3VudCBwYWNrZXRzIHJlY2VpdmVkIChwYXJ0aWFsIGRlbGl2ZXJ5KSYjMzQ7CiYjNDM7CQlyZXR1cm4gJiMzNDska3NmdF9mYWlsJiMzNDsKJiM0MzsJZWxzZQomIzQzOwkJZWNobyAmIzM0O0ZBSUw6IDAvJGNvdW50IHBhY2tldHMgcmVjZWl2ZWQgKG11bHRpY2FzdCBlbmNhcCByZXN1Ym1pdCBicm9rZW4pJiMzNDsKJiM0MzsJCXJldHVybiAmIzM0OyRrc2Z0X2ZhaWwmIzM0OwomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MztlY2hvICYjMzQ7VEVTVDogRk9VL0dSRVRBUCBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvbiByZXN1Ym1pdCYjMzQ7CiYjNDM7CiYjNDM7c2V0dXAKJiM0Mzt0ZXN0X2ZvdV9tY2FzdF9lbmNhcAomIzQzO2V4aXQgJD8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDMzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVRFAgTXVsdGljYXN0IERlbGl2ZXJ5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgbWFraW5nIGEgcHJldHR5IGZ1bmRhbWVudGFsIGNoYW5nZSB0byBob3cgVURQIG11bHRpY2FzdCBkZWxpdmVyeSB3b3Jrcywgc3BlY2lmaWNhbGx5IGluIGBuZXQvaXB2NC91ZHAuY2AgYW5kIGBuZXQvaXB2Ni91ZHAuY2AuIEl0JiMzOTtzIGFsdGVyaW5nIGBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJgIGFuZCBgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyYC4gRXNzZW50aWFsbHksIGluc3RlYWQgb2YgaW1tZWRpYXRlbHkgY29uc3VtaW5nIHRoZSBgc2tiYCBpZiBgdWRwX3F1ZXVlX3Jjdl9za2JgIHJldHVybnMgYSBwb3NpdGl2ZSB2YWx1ZSAoaW1wbHlpbmcgdGhlIHBhY2tldCBuZWVkcyBmdXJ0aGVyIHByb2Nlc3NpbmcsIGxpa2UgZW5jYXBzdWxhdGlvbiksIGl0IG5vdyAqcmV0dXJucyogYSBuZWdhdGl2ZSBlcnJvciBjb2RlIGJhc2VkIG9uIHRoYXQgcG9zaXRpdmUgdmFsdWUsIGAtcmV0YC4gVGhhdCBtZWFucyB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKiB0byB0aGUgY29yZSBtdWx0aWNhc3QgcGF0aC4gVGhlIGlkZWEgaXMgdGhhdCB0aGUgcGFja2V0IG5lZWRzIHRvIGJlIHJlc3VibWl0dGVkIHRvIGEgcHJvdG9jb2wgaGFuZGxlciB3aGVuIGVuY2Fwc3VsYXRlZCAoRk9VL0dSRVRBUCkuCgpUaGlzIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUsIGJ1dCBjcml0aWNhbCwgaXNzdWVzLCBlc3BlY2lhbGx5IGFyb3VuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCBlbmNhcHN1bGF0aW9uIGFuZCBob3cgdGhlIHN0YWNrIGhhbmRsZXMgdGhlc2Ugc3BlY2lhbCBjYXNlcy4gU28gdGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBkZWZpbml0ZWx5IGBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJgIGFuZCBgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyYC4KCkkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoIGZ1bGx5LCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gRk9VLCBHUkUsIGFuZCBVRFAgbXVsdGljYXN0LiBJJiMzOTtsbCBzZWFyY2ggdGhlIHNvdXJjZSBmb3IgdGhvc2UgY29uZmlndXJhdGlvbiBzeW1ib2xzLiBHb3R0YSBzZWUgd2hhdCYjMzk7cyBuZWVkZWQgdG8gdHJpZ2dlciB0aGUgbmV3IHJldHVybiBwYXRoIGFuZCBpdHMgc3Vic2VxdWVudCBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0ZPVSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTMxNj1jb25maWcgTkVUX1VEUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMyMC1cbm5ldC9pcHY0L0tjb25maWc6MzIxOmNvbmZpZyBORVRfRk9VXG5uZXQvaXB2NC9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0lQOiBGb28gKElQIHByb3RvY29scykgb3ZlciBVRFBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMyOS1cbm5ldC9pcHY0L0tjb25maWc6MzMwOmNvbmZpZyBORVRfRk9VX0lQX1RVTk5FTFNcbm5ldC9pcHY0L0tjb25maWctMzMxLVx0Ym9vbCBcJiMzNDtJUDogRk9VIGVuY2Fwc3VsYXRpb24gb2YgSVAgdHVubmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggc3VtbWFyaXppbmcgdGhlIHByb21wdCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqR1JFIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiAmIzM0O0xldCYjMzk7cyBjaGVjayBHUkUgY29uZmlncy4mIzM0OyBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBhc3N1bWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIG5ldHdvcmsgc2NlbmFyaW8sIGFuZCB0aGUgdXNlIG9mIEdlbmVyaWMgUm91dGluZyBFbmNhcHN1bGF0aW9uIChHUkUpIHR1bm5lbHMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IG1lYW5zIGEgdmFyaWV0eSBvZiBwb3RlbnRpYWwgYXJlYXMgbmVlZCBhdHRlbnRpb24uIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBhIG1lbnRhbCBjaGVja2xpc3Q6CgoqICAgKipVbmRlcmx5aW5nIE5ldHdvcms6KiogRmlyc3QsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHBoeXNpY2FsIGxheWVyLiBXaGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uPyBBcmUgdGhlIHVuZGVybHlpbmcgSVAgbmV0d29ya3MgZnVuY3Rpb25pbmcgb3B0aW1hbGx5PyBMYXRlbmN5LCBwYWNrZXQgbG9zcywgYmFuZHdpZHRoIOKAkyB0aGVzZSBiYXNpYyBtZXRyaWNzIGFyZSBjcml0aWNhbCBmb3IgYSBzdGFibGUgR1JFIHR1bm5lbC4gV2UgY2FuJiMzOTt0IGJ1aWxkIGEgc3Ryb25nIGhvdXNlIG9uIGEgd2VhayBmb3VuZGF0aW9uLgoqICAgKipFbmNhcHN1bGF0aW9uICZhbXA7IERlY2Fwc3VsYXRpb246KiogSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGVuY2Fwc3VsYXRpb24gYW5kIGRlY2Fwc3VsYXRpb24gcHJvY2Vzc2VzLiBBcmUgdGhlIEdSRSBoZWFkZXJzIGNvbmZpZ3VyZWQgY29ycmVjdGx5PyBNaXNtYXRjaGVkIHNvdXJjZS9kZXN0aW5hdGlvbiBJUCBhZGRyZXNzZXMgYXJlIHRoZSBiYW5lIG9mIG15IGV4aXN0ZW5jZS4gV2hhdCBhYm91dCB0aGUgcHJvdG9jb2wgdHlwZSBiZWluZyBlbmNhcHN1bGF0ZWQ/IEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3Mgc2V0IHByb3Blcmx5IGZvciB3aGF0ZXZlciB3ZSYjMzk7cmUgcm91dGluZyBvdmVyIHRoZSB0dW5uZWwuCiogICAqKlR1bm5lbCBJbnRlcmZhY2VzOioqIFRoaXMgaXMgY3JpdGljYWwuIEhvdyBhcmUgdGhlIHR1bm5lbCBpbnRlcmZhY2VzIGNvbmZpZ3VyZWQgb24gZWFjaCBlbmQ/IEFyZSB0aGUgSVAgYWRkcmVzc2VzLCBNVFVzLCBhbmQgdHVubmVsIG1vZGVzIGNvcnJlY3Q/IFN0YXRpYyB2cy4gZHluYW1pYyByb3V0aW5nIG92ZXIgdGhlIHR1bm5lbCDigJMgdGhhdCBkaWN0YXRlcyBhIHdob2xlIGRpZmZlcmVudCBzZXQgb2YgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyLgoqICAgKipSb3V0aW5nIFByb3RvY29sczoqKiBXaGF0IHJvdXRpbmcgcHJvdG9jb2wsIGlmIGFueSwgaXMgYmVpbmcgdXNlZCBvdmVyIHRoZSBHUkUgdHVubmVsPyBPU1BGLCBCR1AsIFJJUCwgb3Igc3RhdGljIHJvdXRlcz8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IGV2YWx1YXRpbmcgdGhlIG5laWdoYm9yIHJlbGF0aW9uc2hpcHMsIHJvdXRlIHByb3BhZ2F0aW9uLCBhbmQgcG90ZW50aWFsIHJvdXRpbmcgbG9vcHMgdGhhdCBjb3VsZCBiZSBwcmVzZW50LgoqICAgKipTZWN1cml0eToqKiBJcyB0aGVyZSBhbnkga2luZCBvZiBzZWN1cml0eSBpbiBwbGFjZT8gSSYjMzk7bSBhc2tpbmcgYWJvdXQgYWNjZXNzIGNvbnRyb2wgbGlzdHMgKEFDTHMpLCBmaXJld2FsbHMsIG9yIGV2ZW4gSVBTZWMgdHVubmVscyBzaXR0aW5nICp1bmRlcm5lYXRoKiB0aGUgR1JFIHR1bm5lbC4gU2VjdXJpdHkgb2Z0ZW4gZ2V0cyBvdmVybG9va2VkLCBhbmQgYSBtaXNjb25maWd1cmVkIGZpcmV3YWxsIGNvdWxkIGJlIGJsb2NraW5nIHRoZSBlbmNhcHN1bGF0ZWQgdHJhZmZpYy4KKiAgICoqVHJvdWJsZXNob290aW5nIFRvb2xzOioqIExldCYjMzk7cyBzZWUgd2hhdCB0b29scyBjYW4gYmUgdXNlZCB0byBtb25pdG9yIHRoZSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gY2hlY2sgdHVubmVsIGNvdW50ZXJzIGZvciBkcm9wcGVkIHBhY2tldHMgYW5kIGVycm9ycywgYW5kIGxvb2sgYXQgcGFja2V0IGNhcHR1cmVzIHRvIHZlcmlmeSB0aGUgdHJhZmZpYyBmbG93IGluc2lkZSBhbmQgb3V0c2lkZSB0aGUgdHVubmVsLiBJIGFtIGV4cGVjdGluZyBzb21lIG9mIHRoZXNlIHRvb2xzIHRvIGJlIHV0aWxpemVkIGluIG9yZGVyIHRvIGlkZW50aWZ5IGlzc3Vlcy4KCkluIHNob3J0LCAmIzM0O0xldCYjMzk7cyBjaGVjayBHUkUgY29uZmlncyYjMzQ7IGlzIGEgUGFuZG9yYSYjMzk7cyBCb3ggb2YgcG90ZW50aWFsIHByb2JsZW1zIGFuZCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcy4gSSYjMzk7bSByZWFkeSB0byBkaWcgaW4gYW5kIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcbm5ldC9pcHY0L0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cbm5ldC9pcHY0L0tjb25maWc6MjA3OmNvbmZpZyBORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7SVA6IGJyb2FkY2FzdCBHUkUgb3ZlciBJUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MDYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIHRob3NlIElQdjYgR1JFIGNvbmZpZ3VyYXRpb25zOgoKKipBbmFseXppbmcgSVB2NiBHUkUgQ29uZmlndXJhdGlvbnMqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzaG93IG9uIHRoZSByb2FkLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgSVB2NiBHUkUgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggY2hlY2suIEkmIzM5O2xsIG5lZWQgdG8gdmVyaWZ5IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFkZHJlc3NlcywgZW5zdXJlIHRoZSB0dW5uZWwgaXMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgYXMgSVB2NiBhbmQgdGhhdCBpdCYjMzk7cyBjb3JyZWN0bHkgZW5jYXBzdWxhdGVkLiBPZiBjb3Vyc2UsIHRoZSByb3V0aW5nIGNvbmZpZ3VyYXRpb25zIG9uIGJvdGggZW5kcyBhcmUgYWJzb2x1dGVseSBjcml0aWNhbCAtIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aG9zZSBhcmUgYWR2ZXJ0aXNpbmcgdGhlIGNvcnJlY3Qgcm91dGVzIGFuZCB0aGF0IHRoZSBwYWNrZXRzIGFyZSB0cmF2ZXJzaW5nIHRoZSBpbnRlbmRlZCBwYXRoLgoKVGhlbiB0aGVyZSYjMzk7cyB0aGUgcXVlc3Rpb24gb2YgZnJhZ21lbnRhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIE1UVSBzZXR0aW5ncyBhcmUgYXBwcm9wcmlhdGUgb24gYm90aCB0aGUgdHVubmVsIGludGVyZmFjZSBhbmQgdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgaW50ZXJmYWNlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGluZGljYXRpb25zIG9mIHBhY2tldCBsb3NzIGR1ZSB0byBmcmFnbWVudGF0aW9uIGlzc3Vlcy4gSXMgZnJhZ21lbnRhdGlvbiBoYXBwZW5pbmcsIGFuZCBpZiBzbywgd2hlcmU/CgpOZXh0LCBJJiMzOTtsbCB0dXJuIG15IGF0dGVudGlvbiB0byBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gQXJlIHRoZXJlIGFueSBhY2Nlc3MgY29udHJvbCBsaXN0cyAoQUNMcykgaW1wYWN0aW5nIHRoZSBHUkUgdHJhZmZpYz8gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGJlIGludGVyZmVyaW5nIHdpdGggdGhlIHR1bm5lbCYjMzk7cyBvcGVyYXRpb24/IEFuZCwgSSYjMzk7bGwgbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgZW5jcnlwdGlvbiBsZXZlbCBhcyB3ZWxsLiBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIEdSRSBvcHRpb25zIGJlaW5nIHVzZWQsIHN1Y2ggYXMga2V5aW5nIG9yIGNoZWNrc3Vtcy4KCkZpbmFsbHksIEkmIzM5O2xsIGNoZWNrIGZvciBnZW5lcmFsIHR1bm5lbCBoZWFsdGggYW5kIHN0YXR1czogSG93IGlzIHRoZSB0dW5uZWwgcmVzcG9uZGluZz8gQXJlIHRoZXJlIGFueSBlcnJvcnMgb3IgY291bnRlcnMgdGhhdCBhcmUgaW5jcmVhc2luZz8gQXJlIHRoZSB0dW5uZWwgaW50ZXJmYWNlcyB1cCBhbmQgaW4gdGhlIGV4cGVjdGVkIHN0YXRlPyBBbmQsIGhhdmUgdGhlcmUgYmVlbiBhbnkgcGFzdCBpc3N1ZXM/IEkgd2lsbCBiZSBhYmxlIHRvIGdldCBhIGdvb2Qgb3ZlcmFsbCBwaWN0dXJlIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgcHJvYmxlbXMsIGFuZCB3aGF0IHRoZXkgbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfR1JFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9MTk5PWNvbmZpZyBJUFY2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTc5CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEZPVSBUdW5uZWwgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgYSB0ZXN0IHNldHVwIHRoYXQgbGV2ZXJhZ2VzIEZPVSAoVURQLWJhc2VkIGVuY2Fwc3VsYXRpb24pIHR1bm5lbHMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGVuc3VyaW5nIHRoZSBrZXJuZWwgaXMgcHJvcGVybHkgY29uZmlndXJlZCB0byBzdXBwb3J0IHRoaXMuIFRoZSB0ZXN0IHNwZWNpZmljYWxseSBtZW50aW9ucyBhZGRpbmcgYSBGT1UgdHVubmVsIHVzaW5nIGBpcCBmb3UgYWRkIHBvcnQgNDc5NyBpcHByb3RvIDQ3YCBhbmQgYSBHUkUgdHVubmVsIHdpdGggRk9VIGVuY2Fwc3VsYXRpb24gdmlhIGBpcCBsaW5rIGFkZCBlb3VkcDAgdHlwZSBncmV0YXAgLi4uIGVuY2FwIGZvdWAuCgpUaGVyZWZvcmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgRk9VIGNvbXBvbmVudHMgYXJlIGVuYWJsZWQ6IGBORVRfRk9VYCwgb2YgY291cnNlLCBhbmQgYE5FVF9JUEdSRWAgZm9yIHRoZSBHUkUgZW5jYXBzdWxhdGlvbi4gVGhlIHRlc3QgbWlnaHQgYmUgZG9pbmcgYnJvYWRjYXN0LCBzbyBJJiMzOTtsbCBhbHNvIGNvbnNpZGVyIGBORVRfSVBHUkVfQlJPQURDQVNUYC4gR2l2ZW4gdGhhdCBGT1UgY2FuIHdvcmsgb3ZlciBJUHY2LCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBgSVBWNl9HUkVgIGFzIHdlbGwsIGV2ZW4gdGhvdWdoIElQdjQgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIGV4YW1wbGUgYGlwcHJvdG8gNDdgLgoKTm93LCBJIHRoaW5rIHRoZXJlIG1heSBiZSBhbiBhZGRpdGlvbmFsIG9wdGlvbiBhdCBwbGF5IGhlcmUuLi4gSSBuZWVkIHRvIGNoZWNrIGBORVRfRk9VX0lQX1RVTk5FTFNgLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBvbmUgbWlnaHQgYmUgKnRoZSogY3J1Y2lhbCBzZXR0aW5nIHRvIGVuc3VyZSB0aGUgd2hvbGUgdGVzdCBzdWl0ZSB3b3JrcyBhcyBleHBlY3RlZC4gSSYjMzk7bGwgZm9jdXMgb24gdGhpcyBvbmUgZm9yIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxuLS1cbm5ldC9pcHY0L0tjb25maWctMzI5LVxubmV0L2lwdjQvS2NvbmZpZzozMzA6Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xubmV0L2lwdjQvS2NvbmZpZy0zMzEtXHRib29sIFwmIzM0O0lQOiBGT1UgZW5jYXBzdWxhdGlvbiBvZiBJUCB0dW5uZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2ODAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBNdWx0aWNhc3QgRGVsaXZlcnkgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCYjMzk7cyBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IG1lY2hhbmlzbXMuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvcmUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgYWN0dWFsIHBhY2tldCBkaXN0cmlidXRpb24uIExldCYjMzk7cyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyYCBhbmQgYF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcmAuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgcG90ZW50aWFsIGRpZmZlcmVuY2VzIGluIHRoZWlyIGxvZ2ljLCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyAob3IgbGFjayB0aGVyZW9mISksIGFuZCwgaW1wb3J0YW50bHksIGFueSBkaXNjcmVwYW5jaWVzIGluIGVycm9yIGhhbmRsaW5nIGJldHdlZW4gSVB2NCBhbmQgSVB2NiBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aHdheXMuIEkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCwgc3BlY2lmaWNhbGx5IHRoZSBtdWx0aWNhc3QgZ3JvdXAgbWVtYmVyc2hpcHMgYW5kIGhvdyB0aGV5IGFyZSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBzb2NrZXRzIHJlY2VpdmUgd2hpY2ggcGFja2V0cy4gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgcm91dGluZyBzdWJzeXN0ZW0gYW5kIGFueSBhc3NvY2lhdGVkIHJhY2UgY29uZGl0aW9ucyB3aXRoIGdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlcyBpcyBhbHNvIGNyaXRpY2FsIGhlcmUuIEkgZXhwZWN0IHRoYXQgYSBjbG9zZSByZXZpZXcgb2YgdGhlc2UgZnVuY3Rpb25zIHdpbGwgaGlnaGxpZ2h0IHRoZSBhcmNoaXRlY3R1cmUmIzM5O3MgaW5oZXJlbnQgYXNzdW1wdGlvbnMsIHBvdGVudGlhbCBib3R0bGVuZWNrcywgYW5kIGFueSBhcmVhcyB3aGVyZSBJUHY2LXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSBvciBzZWN1cml0eSByZWxhdGl2ZSB0byBJUHY0IGltcGxlbWVudGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcC5jPTI0NDc9Ym9vbCB1ZHBfc2tfcnhfZHN0X3NldChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBkc3RfZW50cnkgKmRzdClcbi0tXG5uZXQvaXB2NC91ZHAuYy0yNDYzLSAqL1xubmV0L2lwdjQvdWRwLmM6MjQ2NDpzdGF0aWMgaW50IF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC91ZHAuYy0yNDY1LVx0XHRcdFx0ICAgIHN0cnVjdCB1ZHBoZHIgICp1aCxcbi0tXG5uZXQvaXB2NC91ZHAuYz0yNTkwPWludCB1ZHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdWRwLmMtMjY0OC1cdGlmIChydC1cdTAwM2VydF9mbGFncyBcdTAwMjYgKFJUQ0ZfQlJPQURDQVNUfFJUQ0ZfTVVMVElDQVNUKSlcbm5ldC9pcHY0L3VkcC5jOjI2NDk6XHRcdHJldHVybiBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIobmV0LCBza2IsIHVoLCBzYWRkciwgZGFkZHIpO1xubmV0L2lwdjQvdWRwLmMtMjY1MC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoLTctIyBXaGVuIGEgRk9VLWVuY2Fwc3VsYXRlZCBwYWNrZXQgYXJyaXZlcyB3aXRoIGEgbXVsdGljYXN0IGRlc3RpbmF0aW9uIElQLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaDo4OiMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtOS0jIGhhbmRsZXIgKGUuZy4sIEdSRSkgcmF0aGVyIHRoYW4gY29uc3VtaW5nIGl0LiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtMTQtIyB0aGUgdW5pY2FzdCBwYXRoICh1ZHBfdW5pY2FzdF9yY3Zfc2tiKSwgc28gd2UgZGlzYWJsZSBpdCB0byBmb3JjZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaDoxNTojIHBhY2tldHMgdGhyb3VnaCBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIoKS5cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtMTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NTYKCQkJCQkJCW91dHB1dDogMTg5CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoaXMgVURQIE11bHRpY2FzdCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIGlzIGludGVyZXN0aW5nLiBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRhcmdldHMgYF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcmAgYW5kIGBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJgLiBUaGVzZSBhcmUgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciBkZWxpdmVyaW5nIG11bHRpY2FzdCBVRFAgcGFja2V0cywgc28gdGhleSYjMzk7cmUgZGVmaW5pdGVseSBpbXBvcnRhbnQgYW5kIGFjdGl2ZWx5IHVzZWQuIFRoZSBjaGFuZ2UgaXRzZWxmIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGJ1ZyB3aGVyZSBlbmNhcHN1bGF0ZWQgbXVsdGljYXN0IHBhY2tldHMsIGxpa2UgdGhvc2UgZnJvbSBGT1UgKFVEUC1vdmVyLUlQKSBvciBHUkUsIHdlcmUgZ2V0dGluZyBkcm9wcGVkIG9yIG1pc2hhbmRsZWQuIEluc3RlYWQgb2YgYmVpbmcgY29ycmVjdGx5IHBhc3NlZCB0byB0aGUgaW5uZXIgcHJvdG9jb2wgaGFuZGxlciwgdGhleSB3ZXJlIGp1c3QgYmVpbmcgY29uc3VtZWQuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGVuY2Fwc3VsYXRpb24gaXNzdWUuCgpUaGUgY29uZmlnIG9wdGlvbnMgbmVlZGVkIHRvIHJlcHJvZHVjZSBvciB0cmlnZ2VyIHRoaXMgYXJlIGhlbHBmdWwuIEkmIzM5O2xsIGRlZmluaXRlbHkgd2FudCB0byBlbnN1cmUgYE5FVF9GT1VgLCBgTkVUX0ZPVV9JUF9UVU5ORUxTYCwgYE5FVF9JUEdSRWAsIGBORVRfSVBHUkVfQlJPQURDQVNUYCwgYW5kIGBJUFY2X0dSRWAgYXJlIGVuYWJsZWQgZHVyaW5nIHRlc3RpbmcuIFRob3NlIGFyZSB0aGUga2V5cyB0byByZXByb2R1Y2luZyB0aGUgcHJvYmxlbWF0aWMgc2NlbmFyaW9zLgoKVGhlIGtleSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZGVsaXZlcnkgZnVuY3Rpb25zLiBJdCBzZWVtcyBsaWtlbHkgdGhhdCBmdXp6aW5nIHRob3NlIHdpdGggRk9VIGFuZCBHUkUgdHJhZmZpYyB3b3VsZCBiZSBtb3N0IGVmZmVjdGl2ZSBhdCB1bmNvdmVyaW5nIGFueSByZW1haW5pbmcgaXNzdWVzIG9yIHJlZ3Jlc3Npb25zLiBUaGUgcmVhc29uaW5nIGhlcmUgaXMgc29saWQ7IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgbmV0d29yayBjb2RlLCBhbmQgdGhhdCYjMzk7cyBwcmVjaXNlbHkgd2hlcmUgSSYjMzk7ZCBzdGFydCBteSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkVfQlJPQURDQVNUJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyJiMzNDssCiAgICAmIzM0O19fdWRwNl9saWJfbWNhc3RfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkVfQlJPQURDQVNUJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyJiMzNDssCiAgICAmIzM0O19fdWRwNl9saWJfbWNhc3RfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjoyMC40NTY4NzA1MDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQ1MTMwMDM1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCIsXG4gICAgXCJORVRfRk9VX0lQX1RVTk5FTFNcIixcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiTkVUX0lQR1JFX0JST0FEQ0FTVFwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJcIixcbiAgICBcIl9fdWRwNl9saWJfbWNhc3RfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFVEUCBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aHMgKF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlciBhbmQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKSB0byBjb3JyZWN0bHkgaGFuZGxlIHBhY2tldCByZXN1Ym1pc3Npb24gZm9yIGVuY2Fwc3VsYXRlZCBwYWNrZXRzIChlLmcuLCBGT1UvR1JFVEFQKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIGNvZGUsIGZpeGluZyBhIGJ1ZyB3aGVyZSBzdWNoIHBhY2tldHMgd2VyZSBpbmNvcnJlY3RseSBjb25zdW1lZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgZGVsaXZlcnkgZnVuY3Rpb25zIHdpdGggRk9VIGFuZCBHUkUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6MjAuNDU2ODk0NTIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTkxMTM3NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmMDhiOWRiNTE0ZjUyOWRlNWU5MzY4ZGU2MzYxZGVmNzc3OTE2NzNiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMDY6MjY6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwLmMgYi9uZXQvaXB2NC91ZHAuY1xcbmluZGV4IDcwZjZjYmQ0ZWY3M2JmLi5iMDkxMDY1OTM5MWVmMCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC91ZHAuY1xcbisrKyBiL25ldC9pcHY0L3VkcC5jXFxuQEAgLTI0NzUsNiArMjQ3NSw3IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0c3RydWN0IHVkcF9oc2xvdCAqaHNsb3Q7XFxuIFxcdHN0cnVjdCBza19idWZmICpuc2tiO1xcbiBcXHRib29sIHVzZV9oYXNoMjtcXG4rXFx0aW50IHJldDtcXG4gXFxuIFxcdGhhc2gyX2FueSA9IDA7XFxuIFxcdGhhc2gyID0gMDtcXG5AQCAtMjUxOSw4ICsyNTIwLDkgQEAgc3RhdGljIGludCBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoZmlyc3QpIHtcXG4tXFx0XFx0aWYgKHVkcF9xdWV1ZV9yY3Zfc2tiKGZpcnN0LCBza2IpIFxcdTAwM2UgMClcXG4tXFx0XFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG4rXFx0XFx0cmV0ID0gdWRwX3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRyZXR1cm4gLXJldDtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdF9fVURQX0lOQ19TVEFUUyhuZXQsIFVEUF9NSUJfSUdOT1JFRE1VTFRJKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdWRwLmMgYi9uZXQvaXB2Ni91ZHAuY1xcbmluZGV4IDE1ZTAzMjE5NGVjY2MzLi5mZjJlMzg5ZTI4NmJhNiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni91ZHAuY1xcbisrKyBiL25ldC9pcHY2L3VkcC5jXFxuQEAgLTk0OSw2ICs5NDksNyBAQCBzdGF0aWMgaW50IF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHN0cnVjdCB1ZHBfaHNsb3QgKmhzbG90O1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcXG4gXFx0Ym9vbCB1c2VfaGFzaDI7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRoYXNoMl9hbnkgPSAwO1xcbiBcXHRoYXNoMiA9IDA7XFxuQEAgLTk5OCw4ICs5OTksOSBAQCBzdGF0aWMgaW50IF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChmaXJzdCkge1xcbi1cXHRcXHRpZiAodWRwdjZfcXVldWVfcmN2X3NrYihmaXJzdCwgc2tiKSBcXHUwMDNlIDApXFxuLVxcdFxcdFxcdGNvbnN1bWVfc2tiKHNrYik7XFxuK1xcdFxcdHJldCA9IHVkcHY2X3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRyZXR1cm4gLXJldDtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdF9fVURQNl9JTkNfU1RBVFMobmV0LCBVRFBfTUlCX0lHTk9SRURNVUxUSSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi43ZTlhZTkzN2NmZmE3ZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG5AQCAtMzksNiArMzksNyBAQCBURVNUX1BST0dTIDo9IFxcXFxcXG4gXFx0ZmliX3J1bGVfdGVzdHMuc2ggXFxcXFxcbiBcXHRmaWJfdGVzdHMuc2ggXFxcXFxcbiBcXHRmaW5fYWNrX2xhdC5zaCBcXFxcXFxuK1xcdGZvdV9tY2FzdF9lbmNhcC5zaCBcXFxcXFxuIFxcdGZxX2JhbmRfcGt0bGltaXQuc2ggXFxcXFxcbiBcXHRncmVfZ3NvLnNoIFxcXFxcXG4gXFx0Z3JlX2lwdjZfbGxhZGRyLnNoIFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44ZGI5NjMzZjRjMjgzZVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoXFxuQEAgLTAsMCArMSwxMTIgQEBcXG4rIyEvYmluL2Jhc2hcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgVGVzdCB0aGF0IFVEUCBlbmNhcHN1bGF0aW9uIChGT1UpIGNvcnJlY3RseSBoYW5kbGVzIHBhY2tldCByZXN1Ym1pdFxcbisjIHdoZW4gcGFja2V0cyBhcmUgZGVsaXZlcmVkIHZpYSB0aGUgbXVsdGljYXN0IFVEUCBkZWxpdmVyeSBwYXRoLlxcbisjXFxuKyMgV2hlbiBhIEZPVS1lbmNhcHN1bGF0ZWQgcGFja2V0IGFycml2ZXMgd2l0aCBhIG11bHRpY2FzdCBkZXN0aW5hdGlvbiBJUCxcXG4rIyBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIoKSBtdXN0IHJlc3VibWl0IGl0IHRvIHRoZSBpbm5lciBwcm90b2NvbFxcbisjIGhhbmRsZXIgKGUuZy4sIEdSRSkgcmF0aGVyIHRoYW4gY29uc3VtaW5nIGl0LiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdFxcbisjIGJ5IGNyZWF0aW5nIGEgRk9VL0dSRVRBUCB0dW5uZWwgd2l0aCBhIG11bHRpY2FzdCByZW1vdGUgYWRkcmVzcyBhbmRcXG4rIyBzZW5kaW5nIHBpbmcgdGhyb3VnaCBpdC5cXG4rI1xcbisjIFRoZSBlYXJseSBkZW11eCBvcHRpbWl6YXRpb24gY2FuIG1hc2sgdGhpcyBpc3N1ZSBieSByb3V0aW5nIHBhY2tldHMgdmlhXFxuKyMgdGhlIHVuaWNhc3QgcGF0aCAodWRwX3VuaWNhc3RfcmN2X3NrYiksIHNvIHdlIGRpc2FibGUgaXQgdG8gZm9yY2VcXG4rIyBwYWNrZXRzIHRocm91Z2ggX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkuXFxuK1xcbitzb3VyY2UgbGliLnNoXFxuK1xcbitOU0VOREVSPVxcXCJcXFwiXFxuK05SRUNWPVxcXCJcXFwiXFxuK1xcbitjbGVhbnVwKCkge1xcbitcXHRjbGVhbnVwX2FsbF9uc1xcbit9XFxuK1xcbit0cmFwIGNsZWFudXAgRVhJVFxcbitcXG4rc2V0dXAoKSB7XFxuK1xcdHNldHVwX25zIE5TRU5ERVIgTlJFQ1ZcXG4rXFxuK1xcdGlwIGxpbmsgYWRkIHZldGhfcyB0eXBlIHZldGggcGVlciBuYW1lIHZldGhfclxcbitcXHRpcCBsaW5rIHNldCB2ZXRoX3MgbmV0bnMgXFxcIiROU0VOREVSXFxcIlxcbitcXHRpcCBsaW5rIHNldCB2ZXRoX3IgbmV0bnMgXFxcIiROUkVDVlxcXCJcXG4rXFxuK1xcdGlwIC1uIFxcXCIkTlNFTkRFUlxcXCIgYWRkciBhZGQgMTAuMC4wLjEvMjQgZGV2IHZldGhfc1xcbitcXHRpcCAtbiBcXFwiJE5TRU5ERVJcXFwiIGxpbmsgc2V0IHZldGhfcyB1cFxcbitcXG4rXFx0aXAgLW4gXFxcIiROUkVDVlxcXCIgYWRkciBhZGQgMTAuMC4wLjIvMjQgZGV2IHZldGhfclxcbitcXHRpcCAtbiBcXFwiJE5SRUNWXFxcIiBsaW5rIHNldCB2ZXRoX3IgdXBcXG4rXFxuK1xcdCMgRGlzYWJsZSBlYXJseSBkZW11eCB0byBmb3JjZSBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlJFQ1ZcXFwiIHN5c2N0bCAtd3EgbmV0LmlwdjQuaXBfZWFybHlfZGVtdXg9MFxcbitcXG4rXFx0IyBKb2luIG11bHRpY2FzdCBncm91cCBvbiByZWNlaXZlclxcbitcXHRpcCAtbiBcXFwiJE5SRUNWXFxcIiBhZGRyIGFkZCAyMzkuMC4wLjEvMzIgZGV2IHZldGhfciBhdXRvam9pblxcbitcXG4rXFx0IyBNdWx0aWNhc3Qgcm91dGVzXFxuK1xcdGlwIC1uIFxcXCIkTlJFQ1ZcXFwiIHJvdXRlIGFkZCAyMzkuMC4wLjAvOCBkZXYgdmV0aF9yXFxuK1xcdGlwIC1uIFxcXCIkTlNFTkRFUlxcXCIgcm91dGUgYWRkIDIzOS4wLjAuMC84IGRldiB2ZXRoX3NcXG4rXFxuK1xcdCMgU2VuZGVyOiBHUkVUQVAgd2l0aCBGT1UgZW5jYXAgKG5vIEZPVSBsaXN0ZW5lciBuZWVkZWQgb24gVFggc2lkZSlcXG4rXFx0aXAgLW4gXFxcIiROU0VOREVSXFxcIiBsaW5rIGFkZCBlb3VkcDAgdHlwZSBncmV0YXAgXFxcXFxcbitcXHRcXHRyZW1vdGUgMjM5LjAuMC4xIGxvY2FsIDEwLjAuMC4xIFxcXFxcXG4rXFx0XFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxcXFxuK1xcdFxcdGtleSAyMzkuMC4wLjFcXG4rXFx0aXAgLW4gXFxcIiROU0VOREVSXFxcIiBsaW5rIHNldCBlb3VkcDAgdXBcXG4rXFx0aXAgLW4gXFxcIiROU0VOREVSXFxcIiBhZGRyIGFkZCAxOTIuMTY4Ljk5LjEvMjQgZGV2IGVvdWRwMFxcbitcXG4rXFx0IyBSZWNlaXZlcjogRk9VIGxpc3RlbmVyICsgR1JFVEFQXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROUkVDVlxcXCIgaXAgZm91IGFkZCBwb3J0IDQ3OTcgaXBwcm90byA0N1xcbitcXHRpcCAtbiBcXFwiJE5SRUNWXFxcIiBsaW5rIGFkZCBlb3VkcDAgdHlwZSBncmV0YXAgXFxcXFxcbitcXHRcXHRyZW1vdGUgMjM5LjAuMC4xIGxvY2FsIDEwLjAuMC4yIFxcXFxcXG4rXFx0XFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxcXFxuK1xcdFxcdGtleSAyMzkuMC4wLjFcXG4rXFx0aXAgLW4gXFxcIiROUkVDVlxcXCIgbGluayBzZXQgZW91ZHAwIHVwXFxuK1xcdGlwIC1uIFxcXCIkTlJFQ1ZcXFwiIGFkZHIgYWRkIDE5Mi4xNjguOTkuMi8yNCBkZXYgZW91ZHAwXFxuK1xcbitcXHQjIFN0YXRpYyBuZWlnaCBlbnRyeSBvbiBzZW5kZXI6IEFSUCByZXBsaWVzIGNhbm5vdCB0cmF2ZXJzZSB0aGVcXG4rXFx0IyBtdWx0aWNhc3QgdHVubmVsIGJhY2ssIHNvIHByZS1wb3B1bGF0ZSB0aGUgbmVpZ2hib3IgY2FjaGUuXFxuK1xcdGxvY2FsIHJlY3ZfbWFjXFxuK1xcdHJlY3ZfbWFjPSQoaXAgLW4gXFxcIiROUkVDVlxcXCIgbGluayBzaG93IGVvdWRwMCB8IGF3ayAnL2V0aGVyL3twcmludCAkMn0nKVxcbitcXHRpcCAtbiBcXFwiJE5TRU5ERVJcXFwiIG5laWdoIGFkZCAxOTIuMTY4Ljk5LjIgbGxhZGRyIFxcXCIkcmVjdl9tYWNcXFwiIGRldiBlb3VkcDBcXG4rfVxcbitcXG4rZ2V0X3J4X3BhY2tldHMoKSB7XFxuK1xcdGlwIC1uIFxcXCIkTlJFQ1ZcXFwiIC1zIGxpbmsgc2hvdyBlb3VkcDAgfCBhd2sgJy9SWDove2dldGxpbmU7IHByaW50ICQyfSdcXG4rfVxcbitcXG4rdGVzdF9mb3VfbWNhc3RfZW5jYXAoKSB7XFxuK1xcdGxvY2FsIGNvdW50PTEwMFxcbitcXHRsb2NhbCByeF9iZWZvcmVcXG4rXFx0bG9jYWwgcnhfYWZ0ZXJcXG4rXFx0bG9jYWwgcnhfZGVsdGFcXG4rXFxuK1xcdCMgV2FybXVwOiBsZXQgYW55IGluaXRpYWwgYnJvYWRjYXN0L0FSUCB0cmFmZmljIHNldHRsZVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNFTkRFUlxcXCIgcGluZyAtYyAxIC1XIDEgMTkyLjE2OC45OS4yIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbitcXHRzbGVlcCAxXFxuK1xcbitcXHRyeF9iZWZvcmU9JChnZXRfcnhfcGFja2V0cylcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TRU5ERVJcXFwiIHBpbmcgLWMgJGNvdW50IC1XIDEgMTkyLjE2OC45OS4yIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbitcXHRzbGVlcCAxXFxuK1xcdHJ4X2FmdGVyPSQoZ2V0X3J4X3BhY2tldHMpXFxuK1xcbitcXHRyeF9kZWx0YT0kKChyeF9hZnRlciAtIHJ4X2JlZm9yZSkpXFxuK1xcbitcXHRpZiBbIFxcXCIkcnhfZGVsdGFcXFwiIC1nZSBcXFwiJGNvdW50XFxcIiBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIlBBU1M6IHJlY2VpdmVkICRyeF9kZWx0YS8kY291bnQgcGFja2V0cyB2aWEgbXVsdGljYXN0IEZPVS9HUkVUQVBcXFwiXFxuK1xcdFxcdHJldHVybiBcXFwiJGtzZnRfcGFzc1xcXCJcXG4rXFx0ZWxpZiBbIFxcXCIkcnhfZGVsdGFcXFwiIC1ndCAwIF07IHRoZW5cXG4rXFx0XFx0ZWNobyBcXFwiRkFJTDogb25seSAkcnhfZGVsdGEvJGNvdW50IHBhY2tldHMgcmVjZWl2ZWQgKHBhcnRpYWwgZGVsaXZlcnkpXFxcIlxcbitcXHRcXHRyZXR1cm4gXFxcIiRrc2Z0X2ZhaWxcXFwiXFxuK1xcdGVsc2VcXG4rXFx0XFx0ZWNobyBcXFwiRkFJTDogMC8kY291bnQgcGFja2V0cyByZWNlaXZlZCAobXVsdGljYXN0IGVuY2FwIHJlc3VibWl0IGJyb2tlbilcXFwiXFxuK1xcdFxcdHJldHVybiBcXFwiJGtzZnRfZmFpbFxcXCJcXG4rXFx0ZmlcXG4rfVxcbitcXG4rZWNobyBcXFwiVEVTVDogRk9VL0dSRVRBUCBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvbiByZXN1Ym1pdFxcXCJcXG4rXFxuK3NldHVwXFxuK3Rlc3RfZm91X21jYXN0X2VuY2FwXFxuK2V4aXQgJD9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6MjAuOTc2ODYxNjE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTkzMTI5NjAyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCIsXG4gICAgXCJORVRfRk9VX0lQX1RVTk5FTFNcIixcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiTkVUX0lQR1JFX0JST0FEQ0FTVFwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJcIixcbiAgICBcIl9fdWRwNl9saWJfbWNhc3RfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFVEUCBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aHMgKF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlciBhbmQgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyKSB0byBjb3JyZWN0bHkgaGFuZGxlIHBhY2tldCByZXN1Ym1pc3Npb24gZm9yIGVuY2Fwc3VsYXRlZCBwYWNrZXRzIChlLmcuLCBGT1UvR1JFVEFQKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIGNvZGUsIGZpeGluZyBhIGJ1ZyB3aGVyZSBzdWNoIHBhY2tldHMgd2VyZSBpbmNvcnJlY3RseSBjb25zdW1lZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgZGVsaXZlcnkgZnVuY3Rpb25zIHdpdGggRk9VIGFuZCBHUkUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmMDhiOWRiNTE0ZjUyOWRlNWU5MzY4ZGU2MzYxZGVmNzc3OTE2NzNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwNjoyNjoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcC5jIGIvbmV0L2lwdjQvdWRwLmNcbmluZGV4IDcwZjZjYmQ0ZWY3M2JmLi5iMDkxMDY1OTM5MWVmMCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3VkcC5jXG4rKysgYi9uZXQvaXB2NC91ZHAuY1xuQEAgLTI0NzUsNiArMjQ3NSw3IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCB1ZHBfaHNsb3QgKmhzbG90O1xuIFx0c3RydWN0IHNrX2J1ZmYgKm5za2I7XG4gXHRib29sIHVzZV9oYXNoMjtcbitcdGludCByZXQ7XG4gXG4gXHRoYXNoMl9hbnkgPSAwO1xuIFx0aGFzaDIgPSAwO1xuQEAgLTI1MTksOCArMjUyMCw5IEBAIHN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH1cbiBcbiBcdGlmIChmaXJzdCkge1xuLVx0XHRpZiAodWRwX3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYikgXHUwMDNlIDApXG4tXHRcdFx0Y29uc3VtZV9za2Ioc2tiKTtcbitcdFx0cmV0ID0gdWRwX3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7XG4rXHRcdGlmIChyZXQgXHUwMDNlIDApXG4rXHRcdFx0cmV0dXJuIC1yZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0X19VRFBfSU5DX1NUQVRTKG5ldCwgVURQX01JQl9JR05PUkVETVVMVEkpO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3VkcC5jIGIvbmV0L2lwdjYvdWRwLmNcbmluZGV4IDE1ZTAzMjE5NGVjY2MzLi5mZjJlMzg5ZTI4NmJhNiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3VkcC5jXG4rKysgYi9uZXQvaXB2Ni91ZHAuY1xuQEAgLTk0OSw2ICs5NDksNyBAQCBzdGF0aWMgaW50IF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzdHJ1Y3QgdWRwX2hzbG90ICpoc2xvdDtcbiBcdHN0cnVjdCBza19idWZmICpuc2tiO1xuIFx0Ym9vbCB1c2VfaGFzaDI7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aGFzaDJfYW55ID0gMDtcbiBcdGhhc2gyID0gMDtcbkBAIC05OTgsOCArOTk5LDkgQEAgc3RhdGljIGludCBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0fVxuIFxuIFx0aWYgKGZpcnN0KSB7XG4tXHRcdGlmICh1ZHB2Nl9xdWV1ZV9yY3Zfc2tiKGZpcnN0LCBza2IpIFx1MDAzZSAwKVxuLVx0XHRcdGNvbnN1bWVfc2tiKHNrYik7XG4rXHRcdHJldCA9IHVkcHY2X3F1ZXVlX3Jjdl9za2IoZmlyc3QsIHNrYik7XG4rXHRcdGlmIChyZXQgXHUwMDNlIDApXG4rXHRcdFx0cmV0dXJuIC1yZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0X19VRFA2X0lOQ19TVEFUUyhuZXQsIFVEUF9NSUJfSUdOT1JFRE1VTFRJKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi43ZTlhZTkzN2NmZmE3ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5AQCAtMzksNiArMzksNyBAQCBURVNUX1BST0dTIDo9IFxcXG4gXHRmaWJfcnVsZV90ZXN0cy5zaCBcXFxuIFx0ZmliX3Rlc3RzLnNoIFxcXG4gXHRmaW5fYWNrX2xhdC5zaCBcXFxuK1x0Zm91X21jYXN0X2VuY2FwLnNoIFxcXG4gXHRmcV9iYW5kX3BrdGxpbWl0LnNoIFxcXG4gXHRncmVfZ3NvLnNoIFxcXG4gXHRncmVfaXB2Nl9sbGFkZHIuc2ggXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44ZGI5NjMzZjRjMjgzZVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaFxuQEAgLTAsMCArMSwxMTIgQEBcbisjIS9iaW4vYmFzaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBUZXN0IHRoYXQgVURQIGVuY2Fwc3VsYXRpb24gKEZPVSkgY29ycmVjdGx5IGhhbmRsZXMgcGFja2V0IHJlc3VibWl0XG4rIyB3aGVuIHBhY2tldHMgYXJlIGRlbGl2ZXJlZCB2aWEgdGhlIG11bHRpY2FzdCBVRFAgZGVsaXZlcnkgcGF0aC5cbisjXG4rIyBXaGVuIGEgRk9VLWVuY2Fwc3VsYXRlZCBwYWNrZXQgYXJyaXZlcyB3aXRoIGEgbXVsdGljYXN0IGRlc3RpbmF0aW9uIElQLFxuKyMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2xcbisjIGhhbmRsZXIgKGUuZy4sIEdSRSkgcmF0aGVyIHRoYW4gY29uc3VtaW5nIGl0LiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdFxuKyMgYnkgY3JlYXRpbmcgYSBGT1UvR1JFVEFQIHR1bm5lbCB3aXRoIGEgbXVsdGljYXN0IHJlbW90ZSBhZGRyZXNzIGFuZFxuKyMgc2VuZGluZyBwaW5nIHRocm91Z2ggaXQuXG4rI1xuKyMgVGhlIGVhcmx5IGRlbXV4IG9wdGltaXphdGlvbiBjYW4gbWFzayB0aGlzIGlzc3VlIGJ5IHJvdXRpbmcgcGFja2V0cyB2aWFcbisjIHRoZSB1bmljYXN0IHBhdGggKHVkcF91bmljYXN0X3Jjdl9za2IpLCBzbyB3ZSBkaXNhYmxlIGl0IHRvIGZvcmNlXG4rIyBwYWNrZXRzIHRocm91Z2ggX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkuXG4rXG4rc291cmNlIGxpYi5zaFxuK1xuK05TRU5ERVI9XCJcIlxuK05SRUNWPVwiXCJcbitcbitjbGVhbnVwKCkge1xuK1x0Y2xlYW51cF9hbGxfbnNcbit9XG4rXG4rdHJhcCBjbGVhbnVwIEVYSVRcbitcbitzZXR1cCgpIHtcbitcdHNldHVwX25zIE5TRU5ERVIgTlJFQ1ZcbitcbitcdGlwIGxpbmsgYWRkIHZldGhfcyB0eXBlIHZldGggcGVlciBuYW1lIHZldGhfclxuK1x0aXAgbGluayBzZXQgdmV0aF9zIG5ldG5zIFwiJE5TRU5ERVJcIlxuK1x0aXAgbGluayBzZXQgdmV0aF9yIG5ldG5zIFwiJE5SRUNWXCJcbitcbitcdGlwIC1uIFwiJE5TRU5ERVJcIiBhZGRyIGFkZCAxMC4wLjAuMS8yNCBkZXYgdmV0aF9zXG4rXHRpcCAtbiBcIiROU0VOREVSXCIgbGluayBzZXQgdmV0aF9zIHVwXG4rXG4rXHRpcCAtbiBcIiROUkVDVlwiIGFkZHIgYWRkIDEwLjAuMC4yLzI0IGRldiB2ZXRoX3JcbitcdGlwIC1uIFwiJE5SRUNWXCIgbGluayBzZXQgdmV0aF9yIHVwXG4rXG4rXHQjIERpc2FibGUgZWFybHkgZGVtdXggdG8gZm9yY2UgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlJFQ1ZcIiBzeXNjdGwgLXdxIG5ldC5pcHY0LmlwX2Vhcmx5X2RlbXV4PTBcbitcbitcdCMgSm9pbiBtdWx0aWNhc3QgZ3JvdXAgb24gcmVjZWl2ZXJcbitcdGlwIC1uIFwiJE5SRUNWXCIgYWRkciBhZGQgMjM5LjAuMC4xLzMyIGRldiB2ZXRoX3IgYXV0b2pvaW5cbitcbitcdCMgTXVsdGljYXN0IHJvdXRlc1xuK1x0aXAgLW4gXCIkTlJFQ1ZcIiByb3V0ZSBhZGQgMjM5LjAuMC4wLzggZGV2IHZldGhfclxuK1x0aXAgLW4gXCIkTlNFTkRFUlwiIHJvdXRlIGFkZCAyMzkuMC4wLjAvOCBkZXYgdmV0aF9zXG4rXG4rXHQjIFNlbmRlcjogR1JFVEFQIHdpdGggRk9VIGVuY2FwIChubyBGT1UgbGlzdGVuZXIgbmVlZGVkIG9uIFRYIHNpZGUpXG4rXHRpcCAtbiBcIiROU0VOREVSXCIgbGluayBhZGQgZW91ZHAwIHR5cGUgZ3JldGFwIFxcXG4rXHRcdHJlbW90ZSAyMzkuMC4wLjEgbG9jYWwgMTAuMC4wLjEgXFxcbitcdFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxuK1x0XHRrZXkgMjM5LjAuMC4xXG4rXHRpcCAtbiBcIiROU0VOREVSXCIgbGluayBzZXQgZW91ZHAwIHVwXG4rXHRpcCAtbiBcIiROU0VOREVSXCIgYWRkciBhZGQgMTkyLjE2OC45OS4xLzI0IGRldiBlb3VkcDBcbitcbitcdCMgUmVjZWl2ZXI6IEZPVSBsaXN0ZW5lciArIEdSRVRBUFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROUkVDVlwiIGlwIGZvdSBhZGQgcG9ydCA0Nzk3IGlwcHJvdG8gNDdcbitcdGlwIC1uIFwiJE5SRUNWXCIgbGluayBhZGQgZW91ZHAwIHR5cGUgZ3JldGFwIFxcXG4rXHRcdHJlbW90ZSAyMzkuMC4wLjEgbG9jYWwgMTAuMC4wLjIgXFxcbitcdFx0ZW5jYXAgZm91IGVuY2FwLXNwb3J0IDQ3OTcgZW5jYXAtZHBvcnQgNDc5NyBcXFxuK1x0XHRrZXkgMjM5LjAuMC4xXG4rXHRpcCAtbiBcIiROUkVDVlwiIGxpbmsgc2V0IGVvdWRwMCB1cFxuK1x0aXAgLW4gXCIkTlJFQ1ZcIiBhZGRyIGFkZCAxOTIuMTY4Ljk5LjIvMjQgZGV2IGVvdWRwMFxuK1xuK1x0IyBTdGF0aWMgbmVpZ2ggZW50cnkgb24gc2VuZGVyOiBBUlAgcmVwbGllcyBjYW5ub3QgdHJhdmVyc2UgdGhlXG4rXHQjIG11bHRpY2FzdCB0dW5uZWwgYmFjaywgc28gcHJlLXBvcHVsYXRlIHRoZSBuZWlnaGJvciBjYWNoZS5cbitcdGxvY2FsIHJlY3ZfbWFjXG4rXHRyZWN2X21hYz0kKGlwIC1uIFwiJE5SRUNWXCIgbGluayBzaG93IGVvdWRwMCB8IGF3ayAnL2V0aGVyL3twcmludCAkMn0nKVxuK1x0aXAgLW4gXCIkTlNFTkRFUlwiIG5laWdoIGFkZCAxOTIuMTY4Ljk5LjIgbGxhZGRyIFwiJHJlY3ZfbWFjXCIgZGV2IGVvdWRwMFxuK31cbitcbitnZXRfcnhfcGFja2V0cygpIHtcbitcdGlwIC1uIFwiJE5SRUNWXCIgLXMgbGluayBzaG93IGVvdWRwMCB8IGF3ayAnL1JYOi97Z2V0bGluZTsgcHJpbnQgJDJ9J1xuK31cbitcbit0ZXN0X2ZvdV9tY2FzdF9lbmNhcCgpIHtcbitcdGxvY2FsIGNvdW50PTEwMFxuK1x0bG9jYWwgcnhfYmVmb3JlXG4rXHRsb2NhbCByeF9hZnRlclxuK1x0bG9jYWwgcnhfZGVsdGFcbitcbitcdCMgV2FybXVwOiBsZXQgYW55IGluaXRpYWwgYnJvYWRjYXN0L0FSUCB0cmFmZmljIHNldHRsZVxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU0VOREVSXCIgcGluZyAtYyAxIC1XIDEgMTkyLjE2OC45OS4yIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuK1x0c2xlZXAgMVxuK1xuK1x0cnhfYmVmb3JlPSQoZ2V0X3J4X3BhY2tldHMpXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TRU5ERVJcIiBwaW5nIC1jICRjb3VudCAtVyAxIDE5Mi4xNjguOTkuMiBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbitcdHNsZWVwIDFcbitcdHJ4X2FmdGVyPSQoZ2V0X3J4X3BhY2tldHMpXG4rXG4rXHRyeF9kZWx0YT0kKChyeF9hZnRlciAtIHJ4X2JlZm9yZSkpXG4rXG4rXHRpZiBbIFwiJHJ4X2RlbHRhXCIgLWdlIFwiJGNvdW50XCIgXTsgdGhlblxuK1x0XHRlY2hvIFwiUEFTUzogcmVjZWl2ZWQgJHJ4X2RlbHRhLyRjb3VudCBwYWNrZXRzIHZpYSBtdWx0aWNhc3QgRk9VL0dSRVRBUFwiXG4rXHRcdHJldHVybiBcIiRrc2Z0X3Bhc3NcIlxuK1x0ZWxpZiBbIFwiJHJ4X2RlbHRhXCIgLWd0IDAgXTsgdGhlblxuK1x0XHRlY2hvIFwiRkFJTDogb25seSAkcnhfZGVsdGEvJGNvdW50IHBhY2tldHMgcmVjZWl2ZWQgKHBhcnRpYWwgZGVsaXZlcnkpXCJcbitcdFx0cmV0dXJuIFwiJGtzZnRfZmFpbFwiXG4rXHRlbHNlXG4rXHRcdGVjaG8gXCJGQUlMOiAwLyRjb3VudCBwYWNrZXRzIHJlY2VpdmVkIChtdWx0aWNhc3QgZW5jYXAgcmVzdWJtaXQgYnJva2VuKVwiXG4rXHRcdHJldHVybiBcIiRrc2Z0X2ZhaWxcIlxuK1x0Zmlcbit9XG4rXG4rZWNobyBcIlRFU1Q6IEZPVS9HUkVUQVAgbXVsdGljYXN0IGVuY2Fwc3VsYXRpb24gcmVzdWJtaXRcIlxuK1xuK3NldHVwXG4rdGVzdF9mb3VfbWNhc3RfZW5jYXBcbitleGl0ICQ/XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjoyMC45NzY4NjMzMjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjUyNTkwMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVEUCBNdWx0aWNhc3QgRGVsaXZlcnkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgY2hhbmdlIHRvIGhvdyBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHdvcmtzLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9pcHY0L3VkcC5jYCBhbmQgYG5ldC9pcHY2L3VkcC5jYC4gSXQncyBhbHRlcmluZyBgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyYCBhbmQgYF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcmAuIEVzc2VudGlhbGx5LCBpbnN0ZWFkIG9mIGltbWVkaWF0ZWx5IGNvbnN1bWluZyB0aGUgYHNrYmAgaWYgYHVkcF9xdWV1ZV9yY3Zfc2tiYCByZXR1cm5zIGEgcG9zaXRpdmUgdmFsdWUgKGltcGx5aW5nIHRoZSBwYWNrZXQgbmVlZHMgZnVydGhlciBwcm9jZXNzaW5nLCBsaWtlIGVuY2Fwc3VsYXRpb24pLCBpdCBub3cgKnJldHVybnMqIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBiYXNlZCBvbiB0aGF0IHBvc2l0aXZlIHZhbHVlLCBgLXJldGAuIFRoYXQgbWVhbnMgdGhpcyBpcyBhICpmdW5jdGlvbmFsIGNoYW5nZSogdG8gdGhlIGNvcmUgbXVsdGljYXN0IHBhdGguIFRoZSBpZGVhIGlzIHRoYXQgdGhlIHBhY2tldCBuZWVkcyB0byBiZSByZXN1Ym1pdHRlZCB0byBhIHByb3RvY29sIGhhbmRsZXIgd2hlbiBlbmNhcHN1bGF0ZWQgKEZPVS9HUkVUQVApLlxuXG5UaGlzIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUsIGJ1dCBjcml0aWNhbCwgaXNzdWVzLCBlc3BlY2lhbGx5IGFyb3VuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCBlbmNhcHN1bGF0aW9uIGFuZCBob3cgdGhlIHN0YWNrIGhhbmRsZXMgdGhlc2Ugc3BlY2lhbCBjYXNlcy4gU28gdGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBkZWZpbml0ZWx5IGBfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJgIGFuZCBgX191ZHA2X2xpYl9tY2FzdF9kZWxpdmVyYC5cblxuSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGggZnVsbHksIGVzcGVjaWFsbHkgcmVsYXRlZCB0byBGT1UsIEdSRSwgYW5kIFVEUCBtdWx0aWNhc3QuIEknbGwgc2VhcmNoIHRoZSBzb3VyY2UgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb24gc3ltYm9scy4gR290dGEgc2VlIHdoYXQncyBuZWVkZWQgdG8gdHJpZ2dlciB0aGUgbmV3IHJldHVybiBwYXRoIGFuZCBpdHMgc3Vic2VxdWVudCBoYW5kbGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA2OjI2OjI3LjIyOTQ1NjI4NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzM3MDA1NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfRk9VXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MzE2PWNvbmZpZyBORVRfVURQX1RVTk5FTFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMjAtXFxubmV0L2lwdjQvS2NvbmZpZzozMjE6Y29uZmlnIE5FVF9GT1VcXG5uZXQvaXB2NC9LY29uZmlnLTMyMi1cXHR0cmlzdGF0ZSBcXFwiSVA6IEZvbyAoSVAgcHJvdG9jb2xzKSBvdmVyIFVEUFxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzI5LVxcbm5ldC9pcHY0L0tjb25maWc6MzMwOmNvbmZpZyBORVRfRk9VX0lQX1RVTk5FTFNcXG5uZXQvaXB2NC9LY29uZmlnLTMzMS1cXHRib29sIFxcXCJJUDogRk9VIGVuY2Fwc3VsYXRpb24gb2YgSVAgdHVubmVsc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6MzAuNTY2NDY2NjU3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA0NDM5MzgyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSBwcm9tcHQgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipHUkUgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gXCJMZXQncyBjaGVjayBHUkUgY29uZmlncy5cIiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGFzc3VtZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBuZXR3b3JrIHNjZW5hcmlvLCBhbmQgdGhlIHVzZSBvZiBHZW5lcmljIFJvdXRpbmcgRW5jYXBzdWxhdGlvbiAoR1JFKSB0dW5uZWxzLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBtZWFucyBhIHZhcmlldHkgb2YgcG90ZW50aWFsIGFyZWFzIG5lZWQgYXR0ZW50aW9uLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggYSBtZW50YWwgY2hlY2tsaXN0OlxuXG4qICAgKipVbmRlcmx5aW5nIE5ldHdvcms6KiogRmlyc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgcGh5c2ljYWwgbGF5ZXIuIFdoYXQncyB0aGUgZm91bmRhdGlvbj8gQXJlIHRoZSB1bmRlcmx5aW5nIElQIG5ldHdvcmtzIGZ1bmN0aW9uaW5nIG9wdGltYWxseT8gTGF0ZW5jeSwgcGFja2V0IGxvc3MsIGJhbmR3aWR0aCDigJMgdGhlc2UgYmFzaWMgbWV0cmljcyBhcmUgY3JpdGljYWwgZm9yIGEgc3RhYmxlIEdSRSB0dW5uZWwuIFdlIGNhbid0IGJ1aWxkIGEgc3Ryb25nIGhvdXNlIG9uIGEgd2VhayBmb3VuZGF0aW9uLlxuKiAgICoqRW5jYXBzdWxhdGlvbiBcdTAwMjYgRGVjYXBzdWxhdGlvbjoqKiBJIG5lZWQgdG8gbG9vayBhdCB0aGUgZW5jYXBzdWxhdGlvbiBhbmQgZGVjYXBzdWxhdGlvbiBwcm9jZXNzZXMuIEFyZSB0aGUgR1JFIGhlYWRlcnMgY29uZmlndXJlZCBjb3JyZWN0bHk/IE1pc21hdGNoZWQgc291cmNlL2Rlc3RpbmF0aW9uIElQIGFkZHJlc3NlcyBhcmUgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLiBXaGF0IGFib3V0IHRoZSBwcm90b2NvbCB0eXBlIGJlaW5nIGVuY2Fwc3VsYXRlZD8gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIHNldCBwcm9wZXJseSBmb3Igd2hhdGV2ZXIgd2UncmUgcm91dGluZyBvdmVyIHRoZSB0dW5uZWwuXG4qICAgKipUdW5uZWwgSW50ZXJmYWNlczoqKiBUaGlzIGlzIGNyaXRpY2FsLiBIb3cgYXJlIHRoZSB0dW5uZWwgaW50ZXJmYWNlcyBjb25maWd1cmVkIG9uIGVhY2ggZW5kPyBBcmUgdGhlIElQIGFkZHJlc3NlcywgTVRVcywgYW5kIHR1bm5lbCBtb2RlcyBjb3JyZWN0PyBTdGF0aWMgdnMuIGR5bmFtaWMgcm91dGluZyBvdmVyIHRoZSB0dW5uZWwg4oCTIHRoYXQgZGljdGF0ZXMgYSB3aG9sZSBkaWZmZXJlbnQgc2V0IG9mIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci5cbiogICAqKlJvdXRpbmcgUHJvdG9jb2xzOioqIFdoYXQgcm91dGluZyBwcm90b2NvbCwgaWYgYW55LCBpcyBiZWluZyB1c2VkIG92ZXIgdGhlIEdSRSB0dW5uZWw/IE9TUEYsIEJHUCwgUklQLCBvciBzdGF0aWMgcm91dGVzPyBJJ20gYWxyZWFkeSBtZW50YWxseSBldmFsdWF0aW5nIHRoZSBuZWlnaGJvciByZWxhdGlvbnNoaXBzLCByb3V0ZSBwcm9wYWdhdGlvbiwgYW5kIHBvdGVudGlhbCByb3V0aW5nIGxvb3BzIHRoYXQgY291bGQgYmUgcHJlc2VudC5cbiogICAqKlNlY3VyaXR5OioqIElzIHRoZXJlIGFueSBraW5kIG9mIHNlY3VyaXR5IGluIHBsYWNlPyBJJ20gYXNraW5nIGFib3V0IGFjY2VzcyBjb250cm9sIGxpc3RzIChBQ0xzKSwgZmlyZXdhbGxzLCBvciBldmVuIElQU2VjIHR1bm5lbHMgc2l0dGluZyAqdW5kZXJuZWF0aCogdGhlIEdSRSB0dW5uZWwuIFNlY3VyaXR5IG9mdGVuIGdldHMgb3Zlcmxvb2tlZCwgYW5kIGEgbWlzY29uZmlndXJlZCBmaXJld2FsbCBjb3VsZCBiZSBibG9ja2luZyB0aGUgZW5jYXBzdWxhdGVkIHRyYWZmaWMuXG4qICAgKipUcm91Ymxlc2hvb3RpbmcgVG9vbHM6KiogTGV0J3Mgc2VlIHdoYXQgdG9vbHMgY2FuIGJlIHVzZWQgdG8gbW9uaXRvciB0aGUgY29uZmlndXJhdGlvbi4gSSB3YW50IHRvIGNoZWNrIHR1bm5lbCBjb3VudGVycyBmb3IgZHJvcHBlZCBwYWNrZXRzIGFuZCBlcnJvcnMsIGFuZCBsb29rIGF0IHBhY2tldCBjYXB0dXJlcyB0byB2ZXJpZnkgdGhlIHRyYWZmaWMgZmxvdyBpbnNpZGUgYW5kIG91dHNpZGUgdGhlIHR1bm5lbC4gSSBhbSBleHBlY3Rpbmcgc29tZSBvZiB0aGVzZSB0b29scyB0byBiZSB1dGlsaXplZCBpbiBvcmRlciB0byBpZGVudGlmeSBpc3N1ZXMuXG5cbkluIHNob3J0LCBcIkxldCdzIGNoZWNrIEdSRSBjb25maWdzXCIgaXMgYSBQYW5kb3JhJ3MgQm94IG9mIHBvdGVudGlhbCBwcm9ibGVtcyBhbmQgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuIEknbSByZWFkeSB0byBkaWcgaW4gYW5kIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MTgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA2OjI2OjM1LjYxMDg2NDg2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTc3MTg3ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUEdSRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTkxLVxcbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxcbm5ldC9pcHY0L0tjb25maWctMjA4LVxcdGJvb2wgXFxcIklQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA2OjI2OjM4LjI2ODU4OTcxNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTI3NjkzMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIHRob3NlIElQdjYgR1JFIGNvbmZpZ3VyYXRpb25zOlxuXG4qKkFuYWx5emluZyBJUHY2IEdSRSBDb25maWd1cmF0aW9ucyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc2hvdyBvbiB0aGUgcm9hZC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIElQdjYgR1JFIGNvbmZpZ3VyYXRpb25zLiBMZXQncyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggY2hlY2suIEknbGwgbmVlZCB0byB2ZXJpZnkgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzc2VzLCBlbnN1cmUgdGhlIHR1bm5lbCBpcyBjb3JyZWN0bHkgY29uZmlndXJlZCBhcyBJUHY2IGFuZCB0aGF0IGl0J3MgY29ycmVjdGx5IGVuY2Fwc3VsYXRlZC4gT2YgY291cnNlLCB0aGUgcm91dGluZyBjb25maWd1cmF0aW9ucyBvbiBib3RoIGVuZHMgYXJlIGFic29sdXRlbHkgY3JpdGljYWwgLSBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aG9zZSBhcmUgYWR2ZXJ0aXNpbmcgdGhlIGNvcnJlY3Qgcm91dGVzIGFuZCB0aGF0IHRoZSBwYWNrZXRzIGFyZSB0cmF2ZXJzaW5nIHRoZSBpbnRlbmRlZCBwYXRoLlxuXG5UaGVuIHRoZXJlJ3MgdGhlIHF1ZXN0aW9uIG9mIGZyYWdtZW50YXRpb24uIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIE1UVSBzZXR0aW5ncyBhcmUgYXBwcm9wcmlhdGUgb24gYm90aCB0aGUgdHVubmVsIGludGVyZmFjZSBhbmQgdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgaW50ZXJmYWNlcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgcGFja2V0IGxvc3MgZHVlIHRvIGZyYWdtZW50YXRpb24gaXNzdWVzLiBJcyBmcmFnbWVudGF0aW9uIGhhcHBlbmluZywgYW5kIGlmIHNvLCB3aGVyZT9cblxuTmV4dCwgSSdsbCB0dXJuIG15IGF0dGVudGlvbiB0byBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gQXJlIHRoZXJlIGFueSBhY2Nlc3MgY29udHJvbCBsaXN0cyAoQUNMcykgaW1wYWN0aW5nIHRoZSBHUkUgdHJhZmZpYz8gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGJlIGludGVyZmVyaW5nIHdpdGggdGhlIHR1bm5lbCdzIG9wZXJhdGlvbj8gQW5kLCBJJ2xsIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGVuY3J5cHRpb24gbGV2ZWwgYXMgd2VsbC4gSSdsbCBiZSBsb29raW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIEdSRSBvcHRpb25zIGJlaW5nIHVzZWQsIHN1Y2ggYXMga2V5aW5nIG9yIGNoZWNrc3Vtcy5cblxuRmluYWxseSwgSSdsbCBjaGVjayBmb3IgZ2VuZXJhbCB0dW5uZWwgaGVhbHRoIGFuZCBzdGF0dXM6IEhvdyBpcyB0aGUgdHVubmVsIHJlc3BvbmRpbmc/IEFyZSB0aGVyZSBhbnkgZXJyb3JzIG9yIGNvdW50ZXJzIHRoYXQgYXJlIGluY3JlYXNpbmc/IEFyZSB0aGUgdHVubmVsIGludGVyZmFjZXMgdXAgYW5kIGluIHRoZSBleHBlY3RlZCBzdGF0ZT8gQW5kLCBoYXZlIHRoZXJlIGJlZW4gYW55IHBhc3QgaXNzdWVzPyBJIHdpbGwgYmUgYWJsZSB0byBnZXQgYSBnb29kIG92ZXJhbGwgcGljdHVyZSB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIHByb2JsZW1zLCBhbmQgd2hhdCB0aGV5IG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzA2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjo0MS43NjEzNjEyMDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwNDcwNjMyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9HUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0xOTk9Y29uZmlnIElQVjZfVFVOTkVMXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogR1JFIHR1bm5lbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6NDQuNTY2MDcxOTg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3NDc1NDY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBGT1UgVHVubmVsIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gdGFraW5nIGEgbG9vayBhdCBhIHRlc3Qgc2V0dXAgdGhhdCBsZXZlcmFnZXMgRk9VIChVRFAtYmFzZWQgZW5jYXBzdWxhdGlvbikgdHVubmVscy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgZW5zdXJpbmcgdGhlIGtlcm5lbCBpcyBwcm9wZXJseSBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhpcy4gVGhlIHRlc3Qgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGFkZGluZyBhIEZPVSB0dW5uZWwgdXNpbmcgYGlwIGZvdSBhZGQgcG9ydCA0Nzk3IGlwcHJvdG8gNDdgIGFuZCBhIEdSRSB0dW5uZWwgd2l0aCBGT1UgZW5jYXBzdWxhdGlvbiB2aWEgYGlwIGxpbmsgYWRkIGVvdWRwMCB0eXBlIGdyZXRhcCAuLi4gZW5jYXAgZm91YC5cblxuVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb3JlIEZPVSBjb21wb25lbnRzIGFyZSBlbmFibGVkOiBgTkVUX0ZPVWAsIG9mIGNvdXJzZSwgYW5kIGBORVRfSVBHUkVgIGZvciB0aGUgR1JFIGVuY2Fwc3VsYXRpb24uIFRoZSB0ZXN0IG1pZ2h0IGJlIGRvaW5nIGJyb2FkY2FzdCwgc28gSSdsbCBhbHNvIGNvbnNpZGVyIGBORVRfSVBHUkVfQlJPQURDQVNUYC4gR2l2ZW4gdGhhdCBGT1UgY2FuIHdvcmsgb3ZlciBJUHY2LCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBJUFY2X0dSRWAgYXMgd2VsbCwgZXZlbiB0aG91Z2ggSVB2NCBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGUgZXhhbXBsZSBgaXBwcm90byA0N2AuXG5cbk5vdywgSSB0aGluayB0aGVyZSBtYXkgYmUgYW4gYWRkaXRpb25hbCBvcHRpb24gYXQgcGxheSBoZXJlLi4uIEkgbmVlZCB0byBjaGVjayBgTkVUX0ZPVV9JUF9UVU5ORUxTYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgb25lIG1pZ2h0IGJlICp0aGUqIGNydWNpYWwgc2V0dGluZyB0byBlbnN1cmUgdGhlIHdob2xlIHRlc3Qgc3VpdGUgd29ya3MgYXMgZXhwZWN0ZWQuIEknbGwgZm9jdXMgb24gdGhpcyBvbmUgZm9yIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE3OSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjo0OC4zNDA4Mjk1OTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzIzOTEwMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMjktXFxubmV0L2lwdjQvS2NvbmZpZzozMzA6Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xcbm5ldC9pcHY0L0tjb25maWctMzMxLVxcdGJvb2wgXFxcIklQOiBGT1UgZW5jYXBzdWxhdGlvbiBvZiBJUCB0dW5uZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjo1MC44NzMyMjYwNTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0OTk3NDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgTXVsdGljYXN0IERlbGl2ZXJ5IEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCdzIFVEUCBtdWx0aWNhc3QgZGVsaXZlcnkgbWVjaGFuaXNtcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29yZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBhY3R1YWwgcGFja2V0IGRpc3RyaWJ1dGlvbi4gTGV0J3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcmAgYW5kIGBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJgLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgcG90ZW50aWFsIGRpZmZlcmVuY2VzIGluIHRoZWlyIGxvZ2ljLCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyAob3IgbGFjayB0aGVyZW9mISksIGFuZCwgaW1wb3J0YW50bHksIGFueSBkaXNjcmVwYW5jaWVzIGluIGVycm9yIGhhbmRsaW5nIGJldHdlZW4gSVB2NCBhbmQgSVB2NiBtdWx0aWNhc3QgZGVsaXZlcnkgcGF0aHdheXMuIEknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoLCBzcGVjaWZpY2FsbHkgdGhlIG11bHRpY2FzdCBncm91cCBtZW1iZXJzaGlwcyBhbmQgaG93IHRoZXkgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHNvY2tldHMgcmVjZWl2ZSB3aGljaCBwYWNrZXRzLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSByb3V0aW5nIHN1YnN5c3RlbSBhbmQgYW55IGFzc29jaWF0ZWQgcmFjZSBjb25kaXRpb25zIHdpdGggZ3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2VzIGlzIGFsc28gY3JpdGljYWwgaGVyZS4gSSBleHBlY3QgdGhhdCBhIGNsb3NlIHJldmlldyBvZiB0aGVzZSBmdW5jdGlvbnMgd2lsbCBoaWdobGlnaHQgdGhlIGFyY2hpdGVjdHVyZSdzIGluaGVyZW50IGFzc3VtcHRpb25zLCBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGFuZCBhbnkgYXJlYXMgd2hlcmUgSVB2Ni1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucyBtaWdodCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc2VjdXJpdHkgcmVsYXRpdmUgdG8gSVB2NCBpbXBsZW1lbnRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2ODAsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNjoyNjo1NC4zMjMyMDMzMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0NjY3NjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwLmM9MjQ0Nz1ib29sIHVkcF9za19yeF9kc3Rfc2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxcbi0tXFxubmV0L2lwdjQvdWRwLmMtMjQ2My0gKi9cXG5uZXQvaXB2NC91ZHAuYzoyNDY0OnN0YXRpYyBpbnQgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC91ZHAuYy0yNDY1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgdWRwaGRyICAqdWgsXFxuLS1cXG5uZXQvaXB2NC91ZHAuYz0yNTkwPWludCB1ZHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC91ZHAuYy0yNjQ4LVxcdGlmIChydC1cXHUwMDNlcnRfZmxhZ3MgXFx1MDAyNiAoUlRDRl9CUk9BRENBU1R8UlRDRl9NVUxUSUNBU1QpKVxcbm5ldC9pcHY0L3VkcC5jOjI2NDk6XFx0XFx0cmV0dXJuIF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcihuZXQsIHNrYiwgdWgsIHNhZGRyLCBkYWRkcik7XFxubmV0L2lwdjQvdWRwLmMtMjY1MC1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtNy0jIFdoZW4gYSBGT1UtZW5jYXBzdWxhdGVkIHBhY2tldCBhcnJpdmVzIHdpdGggYSBtdWx0aWNhc3QgZGVzdGluYXRpb24gSVAsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaDo4OiMgX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkgbXVzdCByZXN1Ym1pdCBpdCB0byB0aGUgaW5uZXIgcHJvdG9jb2xcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm91X21jYXN0X2VuY2FwLnNoLTktIyBoYW5kbGVyIChlLmcuLCBHUkUpIHJhdGhlciB0aGFuIGNvbnN1bWluZyBpdC4gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXRcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2gtMTQtIyB0aGUgdW5pY2FzdCBwYXRoICh1ZHBfdW5pY2FzdF9yY3Zfc2tiKSwgc28gd2UgZGlzYWJsZSBpdCB0byBmb3JjZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3VfbWNhc3RfZW5jYXAuc2g6MTU6IyBwYWNrZXRzIHRocm91Z2ggX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyKCkuXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvdV9tY2FzdF9lbmNhcC5zaC0xNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDY6MjY6NTYuODY5ODg1NzQxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTgzOTI5NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBVRFAgTXVsdGljYXN0IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBpcyBpbnRlcmVzdGluZy4gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRhcmdldHMgYF9fdWRwNF9saWJfbWNhc3RfZGVsaXZlcmAgYW5kIGBfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJgLiBUaGVzZSBhcmUgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciBkZWxpdmVyaW5nIG11bHRpY2FzdCBVRFAgcGFja2V0cywgc28gdGhleSdyZSBkZWZpbml0ZWx5IGltcG9ydGFudCBhbmQgYWN0aXZlbHkgdXNlZC4gVGhlIGNoYW5nZSBpdHNlbGYgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGFkZHJlc3NpbmcgYSBidWcgd2hlcmUgZW5jYXBzdWxhdGVkIG11bHRpY2FzdCBwYWNrZXRzLCBsaWtlIHRob3NlIGZyb20gRk9VIChVRFAtb3Zlci1JUCkgb3IgR1JFLCB3ZXJlIGdldHRpbmcgZHJvcHBlZCBvciBtaXNoYW5kbGVkLiBJbnN0ZWFkIG9mIGJlaW5nIGNvcnJlY3RseSBwYXNzZWQgdG8gdGhlIGlubmVyIHByb3RvY29sIGhhbmRsZXIsIHRoZXkgd2VyZSBqdXN0IGJlaW5nIGNvbnN1bWVkLiBUaGF0J3MgYSBjbGFzc2ljIGVuY2Fwc3VsYXRpb24gaXNzdWUuXG5cblRoZSBjb25maWcgb3B0aW9ucyBuZWVkZWQgdG8gcmVwcm9kdWNlIG9yIHRyaWdnZXIgdGhpcyBhcmUgaGVscGZ1bC4gSSdsbCBkZWZpbml0ZWx5IHdhbnQgdG8gZW5zdXJlIGBORVRfRk9VYCwgYE5FVF9GT1VfSVBfVFVOTkVMU2AsIGBORVRfSVBHUkVgLCBgTkVUX0lQR1JFX0JST0FEQ0FTVGAsIGFuZCBgSVBWNl9HUkVgIGFyZSBlbmFibGVkIGR1cmluZyB0ZXN0aW5nLiBUaG9zZSBhcmUgdGhlIGtleXMgdG8gcmVwcm9kdWNpbmcgdGhlIHByb2JsZW1hdGljIHNjZW5hcmlvcy5cblxuVGhlIGtleSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZGVsaXZlcnkgZnVuY3Rpb25zLiBJdCBzZWVtcyBsaWtlbHkgdGhhdCBmdXp6aW5nIHRob3NlIHdpdGggRk9VIGFuZCBHUkUgdHJhZmZpYyB3b3VsZCBiZSBtb3N0IGVmZmVjdGl2ZSBhdCB1bmNvdmVyaW5nIGFueSByZW1haW5pbmcgaXNzdWVzIG9yIHJlZ3Jlc3Npb25zLiBUaGUgcmVhc29uaW5nIGhlcmUgaXMgc29saWQ7IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgbmV0d29yayBjb2RlLCBhbmQgdGhhdCdzIHByZWNpc2VseSB3aGVyZSBJJ2Qgc3RhcnQgbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NTYsIk91dHB1dFRva2VucyI6MTg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA2OjI3OjAyLjc2ODI4MjA4M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTg2OTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiLFxuICAgIFwiTkVUX0ZPVV9JUF9UVU5ORUxTXCIsXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIk5FVF9JUEdSRV9CUk9BRENBU1RcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyXCIsXG4gICAgXCJfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiLFxuICAgIFwiTkVUX0ZPVV9JUF9UVU5ORUxTXCIsXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIk5FVF9JUEdSRV9CUk9BRENBU1RcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX191ZHA0X2xpYl9tY2FzdF9kZWxpdmVyXCIsXG4gICAgXCJfX3VkcDZfbGliX21jYXN0X2RlbGl2ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBVRFAgbXVsdGljYXN0IGRlbGl2ZXJ5IHBhdGhzIChfX3VkcDRfbGliX21jYXN0X2RlbGl2ZXIgYW5kIF9fdWRwNl9saWJfbWNhc3RfZGVsaXZlcikgdG8gY29ycmVjdGx5IGhhbmRsZSBwYWNrZXQgcmVzdWJtaXNzaW9uIGZvciBlbmNhcHN1bGF0ZWQgcGFja2V0cyAoZS5nLiwgRk9VL0dSRVRBUCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBjb2RlLCBmaXhpbmcgYSBidWcgd2hlcmUgc3VjaCBwYWNrZXRzIHdlcmUgaW5jb3JyZWN0bHkgY29uc3VtZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGRlbGl2ZXJ5IGZ1bmN0aW9ucyB3aXRoIEZPVSBhbmQgR1JFIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jg2q[1] Phase: Succeeded StartedAt: 2026-07-02 06:27:48 +0000 UTC FinishedAt: 2026-07-02 06:27:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 06:27:48 +0000 UTC FinishedAt: 2026-07-02 06:27:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2] Phase: Succeeded StartedAt: 2026-07-02 06:27:48 +0000 UTC FinishedAt: 2026-07-02 10:53:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 06:27:48 +0000 UTC FinishedAt: 2026-07-02 10:53:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 06:27:48 +0000 UTC FinishedAt: 2026-07-02 06:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 06:27:48 +0000 UTC FinishedAt: 2026-07-02 06:28:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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-workflow9jg2q/series-workflow9jg2q-convert-artifact-337457259/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 06:29:38 +0000 UTC FinishedAt: 2026-07-02 07:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 06:29:38 +0000 UTC FinishedAt: 2026-07-02 07:08: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:*1b34ae5d-9a13-482a-929d-b6b0eb2fc1e7,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-workflow9jg2q/series-workflow9jg2q-convert-artifact-337457259/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": "9f864734-77e9-4f59-8c5b-0ec242223fee", "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-workflow9jg2q/series-workflow9jg2q-build-action-3678381161/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 06:29:38 +0000 UTC FinishedAt: 2026-07-02 07:07:50 +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:*1b34ae5d-9a13-482a-929d-b6b0eb2fc1e7,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-workflow9jg2q/series-workflow9jg2q-convert-artifact-337457259/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": "9f864734-77e9-4f59-8c5b-0ec242223fee", "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-workflow9jg2q/series-workflow9jg2q-build-action-3678381161/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:08:00 +0000 UTC FinishedAt: 2026-07-02 07:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:08:00 +0000 UTC FinishedAt: 2026-07-02 07:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:08:00 +0000 UTC FinishedAt: 2026-07-02 07:08:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:08:00 +0000 UTC FinishedAt: 2026-07-02 07:08:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-workflow9jg2q/series-workflow9jg2q-convert-artifact-456790082/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:08:10 +0000 UTC FinishedAt: 2026-07-02 07:09:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:08:10 +0000 UTC FinishedAt: 2026-07-02 07:09:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9f864734-77e9-4f59-8c5b-0ec242223fee,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-workflow9jg2q/series-workflow9jg2q-build-action-3678381161/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-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:09:59 +0000 UTC FinishedAt: 2026-07-02 07:09:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:09:59 +0000 UTC FinishedAt: 2026-07-02 07:09:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:09:59 +0000 UTC FinishedAt: 2026-07-02 07:48:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:09:59 +0000 UTC FinishedAt: 2026-07-02 07:48:16 +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:*1b34ae5d-9a13-482a-929d-b6b0eb2fc1e7,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-workflow9jg2q/series-workflow9jg2q-convert-artifact-456790082/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": "587e32d8-2cad-47d5-a104-50c621897ebf", "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-workflow9jg2q/series-workflow9jg2q-build-action-1312342678/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:09:59 +0000 UTC FinishedAt: 2026-07-02 07:48:06 +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:*1b34ae5d-9a13-482a-929d-b6b0eb2fc1e7,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-workflow9jg2q/series-workflow9jg2q-convert-artifact-456790082/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": "587e32d8-2cad-47d5-a104-50c621897ebf", "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-workflow9jg2q/series-workflow9jg2q-build-action-1312342678/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:48:16 +0000 UTC FinishedAt: 2026-07-02 07:48:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:48:16 +0000 UTC FinishedAt: 2026-07-02 07:48:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:48:16 +0000 UTC FinishedAt: 2026-07-02 07:50:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:48:16 +0000 UTC FinishedAt: 2026-07-02 07:50:09 +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:*587e32d8-2cad-47d5-a104-50c621897ebf,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-workflow9jg2q/series-workflow9jg2q-build-action-1312342678/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-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:50:19 +0000 UTC FinishedAt: 2026-07-02 10:53:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:50:19 +0000 UTC FinishedAt: 2026-07-02 10:53:35 +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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"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:*9f864734-77e9-4f59-8c5b-0ec242223fee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*587e32d8-2cad-47d5-a104-50c621897ebf,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-workflow9jg2q/series-workflow9jg2q-build-action-3678381161/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-workflow9jg2q/series-workflow9jg2q-build-action-1312342678/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:50:19 +0000 UTC FinishedAt: 2026-07-02 07:50:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:50:19 +0000 UTC FinishedAt: 2026-07-02 07:50:29 +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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"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-workflow9jg2q/series-workflow9jg2q-convert-artifact-885462647/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:50:19 +0000 UTC FinishedAt: 2026-07-02 07:50:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:50:19 +0000 UTC FinishedAt: 2026-07-02 07:50:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:50:19 +0000 UTC FinishedAt: 2026-07-02 07:50:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:50:39 +0000 UTC FinishedAt: 2026-07-02 10:53:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jg2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"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":["__udp4_lib_mcast_deliver","__udp6_lib_mcast_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d6e81529749190123aa0040626c7e5dbc20fdc9a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPGRE","NET_IPGRE_BROADCAST","IPV6_GRE"],"series_id":"bd198228-1dbd-456b-b0d5-4a321024bae5","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-07-02 07:50:39 +0000 UTC FinishedAt: 2026-07-02 10:53:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9f864734-77e9-4f59-8c5b-0ec242223fee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*587e32d8-2cad-47d5-a104-50c621897ebf,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-workflow9jg2q/series-workflow9jg2q-build-action-3678381161/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-workflow9jg2q/series-workflow9jg2q-build-action-1312342678/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-workflow9jg2q/series-workflow9jg2q-convert-artifact-885462647/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,}