Name: series-workflowv5wnt Phase: Succeeded StartedAt: 2026-09-10 10:04:23 +0000 UTC FinishedAt: 2026-09-10 14:09:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[0] Phase: Succeeded StartedAt: 2026-09-10 10:04:23 +0000 UTC FinishedAt: 2026-09-10 10:25:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 10:04:23 +0000 UTC FinishedAt: 2026-09-10 10:25:57 +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": "f217004a40c49e787372e798785aecb983828d35", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "IPV6" ], "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": "f217004a40c49e787372e798785aecb983828d35", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "IPV6" ], "series_id": "b84fffb3-9301-459e-8bc7-b9f31c3f4571" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_forward", "ip6_forward", "ipv6_rthdr_rcv", "ipv6_srh_rcv", "ipv6_rpl_srh_rcv" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX2ZvcndhcmQmIzM0OywKICAgICYjMzQ7aXA2X2ZvcndhcmQmIzM0OywKICAgICYjMzQ7aXB2Nl9ydGhkcl9yY3YmIzM0OywKICAgICYjMzQ7aXB2Nl9zcmhfcmN2JiMzNDssCiAgICAmIzM0O2lwdjZfcnBsX3NyaF9yY3YmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoYFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERURgKSBpbiBgaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhgIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBmb3J3YXJkaW5nIGFuZCByb3V0aW5nIGhlYWRlciBwYXJzaW5nIHBhdGhzIChgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGBpcHY2X3NyaF9yY3ZgLCBgaXB2Nl9ycGxfc3JoX3JjdmAsIGBpcHY2X3J0aGRyX3JjdmApIHRvIHVzZSB0aGlzIHNwZWNpZmljIHJlYXNvbiB3aGVuIGRyb3BwaW5nIHBhY2tldHMgZHVlIHRvIFRUTC9ob3AtbGltaXQgZXhwaXJhdGlvbi5cblxuVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0IGNvcGllcyB0byB1c2VyIHNwYWNlLCBhbHRlcmF0aW9ucyB0byBidWZmZXIgYm91bmRzL2xlbmd0aHMsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoZSBjaGFuZ2VzIHN0cmljdGx5IHBhc3MgY29tcGlsZS10aW1lIGVudW0gY29uc3RhbnRzIHRvIGBrZnJlZV9za2JfcmVhc29uYC4gQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgdG8gcmVwb3J0IHRoaXMgcmVhc29uIHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhhNGMxNGRhNmIzMTcwY2RlYzlhNGRlZGZlOWFhNTYxNTYwZTM4NTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMDoyNTowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXG5pbmRleCAyZjMxMmQxZjY3ZDY5Li4xMmY5MDk2NTE1OTEyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXG5AQCAtOTMsNiAmIzQzOzkzLDcgQEBcbiBcdEZOKElQX0lOVkFMSURfU09VUkNFKVx0XHRcXFxuIFx0Rk4oSVBfTE9DQUxORVQpXHRcdFx0XFxcbiBcdEZOKElQX0lOVkFMSURfREVTVClcdFx0XFxcbiYjNDM7XHRGTihJUF9UVExfRVhDRUVERUQpXHRcdFxcXG4gXHRGTihQS1RfVE9PX0JJRylcdFx0XHRcXFxuIFx0Rk4oRFVQX0ZSQUcpXHRcdFx0XFxcbiBcdEZOKEZSQUdfUkVBU01fVElNRU9VVClcdFx0XFxcbkBAIC00NzQsNiAmIzQzOzQ3NSwxMSBAQCBlbnVtIHNrYl9kcm9wX3JlYXNvbiB7XG4gXHQgKiAxKSBkZXN0IGlwIGlzIDBcbiBcdCAqL1xuIFx0U0tCX0RST1BfUkVBU09OX0lQX0lOVkFMSURfREVTVCxcbiYjNDM7XHQvKipcbiYjNDM7XHQgKiBAU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRDogSVB2NCBUVEwgb3IgSVB2NiBob3AgbGltaXQgXHUwMDNjPSAxXG4mIzQzO1x0ICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUylcbiYjNDM7XHQgKi9cbiYjNDM7XHRTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVELFxuIFx0LyoqXG4gXHQgKiBAU0tCX0RST1BfUkVBU09OX1BLVF9UT09fQklHOiBwYWNrZXQgc2l6ZSBpcyB0b28gYmlnIChtYXliZSBleGNlZWQgdGhlXG4gXHQgKiBNVFUpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jIGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG5pbmRleCA4YjY1ZjEyNTgzZWI2Li5iMjQyNTYxZDM3ZTczIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF9mb3J3YXJkLmNcbkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXG4gXHQvKiBUZWxsIHRoZSBzZW5kZXIgaXRzIHBhY2tldCBkaWVkLi4uICovXG4gXHRfX0lQX0lOQ19TVEFUUyhuZXQsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdGljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTtcbi1cdFNLQl9EUl9TRVQocmVhc29uLCBJUF9JTkhEUik7XG4mIzQzO1x0U0tCX0RSX1NFVChyZWFzb24sIElQX1RUTF9FWENFRURFRCk7XG4gZHJvcDpcbiBcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCByZWFzb24pO1xuIFx0cmV0dXJuIE5FVF9SWF9EUk9QO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2V4dGhkcnMuYyBiL25ldC9pcHY2L2V4dGhkcnMuY1xuaW5kZXggMDlhNDU1MmY3ZjA4YS4uNTUzOTFlMmU1NjEyOSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2V4dGhkcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvZXh0aGRycy5jXG5AQCAtNDY0LDcgJiM0Mzs0NjQsNyBAQCBzdGF0aWMgaW50IGlwdjZfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0XHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCxcbiBcdFx0XHRcdCAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0fVxuIFx0XHRpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdC0tO1xuQEAgLTYyMyw3ICYjNDM7NjIzLDcgQEAgc3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG4gXHRcdFx0X19JUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xuIFx0XHRcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELFxuIFx0XHRcdFx0ICAgIElDTVBWNl9FWENfSE9QTElNSVQsIDApO1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdFx0cmV0dXJuIC0xO1xuIFx0XHR9XG4gXHRcdGlwdjZfaGRyKHNrYiktXHUwMDNlaG9wX2xpbWl0LS07XG5AQCAtODE1LDcgJiM0Mzs4MTUsNyBAQCBzdGF0aWMgaW50IGlwdjZfcnRoZHJfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0X19JUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xuIFx0XHRcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELCBJQ01QVjZfRVhDX0hPUExJTUlULFxuIFx0XHRcdFx0ICAgIDApO1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdFx0cmV0dXJuIC0xO1xuIFx0XHR9XG4gXHRcdGlwdjZfaGRyKHNrYiktXHUwMDNlaG9wX2xpbWl0LS07XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X291dHB1dC5jIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5pbmRleCA5NmVlM2RlNTVmOTMwLi5kZGFiYTBhZWJjYjExIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbkBAIC01NzcsNyAmIzQzOzU3Nyw3IEBAIGludCBpcDZfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XG4gXHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcbi1cdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9JTkhEUik7XG4mIzQzO1x0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdHJldHVybiAtRVRJTUVET1VUO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX2ZvcndhcmQmIzM0OywKICAgICYjMzQ7aXA2X2ZvcndhcmQmIzM0OywKICAgICYjMzQ7aXB2Nl9ydGhkcl9yY3YmIzM0OywKICAgICYjMzQ7aXB2Nl9zcmhfcmN2JiMzNDssCiAgICAmIzM0O2lwdjZfcnBsX3NyaF9yY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIHRvIHJlcG9ydCB0aGlzIHJlYXNvbiB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YTRjMTRkYTZiMzE3MGNkZWM5YTRkZWRmZTlhYTU2MTU2MGUzODUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMTA6MjU6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCmluZGV4IDJmMzEyZDFmNjdkNjkuLjEyZjkwOTY1MTU5MTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCkBAIC05Myw2ICYjNDM7OTMsNyBAQAogCUZOKElQX0lOVkFMSURfU09VUkNFKQkJXAogCUZOKElQX0xPQ0FMTkVUKQkJCVwKIAlGTihJUF9JTlZBTElEX0RFU1QpCQlcCiYjNDM7CUZOKElQX1RUTF9FWENFRURFRCkJCVwKIAlGTihQS1RfVE9PX0JJRykJCQlcCiAJRk4oRFVQX0ZSQUcpCQkJXAogCUZOKEZSQUdfUkVBU01fVElNRU9VVCkJCVwKQEAgLTQ3NCw2ICYjNDM7NDc1LDExIEBAIGVudW0gc2tiX2Ryb3BfcmVhc29uIHsKIAkgKiAxKSBkZXN0IGlwIGlzIDAKIAkgKi8KIAlTS0JfRFJPUF9SRUFTT05fSVBfSU5WQUxJRF9ERVNULAomIzQzOwkvKioKJiM0MzsJICogQFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQ6IElQdjQgVFRMIG9yIElQdjYgaG9wIGxpbWl0ICZsdDs9IDEKJiM0MzsJICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUykKJiM0MzsJICovCiYjNDM7CVNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQsCiAJLyoqCiAJICogQFNLQl9EUk9QX1JFQVNPTl9QS1RfVE9PX0JJRzogcGFja2V0IHNpemUgaXMgdG9vIGJpZyAobWF5YmUgZXhjZWVkIHRoZQogCSAqIE1UVSkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2ZvcndhcmQuYyBiL25ldC9pcHY0L2lwX2ZvcndhcmQuYwppbmRleCA4YjY1ZjEyNTgzZWI2Li5iMjQyNTYxZDM3ZTczIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9mb3J3YXJkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jCkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpCiAJLyogVGVsbCB0aGUgc2VuZGVyIGl0cyBwYWNrZXQgZGllZC4uLiAqLwogCV9fSVBfSU5DX1NUQVRTKG5ldCwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpOwogCWljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTsKLQlTS0JfRFJfU0VUKHJlYXNvbiwgSVBfSU5IRFIpOwomIzQzOwlTS0JfRFJfU0VUKHJlYXNvbiwgSVBfVFRMX0VYQ0VFREVEKTsKIGRyb3A6CiAJa2ZyZWVfc2tiX3JlYXNvbihza2IsIHJlYXNvbik7CiAJcmV0dXJuIE5FVF9SWF9EUk9QOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZXh0aGRycy5jIGIvbmV0L2lwdjYvZXh0aGRycy5jCmluZGV4IDA5YTQ1NTJmN2YwOGEuLjU1MzkxZTJlNTYxMjkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2V4dGhkcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9leHRoZHJzLmMKQEAgLTQ2NCw3ICYjNDM7NDY0LDcgQEAgc3RhdGljIGludCBpcHY2X3NyaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X2RldiAqaWRldikKIAkJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAkJCWljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELAogCQkJCSAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTsKLQkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCQlpcHY2X2hkcihza2IpLSZndDtob3BfbGltaXQtLTsKQEAgLTYyMyw3ICYjNDM7NjIzLDcgQEAgc3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCiAJCQlfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7CiAJCQlpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwKIAkJCQkgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7Ci0JCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCQlrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIAkJaXB2Nl9oZHIoc2tiKS0mZ3Q7aG9wX2xpbWl0LS07CkBAIC04MTUsNyAmIzQzOzgxNSw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ydGhkcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAkJCWljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELCBJQ01QVjZfRVhDX0hPUExJTUlULAogCQkJCSAgICAwKTsKLQkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCQlpcHY2X2hkcihza2IpLSZndDtob3BfbGltaXQtLTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwppbmRleCA5NmVlM2RlNTVmOTMwLi5kZGFiYTBhZWJjYjExIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC01NzcsNyAmIzQzOzU3Nyw3IEBAIGludCBpcDZfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7CiAJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAotCQlrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX0lOSERSKTsKJiM0MzsJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0MjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogVFRMIEV4Y2VlZGVkIERyb3AgUmVhc29uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgaW50cm9kdWNpbmcgYSBuZXcgU0tCIGRyb3AgcmVhc29uLCBzcGVjaWZpY2FsbHkgZm9yIHdoZW4gdGhlIElQIFRpbWUgVG8gTGl2ZSAoVFRMKSBpcyBleGNlZWRlZC4gSXQgbG9va3MgbGlrZSB0aGUgY29uc3RhbnQgYFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERURgIGlzIGJlaW5nIGRlZmluZWQsIHdoaWNoIG1hcHMgdG8gYElQX1RUTF9FWENFRURFRGAgaW4gYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYC4gVGhhdCBtYWtlcyBzZW5zZTsgYSBzdGFuZGFyZGl6ZWQgZHJvcCByZWFzb24gaXMgYWx3YXlzIGdvb2QgZm9yIGRlYnVnZ2luZyBhbmQgbW9uaXRvcmluZy4KCk15IG5leHQgbW92ZSBpcyB0byBjaGVjayB0aGUgY29kZSBjaGFuZ2VzIHRoZW1zZWx2ZXMgYW5kIG1ha2Ugc3VyZSBLY29uZmlncyBhbmQgZnVuY3Rpb25zIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBkcm9wIHJlYXNvbi4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQgYnkgdGhpcyBwYXRjaC4gT2theSwgaXQmIzM5O3MgdG91Y2hpbmcgYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYCwgYW5kIHRoZW4gdGhlIGNvcmUgZm9yd2FyZGluZyBhbmQgcHJvY2Vzc2luZyBtb2R1bGVzOiBgbmV0L2lwdjQvaXBfZm9yd2FyZC5jYCwgYG5ldC9pcHY2L2V4dGhkcnMuY2AsIGFuZCBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyBkZWZpbml0ZWx5IGFmZmVjdGluZyB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiBJUHY0IGZvcndhcmRpbmcsIHNvbWUgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIGFuZCBmb3J3YXJkaW5nLiBUaGlzIGlzIGltcG9ydGFudCBzdHVmZi4gSSB0aGluayAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IHNob3VsZCBiZSBzZXQgdG8gdHJ1ZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZXNlIGZ1bmN0aW9ucyBpbiBkZXRhaWw6CjEuICBgaXBfZm9yd2FyZGAgaW4gYG5ldC9pcHY0L2lwX2ZvcndhcmQuY2AKMi4gIGBpcHY2X3NyaF9yY3ZgIGluIGBuZXQvaXB2Ni9leHRoZHJzLmNgCjMuICBgaXB2Nl9ycGxfc3JoX3JjdmAgaW4gYG5ldC9pcHY2L2V4dGhkcnMuY2AKNC4gIGBpcHY2X3J0aGRyX3JjdmAgaW4gYG5ldC9pcHY2L2V4dGhkcnMuY2AKNS4gIGBpcDZfZm9yd2FyZGAgaW4gYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2AKCkZpbmFsbHksIGxldCBtZSBzZWUgaWYgdGhlc2UgU1JIIG9yIFJQTCBjb25maWdzIG5lZWQgYW55dGhpbmcgc3BlY2lhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUFY2X1NFRzYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTI3OT1jb25maWcgSVBWNl9QSU1TTV9WMlxuLS1cbm5ldC9pcHY2L0tjb25maWctMjg1LVxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yODctXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yOTktXG5uZXQvaXB2Ni9LY29uZmlnOjMwMDpjb25maWcgSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L0tjb25maWctMzAxLVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSE1BQyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zMTEtXG5uZXQvaXB2Ni9LY29uZmlnOjMxMjpjb25maWcgSVBWNl9TRUc2X0JQRlxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXHRkZWZfYm9vbCB5XG5uZXQvaXB2Ni9LY29uZmlnOjMxNDpcdGRlcGVuZHMgb24gSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxNS1cdGRlcGVuZHMgb24gSVBWNiA9IHlcbi0tXG5uZXQvaXB2Ni9NYWtlZmlsZT0yND1pcHY2LSQoQ09ORklHX05FVExBQkVMKSAmIzQzOz0gY2FsaXBzby5vXG5uZXQvaXB2Ni9NYWtlZmlsZToyNTppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTCkgJiM0Mzs9IHNlZzZfaXB0dW5uZWwubyBzZWc2X2xvY2FsLm9cbm5ldC9pcHY2L01ha2VmaWxlOjI2OmlwdjYtJChDT05GSUdfSVBWNl9TRUc2X0hNQUMpICYjNDM7PSBzZWc2X2htYWMub1xubmV0L2lwdjYvTWFrZWZpbGUtMjctaXB2Ni0kKENPTkZJR19JUFY2X1JQTF9MV1RVTk5FTCkgJiM0Mzs9IHJwbF9pcHR1bm5lbC5vXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0xODE9c3RhdGljIHN0cnVjdCBpcHY2X2RldmNvbmYgaXB2Nl9kZXZjb25mIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yMjktXHQuc2VnNl9lbmFibGVkXHRcdD0gMCxcbm5ldC9pcHY2L2FkZHJjb25mLmM6MjMwOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjMxLVx0LnNlZzZfcmVxdWlyZV9obWFjXHQ9IDAsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNDY9c3RhdGljIHN0cnVjdCBpcHY2X2RldmNvbmYgaXB2Nl9kZXZjb25mX2RmbHQgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI5NC1cdC5zZWc2X2VuYWJsZWRcdFx0PSAwLFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyOTU6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvYWRkcmNvbmYuYy0yOTYtXHQuc2VnNl9yZXF1aXJlX2htYWNcdD0gMCxcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTU2Njk9c3RhdGljIHZvaWQgaXB2Nl9zdG9yZV9kZXZjb25mKGNvbnN0IHN0cnVjdCBpcHY2X2RldmNvbmYgKmNuZixcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTU3NDMtXHRhcnJheVtERVZDT05GX1NFRzZfRU5BQkxFRF0gPSBSRUFEX09OQ0UoY25mLVx1MDAzZXNlZzZfZW5hYmxlZCk7XG5uZXQvaXB2Ni9hZGRyY29uZi5jOjU3NDQ6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvYWRkcmNvbmYuYy01NzQ1LVx0YXJyYXlbREVWQ09ORl9TRUc2X1JFUVVJUkVfSE1BQ10gPSBSRUFEX09OQ0UoY25mLVx1MDAzZXNlZzZfcmVxdWlyZV9obWFjKTtcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTY4NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgYWRkcmNvbmZfc3lzY3RsW10gPSB7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy03MjMwLVx0fSxcbm5ldC9pcHY2L2FkZHJjb25mLmM6NzIzMTojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTcyMzItXHR7XG4tLVxubmV0L2lwdjYvZXh0aGRycy5jLTQ3LSNpbmNsdWRlIFx1MDAzY25ldC9zZWc2LmhcdTAwM2Vcbm5ldC9pcHY2L2V4dGhkcnMuYzo0ODojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9leHRoZHJzLmMtNDktI2luY2x1ZGUgXHUwMDNjbmV0L3NlZzZfaG1hYy5oXHUwMDNlXG4tLVxubmV0L2lwdjYvZXh0aGRycy5jPTM3MT1zdGF0aWMgaW50IGlwdjZfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuLS1cbm5ldC9pcHY2L2V4dGhkcnMuYy0zODgtXG5uZXQvaXB2Ni9leHRoZHJzLmM6Mzg5OiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L2V4dGhkcnMuYy0zOTAtXHRpZiAoIXNlZzZfaG1hY192YWxpZGF0ZV9za2Ioc2tiKSkge1xuLS1cbm5ldC9pcHY2L2V4dGhkcnMuYz0xMTI0PXN0YXRpYyB1OCBpcHY2X3B1c2hfcnRoZHI0KHN0cnVjdCBza19idWZmICpza2IsIHU4IHByb3RvLFxuLS1cbm5ldC9pcHY2L2V4dGhkcnMuYy0xMTUyLVxubmV0L2lwdjYvZXh0aGRycy5jOjExNTM6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvZXh0aGRycy5jLTExNTQtXHRpZiAoc3JfaGFzX2htYWMoc3JfcGhkcikpIHtcbi0tXG5uZXQvaXB2Ni9zZWc2LmM9MTQwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBzZWc2X2dlbmxfcG9saWN5W1NFRzZfQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L2lwdjYvc2VnNi5jLTE1MC1cbm5ldC9pcHY2L3NlZzYuYzoxNTE6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvc2VnNi5jLTE1Mi1cbi0tXG5uZXQvaXB2Ni9zZWc2LmM9MjY2PXN0YXRpYyBpbnQgc2VnNl9nZW5sX2dldF90dW5zcmMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvaXB2Ni9zZWc2LmMtMjk5LVxubmV0L2lwdjYvc2VnNi5jOjMwMDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9zZWc2LmMtMzAxLVxuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yNS0jaW5jbHVkZSBcdTAwM2NuZXQvZHN0X2NhY2hlLmhcdTAwM2Vcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzoyNjojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMjctI2luY2x1ZGUgXHUwMDNjbmV0L3NlZzZfaG1hYy5oXHUwMDNlXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTE0MT1zdGF0aWMgaW50IF9fc2VnNl9kb19zcmhfZW5jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwdjZfc3JfaGRyICpvc3JoLFxuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yMDEtXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6MjAyOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yMDMtXHRpZiAoc3JfaGFzX2htYWMoaXNyaCkpIHtcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MjI1PXN0YXRpYyBpbnQgc2VnNl9kb19zcmhfZW5jYXBfcmVkKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTMyOC1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzozMjk6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTMzMC1cdGlmICh1bmxpa2VseSghc2tpcF9zcmggXHUwMDI2XHUwMDI2IHNyX2hhc19obWFjKGlzcmgpKSkge1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz0zNDU9c3RhdGljIGludCBfX3NlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTM4MC1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzozODE6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTM4Mi1cdGlmIChzcl9oYXNfaG1hYyhpc3JoKSkge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNy0jaW5jbHVkZSBcdTAwM2NuZXQvaXBfdHVubmVscy5oXHUwMDNlXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6Mjg6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI5LSNpbmNsdWRlIFx1MDAzY25ldC9zZWc2X2htYWMuaFx1MDAzZVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yMTY9c3RhdGljIHN0cnVjdCBpcHY2X3NyX2hkciAqZ2V0X2FuZF92YWxpZGF0ZV9zcmgoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjIzLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjIyNDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjI1LVx0aWYgKCFzZWc2X2htYWNfdmFsaWRhdGVfc2tiKHNrYikpXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTIzMj1zdGF0aWMgYm9vbCBkZWNhcF9hbmRfdmFsaWRhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByb3RvKVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNDAtXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MjQxOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNDItXHRpZiAoc3JoIFx1MDAyNlx1MDAyNiAhc2VnNl9obWFjX3ZhbGlkYXRlX3NrYihza2IpKVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz03NTg9c3RhdGljIGludCBlbmRfZmx2ODk4Nl9jb3JlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtNzY5LVx0cGluZm8gPSBzZWc2X2dldF9zcmhfcGt0aW5mbyhzcmgpO1xubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjc3MDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtNzcxLVx0aWYgKHNyaCBcdTAwMjZcdTAwMjYgIXNlZzZfaG1hY192YWxpZGF0ZV9za2Ioc2tiKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gSVB2NiBFeHRlbnNpb24gSGVhZGVyIEhhbmRsaW5nKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgaGFuZGxpbmcgb2YgSVB2NiBleHRlbnNpb24gaGVhZGVycywgc3BlY2lmaWNhbGx5IHRoZSByb3V0aW5nIGhlYWRlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBrZXJuZWwgY29kZS4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGZvciByb3V0aW5nIGhlYWRlcnMgbGlrZSBUeXBlIDAsIFNlZ21lbnQgUm91dGluZyBIZWFkZXIsIGFuZCBSUEwtc3BlY2lmaWMgU1JILiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBjb21waWxhdGlvbiBhbmQgaW52b2NhdGlvbiBvZiBgaXB2Nl9ydGhkcl9yY3ZgLCBgaXB2Nl9zcmhfcmN2YCwgYW5kIGBpcHY2X3JwbF9zcmhfcmN2YC4gSSBmaWd1cmUgdGhhdCBgbmV0L2lwdjYvZXh0aGRycy5jYCBpcyB0aGUgcHJpbWUgbG9jYXRpb24gdG8gZmluZCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBob29rZWQgdXAgYW5kIGNhbGxlZCBkdXJpbmcgcGFja2V0IHJlY2VwdGlvbi4gVGhpcyBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgY29tcGlsZWQgaW50byB0aGUgb3ZlcmFsbCByZWNlcHRpb24gcGF0aC4gVGltZSB0byBzZWUgd2hhdCB0aGUgc291cmNlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY2X3J0aGRyX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2V4dGhkcnMuYz00ODE9c3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG4tLVxubmV0L2lwdjYvZXh0aGRycy5jLTY0NC0vKiBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrKCkgKi9cbm5ldC9pcHY2L2V4dGhkcnMuYzo2NDU6c3RhdGljIGludCBpcHY2X3J0aGRyX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjYvZXh0aGRycy5jLTY0Ni17XG4tLVxubmV0L2lwdjYvZXh0aGRycy5jPTg0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGluZXQ2X3Byb3RvY29sIHJ0aGRyX3Byb3RvY29sID0ge1xubmV0L2lwdjYvZXh0aGRycy5jOjg0MTpcdC5oYW5kbGVyXHQ9XHRpcHY2X3J0aGRyX3Jjdixcbm5ldC9pcHY2L2V4dGhkcnMuYy04NDItXHQuZmxhZ3NcdFx0PVx0SU5FVDZfUFJPVE9fTk9QT0xJQ1ksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAyMQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgSVB2NiBSb3V0aW5nIEhlYWRlciBIYW5kbGluZyBpbiB0aGUgS2VybmVsKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIElQdjYgcm91dGluZyBoZWFkZXIgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgbmV0L2lwdjYvZXh0aGRycy5jYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBoYW5kbGluZyBvZiB0aGVzZSByb3V0aW5nIGhlYWRlcnMsIHNvIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIHRoZW06IGBpcHY2X3J0aGRyX3JjdmAsIGBpcHY2X3NyaF9yY3ZgLCBhbmQgYGlwdjZfcnBsX3NyaF9yY3ZgLiBJIGJlbGlldmUgYGlwdjZfcnRoZHJfcmN2YCBpcyB0aGUgY2VudHJhbCBwb2ludCBoZXJlLCB0aGUgaGFuZGxlciBmb3IgdGhlIElQdjYgcm91dGluZyBoZWFkZXIgaXRzZWxmLCByZWdpc3RlcmVkLCBJIHRoaW5rLCB1bmRlciBgcnRoZHJfcHJvdG9jb2xgLgoKTm93LCBpZiBtZW1vcnkgc2VydmVzLCB3aXRoaW4gYGlwdjZfcnRoZHJfcmN2YCwgdGhlIGNvbnRyb2wgZmxvdyBicmFuY2hlcyBiYXNlZCBvbiB0aGUgcm91dGluZyBoZWFkZXIgdHlwZS4gIEZvciB0eXBlIGBJUFY2X1NSQ1JUX1RZUEVfNGAsIHdlIHNob3VsZCBiZSBjYWxsaW5nIGBpcHY2X3NyaF9yY3ZgLiBTaW1pbGFybHksIGBJUFY2X1NSQ1JUX1RZUEVfM2AgcHJvYmFibHkgY2FsbHMgYGlwdjZfcnBsX3NyaF9yY3ZgLiBPdGhlciByb3V0aW5nIGhlYWRlciB0eXBlcywgc3VjaCBhcyBgSVBWNl9TUkNSVF9UWVBFXzBgIHNob3VsZCBiZSBoYW5kbGVkIGRpcmVjdGx5IHdpdGhpbiBgaXB2Nl9ydGhkcl9yY3ZgLgoKSnVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cywgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgdGhhdCBgZXh0aGRycy5vYCBpcyBpbmRlZWQgYnVpbHQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuICBBIHF1aWNrIGNoZWNrIG9mIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIHNob3VsZCBjb25maXJtIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0aGRycy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cdGFmX2luZXQ2Lm8gYW55Y2FzdC5vIGlwNl9vdXRwdXQubyBpcDZfaW5wdXQubyBhZGRyY29uZi5vIFxcXG4tLVxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTI6XHRcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTMtXHRcdHVkcF9vZmZsb2FkLm8gc2VnNi5vIGZpYjZfbm90aWZpZXIubyBycGwubyBpb2FtNi5vXG4tLVxubmV0L2lwdjYvTWFrZWZpbGU9NDc9b2JqLSQoQ09ORklHX0lORVQpICYjNDM7PSBvdXRwdXRfY29yZS5vIHByb3RvY29sLm8gXFxcbm5ldC9pcHY2L01ha2VmaWxlOjQ4Olx0XHRcdGlwNl9vZmZsb2FkLm8gZXh0aGRyc19vZmZsb2FkLm9cbm5ldC9pcHY2L01ha2VmaWxlLTQ5LVxuLS1cbm5ldC9pcHY2L2V4dGhkcnNfb2ZmbG9hZC5jPTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X29mZmxvYWQgaGJoX29mZmxvYWQgPSB7XG4tLVxubmV0L2lwdjYvZXh0aGRyc19vZmZsb2FkLmMtMjItXG5uZXQvaXB2Ni9leHRoZHJzX29mZmxvYWQuYzoyMzppbnQgX19pbml0IGlwdjZfZXh0aGRyc19vZmZsb2FkX2luaXQodm9pZClcbm5ldC9pcHY2L2V4dGhkcnNfb2ZmbG9hZC5jLTI0LXtcbi0tXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jPTQzNz1zdGF0aWMgaW50IF9faW5pdCBpcHY2X29mZmxvYWRfaW5pdCh2b2lkKVxuLS1cbm5ldC9pcHY2L2lwNl9vZmZsb2FkLmMtNDQxLVx0XHRwcl9jcml0KFwmIzM0OyVzOiBDYW5ub3QgYWRkIFRDUCBwcm90b2NvbCBvZmZsb2FkXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jOjQ0MjpcdGlmIChpcHY2X2V4dGhkcnNfb2ZmbG9hZF9pbml0KCkgXHUwMDNjIDApXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jLTQ0My1cdFx0cHJfY3JpdChcJiMzNDslczogQ2Fubm90IGFkZCBFWFRIRFJTIHByb3RvY29sIG9mZmxvYWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi0tXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5oLTktXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5oOjEwOmludCBpcHY2X2V4dGhkcnNfb2ZmbG9hZF9pbml0KHZvaWQpO1xubmV0L2lwdjYvaXA2X29mZmxvYWQuaC0xMS1pbnQgdWRwdjZfb2ZmbG9hZF9pbml0KHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNjMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgS2VybmVsIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIG5ldHdvcmsgbW9kdWxlcyBhcmUgYnVpbHQgd2l0aGluIHRoZSBrZXJuZWwuIEkgc2VlIHRoYXQgYGV4dGhkcnMub2AgYW5kIGBpcDZfb3V0cHV0Lm9gIGFyZSBwYXJ0IG9mIHRoZSBgaXB2Ni15YCB0YXJnZXQsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRoZXkmIzM5O3JlIGNsZWFybHkgSVB2Ni1yZWxhdGVkLCBhbmQgdGhhdCB3aG9sZSBzZXQgaXMgZW5hYmxlZCB3aGVuIGBDT05GSUdfSVBWNmAgaXMgc2V0LiBUaGVuLCBJJiMzOTttIG5vdGluZyB0aGF0IGBpcF9mb3J3YXJkLm9gIGlzIGxvY2F0ZWQgaW4gdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgYW5kIGl0IGZhbGxzIHVuZGVyIGVpdGhlciBgQ09ORklHX0lORVRgIG9yIGBDT05GSUdfTkVUYC4gSXTigJlzIHByZXR0eSBzdGFuZGFyZCBob3cgdGhlIElQdjQgZm9yd2FyZGluZyBtb2R1bGUgaXMgaGFuZGxlZC4gVG8gZmlndXJlIG91dCB0aGUgZGV0YWlscyBvZiB3aGF0IGdldHMgYnVpbHQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQgTWFrZWZpbGUgZGlyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX2ZvcndhcmRcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlOjc6XHQgICAgIGlwX2lucHV0Lm8gaXBfZnJhZ21lbnQubyBpcF9mb3J3YXJkLm8gaXBfb3B0aW9ucy5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS04LVx0ICAgICBpcF9vdXRwdXQubyBpcF9zb2NrZ2x1ZS5vIGluZXRfaGFzaHRhYmxlcy5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MzYKCQkJCQkJCW91dHB1dDogMTUxCgkJCQkJCQl0aG91Z2h0czogNzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE5ldHdvcmsgRm9yd2FyZGluZyBhbmQgUm91dGluZyBIZWFkZXIgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSYjMzk7cyBteSBicmVha2Rvd24uIFRoZSBjaGFuZ2VzIHNlZW0gY2VudGVyZWQgYXJvdW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGFja2V0IGZvcndhcmRpbmcgYW5kIHJvdXRpbmcgaGVhZGVycywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBUVEwvSG9wIExpbWl0IGV4cGlyYXRpb24uIEkgaW1tZWRpYXRlbHkgbm90ZWQgdGhhdCBgSU5FVGAgaXMgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgYElQVjZgIGlzLCBvZiBjb3Vyc2UsIHJlbGF0ZWQgdG8gSVB2NiBzdXBwb3J0LgoKSSBkdWcgaW50byB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlOgoKMS4gIGBpcF9mb3J3YXJkYCAoSVB2NCBmb3J3YXJkaW5nKQoyLiAgYGlwdjZfc3JoX3JjdmAgKElQdjYgU291cmNlIFJvdXRpbmcgSGVhZGVyIHByb2Nlc3NpbmcpCjMuICBgaXB2Nl9ycGxfc3JoX3JjdmAgKElQdjYgUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBwcm9jZXNzaW5nKQo0LiAgYGlwdjZfcnRoZHJfcmN2YCAoSVB2NiBSb3V0aW5nIEhlYWRlciBwcm9jZXNzaW5nKQo1LiAgYGlwNl9mb3J3YXJkYCAoSVB2NiBmb3J3YXJkaW5nKQoKSSBjaGVja2VkIGFuZCBmb3VuZCB0aGF0IGBpcF9mb3J3YXJkYCBhbmQgYGlwNl9mb3J3YXJkYCBhcmUgbm9uLXN0YXRpYyB3aGlsZSB0aGUgb3RoZXJzLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgLCBhbmQgYGlwdjZfcnRoZHJfcmN2YCwgYXJlIHN0YXRpYyBidXQgYXJlIGNhbGxlZCB2aWEgdGhlIGBydGhkcl9wcm90b2NvbGAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcGFydC4gQ29uc2lkZXJpbmcgdGhlc2UgbW9kaWZpY2F0aW9ucywgYW5kIGZyb20gdGhlIGNvbnRleHQgb2Ygd2hhdCB0aGVzZSBmdW5jdGlvbnMgKmRvKiwgSSBiZWxpZXZlIHdlIHNob3VsZCBtYXJrIHRoaXMgYXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuIEkgY2FuIGNyZWF0ZSBhIGNvbmNpc2UgYEZvY3VzU3ltYm9sc2AgbGlzdCBjb25zaXN0aW5nIG9mIHRoZSBub24tdWJpcXVpdG91cyBmdW5jdGlvbnM6IGBpcF9mb3J3YXJkYCwgYGlwNl9mb3J3YXJkYCwgYGlwdjZfcnRoZHJfcmN2YCwgYGlwdjZfc3JoX3JjdmAsIGFuZCBgaXB2Nl9ycGxfc3JoX3JjdmAuIEFsbCBvZiB0aG9zZSBhcmUgaW52b2x2ZWQgaW4gY29yZSBuZXR3b3JrIGZvcndhcmRpbmcsIHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgYW5kIFRUTC9ob3AgbGltaXQgaXNzdWVzLgoKTXkgYW5hbHlzaXMgYm9pbHMgZG93biB0byB0aGlzOgoKMS4gIGBXb3J0aEZ1enppbmdgOiBUcnVlCjIuICBgRm9jdXNTeW1ib2xzYDogYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9ydGhkcl9yY3ZgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgCjMuICBgRW5hYmxlQ29uZmlnc2A6IGBJTkVUYCwgYElQVjZgCjQuICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU0tCIGRyb3AgcmVhc29uIChgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGApIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgZXh0ZW5zaW9uIGhlYWRlciBwcm9jZXNzaW5nIHRvIHVzZSBpdCB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuCgpGaW5hbGx5LCBJIGRpZCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIGFyZ3VtZW50cyBmb3IgYHNldC1yZXN1bHRzYCBhcmUgY29ycmVjdC4gSSYjMzk7bSByZWFkeSB0byBjYWxsIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfZm9yd2FyZCYjMzQ7LAogICAgJiMzNDtpcDZfZm9yd2FyZCYjMzQ7LAogICAgJiMzNDtpcHY2X3J0aGRyX3JjdiYjMzQ7LAogICAgJiMzNDtpcHY2X3NyaF9yY3YmIzM0OywKICAgICYjMzQ7aXB2Nl9ycGxfc3JoX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgdG8gcmVwb3J0IHRoaXMgcmVhc29uIHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfZm9yd2FyZCYjMzQ7LAogICAgJiMzNDtpcDZfZm9yd2FyZCYjMzQ7LAogICAgJiMzNDtpcHY2X3J0aGRyX3JjdiYjMzQ7LAogICAgJiMzNDtpcHY2X3NyaF9yY3YmIzM0OywKICAgICYjMzQ7aXB2Nl9ycGxfc3JoX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgdG8gcmVwb3J0IHRoaXMgcmVhc29uIHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTA6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU0tCIGRyb3AgcmVhc29uIChgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGApIGluIGBpbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaGAgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IGZvcndhcmRpbmcgYW5kIHJvdXRpbmcgaGVhZGVyIHBhcnNpbmcgcGF0aHMgKGBpcF9mb3J3YXJkYCwgYGlwNl9mb3J3YXJkYCwgYGlwdjZfc3JoX3JjdmAsIGBpcHY2X3JwbF9zcmhfcmN2YCwgYGlwdjZfcnRoZHJfcmN2YCkgdG8gdXNlIHRoaXMgc3BlY2lmaWMgcmVhc29uIHdoZW4gZHJvcHBpbmcgcGFja2V0cyBkdWUgdG8gVFRML2hvcC1saW1pdCBleHBpcmF0aW9uLlxuXG5UaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3QgY29waWVzIHRvIHVzZXIgc3BhY2UsIGFsdGVyYXRpb25zIHRvIGJ1ZmZlciBib3VuZHMvbGVuZ3Rocywgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlIGNoYW5nZXMgc3RyaWN0bHkgcGFzcyBjb21waWxlLXRpbWUgZW51bSBjb25zdGFudHMgdG8gYGtmcmVlX3NrYl9yZWFzb25gLiBDb25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YTRjMTRkYTZiMzE3MGNkZWM5YTRkZWRmZTlhYTU2MTU2MGUzODUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMTA6MjU6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCmluZGV4IDJmMzEyZDFmNjdkNjkuLjEyZjkwOTY1MTU5MTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCkBAIC05Myw2ICYjNDM7OTMsNyBAQAogCUZOKElQX0lOVkFMSURfU09VUkNFKQkJXAogCUZOKElQX0xPQ0FMTkVUKQkJCVwKIAlGTihJUF9JTlZBTElEX0RFU1QpCQlcCiYjNDM7CUZOKElQX1RUTF9FWENFRURFRCkJCVwKIAlGTihQS1RfVE9PX0JJRykJCQlcCiAJRk4oRFVQX0ZSQUcpCQkJXAogCUZOKEZSQUdfUkVBU01fVElNRU9VVCkJCVwKQEAgLTQ3NCw2ICYjNDM7NDc1LDExIEBAIGVudW0gc2tiX2Ryb3BfcmVhc29uIHsKIAkgKiAxKSBkZXN0IGlwIGlzIDAKIAkgKi8KIAlTS0JfRFJPUF9SRUFTT05fSVBfSU5WQUxJRF9ERVNULAomIzQzOwkvKioKJiM0MzsJICogQFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQ6IElQdjQgVFRMIG9yIElQdjYgaG9wIGxpbWl0ICZsdDs9IDEKJiM0MzsJICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUykKJiM0MzsJICovCiYjNDM7CVNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQsCiAJLyoqCiAJICogQFNLQl9EUk9QX1JFQVNPTl9QS1RfVE9PX0JJRzogcGFja2V0IHNpemUgaXMgdG9vIGJpZyAobWF5YmUgZXhjZWVkIHRoZQogCSAqIE1UVSkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2ZvcndhcmQuYyBiL25ldC9pcHY0L2lwX2ZvcndhcmQuYwppbmRleCA4YjY1ZjEyNTgzZWI2Li5iMjQyNTYxZDM3ZTczIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9mb3J3YXJkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jCkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpCiAJLyogVGVsbCB0aGUgc2VuZGVyIGl0cyBwYWNrZXQgZGllZC4uLiAqLwogCV9fSVBfSU5DX1NUQVRTKG5ldCwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpOwogCWljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTsKLQlTS0JfRFJfU0VUKHJlYXNvbiwgSVBfSU5IRFIpOwomIzQzOwlTS0JfRFJfU0VUKHJlYXNvbiwgSVBfVFRMX0VYQ0VFREVEKTsKIGRyb3A6CiAJa2ZyZWVfc2tiX3JlYXNvbihza2IsIHJlYXNvbik7CiAJcmV0dXJuIE5FVF9SWF9EUk9QOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZXh0aGRycy5jIGIvbmV0L2lwdjYvZXh0aGRycy5jCmluZGV4IDA5YTQ1NTJmN2YwOGEuLjU1MzkxZTJlNTYxMjkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2V4dGhkcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9leHRoZHJzLmMKQEAgLTQ2NCw3ICYjNDM7NDY0LDcgQEAgc3RhdGljIGludCBpcHY2X3NyaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X2RldiAqaWRldikKIAkJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAkJCWljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELAogCQkJCSAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTsKLQkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCQlpcHY2X2hkcihza2IpLSZndDtob3BfbGltaXQtLTsKQEAgLTYyMyw3ICYjNDM7NjIzLDcgQEAgc3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCiAJCQlfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7CiAJCQlpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwKIAkJCQkgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7Ci0JCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCQlrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIAkJaXB2Nl9oZHIoc2tiKS0mZ3Q7aG9wX2xpbWl0LS07CkBAIC04MTUsNyAmIzQzOzgxNSw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ydGhkcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAkJCWljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELCBJQ01QVjZfRVhDX0hPUExJTUlULAogCQkJCSAgICAwKTsKLQkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCQlpcHY2X2hkcihza2IpLSZndDtob3BfbGltaXQtLTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwppbmRleCA5NmVlM2RlNTVmOTMwLi5kZGFiYTBhZWJjYjExIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC01NzcsNyAmIzQzOzU3Nyw3IEBAIGludCBpcDZfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7CiAJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAotCQlrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX0lOSERSKTsKJiM0MzsJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzY5CgkJCQkJCQlvdXRwdXQ6IDIwNAoJCQkJCQkJdGhvdWdodHM6IDczMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBFdmFsdWF0aW9uOiBObyBOZWVkIGZvciBEZWRpY2F0ZWQgRnV6emluZyBTZXNzaW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBzZXJpZXMgd2FycmFudHMgZmlyaW5nIHVwIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgYXNzZXNzIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBjb25jZXJucy4KCkxvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFdlJiMzOTtyZSBhZGRpbmcgYSBuZXcgZHJvcCByZWFzb24sIGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCwgaW4gYGRyb3ByZWFzb24tY29yZS5oYC4gVGhlIHBhdGNoIHRoZW4gcHJvcGFnYXRlcyB0aGlzIG5ldyBlbnVtIHZhbHVlLCByZXBsYWNpbmcgZ2VuZXJpYyBkcm9wIHJlYXNvbiBjb2RlcyBhbmQgYGtmcmVlX3NrYmAgY2FsbHMgd2l0aCBga2ZyZWVfc2tiX3JlYXNvbmAgY2FsbHMgdGhhdCBzcGVjaWZ5IHRoaXMgbmV3IHJlYXNvbi4gVGhpcyBoYXBwZW5zIGluIGBpcF9mb3J3YXJkYCwgYGlwNl9mb3J3YXJkYCwgYW5kIGEgZmV3IElQdjYgcm91dGluZyBoZWFkZXIgcHJvY2Vzc2luZyBmdW5jdGlvbnMuIFRoZSBnaXN0IGlzLCB3aGVuIGEgcGFja2V0JiMzOTtzIFRUTCBvciBob3AgbGltaXQgZXhwaXJlcywgd2UmIzM5O3JlIG5vdyBiZWluZyBtb3JlIHNwZWNpZmljIGFib3V0ICp3aHkqIGl0JiMzOTtzIGJlaW5nIGRyb3BwZWQuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gZm9yIEtNU0FOIGlzOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSBvcHBvcnR1bml0aWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBsZWFrcz8gQmFzZWQgb24gdGhlIGRpZmYsIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIG5vLiBXZSYjMzk7cmUganVzdCBhZGRpbmcgYSBuZXcgY29uc3RhbnQgYW5kIHBhc3NpbmcgaXQgYXMgYW4gYXJndW1lbnQgdG8gYGtmcmVlX3NrYl9yZWFzb25gLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSB3aGVyZSB1bmluaXRpYWxpemVkIGRhdGEgY291bGQgYmVjb21lIGFuIGlzc3VlLCBhbmQgbm8gY29uZGl0aW9uYWwgbG9naWMgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGUgbmV3IGVudW0gdmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQsIHB1cmVseSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyB0cmFjaW5nIGFuZCBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUuIFRoZSBgZHJvcHJlYXNvbi1jb3JlLmhgIGZpbGUgaXRzZWxmLCBhZnRlciBhIHF1aWNrIHNhbml0eSBjaGVjaywgY29uZmlybXMgdGhhdCB0aGUgZW51bSBhbmQgc3RyaW5nIG1hcHBpbmcgaXMgc2FmZSBmb3IgdXNlLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYSBtZXRhZGF0YSBlbmhhbmNlbWVudCBmb3IgZGVidWdnaW5nLCBub3QgYSBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgb3IgZGF0YSBmbG93IHRoYXQgY291bGQgdHJpZ2dlciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIHNlcmllcyAqZG9lcyBub3QqIHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOgoKKiAgIFRoZSBwYXRjaCAqb25seSogaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gYW5kIHVwZGF0ZXMgZXhpc3RpbmcgYGtmcmVlX3NrYl9yZWFzb25gIGNhbGxzLgoqICAgSXQgZG9lcyAqbm90KiBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGludGVyYWN0aW9ucyB3aXRoIHVzZXIgc3BhY2UsIHN0YWNrL2hlYXAgYnVmZmVyIG1hbmlwdWxhdGlvbnMsIG9yIGNvbnRyb2wgZmxvdyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBkYXRhLgoqICAgVGhlIHZhbHVlcyBhcmUgcGFzc2VkIHRvIGBrZnJlZV9za2JfcmVhc29uYCBhcyBjb21waWxlLXRpbWUgY29uc3RhbnRzLgoqICAgVGhlcmUmIzM5O3MgemVybyByaXNrIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcy4KCkkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFdlIHNob3VsZCBiZSBzYWZlIHRvIG1hcmsgdGhpcyBwYXRjaCBhcyBub3QgbmVlZGluZyBLTVNBTiBhdHRlbnRpb24uIE5vdyBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoYFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERURgKSBpbiBgaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhgIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBmb3J3YXJkaW5nIGFuZCByb3V0aW5nIGhlYWRlciBwYXJzaW5nIHBhdGhzIChgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGBpcHY2X3NyaF9yY3ZgLCBgaXB2Nl9ycGxfc3JoX3JjdmAsIGBpcHY2X3J0aGRyX3JjdmApIHRvIHVzZSB0aGlzIHNwZWNpZmljIHJlYXNvbiB3aGVuIGRyb3BwaW5nIHBhY2tldHMgZHVlIHRvIFRUTC9ob3AtbGltaXQgZXhwaXJhdGlvbi5cblxuVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0IGNvcGllcyB0byB1c2VyIHNwYWNlLCBhbHRlcmF0aW9ucyB0byBidWZmZXIgYm91bmRzL2xlbmd0aHMsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoZSBjaGFuZ2VzIHN0cmljdGx5IHBhc3MgY29tcGlsZS10aW1lIGVudW0gY29uc3RhbnRzIHRvIGBrZnJlZV9za2JfcmVhc29uYC4gQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCkgaW4gYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYCBhbmQgdXBkYXRlcyBJUHY0L0lQdjYgZm9yd2FyZGluZyBhbmQgcm91dGluZyBoZWFkZXIgcGFyc2luZyBwYXRocyAoYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgLCBgaXB2Nl9ydGhkcl9yY3ZgKSB0byB1c2UgdGhpcyBzcGVjaWZpYyByZWFzb24gd2hlbiBkcm9wcGluZyBwYWNrZXRzIGR1ZSB0byBUVEwvaG9wLWxpbWl0IGV4cGlyYXRpb24uXG5cblRoZXJlIGFyZSBubyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdCBjb3BpZXMgdG8gdXNlciBzcGFjZSwgYWx0ZXJhdGlvbnMgdG8gYnVmZmVyIGJvdW5kcy9sZW5ndGhzLCBvciBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgY2hhbmdlcyBzdHJpY3RseSBwYXNzIGNvbXBpbGUtdGltZSBlbnVtIGNvbnN0YW50cyB0byBga2ZyZWVfc2tiX3JlYXNvbmAuIENvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MDYuNjU5MDc0NTU3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkxMDIyMjkzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZvcndhcmRcIixcbiAgICBcImlwNl9mb3J3YXJkXCIsXG4gICAgXCJpcHY2X3J0aGRyX3JjdlwiLFxuICAgIFwiaXB2Nl9zcmhfcmN2XCIsXG4gICAgXCJpcHY2X3JwbF9zcmhfcmN2XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoYFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERURgKSBpbiBgaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhgIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBmb3J3YXJkaW5nIGFuZCByb3V0aW5nIGhlYWRlciBwYXJzaW5nIHBhdGhzIChgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGBpcHY2X3NyaF9yY3ZgLCBgaXB2Nl9ycGxfc3JoX3JjdmAsIGBpcHY2X3J0aGRyX3JjdmApIHRvIHVzZSB0aGlzIHNwZWNpZmljIHJlYXNvbiB3aGVuIGRyb3BwaW5nIHBhY2tldHMgZHVlIHRvIFRUTC9ob3AtbGltaXQgZXhwaXJhdGlvbi5cXG5cXG5UaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3QgY29waWVzIHRvIHVzZXIgc3BhY2UsIGFsdGVyYXRpb25zIHRvIGJ1ZmZlciBib3VuZHMvbGVuZ3Rocywgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlIGNoYW5nZXMgc3RyaWN0bHkgcGFzcyBjb21waWxlLXRpbWUgZW51bSBjb25zdGFudHMgdG8gYGtmcmVlX3NrYl9yZWFzb25gLiBDb25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIHRvIHJlcG9ydCB0aGlzIHJlYXNvbiB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjA2LjY1OTA4MDg3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3Mjk3MDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGE0YzE0ZGE2YjMxNzBjZGVjOWE0ZGVkZmU5YWE1NjE1NjBlMzg1M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMDoyNTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXFxuaW5kZXggMmYzMTJkMWY2N2Q2OS4uMTJmOTA5NjUxNTkxMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXFxuQEAgLTkzLDYgKzkzLDcgQEBcXG4gXFx0Rk4oSVBfSU5WQUxJRF9TT1VSQ0UpXFx0XFx0XFxcXFxcbiBcXHRGTihJUF9MT0NBTE5FVClcXHRcXHRcXHRcXFxcXFxuIFxcdEZOKElQX0lOVkFMSURfREVTVClcXHRcXHRcXFxcXFxuK1xcdEZOKElQX1RUTF9FWENFRURFRClcXHRcXHRcXFxcXFxuIFxcdEZOKFBLVF9UT09fQklHKVxcdFxcdFxcdFxcXFxcXG4gXFx0Rk4oRFVQX0ZSQUcpXFx0XFx0XFx0XFxcXFxcbiBcXHRGTihGUkFHX1JFQVNNX1RJTUVPVVQpXFx0XFx0XFxcXFxcbkBAIC00NzQsNiArNDc1LDExIEBAIGVudW0gc2tiX2Ryb3BfcmVhc29uIHtcXG4gXFx0ICogMSkgZGVzdCBpcCBpcyAwXFxuIFxcdCAqL1xcbiBcXHRTS0JfRFJPUF9SRUFTT05fSVBfSU5WQUxJRF9ERVNULFxcbitcXHQvKipcXG4rXFx0ICogQFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQ6IElQdjQgVFRMIG9yIElQdjYgaG9wIGxpbWl0IFxcdTAwM2M9IDFcXG4rXFx0ICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUylcXG4rXFx0ICovXFxuK1xcdFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQsXFxuIFxcdC8qKlxcbiBcXHQgKiBAU0tCX0RST1BfUkVBU09OX1BLVF9UT09fQklHOiBwYWNrZXQgc2l6ZSBpcyB0b28gYmlnIChtYXliZSBleGNlZWQgdGhlXFxuIFxcdCAqIE1UVSlcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jIGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXFxuaW5kZXggOGI2NWYxMjU4M2ViNi4uYjI0MjU2MWQzN2U3MyAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9pcF9mb3J3YXJkLmNcXG4rKysgYi9uZXQvaXB2NC9pcF9mb3J3YXJkLmNcXG5AQCAtMTc0LDcgKzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdC8qIFRlbGwgdGhlIHNlbmRlciBpdHMgcGFja2V0IGRpZWQuLi4gKi9cXG4gXFx0X19JUF9JTkNfU1RBVFMobmV0LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XFxuIFxcdGljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTtcXG4tXFx0U0tCX0RSX1NFVChyZWFzb24sIElQX0lOSERSKTtcXG4rXFx0U0tCX0RSX1NFVChyZWFzb24sIElQX1RUTF9FWENFRURFRCk7XFxuIGRyb3A6XFxuIFxcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCByZWFzb24pO1xcbiBcXHRyZXR1cm4gTkVUX1JYX0RST1A7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2V4dGhkcnMuYyBiL25ldC9pcHY2L2V4dGhkcnMuY1xcbmluZGV4IDA5YTQ1NTJmN2YwOGEuLjU1MzkxZTJlNTYxMjkgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvZXh0aGRycy5jXFxuKysrIGIvbmV0L2lwdjYvZXh0aGRycy5jXFxuQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgaW50IGlwdjZfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxcbiBcXHRcXHRcXHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XFxuIFxcdFxcdFxcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELFxcbiBcXHRcXHRcXHRcXHQgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XFxuLVxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRcXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRpcHY2X2hkcihza2IpLVxcdTAwM2Vob3BfbGltaXQtLTtcXG5AQCAtNjIzLDcgKzYyMyw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ycGxfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxcbiBcXHRcXHRcXHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XFxuIFxcdFxcdFxcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELFxcbiBcXHRcXHRcXHRcXHQgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XFxuLVxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRcXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRpcHY2X2hkcihza2IpLVxcdTAwM2Vob3BfbGltaXQtLTtcXG5AQCAtODE1LDcgKzgxNSw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ydGhkcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0XFx0X19JUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xcbiBcXHRcXHRcXHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCxcXG4gXFx0XFx0XFx0XFx0ICAgIDApO1xcbi1cXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aXB2Nl9oZHIoc2tiKS1cXHUwMDNlaG9wX2xpbWl0LS07XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xcbmluZGV4IDk2ZWUzZGU1NWY5MzAuLmRkYWJhMGFlYmNiMTEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXFxuQEAgLTU3Nyw3ICs1NzcsNyBAQCBpbnQgaXA2X2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsIElDTVBWNl9FWENfSE9QTElNSVQsIDApO1xcbiBcXHRcXHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XFxuIFxcbi1cXHRcXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX0lOSERSKTtcXG4rXFx0XFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xcbiBcXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MDcuMjc3MzQ2OTI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjY5MDQxNjA5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfZm9yd2FyZFwiLFxuICAgIFwiaXA2X2ZvcndhcmRcIixcbiAgICBcImlwdjZfcnRoZHJfcmN2XCIsXG4gICAgXCJpcHY2X3NyaF9yY3ZcIixcbiAgICBcImlwdjZfcnBsX3NyaF9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgdG8gcmVwb3J0IHRoaXMgcmVhc29uIHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YTRjMTRkYTZiMzE3MGNkZWM5YTRkZWRmZTlhYTU2MTU2MGUzODUzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMTA6MjU6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXG5pbmRleCAyZjMxMmQxZjY3ZDY5Li4xMmY5MDk2NTE1OTEyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhcbisrKyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXG5AQCAtOTMsNiArOTMsNyBAQFxuIFx0Rk4oSVBfSU5WQUxJRF9TT1VSQ0UpXHRcdFxcXG4gXHRGTihJUF9MT0NBTE5FVClcdFx0XHRcXFxuIFx0Rk4oSVBfSU5WQUxJRF9ERVNUKVx0XHRcXFxuK1x0Rk4oSVBfVFRMX0VYQ0VFREVEKVx0XHRcXFxuIFx0Rk4oUEtUX1RPT19CSUcpXHRcdFx0XFxcbiBcdEZOKERVUF9GUkFHKVx0XHRcdFxcXG4gXHRGTihGUkFHX1JFQVNNX1RJTUVPVVQpXHRcdFxcXG5AQCAtNDc0LDYgKzQ3NSwxMSBAQCBlbnVtIHNrYl9kcm9wX3JlYXNvbiB7XG4gXHQgKiAxKSBkZXN0IGlwIGlzIDBcbiBcdCAqL1xuIFx0U0tCX0RST1BfUkVBU09OX0lQX0lOVkFMSURfREVTVCxcbitcdC8qKlxuK1x0ICogQFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQ6IElQdjQgVFRMIG9yIElQdjYgaG9wIGxpbWl0IFx1MDAzYz0gMVxuK1x0ICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUylcbitcdCAqL1xuK1x0U0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCxcbiBcdC8qKlxuIFx0ICogQFNLQl9EUk9QX1JFQVNPTl9QS1RfVE9PX0JJRzogcGFja2V0IHNpemUgaXMgdG9vIGJpZyAobWF5YmUgZXhjZWVkIHRoZVxuIFx0ICogTVRVKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2ZvcndhcmQuYyBiL25ldC9pcHY0L2lwX2ZvcndhcmQuY1xuaW5kZXggOGI2NWYxMjU4M2ViNi4uYjI0MjU2MWQzN2U3MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX2ZvcndhcmQuY1xuKysrIGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG5AQCAtMTc0LDcgKzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXG4gXHQvKiBUZWxsIHRoZSBzZW5kZXIgaXRzIHBhY2tldCBkaWVkLi4uICovXG4gXHRfX0lQX0lOQ19TVEFUUyhuZXQsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdGljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTtcbi1cdFNLQl9EUl9TRVQocmVhc29uLCBJUF9JTkhEUik7XG4rXHRTS0JfRFJfU0VUKHJlYXNvbiwgSVBfVFRMX0VYQ0VFREVEKTtcbiBkcm9wOlxuIFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIHJlYXNvbik7XG4gXHRyZXR1cm4gTkVUX1JYX0RST1A7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZXh0aGRycy5jIGIvbmV0L2lwdjYvZXh0aGRycy5jXG5pbmRleCAwOWE0NTUyZjdmMDhhLi41NTM5MWUyZTU2MTI5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvZXh0aGRycy5jXG4rKysgYi9uZXQvaXB2Ni9leHRoZHJzLmNcbkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIGludCBpcHY2X3NyaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X2RldiAqaWRldilcbiBcdFx0XHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XG4gXHRcdFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsXG4gXHRcdFx0XHQgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XG4tXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0fVxuIFx0XHRpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdC0tO1xuQEAgLTYyMyw3ICs2MjMsNyBAQCBzdGF0aWMgaW50IGlwdjZfcnBsX3NyaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X2RldiAqaWRldilcbiBcdFx0XHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XG4gXHRcdFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsXG4gXHRcdFx0XHQgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XG4tXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0fVxuIFx0XHRpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdC0tO1xuQEAgLTgxNSw3ICs4MTUsNyBAQCBzdGF0aWMgaW50IGlwdjZfcnRoZHJfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0X19JUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xuIFx0XHRcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELCBJQ01QVjZfRVhDX0hPUExJTUlULFxuIFx0XHRcdFx0ICAgIDApO1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTtcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXHRcdH1cbiBcdFx0aXB2Nl9oZHIoc2tiKS1cdTAwM2Vob3BfbGltaXQtLTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbmluZGV4IDk2ZWUzZGU1NWY5MzAuLmRkYWJhMGFlYmNiMTEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbisrKyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuQEAgLTU3Nyw3ICs1NzcsNyBAQCBpbnQgaXA2X2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsIElDTVBWNl9FWENfSE9QTElNSVQsIDApO1xuIFx0XHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XG4gXG4tXHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfSU5IRFIpO1xuK1x0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdHJldHVybiAtRVRJTUVET1VUO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MDcuMjc3MzQ5NTQ4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQ2NzM1OTczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBUVEwgRXhjZWVkZWQgRHJvcCBSZWFzb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBpbnRyb2R1Y2luZyBhIG5ldyBTS0IgZHJvcCByZWFzb24sIHNwZWNpZmljYWxseSBmb3Igd2hlbiB0aGUgSVAgVGltZSBUbyBMaXZlIChUVEwpIGlzIGV4Y2VlZGVkLiBJdCBsb29rcyBsaWtlIHRoZSBjb25zdGFudCBgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGAgaXMgYmVpbmcgZGVmaW5lZCwgd2hpY2ggbWFwcyB0byBgSVBfVFRMX0VYQ0VFREVEYCBpbiBgaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhgLiBUaGF0IG1ha2VzIHNlbnNlOyBhIHN0YW5kYXJkaXplZCBkcm9wIHJlYXNvbiBpcyBhbHdheXMgZ29vZCBmb3IgZGVidWdnaW5nIGFuZCBtb25pdG9yaW5nLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGNvZGUgY2hhbmdlcyB0aGVtc2VsdmVzIGFuZCBtYWtlIHN1cmUgS2NvbmZpZ3MgYW5kIGZ1bmN0aW9ucyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuIEkgbmVlZCB0byBjb25maXJtIHRoZSBpbXBhY3Qgb2YgdGhpcyBuZXcgZHJvcCByZWFzb24uXG5cbk5vdywgbGV0J3MgcXVpY2tseSBjaGVjayB0aGUgZmlsZXMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBieSB0aGlzIHBhdGNoLiBPa2F5LCBpdCdzIHRvdWNoaW5nIGBpbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaGAsIGFuZCB0aGVuIHRoZSBjb3JlIGZvcndhcmRpbmcgYW5kIHByb2Nlc3NpbmcgbW9kdWxlczogYG5ldC9pcHY0L2lwX2ZvcndhcmQuY2AsIGBuZXQvaXB2Ni9leHRoZHJzLmNgLCBhbmQgYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2AuIFRoYXQgdGVsbHMgbWUgaXQncyBkZWZpbml0ZWx5IGFmZmVjdGluZyB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiBJUHY0IGZvcndhcmRpbmcsIHNvbWUgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIGFuZCBmb3J3YXJkaW5nLiBUaGlzIGlzIGltcG9ydGFudCBzdHVmZi4gSSB0aGluayBcIldvcnRoRnV6emluZ1wiIHNob3VsZCBiZSBzZXQgdG8gdHJ1ZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGVzZSBmdW5jdGlvbnMgaW4gZGV0YWlsOlxuMS4gIGBpcF9mb3J3YXJkYCBpbiBgbmV0L2lwdjQvaXBfZm9yd2FyZC5jYFxuMi4gIGBpcHY2X3NyaF9yY3ZgIGluIGBuZXQvaXB2Ni9leHRoZHJzLmNgXG4zLiAgYGlwdjZfcnBsX3NyaF9yY3ZgIGluIGBuZXQvaXB2Ni9leHRoZHJzLmNgXG40LiAgYGlwdjZfcnRoZHJfcmN2YCBpbiBgbmV0L2lwdjYvZXh0aGRycy5jYFxuNS4gIGBpcDZfZm9yd2FyZGAgaW4gYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2BcblxuRmluYWxseSwgbGV0IG1lIHNlZSBpZiB0aGVzZSBTUkggb3IgUlBMIGNvbmZpZ3MgbmVlZCBhbnl0aGluZyBzcGVjaWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTU3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MTEuNzQ0NzEyOTU4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjQ3Mjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQVjZfU0VHNlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnPTI3OT1jb25maWcgSVBWNl9QSU1TTV9WMlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbm5ldC9pcHY2L0tjb25maWc6MzE0OlxcdGRlcGVuZHMgb24gSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTUtXFx0ZGVwZW5kcyBvbiBJUFY2ID0geVxcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGU9MjQ9aXB2Ni0kKENPTkZJR19ORVRMQUJFTCkgKz0gY2FsaXBzby5vXFxubmV0L2lwdjYvTWFrZWZpbGU6MjU6aXB2Ni0kKENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUwpICs9IHNlZzZfaXB0dW5uZWwubyBzZWc2X2xvY2FsLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyNjppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9ITUFDKSArPSBzZWc2X2htYWMub1xcbm5ldC9pcHY2L01ha2VmaWxlLTI3LWlwdjYtJChDT05GSUdfSVBWNl9SUExfTFdUVU5ORUwpICs9IHJwbF9pcHR1bm5lbC5vXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTE4MT1zdGF0aWMgc3RydWN0IGlwdjZfZGV2Y29uZiBpcHY2X2RldmNvbmYgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjI5LVxcdC5zZWc2X2VuYWJsZWRcXHRcXHQ9IDAsXFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyMzA6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjMxLVxcdC5zZWc2X3JlcXVpcmVfaG1hY1xcdD0gMCxcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmM9MjQ2PXN0YXRpYyBzdHJ1Y3QgaXB2Nl9kZXZjb25mIGlwdjZfZGV2Y29uZl9kZmx0IF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI5NC1cXHQuc2VnNl9lbmFibGVkXFx0XFx0PSAwLFxcbm5ldC9pcHY2L2FkZHJjb25mLmM6Mjk1OiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI5Ni1cXHQuc2VnNl9yZXF1aXJlX2htYWNcXHQ9IDAsXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTU2Njk9c3RhdGljIHZvaWQgaXB2Nl9zdG9yZV9kZXZjb25mKGNvbnN0IHN0cnVjdCBpcHY2X2RldmNvbmYgKmNuZixcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtNTc0My1cXHRhcnJheVtERVZDT05GX1NFRzZfRU5BQkxFRF0gPSBSRUFEX09OQ0UoY25mLVxcdTAwM2VzZWc2X2VuYWJsZWQpO1xcbm5ldC9pcHY2L2FkZHJjb25mLmM6NTc0NDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvYWRkcmNvbmYuYy01NzQ1LVxcdGFycmF5W0RFVkNPTkZfU0VHNl9SRVFVSVJFX0hNQUNdID0gUkVBRF9PTkNFKGNuZi1cXHUwMDNlc2VnNl9yZXF1aXJlX2htYWMpO1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz02ODU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIGFkZHJjb25mX3N5c2N0bFtdID0ge1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYy03MjMwLVxcdH0sXFxubmV0L2lwdjYvYWRkcmNvbmYuYzo3MjMxOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTcyMzItXFx0e1xcbi0tXFxubmV0L2lwdjYvZXh0aGRycy5jLTQ3LSNpbmNsdWRlIFxcdTAwM2NuZXQvc2VnNi5oXFx1MDAzZVxcbm5ldC9pcHY2L2V4dGhkcnMuYzo0ODojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvZXh0aGRycy5jLTQ5LSNpbmNsdWRlIFxcdTAwM2NuZXQvc2VnNl9obWFjLmhcXHUwMDNlXFxuLS1cXG5uZXQvaXB2Ni9leHRoZHJzLmM9MzcxPXN0YXRpYyBpbnQgaXB2Nl9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXFxuLS1cXG5uZXQvaXB2Ni9leHRoZHJzLmMtMzg4LVxcbm5ldC9pcHY2L2V4dGhkcnMuYzozODk6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L2V4dGhkcnMuYy0zOTAtXFx0aWYgKCFzZWc2X2htYWNfdmFsaWRhdGVfc2tiKHNrYikpIHtcXG4tLVxcbm5ldC9pcHY2L2V4dGhkcnMuYz0xMTI0PXN0YXRpYyB1OCBpcHY2X3B1c2hfcnRoZHI0KHN0cnVjdCBza19idWZmICpza2IsIHU4IHByb3RvLFxcbi0tXFxubmV0L2lwdjYvZXh0aGRycy5jLTExNTItXFxubmV0L2lwdjYvZXh0aGRycy5jOjExNTM6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L2V4dGhkcnMuYy0xMTU0LVxcdGlmIChzcl9oYXNfaG1hYyhzcl9waGRyKSkge1xcbi0tXFxubmV0L2lwdjYvc2VnNi5jPTE0MD1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgc2VnNl9nZW5sX3BvbGljeVtTRUc2X0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2LmMtMTUwLVxcbm5ldC9pcHY2L3NlZzYuYzoxNTE6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L3NlZzYuYy0xNTItXFxuLS1cXG5uZXQvaXB2Ni9zZWc2LmM9MjY2PXN0YXRpYyBpbnQgc2VnNl9nZW5sX2dldF90dW5zcmMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9pcHY2L3NlZzYuYy0yOTktXFxubmV0L2lwdjYvc2VnNi5jOjMwMDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvc2VnNi5jLTMwMS1cXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yNS0jaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9jYWNoZS5oXFx1MDAzZVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzoyNjojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTI3LSNpbmNsdWRlIFxcdTAwM2NuZXQvc2VnNl9obWFjLmhcXHUwMDNlXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MTQxPXN0YXRpYyBpbnQgX19zZWc2X2RvX3NyaF9lbmNhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMjAxLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzoyMDI6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yMDMtXFx0aWYgKHNyX2hhc19obWFjKGlzcmgpKSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MjI1PXN0YXRpYyBpbnQgc2VnNl9kb19zcmhfZW5jYXBfcmVkKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMzI4LVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzozMjk6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0zMzAtXFx0aWYgKHVubGlrZWx5KCFza2lwX3NyaCBcXHUwMDI2XFx1MDAyNiBzcl9oYXNfaG1hYyhpc3JoKSkpIHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz0zNDU9c3RhdGljIGludCBfX3NlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMzgwLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzozODE6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0zODItXFx0aWYgKHNyX2hhc19obWFjKGlzcmgpKSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjctI2luY2x1ZGUgXFx1MDAzY25ldC9pcF90dW5uZWxzLmhcXHUwMDNlXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjI4OiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjktI2luY2x1ZGUgXFx1MDAzY25ldC9zZWc2X2htYWMuaFxcdTAwM2VcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yMTY9c3RhdGljIHN0cnVjdCBpcHY2X3NyX2hkciAqZ2V0X2FuZF92YWxpZGF0ZV9zcmgoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yMjMtXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjIyNDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTIyNS1cXHRpZiAoIXNlZzZfaG1hY192YWxpZGF0ZV9za2Ioc2tiKSlcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yMzI9c3RhdGljIGJvb2wgZGVjYXBfYW5kX3ZhbGlkYXRlKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcm90bylcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNDAtXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjI0MTojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI0Mi1cXHRpZiAoc3JoIFxcdTAwMjZcXHUwMDI2ICFzZWc2X2htYWNfdmFsaWRhdGVfc2tiKHNrYikpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9NzU4PXN0YXRpYyBpbnQgZW5kX2Zsdjg5ODZfY29yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtNzY5LVxcdHBpbmZvID0gc2VnNl9nZXRfc3JoX3BrdGluZm8oc3JoKTtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6NzcwOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtNzcxLVxcdGlmIChzcmggXFx1MDAyNlxcdTAwMjYgIXNlZzZfaG1hY192YWxpZGF0ZV9za2Ioc2tiKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MTEuODA4MzY2NDM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY2MTgxMzQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBJUHY2IEV4dGVuc2lvbiBIZWFkZXIgSGFuZGxpbmcqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgaGFuZGxpbmcgb2YgSVB2NiBleHRlbnNpb24gaGVhZGVycywgc3BlY2lmaWNhbGx5IHRoZSByb3V0aW5nIGhlYWRlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGtlcm5lbCBjb2RlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZm9yIHJvdXRpbmcgaGVhZGVycyBsaWtlIFR5cGUgMCwgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgYW5kIFJQTC1zcGVjaWZpYyBTUkguIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNvbXBpbGF0aW9uIGFuZCBpbnZvY2F0aW9uIG9mIGBpcHY2X3J0aGRyX3JjdmAsIGBpcHY2X3NyaF9yY3ZgLCBhbmQgYGlwdjZfcnBsX3NyaF9yY3ZgLiBJIGZpZ3VyZSB0aGF0IGBuZXQvaXB2Ni9leHRoZHJzLmNgIGlzIHRoZSBwcmltZSBsb2NhdGlvbiB0byBmaW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGhvb2tlZCB1cCBhbmQgY2FsbGVkIGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBUaGlzIGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gc2VlIGhvdyB0aGV5J3JlIGNvbXBpbGVkIGludG8gdGhlIG92ZXJhbGwgcmVjZXB0aW9uIHBhdGguIFRpbWUgdG8gc2VlIHdoYXQgdGhlIHNvdXJjZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToxNS40NzAxODIyMjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzOTM4NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdjZfcnRoZHJfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2V4dGhkcnMuYz00ODE9c3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXFxuLS1cXG5uZXQvaXB2Ni9leHRoZHJzLmMtNjQ0LS8qIGNhbGxlZCB3aXRoIHJjdV9yZWFkX2xvY2soKSAqL1xcbm5ldC9pcHY2L2V4dGhkcnMuYzo2NDU6c3RhdGljIGludCBpcHY2X3J0aGRyX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY2L2V4dGhkcnMuYy02NDYte1xcbi0tXFxubmV0L2lwdjYvZXh0aGRycy5jPTg0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGluZXQ2X3Byb3RvY29sIHJ0aGRyX3Byb3RvY29sID0ge1xcbm5ldC9pcHY2L2V4dGhkcnMuYzo4NDE6XFx0LmhhbmRsZXJcXHQ9XFx0aXB2Nl9ydGhkcl9yY3YsXFxubmV0L2lwdjYvZXh0aGRycy5jLTg0Mi1cXHQuZmxhZ3NcXHRcXHQ9XFx0SU5FVDZfUFJPVE9fTk9QT0xJQ1ksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjE1LjU5NDEyNTY1OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2NTEwNjcwMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIElQdjYgUm91dGluZyBIZWFkZXIgSGFuZGxpbmcgaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgSVB2NiByb3V0aW5nIGhlYWRlciBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBuZXQvaXB2Ni9leHRoZHJzLmNgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGhhbmRsaW5nIG9mIHRoZXNlIHJvdXRpbmcgaGVhZGVycywgc28gSSdsbCBzdGFydCB3aXRoIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIHJlY2VpdmluZyB0aGVtOiBgaXB2Nl9ydGhkcl9yY3ZgLCBgaXB2Nl9zcmhfcmN2YCwgYW5kIGBpcHY2X3JwbF9zcmhfcmN2YC4gSSBiZWxpZXZlIGBpcHY2X3J0aGRyX3JjdmAgaXMgdGhlIGNlbnRyYWwgcG9pbnQgaGVyZSwgdGhlIGhhbmRsZXIgZm9yIHRoZSBJUHY2IHJvdXRpbmcgaGVhZGVyIGl0c2VsZiwgcmVnaXN0ZXJlZCwgSSB0aGluaywgdW5kZXIgYHJ0aGRyX3Byb3RvY29sYC5cblxuTm93LCBpZiBtZW1vcnkgc2VydmVzLCB3aXRoaW4gYGlwdjZfcnRoZHJfcmN2YCwgdGhlIGNvbnRyb2wgZmxvdyBicmFuY2hlcyBiYXNlZCBvbiB0aGUgcm91dGluZyBoZWFkZXIgdHlwZS4gIEZvciB0eXBlIGBJUFY2X1NSQ1JUX1RZUEVfNGAsIHdlIHNob3VsZCBiZSBjYWxsaW5nIGBpcHY2X3NyaF9yY3ZgLiBTaW1pbGFybHksIGBJUFY2X1NSQ1JUX1RZUEVfM2AgcHJvYmFibHkgY2FsbHMgYGlwdjZfcnBsX3NyaF9yY3ZgLiBPdGhlciByb3V0aW5nIGhlYWRlciB0eXBlcywgc3VjaCBhcyBgSVBWNl9TUkNSVF9UWVBFXzBgIHNob3VsZCBiZSBoYW5kbGVkIGRpcmVjdGx5IHdpdGhpbiBgaXB2Nl9ydGhkcl9yY3ZgLlxuXG5KdXN0IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGV4dGhkcnMub2AgaXMgaW5kZWVkIGJ1aWx0IHdoZW4gYENPTkZJR19JUFY2YCBpcyBlbmFibGVkLiAgQSBxdWljayBjaGVjayBvZiB0aGUgYG5ldC9pcHY2L01ha2VmaWxlYCBzaG91bGQgY29uZmlybSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDIxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjE5LjI0NTE5NjYzMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTk5MTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHRoZHJzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cXHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxcXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMS1cXHRcXHRyYXcubyBpY21wLm8gbWNhc3QubyByZWFzc2VtYmx5Lm8gdGNwX2lwdjYubyBwaW5nLm8gXFxcXFxcbm5ldC9pcHY2L01ha2VmaWxlOjEyOlxcdFxcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTMtXFx0XFx0dWRwX29mZmxvYWQubyBzZWc2Lm8gZmliNl9ub3RpZmllci5vIHJwbC5vIGlvYW02Lm9cXG4tLVxcbm5ldC9pcHY2L01ha2VmaWxlPTQ3PW9iai0kKENPTkZJR19JTkVUKSArPSBvdXRwdXRfY29yZS5vIHByb3RvY29sLm8gXFxcXFxcbm5ldC9pcHY2L01ha2VmaWxlOjQ4OlxcdFxcdFxcdGlwNl9vZmZsb2FkLm8gZXh0aGRyc19vZmZsb2FkLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS00OS1cXG4tLVxcbm5ldC9pcHY2L2V4dGhkcnNfb2ZmbG9hZC5jPTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X29mZmxvYWQgaGJoX29mZmxvYWQgPSB7XFxuLS1cXG5uZXQvaXB2Ni9leHRoZHJzX29mZmxvYWQuYy0yMi1cXG5uZXQvaXB2Ni9leHRoZHJzX29mZmxvYWQuYzoyMzppbnQgX19pbml0IGlwdjZfZXh0aGRyc19vZmZsb2FkX2luaXQodm9pZClcXG5uZXQvaXB2Ni9leHRoZHJzX29mZmxvYWQuYy0yNC17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jPTQzNz1zdGF0aWMgaW50IF9faW5pdCBpcHY2X29mZmxvYWRfaW5pdCh2b2lkKVxcbi0tXFxubmV0L2lwdjYvaXA2X29mZmxvYWQuYy00NDEtXFx0XFx0cHJfY3JpdChcXFwiJXM6IENhbm5vdCBhZGQgVENQIHByb3RvY29sIG9mZmxvYWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jOjQ0MjpcXHRpZiAoaXB2Nl9leHRoZHJzX29mZmxvYWRfaW5pdCgpIFxcdTAwM2MgMClcXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jLTQ0My1cXHRcXHRwcl9jcml0KFxcXCIlczogQ2Fubm90IGFkZCBFWFRIRFJTIHByb3RvY29sIG9mZmxvYWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9vZmZsb2FkLmgtOS1cXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5oOjEwOmludCBpcHY2X2V4dGhkcnNfb2ZmbG9hZF9pbml0KHZvaWQpO1xcbm5ldC9pcHY2L2lwNl9vZmZsb2FkLmgtMTEtaW50IHVkcHY2X29mZmxvYWRfaW5pdCh2b2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MTkuMzE3MTkzODQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY3OTIwMzI0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgS2VybmVsIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGVzZSBuZXR3b3JrIG1vZHVsZXMgYXJlIGJ1aWx0IHdpdGhpbiB0aGUga2VybmVsLiBJIHNlZSB0aGF0IGBleHRoZHJzLm9gIGFuZCBgaXA2X291dHB1dC5vYCBhcmUgcGFydCBvZiB0aGUgYGlwdjYteWAgdGFyZ2V0LCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGV5J3JlIGNsZWFybHkgSVB2Ni1yZWxhdGVkLCBhbmQgdGhhdCB3aG9sZSBzZXQgaXMgZW5hYmxlZCB3aGVuIGBDT05GSUdfSVBWNmAgaXMgc2V0LiBUaGVuLCBJJ20gbm90aW5nIHRoYXQgYGlwX2ZvcndhcmQub2AgaXMgbG9jYXRlZCBpbiB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYCBhbmQgaXQgZmFsbHMgdW5kZXIgZWl0aGVyIGBDT05GSUdfSU5FVGAgb3IgYENPTkZJR19ORVRgLiBJdOKAmXMgcHJldHR5IHN0YW5kYXJkIGhvdyB0aGUgSVB2NCBmb3J3YXJkaW5nIG1vZHVsZSBpcyBoYW5kbGVkLiBUbyBmaWd1cmUgb3V0IHRoZSBkZXRhaWxzIG9mIHdoYXQgZ2V0cyBidWlsdCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBNYWtlZmlsZSBkaXJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE2MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjIxLjk5NjQwMDM0OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4Mjc1MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX2ZvcndhcmRcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjc6XFx0ICAgICBpcF9pbnB1dC5vIGlwX2ZyYWdtZW50Lm8gaXBfZm9yd2FyZC5vIGlwX29wdGlvbnMubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGUtOC1cXHQgICAgIGlwX291dHB1dC5vIGlwX3NvY2tnbHVlLm8gaW5ldF9oYXNodGFibGVzLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToyMi4xMDQ2ODE2NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzU4MDM3MzcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBOZXR3b3JrIEZvcndhcmRpbmcgYW5kIFJvdXRpbmcgSGVhZGVyIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBoZXJlJ3MgbXkgYnJlYWtkb3duLiBUaGUgY2hhbmdlcyBzZWVtIGNlbnRlcmVkIGFyb3VuZCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHBhY2tldCBmb3J3YXJkaW5nIGFuZCByb3V0aW5nIGhlYWRlcnMsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgVFRML0hvcCBMaW1pdCBleHBpcmF0aW9uLiBJIGltbWVkaWF0ZWx5IG5vdGVkIHRoYXQgYElORVRgIGlzIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIGBJUFY2YCBpcywgb2YgY291cnNlLCByZWxhdGVkIHRvIElQdjYgc3VwcG9ydC5cblxuSSBkdWcgaW50byB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlOlxuXG4xLiAgYGlwX2ZvcndhcmRgIChJUHY0IGZvcndhcmRpbmcpXG4yLiAgYGlwdjZfc3JoX3JjdmAgKElQdjYgU291cmNlIFJvdXRpbmcgSGVhZGVyIHByb2Nlc3NpbmcpXG4zLiAgYGlwdjZfcnBsX3NyaF9yY3ZgIChJUHY2IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgcHJvY2Vzc2luZylcbjQuICBgaXB2Nl9ydGhkcl9yY3ZgIChJUHY2IFJvdXRpbmcgSGVhZGVyIHByb2Nlc3NpbmcpXG41LiAgYGlwNl9mb3J3YXJkYCAoSVB2NiBmb3J3YXJkaW5nKVxuXG5JIGNoZWNrZWQgYW5kIGZvdW5kIHRoYXQgYGlwX2ZvcndhcmRgIGFuZCBgaXA2X2ZvcndhcmRgIGFyZSBub24tc3RhdGljIHdoaWxlIHRoZSBvdGhlcnMsIGBpcHY2X3NyaF9yY3ZgLCBgaXB2Nl9ycGxfc3JoX3JjdmAsIGFuZCBgaXB2Nl9ydGhkcl9yY3ZgLCBhcmUgc3RhdGljIGJ1dCBhcmUgY2FsbGVkIHZpYSB0aGUgYHJ0aGRyX3Byb3RvY29sYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQuIENvbnNpZGVyaW5nIHRoZXNlIG1vZGlmaWNhdGlvbnMsIGFuZCBmcm9tIHRoZSBjb250ZXh0IG9mIHdoYXQgdGhlc2UgZnVuY3Rpb25zICpkbyosIEkgYmVsaWV2ZSB3ZSBzaG91bGQgbWFyayB0aGlzIGFzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBJIGNhbiBjcmVhdGUgYSBjb25jaXNlIGBGb2N1c1N5bWJvbHNgIGxpc3QgY29uc2lzdGluZyBvZiB0aGUgbm9uLXViaXF1aXRvdXMgZnVuY3Rpb25zOiBgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGBpcHY2X3J0aGRyX3JjdmAsIGBpcHY2X3NyaF9yY3ZgLCBhbmQgYGlwdjZfcnBsX3NyaF9yY3ZgLiBBbGwgb2YgdGhvc2UgYXJlIGludm9sdmVkIGluIGNvcmUgbmV0d29yayBmb3J3YXJkaW5nLCByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIGFuZCBUVEwvaG9wIGxpbWl0IGlzc3Vlcy5cblxuTXkgYW5hbHlzaXMgYm9pbHMgZG93biB0byB0aGlzOlxuXG4xLiAgYFdvcnRoRnV6emluZ2A6IFRydWVcbjIuICBgRm9jdXNTeW1ib2xzYDogYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9ydGhkcl9yY3ZgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgXG4zLiAgYEVuYWJsZUNvbmZpZ3NgOiBgSU5FVGAsIGBJUFY2YFxuNC4gIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBleHRlbnNpb24gaGVhZGVyIHByb2Nlc3NpbmcgdG8gdXNlIGl0IHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC5cblxuRmluYWxseSwgSSBkaWQgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZW5zdXJlIHRoZSBhcmd1bWVudHMgZm9yIGBzZXQtcmVzdWx0c2AgYXJlIGNvcnJlY3QuIEknbSByZWFkeSB0byBjYWxsIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTM2LCJPdXRwdXRUb2tlbnMiOjE1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToyOS42ODUwNTg3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MjY5ODQ2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZvcndhcmRcIixcbiAgICBcImlwNl9mb3J3YXJkXCIsXG4gICAgXCJpcHY2X3J0aGRyX3JjdlwiLFxuICAgIFwiaXB2Nl9zcmhfcmN2XCIsXG4gICAgXCJpcHY2X3JwbF9zcmhfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIHRvIHJlcG9ydCB0aGlzIHJlYXNvbiB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZvcndhcmRcIixcbiAgICBcImlwNl9mb3J3YXJkXCIsXG4gICAgXCJpcHY2X3J0aGRyX3JjdlwiLFxuICAgIFwiaXB2Nl9zcmhfcmN2XCIsXG4gICAgXCJpcHY2X3JwbF9zcmhfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIHRvIHJlcG9ydCB0aGlzIHJlYXNvbiB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjI5Ljk2Nzc2ODg1NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3OTM1MTg3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToyOS45Njg3MjUzNDZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxNTc5MjU1NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCkgaW4gYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYCBhbmQgdXBkYXRlcyBJUHY0L0lQdjYgZm9yd2FyZGluZyBhbmQgcm91dGluZyBoZWFkZXIgcGFyc2luZyBwYXRocyAoYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgLCBgaXB2Nl9ydGhkcl9yY3ZgKSB0byB1c2UgdGhpcyBzcGVjaWZpYyByZWFzb24gd2hlbiBkcm9wcGluZyBwYWNrZXRzIGR1ZSB0byBUVEwvaG9wLWxpbWl0IGV4cGlyYXRpb24uXFxuXFxuVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0IGNvcGllcyB0byB1c2VyIHNwYWNlLCBhbHRlcmF0aW9ucyB0byBidWZmZXIgYm91bmRzL2xlbmd0aHMsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoZSBjaGFuZ2VzIHN0cmljdGx5IHBhc3MgY29tcGlsZS10aW1lIGVudW0gY29uc3RhbnRzIHRvIGBrZnJlZV9za2JfcmVhc29uYC4gQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhhNGMxNGRhNmIzMTcwY2RlYzlhNGRlZGZlOWFhNTYxNTYwZTM4NTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMDoyNTowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oIGIvaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhcbmluZGV4IDJmMzEyZDFmNjdkNjkuLjEyZjkwOTY1MTU5MTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaFxuKysrIGIvaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhcbkBAIC05Myw2ICs5Myw3IEBAXG4gXHRGTihJUF9JTlZBTElEX1NPVVJDRSlcdFx0XFxcbiBcdEZOKElQX0xPQ0FMTkVUKVx0XHRcdFxcXG4gXHRGTihJUF9JTlZBTElEX0RFU1QpXHRcdFxcXG4rXHRGTihJUF9UVExfRVhDRUVERUQpXHRcdFxcXG4gXHRGTihQS1RfVE9PX0JJRylcdFx0XHRcXFxuIFx0Rk4oRFVQX0ZSQUcpXHRcdFx0XFxcbiBcdEZOKEZSQUdfUkVBU01fVElNRU9VVClcdFx0XFxcbkBAIC00NzQsNiArNDc1LDExIEBAIGVudW0gc2tiX2Ryb3BfcmVhc29uIHtcbiBcdCAqIDEpIGRlc3QgaXAgaXMgMFxuIFx0ICovXG4gXHRTS0JfRFJPUF9SRUFTT05fSVBfSU5WQUxJRF9ERVNULFxuK1x0LyoqXG4rXHQgKiBAU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRDogSVB2NCBUVEwgb3IgSVB2NiBob3AgbGltaXQgXHUwMDNjPSAxXG4rXHQgKiAoc2VlIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKVxuK1x0ICovXG4rXHRTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVELFxuIFx0LyoqXG4gXHQgKiBAU0tCX0RST1BfUkVBU09OX1BLVF9UT09fQklHOiBwYWNrZXQgc2l6ZSBpcyB0b28gYmlnIChtYXliZSBleGNlZWQgdGhlXG4gXHQgKiBNVFUpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jIGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG5pbmRleCA4YjY1ZjEyNTgzZWI2Li5iMjQyNTYxZDM3ZTczIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG4rKysgYi9uZXQvaXB2NC9pcF9mb3J3YXJkLmNcbkBAIC0xNzQsNyArMTc0LDcgQEAgaW50IGlwX2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdC8qIFRlbGwgdGhlIHNlbmRlciBpdHMgcGFja2V0IGRpZWQuLi4gKi9cbiBcdF9fSVBfSU5DX1NUQVRTKG5ldCwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xuIFx0aWNtcF9zZW5kKHNrYiwgSUNNUF9USU1FX0VYQ0VFREVELCBJQ01QX0VYQ19UVEwsIDApO1xuLVx0U0tCX0RSX1NFVChyZWFzb24sIElQX0lOSERSKTtcbitcdFNLQl9EUl9TRVQocmVhc29uLCBJUF9UVExfRVhDRUVERUQpO1xuIGRyb3A6XG4gXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgcmVhc29uKTtcbiBcdHJldHVybiBORVRfUlhfRFJPUDtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9leHRoZHJzLmMgYi9uZXQvaXB2Ni9leHRoZHJzLmNcbmluZGV4IDA5YTQ1NTJmN2YwOGEuLjU1MzkxZTJlNTYxMjkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9leHRoZHJzLmNcbisrKyBiL25ldC9pcHY2L2V4dGhkcnMuY1xuQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgaW50IGlwdjZfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0XHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCxcbiBcdFx0XHRcdCAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdFx0cmV0dXJuIC0xO1xuIFx0XHR9XG4gXHRcdGlwdjZfaGRyKHNrYiktXHUwMDNlaG9wX2xpbWl0LS07XG5AQCAtNjIzLDcgKzYyMyw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ycGxfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0XHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCxcbiBcdFx0XHRcdCAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdFx0cmV0dXJuIC0xO1xuIFx0XHR9XG4gXHRcdGlwdjZfaGRyKHNrYiktXHUwMDNlaG9wX2xpbWl0LS07XG5AQCAtODE1LDcgKzgxNSw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ydGhkcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0XHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XG4gXHRcdFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsIElDTVBWNl9FWENfSE9QTElNSVQsXG4gXHRcdFx0XHQgICAgMCk7XG4tXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0fVxuIFx0XHRpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdC0tO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuaW5kZXggOTZlZTNkZTU1ZjkzMC4uZGRhYmEwYWViY2IxMSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5AQCAtNTc3LDcgKzU3Nyw3IEBAIGludCBpcDZfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XG4gXHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcbi1cdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9JTkhEUik7XG4rXHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTtcbiBcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToyOS45Njg3MzAzODZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU3OTI1MjI1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gRXZhbHVhdGlvbjogTm8gTmVlZCBmb3IgRGVkaWNhdGVkIEZ1enppbmcgU2Vzc2lvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIHNlcmllcyB3YXJyYW50cyBmaXJpbmcgdXAgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBnb2luZyB0byBxdWlja2x5IGFzc2VzcyBhbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgY29uY2VybnMuXG5cbkxvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gV2UncmUgYWRkaW5nIGEgbmV3IGRyb3AgcmVhc29uLCBgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGAsIGluIGBkcm9wcmVhc29uLWNvcmUuaGAuIFRoZSBwYXRjaCB0aGVuIHByb3BhZ2F0ZXMgdGhpcyBuZXcgZW51bSB2YWx1ZSwgcmVwbGFjaW5nIGdlbmVyaWMgZHJvcCByZWFzb24gY29kZXMgYW5kIGBrZnJlZV9za2JgIGNhbGxzIHdpdGggYGtmcmVlX3NrYl9yZWFzb25gIGNhbGxzIHRoYXQgc3BlY2lmeSB0aGlzIG5ldyByZWFzb24uIFRoaXMgaGFwcGVucyBpbiBgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGFuZCBhIGZldyBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBUaGUgZ2lzdCBpcywgd2hlbiBhIHBhY2tldCdzIFRUTCBvciBob3AgbGltaXQgZXhwaXJlcywgd2UncmUgbm93IGJlaW5nIG1vcmUgc3BlY2lmaWMgYWJvdXQgKndoeSogaXQncyBiZWluZyBkcm9wcGVkLlxuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gZm9yIEtNU0FOIGlzOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSBvcHBvcnR1bml0aWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBsZWFrcz8gQmFzZWQgb24gdGhlIGRpZmYsIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIG5vLiBXZSdyZSBqdXN0IGFkZGluZyBhIG5ldyBjb25zdGFudCBhbmQgcGFzc2luZyBpdCBhcyBhbiBhcmd1bWVudCB0byBga2ZyZWVfc2tiX3JlYXNvbmAuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZGF0YSBjb3VsZCBiZWNvbWUgYW4gaXNzdWUsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZSBuZXcgZW51bSB2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudCwgcHVyZWx5IGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIHdpdGhpbiB0aGUga2VybmVsJ3MgdHJhY2luZyBhbmQgZGVidWdnaW5nIGluZnJhc3RydWN0dXJlLiBUaGUgYGRyb3ByZWFzb24tY29yZS5oYCBmaWxlIGl0c2VsZiwgYWZ0ZXIgYSBxdWljayBzYW5pdHkgY2hlY2ssIGNvbmZpcm1zIHRoYXQgdGhlIGVudW0gYW5kIHN0cmluZyBtYXBwaW5nIGlzIHNhZmUgZm9yIHVzZS5cblxuRXNzZW50aWFsbHksIHRoaXMgaXMgYSBtZXRhZGF0YSBlbmhhbmNlbWVudCBmb3IgZGVidWdnaW5nLCBub3QgYSBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgb3IgZGF0YSBmbG93IHRoYXQgY291bGQgdHJpZ2dlciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggc2VyaWVzICpkb2VzIG5vdCogd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6XG5cbiogICBUaGUgcGF0Y2ggKm9ubHkqIGludHJvZHVjZXMgYSBuZXcgU0tCIGRyb3AgcmVhc29uIGFuZCB1cGRhdGVzIGV4aXN0aW5nIGBrZnJlZV9za2JfcmVhc29uYCBjYWxscy5cbiogICBJdCBkb2VzICpub3QqIGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgaW50ZXJhY3Rpb25zIHdpdGggdXNlciBzcGFjZSwgc3RhY2svaGVhcCBidWZmZXIgbWFuaXB1bGF0aW9ucywgb3IgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIGRhdGEuXG4qICAgVGhlIHZhbHVlcyBhcmUgcGFzc2VkIHRvIGBrZnJlZV9za2JfcmVhc29uYCBhcyBjb21waWxlLXRpbWUgY29uc3RhbnRzLlxuKiAgIFRoZXJlJ3MgemVybyByaXNrIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcy5cblxuSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBXZSBzaG91bGQgYmUgc2FmZSB0byBtYXJrIHRoaXMgcGF0Y2ggYXMgbm90IG5lZWRpbmcgS01TQU4gYXR0ZW50aW9uLiBOb3cgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzY5LCJPdXRwdXRUb2tlbnMiOjIwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjQ1Ljc2MTI1NzQ1MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCkgaW4gYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYCBhbmQgdXBkYXRlcyBJUHY0L0lQdjYgZm9yd2FyZGluZyBhbmQgcm91dGluZyBoZWFkZXIgcGFyc2luZyBwYXRocyAoYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgLCBgaXB2Nl9ydGhkcl9yY3ZgKSB0byB1c2UgdGhpcyBzcGVjaWZpYyByZWFzb24gd2hlbiBkcm9wcGluZyBwYWNrZXRzIGR1ZSB0byBUVEwvaG9wLWxpbWl0IGV4cGlyYXRpb24uXFxuXFxuVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0IGNvcGllcyB0byB1c2VyIHNwYWNlLCBhbHRlcmF0aW9ucyB0byBidWZmZXIgYm91bmRzL2xlbmd0aHMsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoZSBjaGFuZ2VzIHN0cmljdGx5IHBhc3MgY29tcGlsZS10aW1lIGVudW0gY29uc3RhbnRzIHRvIGBrZnJlZV9za2JfcmVhc29uYC4gQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU0tCIGRyb3AgcmVhc29uIChgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGApIGluIGBpbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaGAgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IGZvcndhcmRpbmcgYW5kIHJvdXRpbmcgaGVhZGVyIHBhcnNpbmcgcGF0aHMgKGBpcF9mb3J3YXJkYCwgYGlwNl9mb3J3YXJkYCwgYGlwdjZfc3JoX3JjdmAsIGBpcHY2X3JwbF9zcmhfcmN2YCwgYGlwdjZfcnRoZHJfcmN2YCkgdG8gdXNlIHRoaXMgc3BlY2lmaWMgcmVhc29uIHdoZW4gZHJvcHBpbmcgcGFja2V0cyBkdWUgdG8gVFRML2hvcC1saW1pdCBleHBpcmF0aW9uLlxcblxcblRoZXJlIGFyZSBubyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdCBjb3BpZXMgdG8gdXNlciBzcGFjZSwgYWx0ZXJhdGlvbnMgdG8gYnVmZmVyIGJvdW5kcy9sZW5ndGhzLCBvciBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgY2hhbmdlcyBzdHJpY3RseSBwYXNzIGNvbXBpbGUtdGltZSBlbnVtIGNvbnN0YW50cyB0byBga2ZyZWVfc2tiX3JlYXNvbmAuIENvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5wnt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 10:04:23 +0000 UTC FinishedAt: 2026-09-10 10:25:47 +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": "f217004a40c49e787372e798785aecb983828d35", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "IPV6" ], "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": "f217004a40c49e787372e798785aecb983828d35", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "IPV6" ], "series_id": "b84fffb3-9301-459e-8bc7-b9f31c3f4571" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_forward", "ip6_forward", "ipv6_rthdr_rcv", "ipv6_srh_rcv", "ipv6_rpl_srh_rcv" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX2ZvcndhcmQmIzM0OywKICAgICYjMzQ7aXA2X2ZvcndhcmQmIzM0OywKICAgICYjMzQ7aXB2Nl9ydGhkcl9yY3YmIzM0OywKICAgICYjMzQ7aXB2Nl9zcmhfcmN2JiMzNDssCiAgICAmIzM0O2lwdjZfcnBsX3NyaF9yY3YmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoYFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERURgKSBpbiBgaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhgIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBmb3J3YXJkaW5nIGFuZCByb3V0aW5nIGhlYWRlciBwYXJzaW5nIHBhdGhzIChgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGBpcHY2X3NyaF9yY3ZgLCBgaXB2Nl9ycGxfc3JoX3JjdmAsIGBpcHY2X3J0aGRyX3JjdmApIHRvIHVzZSB0aGlzIHNwZWNpZmljIHJlYXNvbiB3aGVuIGRyb3BwaW5nIHBhY2tldHMgZHVlIHRvIFRUTC9ob3AtbGltaXQgZXhwaXJhdGlvbi5cblxuVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0IGNvcGllcyB0byB1c2VyIHNwYWNlLCBhbHRlcmF0aW9ucyB0byBidWZmZXIgYm91bmRzL2xlbmd0aHMsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoZSBjaGFuZ2VzIHN0cmljdGx5IHBhc3MgY29tcGlsZS10aW1lIGVudW0gY29uc3RhbnRzIHRvIGBrZnJlZV9za2JfcmVhc29uYC4gQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgdG8gcmVwb3J0IHRoaXMgcmVhc29uIHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhhNGMxNGRhNmIzMTcwY2RlYzlhNGRlZGZlOWFhNTYxNTYwZTM4NTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMDoyNTowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXG5pbmRleCAyZjMxMmQxZjY3ZDY5Li4xMmY5MDk2NTE1OTEyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXG5AQCAtOTMsNiAmIzQzOzkzLDcgQEBcbiBcdEZOKElQX0lOVkFMSURfU09VUkNFKVx0XHRcXFxuIFx0Rk4oSVBfTE9DQUxORVQpXHRcdFx0XFxcbiBcdEZOKElQX0lOVkFMSURfREVTVClcdFx0XFxcbiYjNDM7XHRGTihJUF9UVExfRVhDRUVERUQpXHRcdFxcXG4gXHRGTihQS1RfVE9PX0JJRylcdFx0XHRcXFxuIFx0Rk4oRFVQX0ZSQUcpXHRcdFx0XFxcbiBcdEZOKEZSQUdfUkVBU01fVElNRU9VVClcdFx0XFxcbkBAIC00NzQsNiAmIzQzOzQ3NSwxMSBAQCBlbnVtIHNrYl9kcm9wX3JlYXNvbiB7XG4gXHQgKiAxKSBkZXN0IGlwIGlzIDBcbiBcdCAqL1xuIFx0U0tCX0RST1BfUkVBU09OX0lQX0lOVkFMSURfREVTVCxcbiYjNDM7XHQvKipcbiYjNDM7XHQgKiBAU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRDogSVB2NCBUVEwgb3IgSVB2NiBob3AgbGltaXQgXHUwMDNjPSAxXG4mIzQzO1x0ICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUylcbiYjNDM7XHQgKi9cbiYjNDM7XHRTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVELFxuIFx0LyoqXG4gXHQgKiBAU0tCX0RST1BfUkVBU09OX1BLVF9UT09fQklHOiBwYWNrZXQgc2l6ZSBpcyB0b28gYmlnIChtYXliZSBleGNlZWQgdGhlXG4gXHQgKiBNVFUpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jIGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG5pbmRleCA4YjY1ZjEyNTgzZWI2Li5iMjQyNTYxZDM3ZTczIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF9mb3J3YXJkLmNcbkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXG4gXHQvKiBUZWxsIHRoZSBzZW5kZXIgaXRzIHBhY2tldCBkaWVkLi4uICovXG4gXHRfX0lQX0lOQ19TVEFUUyhuZXQsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdGljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTtcbi1cdFNLQl9EUl9TRVQocmVhc29uLCBJUF9JTkhEUik7XG4mIzQzO1x0U0tCX0RSX1NFVChyZWFzb24sIElQX1RUTF9FWENFRURFRCk7XG4gZHJvcDpcbiBcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCByZWFzb24pO1xuIFx0cmV0dXJuIE5FVF9SWF9EUk9QO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2V4dGhkcnMuYyBiL25ldC9pcHY2L2V4dGhkcnMuY1xuaW5kZXggMDlhNDU1MmY3ZjA4YS4uNTUzOTFlMmU1NjEyOSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2V4dGhkcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvZXh0aGRycy5jXG5AQCAtNDY0LDcgJiM0Mzs0NjQsNyBAQCBzdGF0aWMgaW50IGlwdjZfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0XHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCxcbiBcdFx0XHRcdCAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0fVxuIFx0XHRpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdC0tO1xuQEAgLTYyMyw3ICYjNDM7NjIzLDcgQEAgc3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG4gXHRcdFx0X19JUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xuIFx0XHRcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELFxuIFx0XHRcdFx0ICAgIElDTVBWNl9FWENfSE9QTElNSVQsIDApO1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdFx0cmV0dXJuIC0xO1xuIFx0XHR9XG4gXHRcdGlwdjZfaGRyKHNrYiktXHUwMDNlaG9wX2xpbWl0LS07XG5AQCAtODE1LDcgJiM0Mzs4MTUsNyBAQCBzdGF0aWMgaW50IGlwdjZfcnRoZHJfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0X19JUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xuIFx0XHRcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELCBJQ01QVjZfRVhDX0hPUExJTUlULFxuIFx0XHRcdFx0ICAgIDApO1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdFx0cmV0dXJuIC0xO1xuIFx0XHR9XG4gXHRcdGlwdjZfaGRyKHNrYiktXHUwMDNlaG9wX2xpbWl0LS07XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X291dHB1dC5jIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5pbmRleCA5NmVlM2RlNTVmOTMwLi5kZGFiYTBhZWJjYjExIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbkBAIC01NzcsNyAmIzQzOzU3Nyw3IEBAIGludCBpcDZfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XG4gXHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcbi1cdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9JTkhEUik7XG4mIzQzO1x0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdHJldHVybiAtRVRJTUVET1VUO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX2ZvcndhcmQmIzM0OywKICAgICYjMzQ7aXA2X2ZvcndhcmQmIzM0OywKICAgICYjMzQ7aXB2Nl9ydGhkcl9yY3YmIzM0OywKICAgICYjMzQ7aXB2Nl9zcmhfcmN2JiMzNDssCiAgICAmIzM0O2lwdjZfcnBsX3NyaF9yY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIHRvIHJlcG9ydCB0aGlzIHJlYXNvbiB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YTRjMTRkYTZiMzE3MGNkZWM5YTRkZWRmZTlhYTU2MTU2MGUzODUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMTA6MjU6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCmluZGV4IDJmMzEyZDFmNjdkNjkuLjEyZjkwOTY1MTU5MTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCkBAIC05Myw2ICYjNDM7OTMsNyBAQAogCUZOKElQX0lOVkFMSURfU09VUkNFKQkJXAogCUZOKElQX0xPQ0FMTkVUKQkJCVwKIAlGTihJUF9JTlZBTElEX0RFU1QpCQlcCiYjNDM7CUZOKElQX1RUTF9FWENFRURFRCkJCVwKIAlGTihQS1RfVE9PX0JJRykJCQlcCiAJRk4oRFVQX0ZSQUcpCQkJXAogCUZOKEZSQUdfUkVBU01fVElNRU9VVCkJCVwKQEAgLTQ3NCw2ICYjNDM7NDc1LDExIEBAIGVudW0gc2tiX2Ryb3BfcmVhc29uIHsKIAkgKiAxKSBkZXN0IGlwIGlzIDAKIAkgKi8KIAlTS0JfRFJPUF9SRUFTT05fSVBfSU5WQUxJRF9ERVNULAomIzQzOwkvKioKJiM0MzsJICogQFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQ6IElQdjQgVFRMIG9yIElQdjYgaG9wIGxpbWl0ICZsdDs9IDEKJiM0MzsJICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUykKJiM0MzsJICovCiYjNDM7CVNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQsCiAJLyoqCiAJICogQFNLQl9EUk9QX1JFQVNPTl9QS1RfVE9PX0JJRzogcGFja2V0IHNpemUgaXMgdG9vIGJpZyAobWF5YmUgZXhjZWVkIHRoZQogCSAqIE1UVSkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2ZvcndhcmQuYyBiL25ldC9pcHY0L2lwX2ZvcndhcmQuYwppbmRleCA4YjY1ZjEyNTgzZWI2Li5iMjQyNTYxZDM3ZTczIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9mb3J3YXJkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jCkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpCiAJLyogVGVsbCB0aGUgc2VuZGVyIGl0cyBwYWNrZXQgZGllZC4uLiAqLwogCV9fSVBfSU5DX1NUQVRTKG5ldCwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpOwogCWljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTsKLQlTS0JfRFJfU0VUKHJlYXNvbiwgSVBfSU5IRFIpOwomIzQzOwlTS0JfRFJfU0VUKHJlYXNvbiwgSVBfVFRMX0VYQ0VFREVEKTsKIGRyb3A6CiAJa2ZyZWVfc2tiX3JlYXNvbihza2IsIHJlYXNvbik7CiAJcmV0dXJuIE5FVF9SWF9EUk9QOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZXh0aGRycy5jIGIvbmV0L2lwdjYvZXh0aGRycy5jCmluZGV4IDA5YTQ1NTJmN2YwOGEuLjU1MzkxZTJlNTYxMjkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2V4dGhkcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9leHRoZHJzLmMKQEAgLTQ2NCw3ICYjNDM7NDY0LDcgQEAgc3RhdGljIGludCBpcHY2X3NyaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X2RldiAqaWRldikKIAkJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAkJCWljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELAogCQkJCSAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTsKLQkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCQlpcHY2X2hkcihza2IpLSZndDtob3BfbGltaXQtLTsKQEAgLTYyMyw3ICYjNDM7NjIzLDcgQEAgc3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCiAJCQlfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7CiAJCQlpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwKIAkJCQkgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7Ci0JCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCQlrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIAkJaXB2Nl9oZHIoc2tiKS0mZ3Q7aG9wX2xpbWl0LS07CkBAIC04MTUsNyAmIzQzOzgxNSw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ydGhkcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAkJCWljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELCBJQ01QVjZfRVhDX0hPUExJTUlULAogCQkJCSAgICAwKTsKLQkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCQlpcHY2X2hkcihza2IpLSZndDtob3BfbGltaXQtLTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwppbmRleCA5NmVlM2RlNTVmOTMwLi5kZGFiYTBhZWJjYjExIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC01NzcsNyAmIzQzOzU3Nyw3IEBAIGludCBpcDZfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7CiAJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAotCQlrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX0lOSERSKTsKJiM0MzsJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0MjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogVFRMIEV4Y2VlZGVkIERyb3AgUmVhc29uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgaW50cm9kdWNpbmcgYSBuZXcgU0tCIGRyb3AgcmVhc29uLCBzcGVjaWZpY2FsbHkgZm9yIHdoZW4gdGhlIElQIFRpbWUgVG8gTGl2ZSAoVFRMKSBpcyBleGNlZWRlZC4gSXQgbG9va3MgbGlrZSB0aGUgY29uc3RhbnQgYFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERURgIGlzIGJlaW5nIGRlZmluZWQsIHdoaWNoIG1hcHMgdG8gYElQX1RUTF9FWENFRURFRGAgaW4gYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYC4gVGhhdCBtYWtlcyBzZW5zZTsgYSBzdGFuZGFyZGl6ZWQgZHJvcCByZWFzb24gaXMgYWx3YXlzIGdvb2QgZm9yIGRlYnVnZ2luZyBhbmQgbW9uaXRvcmluZy4KCk15IG5leHQgbW92ZSBpcyB0byBjaGVjayB0aGUgY29kZSBjaGFuZ2VzIHRoZW1zZWx2ZXMgYW5kIG1ha2Ugc3VyZSBLY29uZmlncyBhbmQgZnVuY3Rpb25zIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBkcm9wIHJlYXNvbi4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQgYnkgdGhpcyBwYXRjaC4gT2theSwgaXQmIzM5O3MgdG91Y2hpbmcgYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYCwgYW5kIHRoZW4gdGhlIGNvcmUgZm9yd2FyZGluZyBhbmQgcHJvY2Vzc2luZyBtb2R1bGVzOiBgbmV0L2lwdjQvaXBfZm9yd2FyZC5jYCwgYG5ldC9pcHY2L2V4dGhkcnMuY2AsIGFuZCBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyBkZWZpbml0ZWx5IGFmZmVjdGluZyB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiBJUHY0IGZvcndhcmRpbmcsIHNvbWUgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIGFuZCBmb3J3YXJkaW5nLiBUaGlzIGlzIGltcG9ydGFudCBzdHVmZi4gSSB0aGluayAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IHNob3VsZCBiZSBzZXQgdG8gdHJ1ZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZXNlIGZ1bmN0aW9ucyBpbiBkZXRhaWw6CjEuICBgaXBfZm9yd2FyZGAgaW4gYG5ldC9pcHY0L2lwX2ZvcndhcmQuY2AKMi4gIGBpcHY2X3NyaF9yY3ZgIGluIGBuZXQvaXB2Ni9leHRoZHJzLmNgCjMuICBgaXB2Nl9ycGxfc3JoX3JjdmAgaW4gYG5ldC9pcHY2L2V4dGhkcnMuY2AKNC4gIGBpcHY2X3J0aGRyX3JjdmAgaW4gYG5ldC9pcHY2L2V4dGhkcnMuY2AKNS4gIGBpcDZfZm9yd2FyZGAgaW4gYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2AKCkZpbmFsbHksIGxldCBtZSBzZWUgaWYgdGhlc2UgU1JIIG9yIFJQTCBjb25maWdzIG5lZWQgYW55dGhpbmcgc3BlY2lhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUFY2X1NFRzYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTI3OT1jb25maWcgSVBWNl9QSU1TTV9WMlxuLS1cbm5ldC9pcHY2L0tjb25maWctMjg1LVxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yODctXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yOTktXG5uZXQvaXB2Ni9LY29uZmlnOjMwMDpjb25maWcgSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L0tjb25maWctMzAxLVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSE1BQyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zMTEtXG5uZXQvaXB2Ni9LY29uZmlnOjMxMjpjb25maWcgSVBWNl9TRUc2X0JQRlxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXHRkZWZfYm9vbCB5XG5uZXQvaXB2Ni9LY29uZmlnOjMxNDpcdGRlcGVuZHMgb24gSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxNS1cdGRlcGVuZHMgb24gSVBWNiA9IHlcbi0tXG5uZXQvaXB2Ni9NYWtlZmlsZT0yND1pcHY2LSQoQ09ORklHX05FVExBQkVMKSAmIzQzOz0gY2FsaXBzby5vXG5uZXQvaXB2Ni9NYWtlZmlsZToyNTppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTCkgJiM0Mzs9IHNlZzZfaXB0dW5uZWwubyBzZWc2X2xvY2FsLm9cbm5ldC9pcHY2L01ha2VmaWxlOjI2OmlwdjYtJChDT05GSUdfSVBWNl9TRUc2X0hNQUMpICYjNDM7PSBzZWc2X2htYWMub1xubmV0L2lwdjYvTWFrZWZpbGUtMjctaXB2Ni0kKENPTkZJR19JUFY2X1JQTF9MV1RVTk5FTCkgJiM0Mzs9IHJwbF9pcHR1bm5lbC5vXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0xODE9c3RhdGljIHN0cnVjdCBpcHY2X2RldmNvbmYgaXB2Nl9kZXZjb25mIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yMjktXHQuc2VnNl9lbmFibGVkXHRcdD0gMCxcbm5ldC9pcHY2L2FkZHJjb25mLmM6MjMwOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjMxLVx0LnNlZzZfcmVxdWlyZV9obWFjXHQ9IDAsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNDY9c3RhdGljIHN0cnVjdCBpcHY2X2RldmNvbmYgaXB2Nl9kZXZjb25mX2RmbHQgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI5NC1cdC5zZWc2X2VuYWJsZWRcdFx0PSAwLFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyOTU6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvYWRkcmNvbmYuYy0yOTYtXHQuc2VnNl9yZXF1aXJlX2htYWNcdD0gMCxcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTU2Njk9c3RhdGljIHZvaWQgaXB2Nl9zdG9yZV9kZXZjb25mKGNvbnN0IHN0cnVjdCBpcHY2X2RldmNvbmYgKmNuZixcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTU3NDMtXHRhcnJheVtERVZDT05GX1NFRzZfRU5BQkxFRF0gPSBSRUFEX09OQ0UoY25mLVx1MDAzZXNlZzZfZW5hYmxlZCk7XG5uZXQvaXB2Ni9hZGRyY29uZi5jOjU3NDQ6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvYWRkcmNvbmYuYy01NzQ1LVx0YXJyYXlbREVWQ09ORl9TRUc2X1JFUVVJUkVfSE1BQ10gPSBSRUFEX09OQ0UoY25mLVx1MDAzZXNlZzZfcmVxdWlyZV9obWFjKTtcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTY4NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgYWRkcmNvbmZfc3lzY3RsW10gPSB7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy03MjMwLVx0fSxcbm5ldC9pcHY2L2FkZHJjb25mLmM6NzIzMTojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTcyMzItXHR7XG4tLVxubmV0L2lwdjYvZXh0aGRycy5jLTQ3LSNpbmNsdWRlIFx1MDAzY25ldC9zZWc2LmhcdTAwM2Vcbm5ldC9pcHY2L2V4dGhkcnMuYzo0ODojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9leHRoZHJzLmMtNDktI2luY2x1ZGUgXHUwMDNjbmV0L3NlZzZfaG1hYy5oXHUwMDNlXG4tLVxubmV0L2lwdjYvZXh0aGRycy5jPTM3MT1zdGF0aWMgaW50IGlwdjZfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuLS1cbm5ldC9pcHY2L2V4dGhkcnMuYy0zODgtXG5uZXQvaXB2Ni9leHRoZHJzLmM6Mzg5OiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L2V4dGhkcnMuYy0zOTAtXHRpZiAoIXNlZzZfaG1hY192YWxpZGF0ZV9za2Ioc2tiKSkge1xuLS1cbm5ldC9pcHY2L2V4dGhkcnMuYz0xMTI0PXN0YXRpYyB1OCBpcHY2X3B1c2hfcnRoZHI0KHN0cnVjdCBza19idWZmICpza2IsIHU4IHByb3RvLFxuLS1cbm5ldC9pcHY2L2V4dGhkcnMuYy0xMTUyLVxubmV0L2lwdjYvZXh0aGRycy5jOjExNTM6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvZXh0aGRycy5jLTExNTQtXHRpZiAoc3JfaGFzX2htYWMoc3JfcGhkcikpIHtcbi0tXG5uZXQvaXB2Ni9zZWc2LmM9MTQwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBzZWc2X2dlbmxfcG9saWN5W1NFRzZfQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L2lwdjYvc2VnNi5jLTE1MC1cbm5ldC9pcHY2L3NlZzYuYzoxNTE6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvc2VnNi5jLTE1Mi1cbi0tXG5uZXQvaXB2Ni9zZWc2LmM9MjY2PXN0YXRpYyBpbnQgc2VnNl9nZW5sX2dldF90dW5zcmMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvaXB2Ni9zZWc2LmMtMjk5LVxubmV0L2lwdjYvc2VnNi5jOjMwMDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9zZWc2LmMtMzAxLVxuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yNS0jaW5jbHVkZSBcdTAwM2NuZXQvZHN0X2NhY2hlLmhcdTAwM2Vcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzoyNjojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMjctI2luY2x1ZGUgXHUwMDNjbmV0L3NlZzZfaG1hYy5oXHUwMDNlXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTE0MT1zdGF0aWMgaW50IF9fc2VnNl9kb19zcmhfZW5jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwdjZfc3JfaGRyICpvc3JoLFxuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yMDEtXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6MjAyOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yMDMtXHRpZiAoc3JfaGFzX2htYWMoaXNyaCkpIHtcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MjI1PXN0YXRpYyBpbnQgc2VnNl9kb19zcmhfZW5jYXBfcmVkKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTMyOC1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzozMjk6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTMzMC1cdGlmICh1bmxpa2VseSghc2tpcF9zcmggXHUwMDI2XHUwMDI2IHNyX2hhc19obWFjKGlzcmgpKSkge1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz0zNDU9c3RhdGljIGludCBfX3NlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTM4MC1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzozODE6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTM4Mi1cdGlmIChzcl9oYXNfaG1hYyhpc3JoKSkge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNy0jaW5jbHVkZSBcdTAwM2NuZXQvaXBfdHVubmVscy5oXHUwMDNlXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6Mjg6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI5LSNpbmNsdWRlIFx1MDAzY25ldC9zZWc2X2htYWMuaFx1MDAzZVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yMTY9c3RhdGljIHN0cnVjdCBpcHY2X3NyX2hkciAqZ2V0X2FuZF92YWxpZGF0ZV9zcmgoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjIzLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjIyNDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjI1LVx0aWYgKCFzZWc2X2htYWNfdmFsaWRhdGVfc2tiKHNrYikpXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTIzMj1zdGF0aWMgYm9vbCBkZWNhcF9hbmRfdmFsaWRhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByb3RvKVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNDAtXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MjQxOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNDItXHRpZiAoc3JoIFx1MDAyNlx1MDAyNiAhc2VnNl9obWFjX3ZhbGlkYXRlX3NrYihza2IpKVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz03NTg9c3RhdGljIGludCBlbmRfZmx2ODk4Nl9jb3JlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtNzY5LVx0cGluZm8gPSBzZWc2X2dldF9zcmhfcGt0aW5mbyhzcmgpO1xubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjc3MDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtNzcxLVx0aWYgKHNyaCBcdTAwMjZcdTAwMjYgIXNlZzZfaG1hY192YWxpZGF0ZV9za2Ioc2tiKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gSVB2NiBFeHRlbnNpb24gSGVhZGVyIEhhbmRsaW5nKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgaGFuZGxpbmcgb2YgSVB2NiBleHRlbnNpb24gaGVhZGVycywgc3BlY2lmaWNhbGx5IHRoZSByb3V0aW5nIGhlYWRlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBrZXJuZWwgY29kZS4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGZvciByb3V0aW5nIGhlYWRlcnMgbGlrZSBUeXBlIDAsIFNlZ21lbnQgUm91dGluZyBIZWFkZXIsIGFuZCBSUEwtc3BlY2lmaWMgU1JILiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBjb21waWxhdGlvbiBhbmQgaW52b2NhdGlvbiBvZiBgaXB2Nl9ydGhkcl9yY3ZgLCBgaXB2Nl9zcmhfcmN2YCwgYW5kIGBpcHY2X3JwbF9zcmhfcmN2YC4gSSBmaWd1cmUgdGhhdCBgbmV0L2lwdjYvZXh0aGRycy5jYCBpcyB0aGUgcHJpbWUgbG9jYXRpb24gdG8gZmluZCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBob29rZWQgdXAgYW5kIGNhbGxlZCBkdXJpbmcgcGFja2V0IHJlY2VwdGlvbi4gVGhpcyBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgY29tcGlsZWQgaW50byB0aGUgb3ZlcmFsbCByZWNlcHRpb24gcGF0aC4gVGltZSB0byBzZWUgd2hhdCB0aGUgc291cmNlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY2X3J0aGRyX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2V4dGhkcnMuYz00ODE9c3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG4tLVxubmV0L2lwdjYvZXh0aGRycy5jLTY0NC0vKiBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrKCkgKi9cbm5ldC9pcHY2L2V4dGhkcnMuYzo2NDU6c3RhdGljIGludCBpcHY2X3J0aGRyX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjYvZXh0aGRycy5jLTY0Ni17XG4tLVxubmV0L2lwdjYvZXh0aGRycy5jPTg0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGluZXQ2X3Byb3RvY29sIHJ0aGRyX3Byb3RvY29sID0ge1xubmV0L2lwdjYvZXh0aGRycy5jOjg0MTpcdC5oYW5kbGVyXHQ9XHRpcHY2X3J0aGRyX3Jjdixcbm5ldC9pcHY2L2V4dGhkcnMuYy04NDItXHQuZmxhZ3NcdFx0PVx0SU5FVDZfUFJPVE9fTk9QT0xJQ1ksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAyMQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgSVB2NiBSb3V0aW5nIEhlYWRlciBIYW5kbGluZyBpbiB0aGUgS2VybmVsKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIElQdjYgcm91dGluZyBoZWFkZXIgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgbmV0L2lwdjYvZXh0aGRycy5jYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBoYW5kbGluZyBvZiB0aGVzZSByb3V0aW5nIGhlYWRlcnMsIHNvIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIHRoZW06IGBpcHY2X3J0aGRyX3JjdmAsIGBpcHY2X3NyaF9yY3ZgLCBhbmQgYGlwdjZfcnBsX3NyaF9yY3ZgLiBJIGJlbGlldmUgYGlwdjZfcnRoZHJfcmN2YCBpcyB0aGUgY2VudHJhbCBwb2ludCBoZXJlLCB0aGUgaGFuZGxlciBmb3IgdGhlIElQdjYgcm91dGluZyBoZWFkZXIgaXRzZWxmLCByZWdpc3RlcmVkLCBJIHRoaW5rLCB1bmRlciBgcnRoZHJfcHJvdG9jb2xgLgoKTm93LCBpZiBtZW1vcnkgc2VydmVzLCB3aXRoaW4gYGlwdjZfcnRoZHJfcmN2YCwgdGhlIGNvbnRyb2wgZmxvdyBicmFuY2hlcyBiYXNlZCBvbiB0aGUgcm91dGluZyBoZWFkZXIgdHlwZS4gIEZvciB0eXBlIGBJUFY2X1NSQ1JUX1RZUEVfNGAsIHdlIHNob3VsZCBiZSBjYWxsaW5nIGBpcHY2X3NyaF9yY3ZgLiBTaW1pbGFybHksIGBJUFY2X1NSQ1JUX1RZUEVfM2AgcHJvYmFibHkgY2FsbHMgYGlwdjZfcnBsX3NyaF9yY3ZgLiBPdGhlciByb3V0aW5nIGhlYWRlciB0eXBlcywgc3VjaCBhcyBgSVBWNl9TUkNSVF9UWVBFXzBgIHNob3VsZCBiZSBoYW5kbGVkIGRpcmVjdGx5IHdpdGhpbiBgaXB2Nl9ydGhkcl9yY3ZgLgoKSnVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cywgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgdGhhdCBgZXh0aGRycy5vYCBpcyBpbmRlZWQgYnVpbHQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuICBBIHF1aWNrIGNoZWNrIG9mIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIHNob3VsZCBjb25maXJtIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0aGRycy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cdGFmX2luZXQ2Lm8gYW55Y2FzdC5vIGlwNl9vdXRwdXQubyBpcDZfaW5wdXQubyBhZGRyY29uZi5vIFxcXG4tLVxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTI6XHRcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTMtXHRcdHVkcF9vZmZsb2FkLm8gc2VnNi5vIGZpYjZfbm90aWZpZXIubyBycGwubyBpb2FtNi5vXG4tLVxubmV0L2lwdjYvTWFrZWZpbGU9NDc9b2JqLSQoQ09ORklHX0lORVQpICYjNDM7PSBvdXRwdXRfY29yZS5vIHByb3RvY29sLm8gXFxcbm5ldC9pcHY2L01ha2VmaWxlOjQ4Olx0XHRcdGlwNl9vZmZsb2FkLm8gZXh0aGRyc19vZmZsb2FkLm9cbm5ldC9pcHY2L01ha2VmaWxlLTQ5LVxuLS1cbm5ldC9pcHY2L2V4dGhkcnNfb2ZmbG9hZC5jPTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X29mZmxvYWQgaGJoX29mZmxvYWQgPSB7XG4tLVxubmV0L2lwdjYvZXh0aGRyc19vZmZsb2FkLmMtMjItXG5uZXQvaXB2Ni9leHRoZHJzX29mZmxvYWQuYzoyMzppbnQgX19pbml0IGlwdjZfZXh0aGRyc19vZmZsb2FkX2luaXQodm9pZClcbm5ldC9pcHY2L2V4dGhkcnNfb2ZmbG9hZC5jLTI0LXtcbi0tXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jPTQzNz1zdGF0aWMgaW50IF9faW5pdCBpcHY2X29mZmxvYWRfaW5pdCh2b2lkKVxuLS1cbm5ldC9pcHY2L2lwNl9vZmZsb2FkLmMtNDQxLVx0XHRwcl9jcml0KFwmIzM0OyVzOiBDYW5ub3QgYWRkIFRDUCBwcm90b2NvbCBvZmZsb2FkXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jOjQ0MjpcdGlmIChpcHY2X2V4dGhkcnNfb2ZmbG9hZF9pbml0KCkgXHUwMDNjIDApXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jLTQ0My1cdFx0cHJfY3JpdChcJiMzNDslczogQ2Fubm90IGFkZCBFWFRIRFJTIHByb3RvY29sIG9mZmxvYWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi0tXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5oLTktXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5oOjEwOmludCBpcHY2X2V4dGhkcnNfb2ZmbG9hZF9pbml0KHZvaWQpO1xubmV0L2lwdjYvaXA2X29mZmxvYWQuaC0xMS1pbnQgdWRwdjZfb2ZmbG9hZF9pbml0KHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNjMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgS2VybmVsIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIG5ldHdvcmsgbW9kdWxlcyBhcmUgYnVpbHQgd2l0aGluIHRoZSBrZXJuZWwuIEkgc2VlIHRoYXQgYGV4dGhkcnMub2AgYW5kIGBpcDZfb3V0cHV0Lm9gIGFyZSBwYXJ0IG9mIHRoZSBgaXB2Ni15YCB0YXJnZXQsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRoZXkmIzM5O3JlIGNsZWFybHkgSVB2Ni1yZWxhdGVkLCBhbmQgdGhhdCB3aG9sZSBzZXQgaXMgZW5hYmxlZCB3aGVuIGBDT05GSUdfSVBWNmAgaXMgc2V0LiBUaGVuLCBJJiMzOTttIG5vdGluZyB0aGF0IGBpcF9mb3J3YXJkLm9gIGlzIGxvY2F0ZWQgaW4gdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgYW5kIGl0IGZhbGxzIHVuZGVyIGVpdGhlciBgQ09ORklHX0lORVRgIG9yIGBDT05GSUdfTkVUYC4gSXTigJlzIHByZXR0eSBzdGFuZGFyZCBob3cgdGhlIElQdjQgZm9yd2FyZGluZyBtb2R1bGUgaXMgaGFuZGxlZC4gVG8gZmlndXJlIG91dCB0aGUgZGV0YWlscyBvZiB3aGF0IGdldHMgYnVpbHQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQgTWFrZWZpbGUgZGlyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX2ZvcndhcmRcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlOjc6XHQgICAgIGlwX2lucHV0Lm8gaXBfZnJhZ21lbnQubyBpcF9mb3J3YXJkLm8gaXBfb3B0aW9ucy5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS04LVx0ICAgICBpcF9vdXRwdXQubyBpcF9zb2NrZ2x1ZS5vIGluZXRfaGFzaHRhYmxlcy5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MzYKCQkJCQkJCW91dHB1dDogMTUxCgkJCQkJCQl0aG91Z2h0czogNzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE5ldHdvcmsgRm9yd2FyZGluZyBhbmQgUm91dGluZyBIZWFkZXIgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSYjMzk7cyBteSBicmVha2Rvd24uIFRoZSBjaGFuZ2VzIHNlZW0gY2VudGVyZWQgYXJvdW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGFja2V0IGZvcndhcmRpbmcgYW5kIHJvdXRpbmcgaGVhZGVycywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBUVEwvSG9wIExpbWl0IGV4cGlyYXRpb24uIEkgaW1tZWRpYXRlbHkgbm90ZWQgdGhhdCBgSU5FVGAgaXMgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgYElQVjZgIGlzLCBvZiBjb3Vyc2UsIHJlbGF0ZWQgdG8gSVB2NiBzdXBwb3J0LgoKSSBkdWcgaW50byB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlOgoKMS4gIGBpcF9mb3J3YXJkYCAoSVB2NCBmb3J3YXJkaW5nKQoyLiAgYGlwdjZfc3JoX3JjdmAgKElQdjYgU291cmNlIFJvdXRpbmcgSGVhZGVyIHByb2Nlc3NpbmcpCjMuICBgaXB2Nl9ycGxfc3JoX3JjdmAgKElQdjYgUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBwcm9jZXNzaW5nKQo0LiAgYGlwdjZfcnRoZHJfcmN2YCAoSVB2NiBSb3V0aW5nIEhlYWRlciBwcm9jZXNzaW5nKQo1LiAgYGlwNl9mb3J3YXJkYCAoSVB2NiBmb3J3YXJkaW5nKQoKSSBjaGVja2VkIGFuZCBmb3VuZCB0aGF0IGBpcF9mb3J3YXJkYCBhbmQgYGlwNl9mb3J3YXJkYCBhcmUgbm9uLXN0YXRpYyB3aGlsZSB0aGUgb3RoZXJzLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgLCBhbmQgYGlwdjZfcnRoZHJfcmN2YCwgYXJlIHN0YXRpYyBidXQgYXJlIGNhbGxlZCB2aWEgdGhlIGBydGhkcl9wcm90b2NvbGAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcGFydC4gQ29uc2lkZXJpbmcgdGhlc2UgbW9kaWZpY2F0aW9ucywgYW5kIGZyb20gdGhlIGNvbnRleHQgb2Ygd2hhdCB0aGVzZSBmdW5jdGlvbnMgKmRvKiwgSSBiZWxpZXZlIHdlIHNob3VsZCBtYXJrIHRoaXMgYXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuIEkgY2FuIGNyZWF0ZSBhIGNvbmNpc2UgYEZvY3VzU3ltYm9sc2AgbGlzdCBjb25zaXN0aW5nIG9mIHRoZSBub24tdWJpcXVpdG91cyBmdW5jdGlvbnM6IGBpcF9mb3J3YXJkYCwgYGlwNl9mb3J3YXJkYCwgYGlwdjZfcnRoZHJfcmN2YCwgYGlwdjZfc3JoX3JjdmAsIGFuZCBgaXB2Nl9ycGxfc3JoX3JjdmAuIEFsbCBvZiB0aG9zZSBhcmUgaW52b2x2ZWQgaW4gY29yZSBuZXR3b3JrIGZvcndhcmRpbmcsIHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgYW5kIFRUTC9ob3AgbGltaXQgaXNzdWVzLgoKTXkgYW5hbHlzaXMgYm9pbHMgZG93biB0byB0aGlzOgoKMS4gIGBXb3J0aEZ1enppbmdgOiBUcnVlCjIuICBgRm9jdXNTeW1ib2xzYDogYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9ydGhkcl9yY3ZgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgCjMuICBgRW5hYmxlQ29uZmlnc2A6IGBJTkVUYCwgYElQVjZgCjQuICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU0tCIGRyb3AgcmVhc29uIChgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGApIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgZXh0ZW5zaW9uIGhlYWRlciBwcm9jZXNzaW5nIHRvIHVzZSBpdCB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuCgpGaW5hbGx5LCBJIGRpZCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIGFyZ3VtZW50cyBmb3IgYHNldC1yZXN1bHRzYCBhcmUgY29ycmVjdC4gSSYjMzk7bSByZWFkeSB0byBjYWxsIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfZm9yd2FyZCYjMzQ7LAogICAgJiMzNDtpcDZfZm9yd2FyZCYjMzQ7LAogICAgJiMzNDtpcHY2X3J0aGRyX3JjdiYjMzQ7LAogICAgJiMzNDtpcHY2X3NyaF9yY3YmIzM0OywKICAgICYjMzQ7aXB2Nl9ycGxfc3JoX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgdG8gcmVwb3J0IHRoaXMgcmVhc29uIHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfZm9yd2FyZCYjMzQ7LAogICAgJiMzNDtpcDZfZm9yd2FyZCYjMzQ7LAogICAgJiMzNDtpcHY2X3J0aGRyX3JjdiYjMzQ7LAogICAgJiMzNDtpcHY2X3NyaF9yY3YmIzM0OywKICAgICYjMzQ7aXB2Nl9ycGxfc3JoX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgdG8gcmVwb3J0IHRoaXMgcmVhc29uIHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTA6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU0tCIGRyb3AgcmVhc29uIChgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGApIGluIGBpbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaGAgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IGZvcndhcmRpbmcgYW5kIHJvdXRpbmcgaGVhZGVyIHBhcnNpbmcgcGF0aHMgKGBpcF9mb3J3YXJkYCwgYGlwNl9mb3J3YXJkYCwgYGlwdjZfc3JoX3JjdmAsIGBpcHY2X3JwbF9zcmhfcmN2YCwgYGlwdjZfcnRoZHJfcmN2YCkgdG8gdXNlIHRoaXMgc3BlY2lmaWMgcmVhc29uIHdoZW4gZHJvcHBpbmcgcGFja2V0cyBkdWUgdG8gVFRML2hvcC1saW1pdCBleHBpcmF0aW9uLlxuXG5UaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3QgY29waWVzIHRvIHVzZXIgc3BhY2UsIGFsdGVyYXRpb25zIHRvIGJ1ZmZlciBib3VuZHMvbGVuZ3Rocywgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlIGNoYW5nZXMgc3RyaWN0bHkgcGFzcyBjb21waWxlLXRpbWUgZW51bSBjb25zdGFudHMgdG8gYGtmcmVlX3NrYl9yZWFzb25gLiBDb25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YTRjMTRkYTZiMzE3MGNkZWM5YTRkZWRmZTlhYTU2MTU2MGUzODUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMTA6MjU6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCmluZGV4IDJmMzEyZDFmNjdkNjkuLjEyZjkwOTY1MTU5MTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oCkBAIC05Myw2ICYjNDM7OTMsNyBAQAogCUZOKElQX0lOVkFMSURfU09VUkNFKQkJXAogCUZOKElQX0xPQ0FMTkVUKQkJCVwKIAlGTihJUF9JTlZBTElEX0RFU1QpCQlcCiYjNDM7CUZOKElQX1RUTF9FWENFRURFRCkJCVwKIAlGTihQS1RfVE9PX0JJRykJCQlcCiAJRk4oRFVQX0ZSQUcpCQkJXAogCUZOKEZSQUdfUkVBU01fVElNRU9VVCkJCVwKQEAgLTQ3NCw2ICYjNDM7NDc1LDExIEBAIGVudW0gc2tiX2Ryb3BfcmVhc29uIHsKIAkgKiAxKSBkZXN0IGlwIGlzIDAKIAkgKi8KIAlTS0JfRFJPUF9SRUFTT05fSVBfSU5WQUxJRF9ERVNULAomIzQzOwkvKioKJiM0MzsJICogQFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQ6IElQdjQgVFRMIG9yIElQdjYgaG9wIGxpbWl0ICZsdDs9IDEKJiM0MzsJICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUykKJiM0MzsJICovCiYjNDM7CVNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQsCiAJLyoqCiAJICogQFNLQl9EUk9QX1JFQVNPTl9QS1RfVE9PX0JJRzogcGFja2V0IHNpemUgaXMgdG9vIGJpZyAobWF5YmUgZXhjZWVkIHRoZQogCSAqIE1UVSkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2ZvcndhcmQuYyBiL25ldC9pcHY0L2lwX2ZvcndhcmQuYwppbmRleCA4YjY1ZjEyNTgzZWI2Li5iMjQyNTYxZDM3ZTczIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9mb3J3YXJkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jCkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpCiAJLyogVGVsbCB0aGUgc2VuZGVyIGl0cyBwYWNrZXQgZGllZC4uLiAqLwogCV9fSVBfSU5DX1NUQVRTKG5ldCwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpOwogCWljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTsKLQlTS0JfRFJfU0VUKHJlYXNvbiwgSVBfSU5IRFIpOwomIzQzOwlTS0JfRFJfU0VUKHJlYXNvbiwgSVBfVFRMX0VYQ0VFREVEKTsKIGRyb3A6CiAJa2ZyZWVfc2tiX3JlYXNvbihza2IsIHJlYXNvbik7CiAJcmV0dXJuIE5FVF9SWF9EUk9QOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZXh0aGRycy5jIGIvbmV0L2lwdjYvZXh0aGRycy5jCmluZGV4IDA5YTQ1NTJmN2YwOGEuLjU1MzkxZTJlNTYxMjkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2V4dGhkcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9leHRoZHJzLmMKQEAgLTQ2NCw3ICYjNDM7NDY0LDcgQEAgc3RhdGljIGludCBpcHY2X3NyaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X2RldiAqaWRldikKIAkJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAkJCWljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELAogCQkJCSAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTsKLQkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCQlpcHY2X2hkcihza2IpLSZndDtob3BfbGltaXQtLTsKQEAgLTYyMyw3ICYjNDM7NjIzLDcgQEAgc3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCiAJCQlfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7CiAJCQlpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwKIAkJCQkgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7Ci0JCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCQlrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIAkJaXB2Nl9oZHIoc2tiKS0mZ3Q7aG9wX2xpbWl0LS07CkBAIC04MTUsNyAmIzQzOzgxNSw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ydGhkcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAkJCWljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELCBJQ01QVjZfRVhDX0hPUExJTUlULAogCQkJCSAgICAwKTsKLQkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCQlpcHY2X2hkcihza2IpLSZndDtob3BfbGltaXQtLTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwppbmRleCA5NmVlM2RlNTVmOTMwLi5kZGFiYTBhZWJjYjExIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC01NzcsNyAmIzQzOzU3Nyw3IEBAIGludCBpcDZfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7CiAJCV9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTsKIAotCQlrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX0lOSERSKTsKJiM0MzsJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzY5CgkJCQkJCQlvdXRwdXQ6IDIwNAoJCQkJCQkJdGhvdWdodHM6IDczMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBFdmFsdWF0aW9uOiBObyBOZWVkIGZvciBEZWRpY2F0ZWQgRnV6emluZyBTZXNzaW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBzZXJpZXMgd2FycmFudHMgZmlyaW5nIHVwIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgYXNzZXNzIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBjb25jZXJucy4KCkxvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFdlJiMzOTtyZSBhZGRpbmcgYSBuZXcgZHJvcCByZWFzb24sIGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCwgaW4gYGRyb3ByZWFzb24tY29yZS5oYC4gVGhlIHBhdGNoIHRoZW4gcHJvcGFnYXRlcyB0aGlzIG5ldyBlbnVtIHZhbHVlLCByZXBsYWNpbmcgZ2VuZXJpYyBkcm9wIHJlYXNvbiBjb2RlcyBhbmQgYGtmcmVlX3NrYmAgY2FsbHMgd2l0aCBga2ZyZWVfc2tiX3JlYXNvbmAgY2FsbHMgdGhhdCBzcGVjaWZ5IHRoaXMgbmV3IHJlYXNvbi4gVGhpcyBoYXBwZW5zIGluIGBpcF9mb3J3YXJkYCwgYGlwNl9mb3J3YXJkYCwgYW5kIGEgZmV3IElQdjYgcm91dGluZyBoZWFkZXIgcHJvY2Vzc2luZyBmdW5jdGlvbnMuIFRoZSBnaXN0IGlzLCB3aGVuIGEgcGFja2V0JiMzOTtzIFRUTCBvciBob3AgbGltaXQgZXhwaXJlcywgd2UmIzM5O3JlIG5vdyBiZWluZyBtb3JlIHNwZWNpZmljIGFib3V0ICp3aHkqIGl0JiMzOTtzIGJlaW5nIGRyb3BwZWQuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gZm9yIEtNU0FOIGlzOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSBvcHBvcnR1bml0aWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBsZWFrcz8gQmFzZWQgb24gdGhlIGRpZmYsIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIG5vLiBXZSYjMzk7cmUganVzdCBhZGRpbmcgYSBuZXcgY29uc3RhbnQgYW5kIHBhc3NpbmcgaXQgYXMgYW4gYXJndW1lbnQgdG8gYGtmcmVlX3NrYl9yZWFzb25gLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSB3aGVyZSB1bmluaXRpYWxpemVkIGRhdGEgY291bGQgYmVjb21lIGFuIGlzc3VlLCBhbmQgbm8gY29uZGl0aW9uYWwgbG9naWMgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGUgbmV3IGVudW0gdmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQsIHB1cmVseSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyB0cmFjaW5nIGFuZCBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUuIFRoZSBgZHJvcHJlYXNvbi1jb3JlLmhgIGZpbGUgaXRzZWxmLCBhZnRlciBhIHF1aWNrIHNhbml0eSBjaGVjaywgY29uZmlybXMgdGhhdCB0aGUgZW51bSBhbmQgc3RyaW5nIG1hcHBpbmcgaXMgc2FmZSBmb3IgdXNlLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYSBtZXRhZGF0YSBlbmhhbmNlbWVudCBmb3IgZGVidWdnaW5nLCBub3QgYSBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgb3IgZGF0YSBmbG93IHRoYXQgY291bGQgdHJpZ2dlciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIHNlcmllcyAqZG9lcyBub3QqIHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOgoKKiAgIFRoZSBwYXRjaCAqb25seSogaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gYW5kIHVwZGF0ZXMgZXhpc3RpbmcgYGtmcmVlX3NrYl9yZWFzb25gIGNhbGxzLgoqICAgSXQgZG9lcyAqbm90KiBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGludGVyYWN0aW9ucyB3aXRoIHVzZXIgc3BhY2UsIHN0YWNrL2hlYXAgYnVmZmVyIG1hbmlwdWxhdGlvbnMsIG9yIGNvbnRyb2wgZmxvdyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBkYXRhLgoqICAgVGhlIHZhbHVlcyBhcmUgcGFzc2VkIHRvIGBrZnJlZV9za2JfcmVhc29uYCBhcyBjb21waWxlLXRpbWUgY29uc3RhbnRzLgoqICAgVGhlcmUmIzM5O3MgemVybyByaXNrIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcy4KCkkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFdlIHNob3VsZCBiZSBzYWZlIHRvIG1hcmsgdGhpcyBwYXRjaCBhcyBub3QgbmVlZGluZyBLTVNBTiBhdHRlbnRpb24uIE5vdyBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoYFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERURgKSBpbiBgaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhgIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBmb3J3YXJkaW5nIGFuZCByb3V0aW5nIGhlYWRlciBwYXJzaW5nIHBhdGhzIChgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGBpcHY2X3NyaF9yY3ZgLCBgaXB2Nl9ycGxfc3JoX3JjdmAsIGBpcHY2X3J0aGRyX3JjdmApIHRvIHVzZSB0aGlzIHNwZWNpZmljIHJlYXNvbiB3aGVuIGRyb3BwaW5nIHBhY2tldHMgZHVlIHRvIFRUTC9ob3AtbGltaXQgZXhwaXJhdGlvbi5cblxuVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0IGNvcGllcyB0byB1c2VyIHNwYWNlLCBhbHRlcmF0aW9ucyB0byBidWZmZXIgYm91bmRzL2xlbmd0aHMsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoZSBjaGFuZ2VzIHN0cmljdGx5IHBhc3MgY29tcGlsZS10aW1lIGVudW0gY29uc3RhbnRzIHRvIGBrZnJlZV9za2JfcmVhc29uYC4gQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCkgaW4gYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYCBhbmQgdXBkYXRlcyBJUHY0L0lQdjYgZm9yd2FyZGluZyBhbmQgcm91dGluZyBoZWFkZXIgcGFyc2luZyBwYXRocyAoYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgLCBgaXB2Nl9ydGhkcl9yY3ZgKSB0byB1c2UgdGhpcyBzcGVjaWZpYyByZWFzb24gd2hlbiBkcm9wcGluZyBwYWNrZXRzIGR1ZSB0byBUVEwvaG9wLWxpbWl0IGV4cGlyYXRpb24uXG5cblRoZXJlIGFyZSBubyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdCBjb3BpZXMgdG8gdXNlciBzcGFjZSwgYWx0ZXJhdGlvbnMgdG8gYnVmZmVyIGJvdW5kcy9sZW5ndGhzLCBvciBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgY2hhbmdlcyBzdHJpY3RseSBwYXNzIGNvbXBpbGUtdGltZSBlbnVtIGNvbnN0YW50cyB0byBga2ZyZWVfc2tiX3JlYXNvbmAuIENvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MDYuNjU5MDc0NTU3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkxMDIyMjkzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZvcndhcmRcIixcbiAgICBcImlwNl9mb3J3YXJkXCIsXG4gICAgXCJpcHY2X3J0aGRyX3JjdlwiLFxuICAgIFwiaXB2Nl9zcmhfcmN2XCIsXG4gICAgXCJpcHY2X3JwbF9zcmhfcmN2XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoYFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERURgKSBpbiBgaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhgIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBmb3J3YXJkaW5nIGFuZCByb3V0aW5nIGhlYWRlciBwYXJzaW5nIHBhdGhzIChgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGBpcHY2X3NyaF9yY3ZgLCBgaXB2Nl9ycGxfc3JoX3JjdmAsIGBpcHY2X3J0aGRyX3JjdmApIHRvIHVzZSB0aGlzIHNwZWNpZmljIHJlYXNvbiB3aGVuIGRyb3BwaW5nIHBhY2tldHMgZHVlIHRvIFRUTC9ob3AtbGltaXQgZXhwaXJhdGlvbi5cXG5cXG5UaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3QgY29waWVzIHRvIHVzZXIgc3BhY2UsIGFsdGVyYXRpb25zIHRvIGJ1ZmZlciBib3VuZHMvbGVuZ3Rocywgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlIGNoYW5nZXMgc3RyaWN0bHkgcGFzcyBjb21waWxlLXRpbWUgZW51bSBjb25zdGFudHMgdG8gYGtmcmVlX3NrYl9yZWFzb25gLiBDb25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIHRvIHJlcG9ydCB0aGlzIHJlYXNvbiB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjA2LjY1OTA4MDg3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3Mjk3MDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGE0YzE0ZGE2YjMxNzBjZGVjOWE0ZGVkZmU5YWE1NjE1NjBlMzg1M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMDoyNTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXFxuaW5kZXggMmYzMTJkMWY2N2Q2OS4uMTJmOTA5NjUxNTkxMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXFxuQEAgLTkzLDYgKzkzLDcgQEBcXG4gXFx0Rk4oSVBfSU5WQUxJRF9TT1VSQ0UpXFx0XFx0XFxcXFxcbiBcXHRGTihJUF9MT0NBTE5FVClcXHRcXHRcXHRcXFxcXFxuIFxcdEZOKElQX0lOVkFMSURfREVTVClcXHRcXHRcXFxcXFxuK1xcdEZOKElQX1RUTF9FWENFRURFRClcXHRcXHRcXFxcXFxuIFxcdEZOKFBLVF9UT09fQklHKVxcdFxcdFxcdFxcXFxcXG4gXFx0Rk4oRFVQX0ZSQUcpXFx0XFx0XFx0XFxcXFxcbiBcXHRGTihGUkFHX1JFQVNNX1RJTUVPVVQpXFx0XFx0XFxcXFxcbkBAIC00NzQsNiArNDc1LDExIEBAIGVudW0gc2tiX2Ryb3BfcmVhc29uIHtcXG4gXFx0ICogMSkgZGVzdCBpcCBpcyAwXFxuIFxcdCAqL1xcbiBcXHRTS0JfRFJPUF9SRUFTT05fSVBfSU5WQUxJRF9ERVNULFxcbitcXHQvKipcXG4rXFx0ICogQFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQ6IElQdjQgVFRMIG9yIElQdjYgaG9wIGxpbWl0IFxcdTAwM2M9IDFcXG4rXFx0ICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUylcXG4rXFx0ICovXFxuK1xcdFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQsXFxuIFxcdC8qKlxcbiBcXHQgKiBAU0tCX0RST1BfUkVBU09OX1BLVF9UT09fQklHOiBwYWNrZXQgc2l6ZSBpcyB0b28gYmlnIChtYXliZSBleGNlZWQgdGhlXFxuIFxcdCAqIE1UVSlcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jIGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXFxuaW5kZXggOGI2NWYxMjU4M2ViNi4uYjI0MjU2MWQzN2U3MyAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9pcF9mb3J3YXJkLmNcXG4rKysgYi9uZXQvaXB2NC9pcF9mb3J3YXJkLmNcXG5AQCAtMTc0LDcgKzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdC8qIFRlbGwgdGhlIHNlbmRlciBpdHMgcGFja2V0IGRpZWQuLi4gKi9cXG4gXFx0X19JUF9JTkNfU1RBVFMobmV0LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XFxuIFxcdGljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTtcXG4tXFx0U0tCX0RSX1NFVChyZWFzb24sIElQX0lOSERSKTtcXG4rXFx0U0tCX0RSX1NFVChyZWFzb24sIElQX1RUTF9FWENFRURFRCk7XFxuIGRyb3A6XFxuIFxcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCByZWFzb24pO1xcbiBcXHRyZXR1cm4gTkVUX1JYX0RST1A7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2V4dGhkcnMuYyBiL25ldC9pcHY2L2V4dGhkcnMuY1xcbmluZGV4IDA5YTQ1NTJmN2YwOGEuLjU1MzkxZTJlNTYxMjkgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvZXh0aGRycy5jXFxuKysrIGIvbmV0L2lwdjYvZXh0aGRycy5jXFxuQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgaW50IGlwdjZfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxcbiBcXHRcXHRcXHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XFxuIFxcdFxcdFxcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELFxcbiBcXHRcXHRcXHRcXHQgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XFxuLVxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRcXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRpcHY2X2hkcihza2IpLVxcdTAwM2Vob3BfbGltaXQtLTtcXG5AQCAtNjIzLDcgKzYyMyw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ycGxfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxcbiBcXHRcXHRcXHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XFxuIFxcdFxcdFxcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELFxcbiBcXHRcXHRcXHRcXHQgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XFxuLVxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRcXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRpcHY2X2hkcihza2IpLVxcdTAwM2Vob3BfbGltaXQtLTtcXG5AQCAtODE1LDcgKzgxNSw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ydGhkcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0XFx0X19JUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xcbiBcXHRcXHRcXHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCxcXG4gXFx0XFx0XFx0XFx0ICAgIDApO1xcbi1cXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aXB2Nl9oZHIoc2tiKS1cXHUwMDNlaG9wX2xpbWl0LS07XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xcbmluZGV4IDk2ZWUzZGU1NWY5MzAuLmRkYWJhMGFlYmNiMTEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXFxuQEAgLTU3Nyw3ICs1NzcsNyBAQCBpbnQgaXA2X2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsIElDTVBWNl9FWENfSE9QTElNSVQsIDApO1xcbiBcXHRcXHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XFxuIFxcbi1cXHRcXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX0lOSERSKTtcXG4rXFx0XFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xcbiBcXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MDcuMjc3MzQ2OTI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjY5MDQxNjA5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfZm9yd2FyZFwiLFxuICAgIFwiaXA2X2ZvcndhcmRcIixcbiAgICBcImlwdjZfcnRoZHJfcmN2XCIsXG4gICAgXCJpcHY2X3NyaF9yY3ZcIixcbiAgICBcImlwdjZfcnBsX3NyaF9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IFNLQiBkcm9wIHJlYXNvbiAoU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgdG8gcmVwb3J0IHRoaXMgcmVhc29uIHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YTRjMTRkYTZiMzE3MGNkZWM5YTRkZWRmZTlhYTU2MTU2MGUzODUzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMTA6MjU6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaCBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXG5pbmRleCAyZjMxMmQxZjY3ZDY5Li4xMmY5MDk2NTE1OTEyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhcbisrKyBiL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oXG5AQCAtOTMsNiArOTMsNyBAQFxuIFx0Rk4oSVBfSU5WQUxJRF9TT1VSQ0UpXHRcdFxcXG4gXHRGTihJUF9MT0NBTE5FVClcdFx0XHRcXFxuIFx0Rk4oSVBfSU5WQUxJRF9ERVNUKVx0XHRcXFxuK1x0Rk4oSVBfVFRMX0VYQ0VFREVEKVx0XHRcXFxuIFx0Rk4oUEtUX1RPT19CSUcpXHRcdFx0XFxcbiBcdEZOKERVUF9GUkFHKVx0XHRcdFxcXG4gXHRGTihGUkFHX1JFQVNNX1RJTUVPVVQpXHRcdFxcXG5AQCAtNDc0LDYgKzQ3NSwxMSBAQCBlbnVtIHNrYl9kcm9wX3JlYXNvbiB7XG4gXHQgKiAxKSBkZXN0IGlwIGlzIDBcbiBcdCAqL1xuIFx0U0tCX0RST1BfUkVBU09OX0lQX0lOVkFMSURfREVTVCxcbitcdC8qKlxuK1x0ICogQFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQ6IElQdjQgVFRMIG9yIElQdjYgaG9wIGxpbWl0IFx1MDAzYz0gMVxuK1x0ICogKHNlZSBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUylcbitcdCAqL1xuK1x0U0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCxcbiBcdC8qKlxuIFx0ICogQFNLQl9EUk9QX1JFQVNPTl9QS1RfVE9PX0JJRzogcGFja2V0IHNpemUgaXMgdG9vIGJpZyAobWF5YmUgZXhjZWVkIHRoZVxuIFx0ICogTVRVKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2ZvcndhcmQuYyBiL25ldC9pcHY0L2lwX2ZvcndhcmQuY1xuaW5kZXggOGI2NWYxMjU4M2ViNi4uYjI0MjU2MWQzN2U3MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX2ZvcndhcmQuY1xuKysrIGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG5AQCAtMTc0LDcgKzE3NCw3IEBAIGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXG4gXHQvKiBUZWxsIHRoZSBzZW5kZXIgaXRzIHBhY2tldCBkaWVkLi4uICovXG4gXHRfX0lQX0lOQ19TVEFUUyhuZXQsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdGljbXBfc2VuZChza2IsIElDTVBfVElNRV9FWENFRURFRCwgSUNNUF9FWENfVFRMLCAwKTtcbi1cdFNLQl9EUl9TRVQocmVhc29uLCBJUF9JTkhEUik7XG4rXHRTS0JfRFJfU0VUKHJlYXNvbiwgSVBfVFRMX0VYQ0VFREVEKTtcbiBkcm9wOlxuIFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIHJlYXNvbik7XG4gXHRyZXR1cm4gTkVUX1JYX0RST1A7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZXh0aGRycy5jIGIvbmV0L2lwdjYvZXh0aGRycy5jXG5pbmRleCAwOWE0NTUyZjdmMDhhLi41NTM5MWUyZTU2MTI5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvZXh0aGRycy5jXG4rKysgYi9uZXQvaXB2Ni9leHRoZHJzLmNcbkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIGludCBpcHY2X3NyaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X2RldiAqaWRldilcbiBcdFx0XHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XG4gXHRcdFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsXG4gXHRcdFx0XHQgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XG4tXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0fVxuIFx0XHRpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdC0tO1xuQEAgLTYyMyw3ICs2MjMsNyBAQCBzdGF0aWMgaW50IGlwdjZfcnBsX3NyaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X2RldiAqaWRldilcbiBcdFx0XHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XG4gXHRcdFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsXG4gXHRcdFx0XHQgICAgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XG4tXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0fVxuIFx0XHRpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdC0tO1xuQEAgLTgxNSw3ICs4MTUsNyBAQCBzdGF0aWMgaW50IGlwdjZfcnRoZHJfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0X19JUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xuIFx0XHRcdGljbXB2Nl9zZW5kKHNrYiwgSUNNUFY2X1RJTUVfRVhDRUVELCBJQ01QVjZfRVhDX0hPUExJTUlULFxuIFx0XHRcdFx0ICAgIDApO1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTtcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXHRcdH1cbiBcdFx0aXB2Nl9oZHIoc2tiKS1cdTAwM2Vob3BfbGltaXQtLTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbmluZGV4IDk2ZWUzZGU1NWY5MzAuLmRkYWJhMGFlYmNiMTEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbisrKyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuQEAgLTU3Nyw3ICs1NzcsNyBAQCBpbnQgaXA2X2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsIElDTVBWNl9FWENfSE9QTElNSVQsIDApO1xuIFx0XHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XG4gXG4tXHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfSU5IRFIpO1xuK1x0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdHJldHVybiAtRVRJTUVET1VUO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MDcuMjc3MzQ5NTQ4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQ2NzM1OTczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBUVEwgRXhjZWVkZWQgRHJvcCBSZWFzb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBpbnRyb2R1Y2luZyBhIG5ldyBTS0IgZHJvcCByZWFzb24sIHNwZWNpZmljYWxseSBmb3Igd2hlbiB0aGUgSVAgVGltZSBUbyBMaXZlIChUVEwpIGlzIGV4Y2VlZGVkLiBJdCBsb29rcyBsaWtlIHRoZSBjb25zdGFudCBgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGAgaXMgYmVpbmcgZGVmaW5lZCwgd2hpY2ggbWFwcyB0byBgSVBfVFRMX0VYQ0VFREVEYCBpbiBgaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhgLiBUaGF0IG1ha2VzIHNlbnNlOyBhIHN0YW5kYXJkaXplZCBkcm9wIHJlYXNvbiBpcyBhbHdheXMgZ29vZCBmb3IgZGVidWdnaW5nIGFuZCBtb25pdG9yaW5nLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGNvZGUgY2hhbmdlcyB0aGVtc2VsdmVzIGFuZCBtYWtlIHN1cmUgS2NvbmZpZ3MgYW5kIGZ1bmN0aW9ucyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuIEkgbmVlZCB0byBjb25maXJtIHRoZSBpbXBhY3Qgb2YgdGhpcyBuZXcgZHJvcCByZWFzb24uXG5cbk5vdywgbGV0J3MgcXVpY2tseSBjaGVjayB0aGUgZmlsZXMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBieSB0aGlzIHBhdGNoLiBPa2F5LCBpdCdzIHRvdWNoaW5nIGBpbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaGAsIGFuZCB0aGVuIHRoZSBjb3JlIGZvcndhcmRpbmcgYW5kIHByb2Nlc3NpbmcgbW9kdWxlczogYG5ldC9pcHY0L2lwX2ZvcndhcmQuY2AsIGBuZXQvaXB2Ni9leHRoZHJzLmNgLCBhbmQgYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2AuIFRoYXQgdGVsbHMgbWUgaXQncyBkZWZpbml0ZWx5IGFmZmVjdGluZyB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiBJUHY0IGZvcndhcmRpbmcsIHNvbWUgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIGFuZCBmb3J3YXJkaW5nLiBUaGlzIGlzIGltcG9ydGFudCBzdHVmZi4gSSB0aGluayBcIldvcnRoRnV6emluZ1wiIHNob3VsZCBiZSBzZXQgdG8gdHJ1ZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGVzZSBmdW5jdGlvbnMgaW4gZGV0YWlsOlxuMS4gIGBpcF9mb3J3YXJkYCBpbiBgbmV0L2lwdjQvaXBfZm9yd2FyZC5jYFxuMi4gIGBpcHY2X3NyaF9yY3ZgIGluIGBuZXQvaXB2Ni9leHRoZHJzLmNgXG4zLiAgYGlwdjZfcnBsX3NyaF9yY3ZgIGluIGBuZXQvaXB2Ni9leHRoZHJzLmNgXG40LiAgYGlwdjZfcnRoZHJfcmN2YCBpbiBgbmV0L2lwdjYvZXh0aGRycy5jYFxuNS4gIGBpcDZfZm9yd2FyZGAgaW4gYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2BcblxuRmluYWxseSwgbGV0IG1lIHNlZSBpZiB0aGVzZSBTUkggb3IgUlBMIGNvbmZpZ3MgbmVlZCBhbnl0aGluZyBzcGVjaWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTU3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MTEuNzQ0NzEyOTU4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjQ3Mjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQVjZfU0VHNlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnPTI3OT1jb25maWcgSVBWNl9QSU1TTV9WMlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbm5ldC9pcHY2L0tjb25maWc6MzE0OlxcdGRlcGVuZHMgb24gSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTUtXFx0ZGVwZW5kcyBvbiBJUFY2ID0geVxcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGU9MjQ9aXB2Ni0kKENPTkZJR19ORVRMQUJFTCkgKz0gY2FsaXBzby5vXFxubmV0L2lwdjYvTWFrZWZpbGU6MjU6aXB2Ni0kKENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUwpICs9IHNlZzZfaXB0dW5uZWwubyBzZWc2X2xvY2FsLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyNjppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9ITUFDKSArPSBzZWc2X2htYWMub1xcbm5ldC9pcHY2L01ha2VmaWxlLTI3LWlwdjYtJChDT05GSUdfSVBWNl9SUExfTFdUVU5ORUwpICs9IHJwbF9pcHR1bm5lbC5vXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTE4MT1zdGF0aWMgc3RydWN0IGlwdjZfZGV2Y29uZiBpcHY2X2RldmNvbmYgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjI5LVxcdC5zZWc2X2VuYWJsZWRcXHRcXHQ9IDAsXFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyMzA6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjMxLVxcdC5zZWc2X3JlcXVpcmVfaG1hY1xcdD0gMCxcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmM9MjQ2PXN0YXRpYyBzdHJ1Y3QgaXB2Nl9kZXZjb25mIGlwdjZfZGV2Y29uZl9kZmx0IF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI5NC1cXHQuc2VnNl9lbmFibGVkXFx0XFx0PSAwLFxcbm5ldC9pcHY2L2FkZHJjb25mLmM6Mjk1OiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI5Ni1cXHQuc2VnNl9yZXF1aXJlX2htYWNcXHQ9IDAsXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTU2Njk9c3RhdGljIHZvaWQgaXB2Nl9zdG9yZV9kZXZjb25mKGNvbnN0IHN0cnVjdCBpcHY2X2RldmNvbmYgKmNuZixcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtNTc0My1cXHRhcnJheVtERVZDT05GX1NFRzZfRU5BQkxFRF0gPSBSRUFEX09OQ0UoY25mLVxcdTAwM2VzZWc2X2VuYWJsZWQpO1xcbm5ldC9pcHY2L2FkZHJjb25mLmM6NTc0NDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvYWRkcmNvbmYuYy01NzQ1LVxcdGFycmF5W0RFVkNPTkZfU0VHNl9SRVFVSVJFX0hNQUNdID0gUkVBRF9PTkNFKGNuZi1cXHUwMDNlc2VnNl9yZXF1aXJlX2htYWMpO1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz02ODU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIGFkZHJjb25mX3N5c2N0bFtdID0ge1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYy03MjMwLVxcdH0sXFxubmV0L2lwdjYvYWRkcmNvbmYuYzo3MjMxOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTcyMzItXFx0e1xcbi0tXFxubmV0L2lwdjYvZXh0aGRycy5jLTQ3LSNpbmNsdWRlIFxcdTAwM2NuZXQvc2VnNi5oXFx1MDAzZVxcbm5ldC9pcHY2L2V4dGhkcnMuYzo0ODojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvZXh0aGRycy5jLTQ5LSNpbmNsdWRlIFxcdTAwM2NuZXQvc2VnNl9obWFjLmhcXHUwMDNlXFxuLS1cXG5uZXQvaXB2Ni9leHRoZHJzLmM9MzcxPXN0YXRpYyBpbnQgaXB2Nl9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXFxuLS1cXG5uZXQvaXB2Ni9leHRoZHJzLmMtMzg4LVxcbm5ldC9pcHY2L2V4dGhkcnMuYzozODk6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L2V4dGhkcnMuYy0zOTAtXFx0aWYgKCFzZWc2X2htYWNfdmFsaWRhdGVfc2tiKHNrYikpIHtcXG4tLVxcbm5ldC9pcHY2L2V4dGhkcnMuYz0xMTI0PXN0YXRpYyB1OCBpcHY2X3B1c2hfcnRoZHI0KHN0cnVjdCBza19idWZmICpza2IsIHU4IHByb3RvLFxcbi0tXFxubmV0L2lwdjYvZXh0aGRycy5jLTExNTItXFxubmV0L2lwdjYvZXh0aGRycy5jOjExNTM6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L2V4dGhkcnMuYy0xMTU0LVxcdGlmIChzcl9oYXNfaG1hYyhzcl9waGRyKSkge1xcbi0tXFxubmV0L2lwdjYvc2VnNi5jPTE0MD1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgc2VnNl9nZW5sX3BvbGljeVtTRUc2X0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2LmMtMTUwLVxcbm5ldC9pcHY2L3NlZzYuYzoxNTE6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L3NlZzYuYy0xNTItXFxuLS1cXG5uZXQvaXB2Ni9zZWc2LmM9MjY2PXN0YXRpYyBpbnQgc2VnNl9nZW5sX2dldF90dW5zcmMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9pcHY2L3NlZzYuYy0yOTktXFxubmV0L2lwdjYvc2VnNi5jOjMwMDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvc2VnNi5jLTMwMS1cXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yNS0jaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9jYWNoZS5oXFx1MDAzZVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzoyNjojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTI3LSNpbmNsdWRlIFxcdTAwM2NuZXQvc2VnNl9obWFjLmhcXHUwMDNlXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MTQxPXN0YXRpYyBpbnQgX19zZWc2X2RvX3NyaF9lbmNhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMjAxLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzoyMDI6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0yMDMtXFx0aWYgKHNyX2hhc19obWFjKGlzcmgpKSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MjI1PXN0YXRpYyBpbnQgc2VnNl9kb19zcmhfZW5jYXBfcmVkKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMzI4LVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzozMjk6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0zMzAtXFx0aWYgKHVubGlrZWx5KCFza2lwX3NyaCBcXHUwMDI2XFx1MDAyNiBzcl9oYXNfaG1hYyhpc3JoKSkpIHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz0zNDU9c3RhdGljIGludCBfX3NlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMzgwLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzozODE6I2lmZGVmIENPTkZJR19JUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0zODItXFx0aWYgKHNyX2hhc19obWFjKGlzcmgpKSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjctI2luY2x1ZGUgXFx1MDAzY25ldC9pcF90dW5uZWxzLmhcXHUwMDNlXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjI4OiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjktI2luY2x1ZGUgXFx1MDAzY25ldC9zZWc2X2htYWMuaFxcdTAwM2VcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yMTY9c3RhdGljIHN0cnVjdCBpcHY2X3NyX2hkciAqZ2V0X2FuZF92YWxpZGF0ZV9zcmgoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yMjMtXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjIyNDojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTIyNS1cXHRpZiAoIXNlZzZfaG1hY192YWxpZGF0ZV9za2Ioc2tiKSlcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yMzI9c3RhdGljIGJvb2wgZGVjYXBfYW5kX3ZhbGlkYXRlKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcm90bylcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNDAtXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjI0MTojaWZkZWYgQ09ORklHX0lQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI0Mi1cXHRpZiAoc3JoIFxcdTAwMjZcXHUwMDI2ICFzZWc2X2htYWNfdmFsaWRhdGVfc2tiKHNrYikpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9NzU4PXN0YXRpYyBpbnQgZW5kX2Zsdjg5ODZfY29yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtNzY5LVxcdHBpbmZvID0gc2VnNl9nZXRfc3JoX3BrdGluZm8oc3JoKTtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6NzcwOiNpZmRlZiBDT05GSUdfSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtNzcxLVxcdGlmIChzcmggXFx1MDAyNlxcdTAwMjYgIXNlZzZfaG1hY192YWxpZGF0ZV9za2Ioc2tiKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MTEuODA4MzY2NDM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY2MTgxMzQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBJUHY2IEV4dGVuc2lvbiBIZWFkZXIgSGFuZGxpbmcqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgaGFuZGxpbmcgb2YgSVB2NiBleHRlbnNpb24gaGVhZGVycywgc3BlY2lmaWNhbGx5IHRoZSByb3V0aW5nIGhlYWRlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGtlcm5lbCBjb2RlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZm9yIHJvdXRpbmcgaGVhZGVycyBsaWtlIFR5cGUgMCwgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgYW5kIFJQTC1zcGVjaWZpYyBTUkguIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNvbXBpbGF0aW9uIGFuZCBpbnZvY2F0aW9uIG9mIGBpcHY2X3J0aGRyX3JjdmAsIGBpcHY2X3NyaF9yY3ZgLCBhbmQgYGlwdjZfcnBsX3NyaF9yY3ZgLiBJIGZpZ3VyZSB0aGF0IGBuZXQvaXB2Ni9leHRoZHJzLmNgIGlzIHRoZSBwcmltZSBsb2NhdGlvbiB0byBmaW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGhvb2tlZCB1cCBhbmQgY2FsbGVkIGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBUaGlzIGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gc2VlIGhvdyB0aGV5J3JlIGNvbXBpbGVkIGludG8gdGhlIG92ZXJhbGwgcmVjZXB0aW9uIHBhdGguIFRpbWUgdG8gc2VlIHdoYXQgdGhlIHNvdXJjZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToxNS40NzAxODIyMjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzOTM4NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdjZfcnRoZHJfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2V4dGhkcnMuYz00ODE9c3RhdGljIGludCBpcHY2X3JwbF9zcmhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXFxuLS1cXG5uZXQvaXB2Ni9leHRoZHJzLmMtNjQ0LS8qIGNhbGxlZCB3aXRoIHJjdV9yZWFkX2xvY2soKSAqL1xcbm5ldC9pcHY2L2V4dGhkcnMuYzo2NDU6c3RhdGljIGludCBpcHY2X3J0aGRyX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY2L2V4dGhkcnMuYy02NDYte1xcbi0tXFxubmV0L2lwdjYvZXh0aGRycy5jPTg0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGluZXQ2X3Byb3RvY29sIHJ0aGRyX3Byb3RvY29sID0ge1xcbm5ldC9pcHY2L2V4dGhkcnMuYzo4NDE6XFx0LmhhbmRsZXJcXHQ9XFx0aXB2Nl9ydGhkcl9yY3YsXFxubmV0L2lwdjYvZXh0aGRycy5jLTg0Mi1cXHQuZmxhZ3NcXHRcXHQ9XFx0SU5FVDZfUFJPVE9fTk9QT0xJQ1ksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjE1LjU5NDEyNTY1OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2NTEwNjcwMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIElQdjYgUm91dGluZyBIZWFkZXIgSGFuZGxpbmcgaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgSVB2NiByb3V0aW5nIGhlYWRlciBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBuZXQvaXB2Ni9leHRoZHJzLmNgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGhhbmRsaW5nIG9mIHRoZXNlIHJvdXRpbmcgaGVhZGVycywgc28gSSdsbCBzdGFydCB3aXRoIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIHJlY2VpdmluZyB0aGVtOiBgaXB2Nl9ydGhkcl9yY3ZgLCBgaXB2Nl9zcmhfcmN2YCwgYW5kIGBpcHY2X3JwbF9zcmhfcmN2YC4gSSBiZWxpZXZlIGBpcHY2X3J0aGRyX3JjdmAgaXMgdGhlIGNlbnRyYWwgcG9pbnQgaGVyZSwgdGhlIGhhbmRsZXIgZm9yIHRoZSBJUHY2IHJvdXRpbmcgaGVhZGVyIGl0c2VsZiwgcmVnaXN0ZXJlZCwgSSB0aGluaywgdW5kZXIgYHJ0aGRyX3Byb3RvY29sYC5cblxuTm93LCBpZiBtZW1vcnkgc2VydmVzLCB3aXRoaW4gYGlwdjZfcnRoZHJfcmN2YCwgdGhlIGNvbnRyb2wgZmxvdyBicmFuY2hlcyBiYXNlZCBvbiB0aGUgcm91dGluZyBoZWFkZXIgdHlwZS4gIEZvciB0eXBlIGBJUFY2X1NSQ1JUX1RZUEVfNGAsIHdlIHNob3VsZCBiZSBjYWxsaW5nIGBpcHY2X3NyaF9yY3ZgLiBTaW1pbGFybHksIGBJUFY2X1NSQ1JUX1RZUEVfM2AgcHJvYmFibHkgY2FsbHMgYGlwdjZfcnBsX3NyaF9yY3ZgLiBPdGhlciByb3V0aW5nIGhlYWRlciB0eXBlcywgc3VjaCBhcyBgSVBWNl9TUkNSVF9UWVBFXzBgIHNob3VsZCBiZSBoYW5kbGVkIGRpcmVjdGx5IHdpdGhpbiBgaXB2Nl9ydGhkcl9yY3ZgLlxuXG5KdXN0IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGV4dGhkcnMub2AgaXMgaW5kZWVkIGJ1aWx0IHdoZW4gYENPTkZJR19JUFY2YCBpcyBlbmFibGVkLiAgQSBxdWljayBjaGVjayBvZiB0aGUgYG5ldC9pcHY2L01ha2VmaWxlYCBzaG91bGQgY29uZmlybSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDIxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjE5LjI0NTE5NjYzMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTk5MTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHRoZHJzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cXHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxcXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMS1cXHRcXHRyYXcubyBpY21wLm8gbWNhc3QubyByZWFzc2VtYmx5Lm8gdGNwX2lwdjYubyBwaW5nLm8gXFxcXFxcbm5ldC9pcHY2L01ha2VmaWxlOjEyOlxcdFxcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTMtXFx0XFx0dWRwX29mZmxvYWQubyBzZWc2Lm8gZmliNl9ub3RpZmllci5vIHJwbC5vIGlvYW02Lm9cXG4tLVxcbm5ldC9pcHY2L01ha2VmaWxlPTQ3PW9iai0kKENPTkZJR19JTkVUKSArPSBvdXRwdXRfY29yZS5vIHByb3RvY29sLm8gXFxcXFxcbm5ldC9pcHY2L01ha2VmaWxlOjQ4OlxcdFxcdFxcdGlwNl9vZmZsb2FkLm8gZXh0aGRyc19vZmZsb2FkLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS00OS1cXG4tLVxcbm5ldC9pcHY2L2V4dGhkcnNfb2ZmbG9hZC5jPTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X29mZmxvYWQgaGJoX29mZmxvYWQgPSB7XFxuLS1cXG5uZXQvaXB2Ni9leHRoZHJzX29mZmxvYWQuYy0yMi1cXG5uZXQvaXB2Ni9leHRoZHJzX29mZmxvYWQuYzoyMzppbnQgX19pbml0IGlwdjZfZXh0aGRyc19vZmZsb2FkX2luaXQodm9pZClcXG5uZXQvaXB2Ni9leHRoZHJzX29mZmxvYWQuYy0yNC17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jPTQzNz1zdGF0aWMgaW50IF9faW5pdCBpcHY2X29mZmxvYWRfaW5pdCh2b2lkKVxcbi0tXFxubmV0L2lwdjYvaXA2X29mZmxvYWQuYy00NDEtXFx0XFx0cHJfY3JpdChcXFwiJXM6IENhbm5vdCBhZGQgVENQIHByb3RvY29sIG9mZmxvYWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jOjQ0MjpcXHRpZiAoaXB2Nl9leHRoZHJzX29mZmxvYWRfaW5pdCgpIFxcdTAwM2MgMClcXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jLTQ0My1cXHRcXHRwcl9jcml0KFxcXCIlczogQ2Fubm90IGFkZCBFWFRIRFJTIHByb3RvY29sIG9mZmxvYWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9vZmZsb2FkLmgtOS1cXG5uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5oOjEwOmludCBpcHY2X2V4dGhkcnNfb2ZmbG9hZF9pbml0KHZvaWQpO1xcbm5ldC9pcHY2L2lwNl9vZmZsb2FkLmgtMTEtaW50IHVkcHY2X29mZmxvYWRfaW5pdCh2b2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTA6MjU6MTkuMzE3MTkzODQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY3OTIwMzI0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgS2VybmVsIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGVzZSBuZXR3b3JrIG1vZHVsZXMgYXJlIGJ1aWx0IHdpdGhpbiB0aGUga2VybmVsLiBJIHNlZSB0aGF0IGBleHRoZHJzLm9gIGFuZCBgaXA2X291dHB1dC5vYCBhcmUgcGFydCBvZiB0aGUgYGlwdjYteWAgdGFyZ2V0LCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGV5J3JlIGNsZWFybHkgSVB2Ni1yZWxhdGVkLCBhbmQgdGhhdCB3aG9sZSBzZXQgaXMgZW5hYmxlZCB3aGVuIGBDT05GSUdfSVBWNmAgaXMgc2V0LiBUaGVuLCBJJ20gbm90aW5nIHRoYXQgYGlwX2ZvcndhcmQub2AgaXMgbG9jYXRlZCBpbiB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYCBhbmQgaXQgZmFsbHMgdW5kZXIgZWl0aGVyIGBDT05GSUdfSU5FVGAgb3IgYENPTkZJR19ORVRgLiBJdOKAmXMgcHJldHR5IHN0YW5kYXJkIGhvdyB0aGUgSVB2NCBmb3J3YXJkaW5nIG1vZHVsZSBpcyBoYW5kbGVkLiBUbyBmaWd1cmUgb3V0IHRoZSBkZXRhaWxzIG9mIHdoYXQgZ2V0cyBidWlsdCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBNYWtlZmlsZSBkaXJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE2MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjIxLjk5NjQwMDM0OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4Mjc1MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX2ZvcndhcmRcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjc6XFx0ICAgICBpcF9pbnB1dC5vIGlwX2ZyYWdtZW50Lm8gaXBfZm9yd2FyZC5vIGlwX29wdGlvbnMubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGUtOC1cXHQgICAgIGlwX291dHB1dC5vIGlwX3NvY2tnbHVlLm8gaW5ldF9oYXNodGFibGVzLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToyMi4xMDQ2ODE2NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzU4MDM3MzcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBOZXR3b3JrIEZvcndhcmRpbmcgYW5kIFJvdXRpbmcgSGVhZGVyIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBoZXJlJ3MgbXkgYnJlYWtkb3duLiBUaGUgY2hhbmdlcyBzZWVtIGNlbnRlcmVkIGFyb3VuZCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHBhY2tldCBmb3J3YXJkaW5nIGFuZCByb3V0aW5nIGhlYWRlcnMsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgVFRML0hvcCBMaW1pdCBleHBpcmF0aW9uLiBJIGltbWVkaWF0ZWx5IG5vdGVkIHRoYXQgYElORVRgIGlzIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIGBJUFY2YCBpcywgb2YgY291cnNlLCByZWxhdGVkIHRvIElQdjYgc3VwcG9ydC5cblxuSSBkdWcgaW50byB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlOlxuXG4xLiAgYGlwX2ZvcndhcmRgIChJUHY0IGZvcndhcmRpbmcpXG4yLiAgYGlwdjZfc3JoX3JjdmAgKElQdjYgU291cmNlIFJvdXRpbmcgSGVhZGVyIHByb2Nlc3NpbmcpXG4zLiAgYGlwdjZfcnBsX3NyaF9yY3ZgIChJUHY2IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgcHJvY2Vzc2luZylcbjQuICBgaXB2Nl9ydGhkcl9yY3ZgIChJUHY2IFJvdXRpbmcgSGVhZGVyIHByb2Nlc3NpbmcpXG41LiAgYGlwNl9mb3J3YXJkYCAoSVB2NiBmb3J3YXJkaW5nKVxuXG5JIGNoZWNrZWQgYW5kIGZvdW5kIHRoYXQgYGlwX2ZvcndhcmRgIGFuZCBgaXA2X2ZvcndhcmRgIGFyZSBub24tc3RhdGljIHdoaWxlIHRoZSBvdGhlcnMsIGBpcHY2X3NyaF9yY3ZgLCBgaXB2Nl9ycGxfc3JoX3JjdmAsIGFuZCBgaXB2Nl9ydGhkcl9yY3ZgLCBhcmUgc3RhdGljIGJ1dCBhcmUgY2FsbGVkIHZpYSB0aGUgYHJ0aGRyX3Byb3RvY29sYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQuIENvbnNpZGVyaW5nIHRoZXNlIG1vZGlmaWNhdGlvbnMsIGFuZCBmcm9tIHRoZSBjb250ZXh0IG9mIHdoYXQgdGhlc2UgZnVuY3Rpb25zICpkbyosIEkgYmVsaWV2ZSB3ZSBzaG91bGQgbWFyayB0aGlzIGFzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBJIGNhbiBjcmVhdGUgYSBjb25jaXNlIGBGb2N1c1N5bWJvbHNgIGxpc3QgY29uc2lzdGluZyBvZiB0aGUgbm9uLXViaXF1aXRvdXMgZnVuY3Rpb25zOiBgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGBpcHY2X3J0aGRyX3JjdmAsIGBpcHY2X3NyaF9yY3ZgLCBhbmQgYGlwdjZfcnBsX3NyaF9yY3ZgLiBBbGwgb2YgdGhvc2UgYXJlIGludm9sdmVkIGluIGNvcmUgbmV0d29yayBmb3J3YXJkaW5nLCByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIGFuZCBUVEwvaG9wIGxpbWl0IGlzc3Vlcy5cblxuTXkgYW5hbHlzaXMgYm9pbHMgZG93biB0byB0aGlzOlxuXG4xLiAgYFdvcnRoRnV6emluZ2A6IFRydWVcbjIuICBgRm9jdXNTeW1ib2xzYDogYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9ydGhkcl9yY3ZgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgXG4zLiAgYEVuYWJsZUNvbmZpZ3NgOiBgSU5FVGAsIGBJUFY2YFxuNC4gIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCkgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IHBhY2tldCBmb3J3YXJkaW5nIGFuZCBleHRlbnNpb24gaGVhZGVyIHByb2Nlc3NpbmcgdG8gdXNlIGl0IHdoZW4gVFRMIG9yIEhvcCBMaW1pdCBpcyBleGNlZWRlZC5cblxuRmluYWxseSwgSSBkaWQgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZW5zdXJlIHRoZSBhcmd1bWVudHMgZm9yIGBzZXQtcmVzdWx0c2AgYXJlIGNvcnJlY3QuIEknbSByZWFkeSB0byBjYWxsIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTM2LCJPdXRwdXRUb2tlbnMiOjE1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToyOS42ODUwNTg3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MjY5ODQ2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZvcndhcmRcIixcbiAgICBcImlwNl9mb3J3YXJkXCIsXG4gICAgXCJpcHY2X3J0aGRyX3JjdlwiLFxuICAgIFwiaXB2Nl9zcmhfcmN2XCIsXG4gICAgXCJpcHY2X3JwbF9zcmhfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIHRvIHJlcG9ydCB0aGlzIHJlYXNvbiB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZvcndhcmRcIixcbiAgICBcImlwNl9mb3J3YXJkXCIsXG4gICAgXCJpcHY2X3J0aGRyX3JjdlwiLFxuICAgIFwiaXB2Nl9zcmhfcmN2XCIsXG4gICAgXCJpcHY2X3JwbF9zcmhfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpIGFuZCB1cGRhdGVzIElQdjQvSVB2NiBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSVB2NiByb3V0aW5nIGhlYWRlciBwcm9jZXNzaW5nIHRvIHJlcG9ydCB0aGlzIHJlYXNvbiB3aGVuIFRUTCBvciBIb3AgTGltaXQgaXMgZXhjZWVkZWQuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjI5Ljk2Nzc2ODg1NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3OTM1MTg3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToyOS45Njg3MjUzNDZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxNTc5MjU1NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCkgaW4gYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYCBhbmQgdXBkYXRlcyBJUHY0L0lQdjYgZm9yd2FyZGluZyBhbmQgcm91dGluZyBoZWFkZXIgcGFyc2luZyBwYXRocyAoYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgLCBgaXB2Nl9ydGhkcl9yY3ZgKSB0byB1c2UgdGhpcyBzcGVjaWZpYyByZWFzb24gd2hlbiBkcm9wcGluZyBwYWNrZXRzIGR1ZSB0byBUVEwvaG9wLWxpbWl0IGV4cGlyYXRpb24uXFxuXFxuVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0IGNvcGllcyB0byB1c2VyIHNwYWNlLCBhbHRlcmF0aW9ucyB0byBidWZmZXIgYm91bmRzL2xlbmd0aHMsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoZSBjaGFuZ2VzIHN0cmljdGx5IHBhc3MgY29tcGlsZS10aW1lIGVudW0gY29uc3RhbnRzIHRvIGBrZnJlZV9za2JfcmVhc29uYC4gQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhhNGMxNGRhNmIzMTcwY2RlYzlhNGRlZGZlOWFhNTYxNTYwZTM4NTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMDoyNTowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oIGIvaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhcbmluZGV4IDJmMzEyZDFmNjdkNjkuLjEyZjkwOTY1MTU5MTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaFxuKysrIGIvaW5jbHVkZS9uZXQvZHJvcHJlYXNvbi1jb3JlLmhcbkBAIC05Myw2ICs5Myw3IEBAXG4gXHRGTihJUF9JTlZBTElEX1NPVVJDRSlcdFx0XFxcbiBcdEZOKElQX0xPQ0FMTkVUKVx0XHRcdFxcXG4gXHRGTihJUF9JTlZBTElEX0RFU1QpXHRcdFxcXG4rXHRGTihJUF9UVExfRVhDRUVERUQpXHRcdFxcXG4gXHRGTihQS1RfVE9PX0JJRylcdFx0XHRcXFxuIFx0Rk4oRFVQX0ZSQUcpXHRcdFx0XFxcbiBcdEZOKEZSQUdfUkVBU01fVElNRU9VVClcdFx0XFxcbkBAIC00NzQsNiArNDc1LDExIEBAIGVudW0gc2tiX2Ryb3BfcmVhc29uIHtcbiBcdCAqIDEpIGRlc3QgaXAgaXMgMFxuIFx0ICovXG4gXHRTS0JfRFJPUF9SRUFTT05fSVBfSU5WQUxJRF9ERVNULFxuK1x0LyoqXG4rXHQgKiBAU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRDogSVB2NCBUVEwgb3IgSVB2NiBob3AgbGltaXQgXHUwMDNjPSAxXG4rXHQgKiAoc2VlIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKVxuK1x0ICovXG4rXHRTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVELFxuIFx0LyoqXG4gXHQgKiBAU0tCX0RST1BfUkVBU09OX1BLVF9UT09fQklHOiBwYWNrZXQgc2l6ZSBpcyB0b28gYmlnIChtYXliZSBleGNlZWQgdGhlXG4gXHQgKiBNVFUpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jIGIvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG5pbmRleCA4YjY1ZjEyNTgzZWI2Li5iMjQyNTYxZDM3ZTczIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jXG4rKysgYi9uZXQvaXB2NC9pcF9mb3J3YXJkLmNcbkBAIC0xNzQsNyArMTc0LDcgQEAgaW50IGlwX2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdC8qIFRlbGwgdGhlIHNlbmRlciBpdHMgcGFja2V0IGRpZWQuLi4gKi9cbiBcdF9fSVBfSU5DX1NUQVRTKG5ldCwgSVBTVEFUU19NSUJfSU5IRFJFUlJPUlMpO1xuIFx0aWNtcF9zZW5kKHNrYiwgSUNNUF9USU1FX0VYQ0VFREVELCBJQ01QX0VYQ19UVEwsIDApO1xuLVx0U0tCX0RSX1NFVChyZWFzb24sIElQX0lOSERSKTtcbitcdFNLQl9EUl9TRVQocmVhc29uLCBJUF9UVExfRVhDRUVERUQpO1xuIGRyb3A6XG4gXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgcmVhc29uKTtcbiBcdHJldHVybiBORVRfUlhfRFJPUDtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9leHRoZHJzLmMgYi9uZXQvaXB2Ni9leHRoZHJzLmNcbmluZGV4IDA5YTQ1NTJmN2YwOGEuLjU1MzkxZTJlNTYxMjkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9leHRoZHJzLmNcbisrKyBiL25ldC9pcHY2L2V4dGhkcnMuY1xuQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgaW50IGlwdjZfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0XHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCxcbiBcdFx0XHRcdCAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdFx0cmV0dXJuIC0xO1xuIFx0XHR9XG4gXHRcdGlwdjZfaGRyKHNrYiktXHUwMDNlaG9wX2xpbWl0LS07XG5AQCAtNjIzLDcgKzYyMyw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ycGxfc3JoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0XHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcdFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCxcbiBcdFx0XHRcdCAgICBJQ01QVjZfRVhDX0hPUExJTUlULCAwKTtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRCk7XG4gXHRcdFx0cmV0dXJuIC0xO1xuIFx0XHR9XG4gXHRcdGlwdjZfaGRyKHNrYiktXHUwMDNlaG9wX2xpbWl0LS07XG5AQCAtODE1LDcgKzgxNSw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9ydGhkcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0XHRfX0lQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9JTkhEUkVSUk9SUyk7XG4gXHRcdFx0aWNtcHY2X3NlbmQoc2tiLCBJQ01QVjZfVElNRV9FWENFRUQsIElDTVBWNl9FWENfSE9QTElNSVQsXG4gXHRcdFx0XHQgICAgMCk7XG4tXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9UVExfRVhDRUVERUQpO1xuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0fVxuIFx0XHRpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdC0tO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuaW5kZXggOTZlZTNkZTU1ZjkzMC4uZGRhYmEwYWViY2IxMSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5AQCAtNTc3LDcgKzU3Nyw3IEBAIGludCBpcDZfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRpY21wdjZfc2VuZChza2IsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19IT1BMSU1JVCwgMCk7XG4gXHRcdF9fSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX0lOSERSRVJST1JTKTtcbiBcbi1cdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9JUF9JTkhEUik7XG4rXHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEKTtcbiBcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMDoyNToyOS45Njg3MzAzODZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU3OTI1MjI1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gRXZhbHVhdGlvbjogTm8gTmVlZCBmb3IgRGVkaWNhdGVkIEZ1enppbmcgU2Vzc2lvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIHNlcmllcyB3YXJyYW50cyBmaXJpbmcgdXAgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBnb2luZyB0byBxdWlja2x5IGFzc2VzcyBhbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgY29uY2VybnMuXG5cbkxvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gV2UncmUgYWRkaW5nIGEgbmV3IGRyb3AgcmVhc29uLCBgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGAsIGluIGBkcm9wcmVhc29uLWNvcmUuaGAuIFRoZSBwYXRjaCB0aGVuIHByb3BhZ2F0ZXMgdGhpcyBuZXcgZW51bSB2YWx1ZSwgcmVwbGFjaW5nIGdlbmVyaWMgZHJvcCByZWFzb24gY29kZXMgYW5kIGBrZnJlZV9za2JgIGNhbGxzIHdpdGggYGtmcmVlX3NrYl9yZWFzb25gIGNhbGxzIHRoYXQgc3BlY2lmeSB0aGlzIG5ldyByZWFzb24uIFRoaXMgaGFwcGVucyBpbiBgaXBfZm9yd2FyZGAsIGBpcDZfZm9yd2FyZGAsIGFuZCBhIGZldyBJUHY2IHJvdXRpbmcgaGVhZGVyIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBUaGUgZ2lzdCBpcywgd2hlbiBhIHBhY2tldCdzIFRUTCBvciBob3AgbGltaXQgZXhwaXJlcywgd2UncmUgbm93IGJlaW5nIG1vcmUgc3BlY2lmaWMgYWJvdXQgKndoeSogaXQncyBiZWluZyBkcm9wcGVkLlxuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gZm9yIEtNU0FOIGlzOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSBvcHBvcnR1bml0aWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBsZWFrcz8gQmFzZWQgb24gdGhlIGRpZmYsIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIG5vLiBXZSdyZSBqdXN0IGFkZGluZyBhIG5ldyBjb25zdGFudCBhbmQgcGFzc2luZyBpdCBhcyBhbiBhcmd1bWVudCB0byBga2ZyZWVfc2tiX3JlYXNvbmAuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZGF0YSBjb3VsZCBiZWNvbWUgYW4gaXNzdWUsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZSBuZXcgZW51bSB2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudCwgcHVyZWx5IGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIHdpdGhpbiB0aGUga2VybmVsJ3MgdHJhY2luZyBhbmQgZGVidWdnaW5nIGluZnJhc3RydWN0dXJlLiBUaGUgYGRyb3ByZWFzb24tY29yZS5oYCBmaWxlIGl0c2VsZiwgYWZ0ZXIgYSBxdWljayBzYW5pdHkgY2hlY2ssIGNvbmZpcm1zIHRoYXQgdGhlIGVudW0gYW5kIHN0cmluZyBtYXBwaW5nIGlzIHNhZmUgZm9yIHVzZS5cblxuRXNzZW50aWFsbHksIHRoaXMgaXMgYSBtZXRhZGF0YSBlbmhhbmNlbWVudCBmb3IgZGVidWdnaW5nLCBub3QgYSBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgb3IgZGF0YSBmbG93IHRoYXQgY291bGQgdHJpZ2dlciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggc2VyaWVzICpkb2VzIG5vdCogd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6XG5cbiogICBUaGUgcGF0Y2ggKm9ubHkqIGludHJvZHVjZXMgYSBuZXcgU0tCIGRyb3AgcmVhc29uIGFuZCB1cGRhdGVzIGV4aXN0aW5nIGBrZnJlZV9za2JfcmVhc29uYCBjYWxscy5cbiogICBJdCBkb2VzICpub3QqIGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgaW50ZXJhY3Rpb25zIHdpdGggdXNlciBzcGFjZSwgc3RhY2svaGVhcCBidWZmZXIgbWFuaXB1bGF0aW9ucywgb3IgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIGRhdGEuXG4qICAgVGhlIHZhbHVlcyBhcmUgcGFzc2VkIHRvIGBrZnJlZV9za2JfcmVhc29uYCBhcyBjb21waWxlLXRpbWUgY29uc3RhbnRzLlxuKiAgIFRoZXJlJ3MgemVybyByaXNrIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcy5cblxuSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBXZSBzaG91bGQgYmUgc2FmZSB0byBtYXJrIHRoaXMgcGF0Y2ggYXMgbm90IG5lZWRpbmcgS01TQU4gYXR0ZW50aW9uLiBOb3cgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzY5LCJPdXRwdXRUb2tlbnMiOjIwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEwOjI1OjQ1Ljc2MTI1NzQ1MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTS0IgZHJvcCByZWFzb24gKGBTS0JfRFJPUF9SRUFTT05fSVBfVFRMX0VYQ0VFREVEYCkgaW4gYGluY2x1ZGUvbmV0L2Ryb3ByZWFzb24tY29yZS5oYCBhbmQgdXBkYXRlcyBJUHY0L0lQdjYgZm9yd2FyZGluZyBhbmQgcm91dGluZyBoZWFkZXIgcGFyc2luZyBwYXRocyAoYGlwX2ZvcndhcmRgLCBgaXA2X2ZvcndhcmRgLCBgaXB2Nl9zcmhfcmN2YCwgYGlwdjZfcnBsX3NyaF9yY3ZgLCBgaXB2Nl9ydGhkcl9yY3ZgKSB0byB1c2UgdGhpcyBzcGVjaWZpYyByZWFzb24gd2hlbiBkcm9wcGluZyBwYWNrZXRzIGR1ZSB0byBUVEwvaG9wLWxpbWl0IGV4cGlyYXRpb24uXFxuXFxuVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0IGNvcGllcyB0byB1c2VyIHNwYWNlLCBhbHRlcmF0aW9ucyB0byBidWZmZXIgYm91bmRzL2xlbmd0aHMsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoZSBjaGFuZ2VzIHN0cmljdGx5IHBhc3MgY29tcGlsZS10aW1lIGVudW0gY29uc3RhbnRzIHRvIGBrZnJlZV9za2JfcmVhc29uYC4gQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU0tCIGRyb3AgcmVhc29uIChgU0tCX0RST1BfUkVBU09OX0lQX1RUTF9FWENFRURFRGApIGluIGBpbmNsdWRlL25ldC9kcm9wcmVhc29uLWNvcmUuaGAgYW5kIHVwZGF0ZXMgSVB2NC9JUHY2IGZvcndhcmRpbmcgYW5kIHJvdXRpbmcgaGVhZGVyIHBhcnNpbmcgcGF0aHMgKGBpcF9mb3J3YXJkYCwgYGlwNl9mb3J3YXJkYCwgYGlwdjZfc3JoX3JjdmAsIGBpcHY2X3JwbF9zcmhfcmN2YCwgYGlwdjZfcnRoZHJfcmN2YCkgdG8gdXNlIHRoaXMgc3BlY2lmaWMgcmVhc29uIHdoZW4gZHJvcHBpbmcgcGFja2V0cyBkdWUgdG8gVFRML2hvcC1saW1pdCBleHBpcmF0aW9uLlxcblxcblRoZXJlIGFyZSBubyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdCBjb3BpZXMgdG8gdXNlciBzcGFjZSwgYWx0ZXJhdGlvbnMgdG8gYnVmZmVyIGJvdW5kcy9sZW5ndGhzLCBvciBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgY2hhbmdlcyBzdHJpY3RseSBwYXNzIGNvbXBpbGUtdGltZSBlbnVtIGNvbnN0YW50cyB0byBga2ZyZWVfc2tiX3JlYXNvbmAuIENvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5wnt[1] Phase: Succeeded StartedAt: 2026-09-10 10:25:57 +0000 UTC FinishedAt: 2026-09-10 10:25:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 10:25:57 +0000 UTC FinishedAt: 2026-09-10 10:25:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2] Phase: Succeeded StartedAt: 2026-09-10 10:25:57 +0000 UTC FinishedAt: 2026-09-10 14:09:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:25:57 +0000 UTC FinishedAt: 2026-09-10 14:09:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:25:57 +0000 UTC FinishedAt: 2026-09-10 10:26:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:25:57 +0000 UTC FinishedAt: 2026-09-10 10:26:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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-workflowv5wnt/series-workflowv5wnt-convert-artifact-3620988911/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:26:07 +0000 UTC FinishedAt: 2026-09-10 10:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:26:07 +0000 UTC FinishedAt: 2026-09-10 10:43:30 +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:*e862fd03-6eee-4e48-be34-7b58c0dde0c2,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-workflowv5wnt/series-workflowv5wnt-convert-artifact-3620988911/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": "5f83e5d4-3f7a-4935-a483-d5e6ee30a927", "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-workflowv5wnt/series-workflowv5wnt-build-action-1339204789/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:26:07 +0000 UTC FinishedAt: 2026-09-10 10:43:20 +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:*e862fd03-6eee-4e48-be34-7b58c0dde0c2,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-workflowv5wnt/series-workflowv5wnt-convert-artifact-3620988911/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": "5f83e5d4-3f7a-4935-a483-d5e6ee30a927", "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-workflowv5wnt/series-workflowv5wnt-build-action-1339204789/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:43:30 +0000 UTC FinishedAt: 2026-09-10 10:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:43:30 +0000 UTC FinishedAt: 2026-09-10 10:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:43:30 +0000 UTC FinishedAt: 2026-09-10 10:43:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:43:30 +0000 UTC FinishedAt: 2026-09-10 10:43:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-workflowv5wnt/series-workflowv5wnt-convert-artifact-1564557630/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:43:41 +0000 UTC FinishedAt: 2026-09-10 10:45:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:43:41 +0000 UTC FinishedAt: 2026-09-10 10:45:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5f83e5d4-3f7a-4935-a483-d5e6ee30a927,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-workflowv5wnt/series-workflowv5wnt-build-action-1339204789/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-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:45:29 +0000 UTC FinishedAt: 2026-09-10 10:45:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:45:29 +0000 UTC FinishedAt: 2026-09-10 10:45:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:45:29 +0000 UTC FinishedAt: 2026-09-10 11:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:45:29 +0000 UTC FinishedAt: 2026-09-10 11:05:21 +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:*e862fd03-6eee-4e48-be34-7b58c0dde0c2,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-workflowv5wnt/series-workflowv5wnt-convert-artifact-1564557630/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": "b1b6fcb5-ccaf-4158-8c33-7ffeba742ea3", "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-workflowv5wnt/series-workflowv5wnt-build-action-3617323666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 10:45:29 +0000 UTC FinishedAt: 2026-09-10 11:05:11 +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:*e862fd03-6eee-4e48-be34-7b58c0dde0c2,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-workflowv5wnt/series-workflowv5wnt-convert-artifact-1564557630/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": "b1b6fcb5-ccaf-4158-8c33-7ffeba742ea3", "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-workflowv5wnt/series-workflowv5wnt-build-action-3617323666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:05:21 +0000 UTC FinishedAt: 2026-09-10 11:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:05:21 +0000 UTC FinishedAt: 2026-09-10 11:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:05:21 +0000 UTC FinishedAt: 2026-09-10 11:07:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:05:21 +0000 UTC FinishedAt: 2026-09-10 11:07:03 +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:*b1b6fcb5-ccaf-4158-8c33-7ffeba742ea3,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-workflowv5wnt/series-workflowv5wnt-build-action-3617323666/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-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:07:13 +0000 UTC FinishedAt: 2026-09-10 14:09:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:07:13 +0000 UTC FinishedAt: 2026-09-10 14:09:45 +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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"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:*5f83e5d4-3f7a-4935-a483-d5e6ee30a927,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b1b6fcb5-ccaf-4158-8c33-7ffeba742ea3,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-workflowv5wnt/series-workflowv5wnt-build-action-1339204789/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-workflowv5wnt/series-workflowv5wnt-build-action-3617323666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:07:13 +0000 UTC FinishedAt: 2026-09-10 11:07:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:07:13 +0000 UTC FinishedAt: 2026-09-10 11:07:18 +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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"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-workflowv5wnt/series-workflowv5wnt-convert-artifact-929421891/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:07:13 +0000 UTC FinishedAt: 2026-09-10 11:07:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:07:13 +0000 UTC FinishedAt: 2026-09-10 11:07:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:07:13 +0000 UTC FinishedAt: 2026-09-10 11:07:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:07:23 +0000 UTC FinishedAt: 2026-09-10 14:09:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5wnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"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":["ip_forward","ip6_forward","ipv6_rthdr_rcv","ipv6_srh_rcv","ipv6_rpl_srh_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f217004a40c49e787372e798785aecb983828d35","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"b84fffb3-9301-459e-8bc7-b9f31c3f4571","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-09-10 11:07:23 +0000 UTC FinishedAt: 2026-09-10 14:09:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5f83e5d4-3f7a-4935-a483-d5e6ee30a927,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b1b6fcb5-ccaf-4158-8c33-7ffeba742ea3,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-workflowv5wnt/series-workflowv5wnt-build-action-1339204789/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-workflowv5wnt/series-workflowv5wnt-build-action-3617323666/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-workflowv5wnt/series-workflowv5wnt-convert-artifact-929421891/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,}