Name: series-workflowg2psn Phase: Succeeded StartedAt: 2026-08-12 23:37:11 +0000 UTC FinishedAt: 2026-08-13 03:39:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[0] Phase: Succeeded StartedAt: 2026-08-12 23:37:11 +0000 UTC FinishedAt: 2026-08-12 23:55:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 23:37:11 +0000 UTC FinishedAt: 2026-08-12 23:55:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK" ], "series_id": "8f5b232f-ba5c-40ec-8c83-192dae00747d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ctnetlink_get_expect", "ctnetlink_expect_event" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX2dldF9leHBlY3QmIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2V4cGVjdF9ldmVudCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIGBleHAtXHUwMDNlZmxhZ3NgIHdpdGggYE5GX0NUX0VYUEVDVF9NQVNLYCBiZWZvcmUgc2VuZGluZyBpdCB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgcHJldmVudHMgbGVha2luZyBpbnRlcm5hbCBrZXJuZWwgZmxhZ3MgKHN1Y2ggYXMgYE5GX0NUX0VYUEVDVF9ERUFEYCkgdG8gdXNlcnNwYWNlLiBUaGUgYGZsYWdzYCBmaWVsZCBpdHNlbGYgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQ7IHRoZSBpc3N1ZSBpcyBhbiBpbmZvcm1hdGlvbiBsZWFrIG9mIGludGVybmFsIHN0YXRlLCBub3QgYSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayB0aGUgYGV4cC1cdTAwM2VmbGFnc2AgYmVmb3JlIHNlbmRpbmcgdGhlbSB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBhbHRlcnMgdGhlIGRhdGEgcmV0dXJuZWQgYnkgbmV0bGluayBkdW1wcyBhbmQgZXZlbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTAzNjUzZTIxZDc3Y2M2YTIzYzk3MmZmMzdlMTg3MjA5OTkyODQyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjU0OjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuaW5kZXggZmMzZjYwMDk5YWYzYi4uOWI0ZTI5NTU3ZWMzMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG5AQCAtMzA0Miw3ICYjNDM7MzA0Miw3IEBAIGN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAjZW5kaWZcbiBcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX1RJTUVPVVQsIGh0b25sKHRpbWVvdXQpKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfSUQsIG5mX2V4cGVjdF9nZXRfaWQoZXhwKSkgfHxcbi1cdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtXHUwMDNlZmxhZ3MpKSB8fFxuJiM0MztcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9NQVNLKSkgfHxcbiBcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0NMQVNTLCBodG9ubChleHAtXHUwMDNlY2xhc3MpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX2dldF9leHBlY3QmIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2V4cGVjdF9ldmVudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayB0aGUgYGV4cC1cdTAwM2VmbGFnc2AgYmVmb3JlIHNlbmRpbmcgdGhlbSB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBhbHRlcnMgdGhlIGRhdGEgcmV0dXJuZWQgYnkgbmV0bGluayBkdW1wcyBhbmQgZXZlbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTAzNjUzZTIxZDc3Y2M2YTIzYzk3MmZmMzdlMTg3MjA5OTkyODQyNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDIzOjU0OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jCmluZGV4IGZjM2Y2MDA5OWFmM2IuLjliNGUyOTU1N2VjMzMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMKQEAgLTMwNDIsNyAmIzQzOzMwNDIsNyBAQCBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsCiAjZW5kaWYKIAlpZiAobmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9USU1FT1VULCBodG9ubCh0aW1lb3V0KSkgfHwKIAkgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9JRCwgbmZfZXhwZWN0X2dldF9pZChleHApKSB8fAotCSAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtJmd0O2ZsYWdzKSkgfHwKJiM0MzsJICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC0mZ3Q7ZmxhZ3MgJmFtcDsgTkZfQ1RfRVhQRUNUX01BU0spKSB8fAogCSAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0NMQVNTLCBodG9ubChleHAtJmd0O2NsYXNzKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm50cmFjayBOZXRsaW5rIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KClgIGZ1bmN0aW9uLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBjaGFuZ2luZyBob3cgZXhwZWN0YXRpb24gZmxhZ3MgYXJlIGR1bXBlZCB2aWEgbmV0bGluay4gSSBjYW4gc2VlIHRoZSBjb2RlIG5vdywgaXQmIzM5O3MgYSBzaW1wbGUsIHNlZW1pbmdseSBoYXJtbGVzcyBvbmUtbGluZXI6IGl0JiMzOTtzIG1hc2tpbmcgdGhlIGBleHAtJmd0O2ZsYWdzYCBiZWZvcmUgc2VyaWFsaXppbmcgdGhlbS4gQmVmb3JlLCBpdCB3YXMgcHV0dGluZyB0aGUgcmF3IGBleHAtJmd0O2ZsYWdzYCB2YWx1ZSBpbiB0aGUgbmV0bGluayBtZXNzYWdlLCBub3cgaXQmIzM5O3MgYXBwbHlpbmcgYE5GX0NUX0VYUEVDVF9NQVNLYCBmaXJzdC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzaWduaWZpY2FuY2UuIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KClgIC0gSSBzaG91bGQgY2hlY2sgdGhhdCBmdW5jdGlvbiwgYW5kIG5hdHVyYWxseSwgSSYjMzk7bSBnb2luZyB0byBsb29rIHVwIGBORl9DVF9FWFBFQ1RfTUFTS2AuIElzIHRoYXQgYSBiaXRtYXNrIG9yIGEgY29uc3RhbnQ/IEl0JiMzOTtzIHByb2JhYmx5IHNvbWUgZGVmaW5lZCBjb25zdGFudCwgYSBiaXRtYXNrLgoKVGhpcyBpcyBhIHJlYWxseSBtaW5vciBjaGFuZ2UsIGJ1dCBpdCBjaGFuZ2VzIHRoZSAqb3V0cHV0KiBvZiB0aGUgbmV0bGluayBkdW1wLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGFueSB0b29saW5nIHRoYXQgY29uc3VtZXMgdGhpcyBpbmZvcm1hdGlvbi4gSXQmIzM5O3MgYSBmbGFnIG1hc2tpbmcgb3BlcmF0aW9uLCBub3QgYSBidWdmaXguIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggdGhyb3dpbmcgZnV6emluZyBhdD8gSXMgdGhlcmUgYSBzdWJ0bGUgZWRnZSBjYXNlIGluIHRoZSBtYXNraW5nIHRoYXQgY291bGQgYmUgZXhwbG9pdGVkPyBIb25lc3RseSwgaXQgc2VlbXMgdW5saWtlbHksIGdpdmVuIHRoZSBzY2FsZSBvZiB0aGUgY2hhbmdlLiBJdCYjMzk7cyBtYXNraW5nIGEgc2luZ2xlIHZhbHVlLiBOZXZlcnRoZWxlc3MsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgc3RydWN0dXJlIGJldHRlciwgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IGZpbmRpbmcgd2hlcmUgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIGlzIGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzAwMD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzAwMTpjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzAwMi1cdFx0XHQgIGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHApXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjY9Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzA3Ny1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDc4Olx0aWYgKGN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc2tiLCBleHApIFx1MDAzYyAwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNzktXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDkyPWN0bmV0bGlua19leHBlY3RfZXZlbnQodW5zaWduZWQgaW50IGV2ZW50cywgY29uc3Qgc3RydWN0IG5mX2V4cF9ldmVudCAqaXRlbSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEyMy1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMTI0Olx0aWYgKGN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc2tiLCBleHApIFx1MDAzYyAwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMxMjUtXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbm50cmFjayBOZXRsaW5rIEV4cGVjdGF0aW9uIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCYjMzk7cyB0aGUgaGVhcnQgb2YgaG93IGV4cGVjdGF0aW9ucyBhcmUgaGFuZGxlZCB0aHJvdWdoIG5ldGxpbmsuIEkgY2FuIHNlZSBpdCBnZXRzIGNhbGxlZCBieSB0d28ga2V5IHBsYWNlczogYGN0bmV0bGlua19leHBfZmlsbF9pbmZvYCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgLiBUaGF0IG1ha2VzIHNlbnNlOyBgY3RuZXRsaW5rX2V4cF9maWxsX2luZm9gIGlzIGZvciBkdW1waW5nIHRoZSBleHBlY3RhdGlvbiBkYXRhIGl0c2VsZiwgYW5kIHNpbmNlIHRoYXQmIzM5O3MgbmV0bGluay1iYXNlZCwgaXQgZ2l2ZXMgbWUgYSBjbGVhciBwYXRoIHRvIHJlYWNoIHRob3NlIGV4cGVjdGF0aW9ucyBvdmVyIHRoZSBuZXR3b3JrLgoKTm93LCBnaXZlbiB0aGlzIHdob2xlIHRoaW5nIGlzIGRyaXZlbiBieSBuZXRsaW5rLCBJIHRoaW5rIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCB3b3VsZCBiZSB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgYG5mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbmV0bGluayBpbnRlcmFjdGlvbnMgYXJlIHNldCB1cCBhbmQgaG93IHRoZSBleHBlY3RhdGlvbiBkdW1wIGFuZCBldmVudHMgYXJlIHRyaWdnZXJlZCBmcm9tIHRoZSB1c2VyIHNwYWNlIHBlcnNwZWN0aXZlLiBUaGF0JiMzOTtsbCBnaXZlIG1lIHRoZSBmdWxsIHBpY3R1cmUgb2YgaG93IHRoaXMgbWVjaGFuaXNtIGFjdHVhbGx5IHdvcmtzLCBhbmQgaG93IGl0IGNhbiBiZSBjb250cm9sbGVkLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIGFuZCB3aGljaCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgY2FuIGFmZmVjdCB0aGUgd2hvbGUgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19uZXRsaW5rLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDSykgJiM0Mzs9IG5mX2Nvbm50cmFjay5vXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zNi0jIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBuZl9jb25udHJhY2tcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05GX0NUX05FVExJTkspICYjNDM7PSBuZl9jb25udHJhY2tfbmV0bGluay5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LX1RJTUVPVVQpICYjNDM7PSBuZm5ldGxpbmtfY3R0aW1lb3V0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIHNwb3RsaWdodCYjMzk7cyBvbiBgTkZfQ1RfTkVUTElOS2AuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW4gdGhlIGdyYW5kIHNjaGVtZSBvZiBOZXRmaWx0ZXI/IEl0JiMzOTtzIGNydWNpYWwgdG8gaW1tZWRpYXRlbHkgYXNjZXJ0YWluIHRoaXMgbW9kdWxlJiMzOTtzIGRlcGVuZGVuY2llcy4gVGhpcyBpcyBlc3NlbnRpYWwsIHBhcnRpY3VsYXJseSBiZWNhdXNlIE5ldGxpbmsgaXMgYSBjb3JlIGFzcGVjdCBvZiBjb21tdW5pY2F0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIE5ldGZpbHRlciBjb21wb25lbnRzLCBsaWJyYXJpZXMsIG9yIGtlcm5lbCBzdWJzeXN0ZW1zIGFyZSBpbmhlcmVudGx5IGxpbmtlZCB0byBgTkZfQ1RfTkVUTElOS2AuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIHJlYWxseSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIGZ1bmN0aW9uYWxpdHksIGl0cyBpbXBhY3Qgb24gdGhlIHN5c3RlbSwgYW5kIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBwcm9ibGVtcy4gTm8gcG9pbnQgaW4gZ29pbmcgZnVydGhlciBiZWZvcmUgSSB1bmRlcnN0YW5kIGl0cyBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgYW5kIGl0cyByb2xlIHdpdGhpbiBOZXRmaWx0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NUX05FVExJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTM1NT1jb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzY1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM2Njpjb25maWcgTkZfQ1RfTkVUTElOS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTM2Ny1cdHRyaXN0YXRlICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM3Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNzM6Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM3NC1cdHRyaXN0YXRlICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCB0dW5pbmcgdmlhIE5ldGxpbmsmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg1OmNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4Ni1cdHRyaXN0YXRlICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBoZWxwZXJzIGluIHVzZXItc3BhY2UgdmlhIE5ldGxpbmsmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzLCBhcyB0aG91Z2ggdGhlc2UgYXJlICpteSogdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgTkZfQ1RfTkVUTElOS2AqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBORl9DVF9ORVRMSU5LYCByZWxpZXMgb24sIHdoYXQgaXRzIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBhcmUuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcG9zaXRpb24gd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBoaWdobGlnaHQgaXRzIHJvbGUuIElzIGl0IGEgY29yZSBjb21wb25lbnQ/IElzIGl0IGEgbW9kdWxlIHRoYXQgZGVwZW5kcyBvbiBvdGhlciBtb2R1bGVzPyBEb2VzIGl0IGJ1aWxkIG9uIHRvcCBvZiBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eT8gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgdHVuaW5nLCBkZWJ1Z2dpbmcsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgdG8gdGhlIG1vZHVsZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgbWV0aG9kcywgc3VjaCBhcyBzZWFyY2hpbmcgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLCBleGFtaW5pbmcgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgcGVyaGFwcyBldmVuIGNoZWNraW5nIHRoZSBjb21taXQgbG9ncyB0byBmaW5kIHRoZSBoaXN0b3JpY2FsIGNvbnRleHQgYXJvdW5kIHRoaXMgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzY2Olx0Y29uZmlnIE5GX0NUX05FVExJTktcbiAzNjc6XHRcdHRyaXN0YXRlICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSYjMzk7XG4gMzY4Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAzNjk6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuIDM3MDpcdFx0aGVscFxuIDM3MTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGEgbmV0bGluay1iYXNlZCB1c2Vyc3BhY2UgaW50ZXJmYWNlXG4gMzcyOlx0XG4gMzczOlx0Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxuIDM3NDpcdFx0dHJpc3RhdGUgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0IHR1bmluZyB2aWEgTmV0bGluayYjMzk7XG4gMzc1Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28gdGhpcyBiZWhhdmlvciBpcyBjb25kaXRpb25hbC4gVGhlIGNvZGUmIzM5O3MgY2xlYXJseSBpbmRpY2F0aW5nIGEgZGVwZW5kZW5jZSBvbiBgTkZfQ09OTlRSQUNLYC4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBuZXN0bGVkIHdpdGhpbiB0aGF0IGAjaWZkZWYgTkZfQ09OTlRSQUNLYCBibG9jaywgaXQmIzM5O3MgcHJldHR5IG11Y2ggYSBnaXZlbi4gU3RpbGwsIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgYE5GX0NPTk5UUkFDS2AgbW9kdWxlLiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyB1bmV4cGVjdGVkIGhhcHBlbnMgaWYgdGhhdCBtb2R1bGUgaXMgYWJzZW50IG9yIGNvbmZpZ3VyZWQgZGlmZmVyZW50bHkuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhlIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWYgTkZfQ09OTlRSQUNLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz05OD1jb25maWcgTkZfTE9HX1NZU0xPR1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTEwOmlmIE5GX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExMS1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzM1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGgqKgoKT2theSwgc28gdGhpcyBjaGFuZ2UgaW52b2x2ZXMgYE5GX0NPTk5UUkFDS2AgYW5kIGBORl9DVF9ORVRMSU5LYCwgd2hpY2ggSSYjMzk7bSBmYW1pbGlhciB3aXRoLiBUaGUgY29yZSBvZiBpdCBsaWVzIGluIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCwgd2hlcmUgd2UmIzM5O3JlIG1hc2tpbmcgYGV4cC0mZ3Q7ZmxhZ3MgJmFtcDsgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZS4gQSBzdHJhaWdodGZvcndhcmQgYml0d2lzZSBBTkQgb3BlcmF0aW9uLCByZWFsbHkuCgpNeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgZnV6emluZyB0aGlzIHNlZW1zIGxpa2Ugb3ZlcmtpbGwuIEl0JiMzOTtzIGZ1bmN0aW9uYWwsIHllcywgYnV0IGl0JiMzOTtzIGp1c3QgYWJvdXQgaW5mb3JtYXRpb24gaGlkaW5nIOKAkyBwcmV2ZW50aW5nIGludGVybmFsIGZsYWdzIGZyb20gbGVha2luZy4gSXQmIzM5O3Mgbm90IG1vZGlmeWluZyBrZXJuZWwgZXhlY3V0aW9uIG9yIHN0YXRlOyBpdCYjMzk7cyBqdXN0IGFsdGVyaW5nIGEgbmV0bGluayBhdHRyaWJ1dGUgdmFsdWUgaW4gdGhlIG91dHB1dC4gSSBkb24mIzM5O3Qgc2VlIGhvdyBmdXp6aW5nIHdvdWxkIHVuY292ZXIgYW55IG5ldyBidWdzIGZyb20ganVzdCBtYXNraW5nIGFuIG91dHB1dCB2YWx1ZS4KCkJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIGd1aWRlbGluZXM6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluc+KApiBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3figKYmIzM0OyBhbmQgc28gb24uCgpIb3dldmVyLCB0aGUgaW5zdHJ1Y3Rpb25zIGFsc28gc2F5LCAmIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsKClRoaXMgcGF0Y2ggKmRvZXMqIHRvdWNoIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciBuZXRsaW5rIGNvZGUuIEl0IHN1YnRseSBjaGFuZ2VzIHRoZSBleGVjdXRpb24gZmxvdyBiZWNhdXNlIG9mIHRoZSBiaXR3aXNlIEFORC4KCldhaXQsIHRob3VnaOKApiB0aGUgZ3VpZGVsaW5lcyAqYWxzbyogc2F5LCAmIzM0O0NoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyYjMzQ7LiBUaGlzICppcyogYSBjaGFuZ2UgdG8gYSB2YWx1ZSBiZWluZyBzZW50IHRvIHVzZXJzcGFjZS4gSXTigJlzIGEgZGF0YSBjaGFuZ2UsIG5vdCBhIGNvbnRyb2wgZmxvdyBjaGFuZ2UuCgpPa2F5LCBzbyBJ4oCZbSBiYWNrIHRvIGl0IGJlaW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGJ1dCBvbmUgdGhhdCBkb2VzbiYjMzk7dCBzZWVtIGxpa2VseSB0byBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzLiBCdXQgdGhlIGd1aWRlbGluZXMgYXJlIHZlcnkgc3BlY2lmaWMuCgpJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIGFnYWluLiBKdXN0IHRvIGJlIHN1cmUgdGhlcmUmIzM5O3Mgbm90aGluZyBlbHNlIHRoYXQmIzM5O3MgcmVsZXZhbnQgdGhhdCBJIG1pZ2h0IGhhdmUgbWlzc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDAwPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDAxOmN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDAyLVx0XHRcdCAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzA2Nj1jdG5ldGxpbmtfZXhwX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgcG9ydGlkLCB1MzIgc2VxLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDc3LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwNzg6XHRpZiAoY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChza2IsIGV4cCkgXHUwMDNjIDApXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzA3OS1cdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwOTI9Y3RuZXRsaW5rX2V4cGVjdF9ldmVudCh1bnNpZ25lZCBpbnQgZXZlbnRzLCBjb25zdCBzdHJ1Y3QgbmZfZXhwX2V2ZW50ICppdGVtKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTIzLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMxMjQ6XHRpZiAoY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChza2IsIGV4cCkgXHUwMDNjIDApXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEyNS1cdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5ODUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBXb3J0aEZ1enppbmcgU2NlbmFyaW8qKgoKT2theSwgaGVyZSYjMzk7cyBteSBsaW5lIG9mIHRoaW5raW5nIG9uIHRoaXMuIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGNoYW5nZSB3aXRoIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoaXMgaXMgYmVjYXVzZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG5ldGZpbHRlciBuZXRsaW5rIHN1YnN5c3RlbS4gQW5kIHRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIHBsYWNlIHdoZXJlIGZ1enppbmcgY2FuIGJlIHJlYWxseSBlZmZlY3RpdmUuCgpJJiMzOTttIGZvY3VzZWQgaW4gb24gdGhlc2Ugc3ltYm9sczogYGN0bmV0bGlua19leHBfZmlsbF9pbmZvYCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgLgoKSG9sZCBvbiBhIHNlYy4uLiBgY3RuZXRsaW5rX2V4cF9maWxsX2luZm9gIGlzIHN0YXRpYy4gVGhhdCBtYWtlcyBtZSBwYXVzZS4gSXMgaXQgYWN0dWFsbHkgYW4gQVBJIGVudHJ5IHBvaW50LCBvciBpcyBpdCBtb3JlIG9mIGFuIGludGVybmFsIGZ1bmN0aW9uPyBOZWVkIHRvIGJlIHN1cmUgaGVyZS4KCkFscmlnaHQsIHRpbWUgdG8gZ28gdXBzdHJlYW0gYW5kIGludmVzdGlnYXRlIHdoZXJlIGBjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mb2AgaXMgYmVpbmcgY2FsbGVkLiBUaGF0IHdpbGwgcHJvdmlkZSB0aGUgY3JpdGljYWwgY29udGV4dCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGNhbmRpZGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjU9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwNjY6Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDY3LVx0XHRcdGludCBldmVudCwgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzE1Mj1jdG5ldGxpbmtfZXhwX2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTc4LVx0XHRcdH1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMTc5Olx0XHRcdGlmIChjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mbyhza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzE4MC1cdFx0XHRcdFx0XHQgICAgTkVUTElOS19DQihjYi1cdTAwM2Vza2IpLnBvcnRpZCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzE5OT1jdG5ldGxpbmtfZXhwX2N0X2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMjI1LVx0XHR9XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzIyNjpcdFx0aWYgKGN0bmV0bGlua19leHBfZmlsbF9pbmZvKHNrYiwgTkVUTElOS19DQihjYi1cdTAwM2Vza2IpLnBvcnRpZCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMjI3LVx0XHRcdFx0XHQgICAgY2ItXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzMwOT1zdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzNzItXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzM3MzpcdGVyciA9IGN0bmV0bGlua19leHBfZmlsbF9pbmZvKHNrYjIsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzM3NC1cdFx0XHRcdCAgICAgIGluZm8tXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSwgSVBDVE5MX01TR19FWFBfTkVXLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTQzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIENvbm5lY3Rpb24gVHJhY2tpbmcgTmV0bGluayBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIG5ldGxpbmsgY29kZS4gSXQgbG9va3MgbGlrZSBgY3RuZXRsaW5rX2dldF9leHBlY3RgLCBgY3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlYCwgYW5kIGBjdG5ldGxpbmtfZXhwX2N0X2R1bXBfdGFibGVgIGFyZSB0aGUgcHJpbWFyeSBzdGFydGluZyBwb2ludHMuIFRoYXQgbWFrZXMgc2Vuc2UsIHRob3NlIG5hbWVzIGFyZSBwcmV0dHkgZGVzY3JpcHRpdmUuIFRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIG92ZXJhbGwgZmxvdywgSSB0aGluayB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB3aXRoIGBjdG5ldGxpbmtfZ2V0X2V4cGVjdGAgYW5kIGBjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGVgLiBJJiMzOTtsbCBkaWcgaW50byB0aG9zZSBmaXJzdCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBpcyBiZWluZyByZXRyaWV2ZWQgYW5kIGR1bXBlZC4gRnJvbSB0aGVyZSwgSSBjYW4gbGlrZWx5IGluZmVyIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIENUIGRhdGEuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgZXhwZWN0IHRhYmxlIGlzIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19nZXRfZXhwZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMjYyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX2R1bXBfZXhwX2N0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMDgtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzMwOTpzdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzMxMC1cdFx0XHRcdGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4MDY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGN0bmxfZXhwX2NiW0lQQ1ROTF9NU0dfRVhQX01BWF0gPSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzgwNy1cdFtJUENUTkxfTVNHX0VYUF9HRVRdID0ge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4MDg6XHRcdC5jYWxsXHRcdD0gY3RuZXRsaW5rX2dldF9leHBlY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzgwOS1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX01VVEVYLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTQ4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGFzIGlmIEkmIzM5O20gd29ya2luZyB0aHJvdWdoIHRoaXMgY29kZToKCioqRGl2aW5nIGludG8gdGhlIENvbm5lY3Rpb24gVHJhY2tpbmcgTmV0bGluayBDb2RlKioKClJpZ2h0LCBzbyBgY3RuZXRsaW5rX2dldF9leHBlY3RgIGlzIGNsZWFybHkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgYElQQ1ROTF9NU0dfRVhQX0dFVGAgbmV0bGluayBtZXNzYWdlLiBUaGF0IG1ha2VzIHNlbnNlLCBpdCYjMzk7cyB3aGF0IEkgd291bGQgZXhwZWN0IGZvciBhICYjMzQ7Z2V0IGV4cGVjdGF0aW9uJiMzNDsgb3BlcmF0aW9uLiBJdCYjMzk7cyB0aGUgcG9pbnQgb2YgZW50cnkgZm9yIHJldHJpZXZpbmcgZXhwZWN0ZWQgY29ubmVjdGlvbnMuIEJ1dC4uLiB3aGF0IGFib3V0IGBjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGVgPyBUaGF0IG5hbWUgc3VnZ2VzdHMgYSBkaWZmZXJlbnQga2luZCBvZiBmdW5jdGlvbmFsaXR5LiBJcyB0aGF0IHVzZWQgdG8gZHVtcCB0aGUgZW50aXJlIGV4cGVjdGF0aW9uIHRhYmxlPyBPciBpcyBpdCByZWxhdGVkLCBtYXliZSBmb3IgaW5pdGlhbGl6YXRpb24gb3IgbWFpbnRlbmFuY2U/IEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgaG93IHRoYXQgb25lIGZpdHMgaW4gYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBgZ2V0YCBmdW5jdGlvbi4gR290dGEgdW5kZXJzdGFuZCB0aGUgZnVsbCBuZXRsaW5rIG1lc3NhZ2UgaGFuZGxpbmcgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMxNTE9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMxNTI6Y3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTUzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzMwOT1zdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMjYtXHRcdFx0c3RydWN0IG5ldGxpbmtfZHVtcF9jb250cm9sIGMgPSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzMyNzpcdFx0XHRcdC5kdW1wID0gY3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMjgtXHRcdFx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA2NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlZXAgRGl2ZSBvbiBgY3RuZXRsaW5rX2V4cGVjdF9ldmVudGAqKgoKU28sIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG5ldGxpbmsgY29ubmVjdGlvbiB0cmFja2luZyBpbnRlcmZhY2UsIHNwZWNpZmljYWxseSwgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgLiBPa2F5LCBJIGdldCB0aGUgYmFzaWNzLCBvYnZpb3VzbHk6IGl0JiMzOTtzIGFib3V0IGhhbmRsaW5nIGV2ZW50cyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHJpZ2h0PyBCdXQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgaXNuJiMzOTt0IGl0PyBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLiBXaGF0IGtpbmQgb2YgZGF0YSBpcyBpdCBleHBlY3Rpbmc/IFdoYXQmIzM5O3MgdGhlIGFudGljaXBhdGVkIGV2ZW50IGZsb3c/IERvZXMgdGhpcyBmdW5jdGlvbiBtYW5hZ2UgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIGNvbm50cmFjayB1c2Vyc3BhY2UgZGFlbW9uIG9yIGlzIGl0IHNvbGVseSByZWxhdGVkIHRvIHRoZSBrZXJuZWwgbGV2ZWwgZnVuY3Rpb25zPyBNb3JlIGltcG9ydGFudGx5LCBob3cgZG9lcyBpdCBoYW5kbGUgY29uY3VycmVuY3k/IFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IG5ldHdvcmsgZXZlbnRzIGhlcmU7IHRoaW5ncyBjYW4gZ2V0IG1lc3N5IGZhc3QuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBEb2VzIGl0IGhhdmUgcHJvcGVyIGxvY2tpbmcgaW4gcGxhY2UgdG8gcHJvdGVjdCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzPyBBcmUgdGhlcmUgYW55IGtub3duIGdvdGNoYXMgb3IgZWRnZSBjYXNlcyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgcGVyaGFwcyBpbiByZWxhdGlvbiB0byBzcGVjaWZpYyBwcm90b2NvbCB0eXBlcyBvciB1bnVzdWFsIG5ldHdvcmsgY29uZmlndXJhdGlvbnM/IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBhcyB3ZWxsOiB3aGF0IGhhcHBlbnMgaWYgYW4gZXZlbnQgaXMgbWFsZm9ybWVkLCBvciBpZiB0aGUgc3lzdGVtIHJ1bnMgb3V0IG9mIHJlc291cmNlcz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcmV0dXJuIGNvZGVzIG9uIHRoZSBvdmVyYWxsIHN0YXRlIG9mIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1YnN5c3RlbT8gSSBuZWVkIHRvIGdvIGRlZXBlciBpbnRvIHRoZSBzb3VyY2UgY29kZS4uLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNoZWNrIHRoZSByZWxldmFudCBSRkNzIGFuZCBkb2N1bWVudGF0aW9uIGFnYWluLCBqdXN0IHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfZXhwZWN0X2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDkxPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDkyOmN0bmV0bGlua19leHBlY3RfZXZlbnQodW5zaWduZWQgaW50IGV2ZW50cywgY29uc3Qgc3RydWN0IG5mX2V4cF9ldmVudCAqaXRlbSlcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDkzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzc1Nz1zdGF0aWMgc3RydWN0IG5mX2N0X2V2ZW50X25vdGlmaWVyIGN0bmxfbm90aWZpZXIgPSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc1OC1cdC5jdF9ldmVudCA9IGN0bmV0bGlua19jb25udHJhY2tfZXZlbnQsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mzc1OTpcdC5leHBfZXZlbnQgPSBjdG5ldGxpbmtfZXhwZWN0X2V2ZW50LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NjAtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY2MgoJCQkJCQkJb3V0cHV0OiAxMzEKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIENvbm50cmFjayBOZXRsaW5rIEVudHJ5IFBvaW50cyBhbmQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgY29ubnRyYWNrIG5ldGxpbmsgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19nZXRfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgIGFyZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24uIFRoYXQgZmVlbHMgcmlnaHQsIHVzdWFsbHkgd2hlbiBsb29raW5nIGF0IG5ldGxpbmsgaW50ZXJhY3Rpb25zIHlvdSYjMzk7bGwgc2VlIGEgZ2V0IGFuZCBhbiBldmVudCBjb21wb25lbnQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBJIGhhZCB0byBjaGVjayBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX05FVExJTktgLCBidXQgd2FpdOKApiBJIHRoaW5rIGBORl9DVF9ORVRMSU5LYCBpcyB0aGUgYWN0dWFsIGtleSBjb25maWcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N0bmV0bGlua19nZXRfZXhwZWN0JiMzNDssCiAgICAmIzM0O2N0bmV0bGlua19leHBlY3RfZXZlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgdGhlIGBleHAtXHUwMDNlZmxhZ3NgIGJlZm9yZSBzZW5kaW5nIHRoZW0gdG8gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgYWx0ZXJzIHRoZSBkYXRhIHJldHVybmVkIGJ5IG5ldGxpbmsgZHVtcHMgYW5kIGV2ZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjdG5ldGxpbmtfZ2V0X2V4cGVjdCYjMzQ7LAogICAgJiMzNDtjdG5ldGxpbmtfZXhwZWN0X2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIHRoZSBgZXhwLVx1MDAzZWZsYWdzYCBiZWZvcmUgc2VuZGluZyB0aGVtIHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGFsdGVycyB0aGUgZGF0YSByZXR1cm5lZCBieSBuZXRsaW5rIGR1bXBzIGFuZCBldmVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgYGV4cC1cdTAwM2VmbGFnc2Agd2l0aCBgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBwcmV2ZW50cyBsZWFraW5nIGludGVybmFsIGtlcm5lbCBmbGFncyAoc3VjaCBhcyBgTkZfQ1RfRVhQRUNUX0RFQURgKSB0byB1c2Vyc3BhY2UuIFRoZSBgZmxhZ3NgIGZpZWxkIGl0c2VsZiBpcyBwcm9wZXJseSBpbml0aWFsaXplZDsgdGhlIGlzc3VlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgb2YgaW50ZXJuYWwgc3RhdGUsIG5vdCBhIGxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGUwMzY1M2UyMWQ3N2NjNmEyM2M5NzJmZjM3ZTE4NzIwOTk5Mjg0MjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAyMzo1NDowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwppbmRleCBmYzNmNjAwOTlhZjNiLi45YjRlMjk1NTdlYzMzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jCkBAIC0zMDQyLDcgJiM0MzszMDQyLDcgQEAgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogI2VuZGlmCiAJaWYgKG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfVElNRU9VVCwgaHRvbmwodGltZW91dCkpIHx8CiAJICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfSUQsIG5mX2V4cGVjdF9nZXRfaWQoZXhwKSkgfHwKLQkgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLSZndDtmbGFncykpIHx8CiYjNDM7CSAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtJmd0O2ZsYWdzICZhbXA7IE5GX0NUX0VYUEVDVF9NQVNLKSkgfHwKIAkgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9DTEFTUywgaHRvbmwoZXhwLSZndDtjbGFzcykpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXRmaWx0ZXIgQ29ubnRyYWNrIE5ldGxpbmsgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIGluIGBuZl9jb25udHJhY2tfbmV0bGluay5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgY2hhbmdpbmcgaG93IHRoZSBgZXhwLSZndDtmbGFnc2AgZmllbGQgaXMgaGFuZGxlZCB3aGVuIHNlbmRpbmcgZGF0YSBvdmVyIG5ldGxpbmsuIFNwZWNpZmljYWxseSwgaXQgaW50cm9kdWNlcyBhIG1hc2ssIGBORl9DVF9FWFBFQ1RfTUFTS2AsIGxpa2Ugc286CgpgYGBkaWZmCi0JICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC0mZ3Q7ZmxhZ3MpKSB8fAomIzQzOwkgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLSZndDtmbGFncyAmYW1wOyBORl9DVF9FWFBFQ1RfTUFTSykpIHx8CmBgYAoKTXkgZmlyc3QgdGhvdWdodCBpcywgd2h5IHRoZSBtYXNrPyBXaGF0JiMzOTtzIHRoZSByYXRpb25hbGUgZm9yIGZpbHRlcmluZyB0aGVzZSBmbGFncyBiZWZvcmUgdGhleSYjMzk7cmUgc2VyaWFsaXplZCB0byB1c2Vyc3BhY2U/IFRoZSBvYnZpb3VzIGFuc3dlciBpcyBsaWtlbHkgc29tZSBraW5kIG9mIGluZm9ybWF0aW9uIGhpZGluZy4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSB0byBwcmV2ZW50IGxlYWtpbmcgaW50ZXJuYWwga2VybmVsLXNwZWNpZmljIGZsYWdzIHRvIHVzZXJzcGFjZSwgb3IgcGVyaGFwcyB0aGVyZSYjMzk7cyBhIGJ1ZyBpbiB0aGUgdXNlcnNwYWNlIGNvZGUgdGhhdCBpcyBtaXNpbnRlcnByZXRpbmcgY2VydGFpbiBmbGFnIGJpdHMgYW5kIGNhdXNpbmcgaXNzdWVzLiBUaGUgcGF0Y2ggY291bGQgYmUgbWl0aWdhdGluZyB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGV2ZW4gYSBzZWN1cml0eSBjb25jZXJuLgoKSSBicmllZmx5IGNvbnNpZGVyZWQgdGhlIHBvc3NpYmlsaXR5IG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGludm9sdmVkLiBJdCYjMzk7cyBhIGtuZWUtamVyayByZWFjdGlvbiB3aGVuIHlvdSYjMzk7cmUgZGVhbGluZyB3aXRoIGZsYWcgZmllbGRzLCBidXQgbm8sIHRoaXMgaXMgYWJvdXQgbWFza2luZyBhbHJlYWR5IGluaXRpYWxpemVkIGZsYWdzLiBUaGUgYGV4cC0mZ3Q7ZmxhZ3NgIGlzIHBhcnQgb2YgdGhlIGBuZl9jb25udHJhY2tfZXhwZWN0YCBzdHJ1Y3QgYW5kIGl0JiMzOTtzIGluaXRpYWxpemVkIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZW50cnkuIEl0IGlzbiYjMzk7dCByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLTVNBTiB3b3VsZCBoYXZlIGZsYWdnZWQgaXQgb3RoZXJ3aXNlLgoKQnV0IHdhaXQsIGNvdWxkIHNvbWUgYml0cyBvZiBgZXhwLSZndDtmbGFnc2AgYmUgdW5pbml0aWFsaXplZCB3aGVuIHRoZSBgbmZfY29ubnRyYWNrX2V4cGVjdGAgc3RydWN0IGlzIGNyZWF0ZWQsIGJ1dCB0aGVzZSB1bmluaXRpYWxpemVkIGJpdHMgYXJlIG5vdCB1c2VkLiBUaGVuIHRoZSBtYXNrIHdpbGwgY2xlYXIgdGhlbS4gVGhhdCBtYWtlcyB0aGlzIHBhdGNoIGEgc2VjdXJpdHkgaXNzdWUuIEl0IGNhbiBiZSBleHBsb2l0ZWQgYnkgdXNlcnNwYWNlLiBCdXQgbm8sIEtNU0FOIHdvdWxkIGhhdmUgY2F1Z2h0IGl0LiBUaGUgcGF0Y2ggd291bGQgaGF2ZSBiZWVuIHJlamVjdGVkLgoKU28sIG1hc2tpbmcgdGhlIGZsYWdzIGlzIGFsbCBhYm91dCBjb250cm9sbGVkIGluZm9ybWF0aW9uIGV4cG9zdXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGJpdHMgYXJlIGNvbnNpZGVyZWQgaW50ZXJuYWwuIExldCBtZSBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgTkZfQ1RfRVhQRUNUX01BU0tgLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZ2V0IHRoYXQgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX0NUX0VYUEVDVF9NQVNLJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oPTE1Mj1lbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaC0xNjMtI2RlZmluZSBORl9DVF9FWFBFQ1RfREVBRFx0XHQweDhcbmluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oOjE2NDojZGVmaW5lIE5GX0NUX0VYUEVDVF9NQVNLXHQoTkZfQ1RfRVhQRUNUX1BFUk1BTkVOVCB8IE5GX0NUX0VYUEVDVF9JTkFDVElWRSB8IFxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaC0xNjUtXHRcdFx0XHQgTkZfQ1RfRVhQRUNUX1VTRVJTUEFDRSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjYxNT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXhwX25sYV9wb2xpY3lbQ1RBX0VYUEVDVF9NQVgmIzQzOzFdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNjIzLVx0W0NUQV9FWFBFQ1RfWk9ORV1cdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNjI0Olx0W0NUQV9FWFBFQ1RfRkxBR1NdXHQ9IE5MQV9QT0xJQ1lfTUFTSyhOTEFfQkUzMiwgTkZfQ1RfRVhQRUNUX01BU0spLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI2MjUtXHRbQ1RBX0VYUEVDVF9DTEFTU11cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzAwMT1jdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNDQtXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9JRCwgbmZfZXhwZWN0X2dldF9pZChleHApKSB8fFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwNDU6XHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLVx1MDAzZWZsYWdzIFx1MDAyNiBORl9DVF9FWFBFQ1RfTUFTSykpIHx8XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzA0Ni1cdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0NMQVNTLCBodG9ubChleHAtXHUwMDNlY2xhc3MpKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyNwoJCQkJCQkJb3V0cHV0OiAxNDgKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSXNzdWUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHN5c3RlbSBpcyB0YWtpbmcgdGhlIGBleHAtJmd0O2ZsYWdzYCBkYXRhIGFuZCBhcHBseWluZyBhIG1hc2sgKGBORl9DVF9FWFBFQ1RfTUFTS2ApIGJlZm9yZSBpdCBnZXRzIHNlbnQgdXAgdG8gdXNlcnNwYWNlLiBUaGF0IG1hc2sgaXMgZGVmaW5lZCBhcyBgKE5GX0NUX0VYUEVDVF9QRVJNQU5FTlQgfCBORl9DVF9FWFBFQ1RfSU5BQ1RJVkUgfCBORl9DVF9FWFBFQ1RfVVNFUlNQQUNFKWAuIEVzc2VudGlhbGx5LCB0aGUgZ29hbCBoZXJlIGlzIHRvIGNhcmVmdWxseSBjb250cm9sICp3aGljaCogZmxhZ3MgZnJvbSBgZXhwLSZndDtmbGFnc2AgYXJlIHZpc2libGUgb3V0c2lkZSB0aGUga2VybmVsLiBTcGVjaWZpY2FsbHksIHdlJiMzOTtyZSB0cnlpbmcgdG8gcHJldmVudCBsZWFrYWdlIG9mIGludGVybmFsIGZsYWdzIGxpa2UgYE5GX0NUX0VYUEVDVF9ERUFEYCBvciBvdGhlciBwb3RlbnRpYWxseSBzZW5zaXRpdmUga2VybmVsLWludGVybmFsIHN0YXRlIGZsYWdzLgoKVGhpcyBpc24mIzM5O3QgYSBjYXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5OyB0aGUgbWVtb3J5IGlzIGV4cGxpY2l0bHkgc2V0IGJ5IHRoZSBrZXJuZWwuIFRoZSBwcm9ibGVtIGlzIGEgbG9naWNhbCBpbmZvcm1hdGlvbiBsZWFrIOKAkyB3ZSYjMzk7cmUgdW5pbnRlbnRpb25hbGx5IHJldmVhbGluZyBpbnRlcm5hbCBzdGF0ZSB0aGF0IHVzZXJzcGFjZSBzaG91bGRuJiMzOTt0IGtub3cgYWJvdXQuIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gZGV0ZWN0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBCdXQsIHNpbmNlIHRoaXMgaXNuJiMzOTt0IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHByb2JsZW0sIEtNU0FOIGlzbiYjMzk7dCB0aGUgcmlnaHQgdG9vbCBmb3IgdGhlIGpvYi4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCAqaW5pdGlhbGl6ZWQqLCBhbGJlaXQgcG90ZW50aWFsbHkgc2Vuc2l0aXZlLCBkYXRhIHRoYXQgd2Ugd2FudCB0byBrZWVwIGhpZGRlbiBmcm9tIHRoZSB1c2Vyc3BhY2UuCgpUaGVyZWZvcmUsIHNpbmNlIHRoaXMgaXMgYSBsb2dpYyBidWcgYW5kIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSwgSSYjMzk7bSBnb2luZyB0byBtYXJrIGBOZWVkc0tNU0FOYCBhcyBmYWxzZSBmb3IgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIGBleHAtXHUwMDNlZmxhZ3NgIHdpdGggYE5GX0NUX0VYUEVDVF9NQVNLYCBiZWZvcmUgc2VuZGluZyBpdCB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgcHJldmVudHMgbGVha2luZyBpbnRlcm5hbCBrZXJuZWwgZmxhZ3MgKHN1Y2ggYXMgYE5GX0NUX0VYUEVDVF9ERUFEYCkgdG8gdXNlcnNwYWNlLiBUaGUgYGZsYWdzYCBmaWVsZCBpdHNlbGYgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQ7IHRoZSBpc3N1ZSBpcyBhbiBpbmZvcm1hdGlvbiBsZWFrIG9mIGludGVybmFsIHN0YXRlLCBub3QgYSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgYGV4cC1cdTAwM2VmbGFnc2Agd2l0aCBgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBwcmV2ZW50cyBsZWFraW5nIGludGVybmFsIGtlcm5lbCBmbGFncyAoc3VjaCBhcyBgTkZfQ1RfRVhQRUNUX0RFQURgKSB0byB1c2Vyc3BhY2UuIFRoZSBgZmxhZ3NgIGZpZWxkIGl0c2VsZiBpcyBwcm9wZXJseSBpbml0aWFsaXplZDsgdGhlIGlzc3VlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgb2YgaW50ZXJuYWwgc3RhdGUsIG5vdCBhIGxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjA2LjAwODE1MDE0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTMzMTA4OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0bmV0bGlua19nZXRfZXhwZWN0XCIsXG4gICAgXCJjdG5ldGxpbmtfZXhwZWN0X2V2ZW50XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayBgZXhwLVxcdTAwM2VmbGFnc2Agd2l0aCBgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBwcmV2ZW50cyBsZWFraW5nIGludGVybmFsIGtlcm5lbCBmbGFncyAoc3VjaCBhcyBgTkZfQ1RfRVhQRUNUX0RFQURgKSB0byB1c2Vyc3BhY2UuIFRoZSBgZmxhZ3NgIGZpZWxkIGl0c2VsZiBpcyBwcm9wZXJseSBpbml0aWFsaXplZDsgdGhlIGlzc3VlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgb2YgaW50ZXJuYWwgc3RhdGUsIG5vdCBhIGxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgdGhlIGBleHAtXFx1MDAzZWZsYWdzYCBiZWZvcmUgc2VuZGluZyB0aGVtIHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGFsdGVycyB0aGUgZGF0YSByZXR1cm5lZCBieSBuZXRsaW5rIGR1bXBzIGFuZCBldmVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjA2LjAwODE1NDk5OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyMzgzNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTAzNjUzZTIxZDc3Y2M2YTIzYzk3MmZmMzdlMTg3MjA5OTkyODQyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAyMzo1NDowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG5pbmRleCBmYzNmNjAwOTlhZjNiLi45YjRlMjk1NTdlYzMzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xcbkBAIC0zMDQyLDcgKzMwNDIsNyBAQCBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuICNlbmRpZlxcbiBcXHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9USU1FT1VULCBodG9ubCh0aW1lb3V0KSkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfSUQsIG5mX2V4cGVjdF9nZXRfaWQoZXhwKSkgfHxcXG4tXFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC1cXHUwMDNlZmxhZ3MpKSB8fFxcbitcXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLVxcdTAwM2VmbGFncyBcXHUwMDI2IE5GX0NUX0VYUEVDVF9NQVNLKSkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfQ0xBU1MsIGh0b25sKGV4cC1cXHUwMDNlY2xhc3MpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDowNi41MTEyMDA0MzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjcxMzMxMTk1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX05FVExJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjdG5ldGxpbmtfZ2V0X2V4cGVjdFwiLFxuICAgIFwiY3RuZXRsaW5rX2V4cGVjdF9ldmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIHRoZSBgZXhwLVxcdTAwM2VmbGFnc2AgYmVmb3JlIHNlbmRpbmcgdGhlbSB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBhbHRlcnMgdGhlIGRhdGEgcmV0dXJuZWQgYnkgbmV0bGluayBkdW1wcyBhbmQgZXZlbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMDM2NTNlMjFkNzdjYzZhMjNjOTcyZmYzN2UxODcyMDk5OTI4NDI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMjM6NTQ6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbmluZGV4IGZjM2Y2MDA5OWFmM2IuLjliNGUyOTU1N2VjMzMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuQEAgLTMwNDIsNyArMzA0Miw3IEBAIGN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAjZW5kaWZcbiBcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX1RJTUVPVVQsIGh0b25sKHRpbWVvdXQpKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfSUQsIG5mX2V4cGVjdF9nZXRfaWQoZXhwKSkgfHxcbi1cdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtXHUwMDNlZmxhZ3MpKSB8fFxuK1x0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC1cdTAwM2VmbGFncyBcdTAwMjYgTkZfQ1RfRVhQRUNUX01BU0spKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfQ0xBU1MsIGh0b25sKGV4cC1cdTAwM2VjbGFzcykpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjA2LjUxMTIwMjA4NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5Mjc1NDcyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm50cmFjayBOZXRsaW5rIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgY2hhbmdpbmcgaG93IGV4cGVjdGF0aW9uIGZsYWdzIGFyZSBkdW1wZWQgdmlhIG5ldGxpbmsuIEkgY2FuIHNlZSB0aGUgY29kZSBub3csIGl0J3MgYSBzaW1wbGUsIHNlZW1pbmdseSBoYXJtbGVzcyBvbmUtbGluZXI6IGl0J3MgbWFza2luZyB0aGUgYGV4cC1cdTAwM2VmbGFnc2AgYmVmb3JlIHNlcmlhbGl6aW5nIHRoZW0uIEJlZm9yZSwgaXQgd2FzIHB1dHRpbmcgdGhlIHJhdyBgZXhwLVx1MDAzZWZsYWdzYCB2YWx1ZSBpbiB0aGUgbmV0bGluayBtZXNzYWdlLCBub3cgaXQncyBhcHBseWluZyBgTkZfQ1RfRVhQRUNUX01BU0tgIGZpcnN0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2lnbmlmaWNhbmNlLiBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdCgpYCAtIEkgc2hvdWxkIGNoZWNrIHRoYXQgZnVuY3Rpb24sIGFuZCBuYXR1cmFsbHksIEknbSBnb2luZyB0byBsb29rIHVwIGBORl9DVF9FWFBFQ1RfTUFTS2AuIElzIHRoYXQgYSBiaXRtYXNrIG9yIGEgY29uc3RhbnQ/IEl0J3MgcHJvYmFibHkgc29tZSBkZWZpbmVkIGNvbnN0YW50LCBhIGJpdG1hc2suXG5cblRoaXMgaXMgYSByZWFsbHkgbWlub3IgY2hhbmdlLCBidXQgaXQgY2hhbmdlcyB0aGUgKm91dHB1dCogb2YgdGhlIG5ldGxpbmsgZHVtcCwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciBhbnkgdG9vbGluZyB0aGF0IGNvbnN1bWVzIHRoaXMgaW5mb3JtYXRpb24uIEl0J3MgYSBmbGFnIG1hc2tpbmcgb3BlcmF0aW9uLCBub3QgYSBidWdmaXguIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggdGhyb3dpbmcgZnV6emluZyBhdD8gSXMgdGhlcmUgYSBzdWJ0bGUgZWRnZSBjYXNlIGluIHRoZSBtYXNraW5nIHRoYXQgY291bGQgYmUgZXhwbG9pdGVkPyBIb25lc3RseSwgaXQgc2VlbXMgdW5saWtlbHksIGdpdmVuIHRoZSBzY2FsZSBvZiB0aGUgY2hhbmdlLiBJdCdzIG1hc2tpbmcgYSBzaW5nbGUgdmFsdWUuIE5ldmVydGhlbGVzcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB3aG9sZSBzdHJ1Y3R1cmUgYmV0dGVyLCBzbyBsZXQncyBzdGFydCBieSBmaW5kaW5nIHdoZXJlIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCBpcyBkZWZpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MTEuNDM4NzU0MTc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4NDY0MTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0bmV0bGlua19leHBfZHVtcF9leHBlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDAwPXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzAwMTpjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwMDItXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjY9Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDc3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDc4OlxcdGlmIChjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHNrYiwgZXhwKSBcXHUwMDNjIDApXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNzktXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzA5Mj1jdG5ldGxpbmtfZXhwZWN0X2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9leHBfZXZlbnQgKml0ZW0pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEyMy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzEyNDpcXHRpZiAoY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChza2IsIGV4cCkgXFx1MDAzYyAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTI1LVxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDoxMS41MjcyMjMzNjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIwODYyODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29ubnRyYWNrIE5ldGxpbmsgRXhwZWN0YXRpb24gTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgZnVuY3Rpb24sIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0J3MgdGhlIGhlYXJ0IG9mIGhvdyBleHBlY3RhdGlvbnMgYXJlIGhhbmRsZWQgdGhyb3VnaCBuZXRsaW5rLiBJIGNhbiBzZWUgaXQgZ2V0cyBjYWxsZWQgYnkgdHdvIGtleSBwbGFjZXM6IGBjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mb2AgYW5kIGBjdG5ldGxpbmtfZXhwZWN0X2V2ZW50YC4gVGhhdCBtYWtlcyBzZW5zZTsgYGN0bmV0bGlua19leHBfZmlsbF9pbmZvYCBpcyBmb3IgZHVtcGluZyB0aGUgZXhwZWN0YXRpb24gZGF0YSBpdHNlbGYsIGFuZCBzaW5jZSB0aGF0J3MgbmV0bGluay1iYXNlZCwgaXQgZ2l2ZXMgbWUgYSBjbGVhciBwYXRoIHRvIHJlYWNoIHRob3NlIGV4cGVjdGF0aW9ucyBvdmVyIHRoZSBuZXR3b3JrLlxuXG5Ob3csIGdpdmVuIHRoaXMgd2hvbGUgdGhpbmcgaXMgZHJpdmVuIGJ5IG5ldGxpbmssIEkgdGhpbmsgdGhlIG5leHQgbG9naWNhbCBzdGVwIHdvdWxkIGJlIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZvciBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBuZXRsaW5rIGludGVyYWN0aW9ucyBhcmUgc2V0IHVwIGFuZCBob3cgdGhlIGV4cGVjdGF0aW9uIGR1bXAgYW5kIGV2ZW50cyBhcmUgdHJpZ2dlcmVkIGZyb20gdGhlIHVzZXIgc3BhY2UgcGVyc3BlY3RpdmUuIFRoYXQnbGwgZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlIG9mIGhvdyB0aGlzIG1lY2hhbmlzbSBhY3R1YWxseSB3b3JrcywgYW5kIGhvdyBpdCBjYW4gYmUgY29udHJvbGxlZC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGNvbm5lY3Rpb24gaXMgbWFuYWdlZCBhbmQgd2hpY2ggY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGNhbiBhZmZlY3QgdGhlIHdob2xlIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEwNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjE0Ljk0ODA4OTEzNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDA0MjA3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfbmV0bGluay5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLKSArPSBuZl9jb25udHJhY2sub1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zNi0jIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBuZl9jb25udHJhY2tcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LKSArPSBuZl9jb25udHJhY2tfbmV0bGluay5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfTkZfQ1RfTkVUTElOS19USU1FT1VUKSArPSBuZm5ldGxpbmtfY3R0aW1lb3V0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MTUuMDIyMTM4OTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcwMzgxMjE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgc3BvdGxpZ2h0J3Mgb24gYE5GX0NUX05FVExJTktgLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBkb2VzIHRoaXMgZml0IGluIHRoZSBncmFuZCBzY2hlbWUgb2YgTmV0ZmlsdGVyPyBJdCdzIGNydWNpYWwgdG8gaW1tZWRpYXRlbHkgYXNjZXJ0YWluIHRoaXMgbW9kdWxlJ3MgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIGVzc2VudGlhbCwgcGFydGljdWxhcmx5IGJlY2F1c2UgTmV0bGluayBpcyBhIGNvcmUgYXNwZWN0IG9mIGNvbW11bmljYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgTmV0ZmlsdGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3Iga2VybmVsIHN1YnN5c3RlbXMgYXJlIGluaGVyZW50bHkgbGlua2VkIHRvIGBORl9DVF9ORVRMSU5LYC4gVGhlIGRlcGVuZGVuY2llcyBhcmUgcmVhbGx5IHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSwgaXRzIGltcGFjdCBvbiB0aGUgc3lzdGVtLCBhbmQgcG90ZW50aWFsIGludGVncmF0aW9uIHByb2JsZW1zLiBObyBwb2ludCBpbiBnb2luZyBmdXJ0aGVyIGJlZm9yZSBJIHVuZGVyc3RhbmQgaXRzIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBhbmQgaXRzIHJvbGUgd2l0aGluIE5ldGZpbHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjE3LjcyNTk1MzM5NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mzk5MTc2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ1RfTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTM1NT1jb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM2Njpjb25maWcgTkZfQ1RfTkVUTElOS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjctXFx0dHJpc3RhdGUgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgbmV0bGluayBpbnRlcmZhY2UnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzcyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNzM6Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGUgICdDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg1OmNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODYtXFx0dHJpc3RhdGUgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycyBpbiB1c2VyLXNwYWNlIHZpYSBOZXRsaW5rJ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDoxNy44MTk5NjM0MzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI4NDM1Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMsIGFzIHRob3VnaCB0aGVzZSBhcmUgKm15KiB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYE5GX0NUX05FVExJTktgKipcblxuUmlnaHQsIGxldCdzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYE5GX0NUX05FVExJTktgIHJlbGllcyBvbiwgd2hhdCBpdHMgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGFyZS4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGdsYW5jZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHBvc2l0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgaGlnaGxpZ2h0IGl0cyByb2xlLiBJcyBpdCBhIGNvcmUgY29tcG9uZW50PyBJcyBpdCBhIG1vZHVsZSB0aGF0IGRlcGVuZHMgb24gb3RoZXIgbW9kdWxlcz8gRG9lcyBpdCBidWlsZCBvbiB0b3Agb2YgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9uYWxpdHk/IFRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlIHR1bmluZywgZGVidWdnaW5nLCBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBjaGFuZ2VzIHRvIHRoZSBtb2R1bGUuIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgbWV0aG9kcywgc3VjaCBhcyBzZWFyY2hpbmcgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLCBleGFtaW5pbmcgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgcGVyaGFwcyBldmVuIGNoZWNraW5nIHRoZSBjb21taXQgbG9ncyB0byBmaW5kIHRoZSBoaXN0b3JpY2FsIGNvbnRleHQgYXJvdW5kIHRoaXMgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQ4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MjAuNzQ4NDAyNzc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3ODg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzY2LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzY2OlxcdGNvbmZpZyBORl9DVF9ORVRMSU5LXFxuIDM2NzpcXHRcXHR0cmlzdGF0ZSAnQ29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSdcXG4gMzY4OlxcdFxcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xcbiAzNjk6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuIDM3MDpcXHRcXHRoZWxwXFxuIDM3MTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgYSBuZXRsaW5rLWJhc2VkIHVzZXJzcGFjZSBpbnRlcmZhY2VcXG4gMzcyOlxcdFxcbiAzNzM6XFx0Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxcbiAzNzQ6XFx0XFx0dHJpc3RhdGUgICdDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJ1xcbiAzNzU6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjIwLjc0ODY4NjU3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTcwOTgwNTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kqKlxuXG5SaWdodCwgc28gdGhpcyBiZWhhdmlvciBpcyBjb25kaXRpb25hbC4gVGhlIGNvZGUncyBjbGVhcmx5IGluZGljYXRpbmcgYSBkZXBlbmRlbmNlIG9uIGBORl9DT05OVFJBQ0tgLiBHaXZlbiB0aGF0IGl0J3MgbmVzdGxlZCB3aXRoaW4gdGhhdCBgI2lmZGVmIE5GX0NPTk5UUkFDS2AgYmxvY2ssIGl0J3MgcHJldHR5IG11Y2ggYSBnaXZlbi4gU3RpbGwsIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgYE5GX0NPTk5UUkFDS2AgbW9kdWxlLiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyB1bmV4cGVjdGVkIGhhcHBlbnMgaWYgdGhhdCBtb2R1bGUgaXMgYWJzZW50IG9yIGNvbmZpZ3VyZWQgZGlmZmVyZW50bHkuIExldCdzIGRpZyBkZWVwZXIgYW5kIHZlcmlmeSB0aGUgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDoyMy4zMTk2Nzc2MTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwODk2MTQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZiBORl9DT05OVFJBQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz05OD1jb25maWcgTkZfTE9HX1NZU0xPR1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwOS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTEwOmlmIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTEtY29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MjMuNjI4NjQ4OTY3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNTAxNDEzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFdvcnRoKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgaW52b2x2ZXMgYE5GX0NPTk5UUkFDS2AgYW5kIGBORl9DVF9ORVRMSU5LYCwgd2hpY2ggSSdtIGZhbWlsaWFyIHdpdGguIFRoZSBjb3JlIG9mIGl0IGxpZXMgaW4gYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgLCB3aGVyZSB3ZSdyZSBtYXNraW5nIGBleHAtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9NQVNLYCBiZWZvcmUgc2VuZGluZyBpdCB0byB1c2Vyc3BhY2UuIEEgc3RyYWlnaHRmb3J3YXJkIGJpdHdpc2UgQU5EIG9wZXJhdGlvbiwgcmVhbGx5LlxuXG5NeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgZnV6emluZyB0aGlzIHNlZW1zIGxpa2Ugb3ZlcmtpbGwuIEl0J3MgZnVuY3Rpb25hbCwgeWVzLCBidXQgaXQncyBqdXN0IGFib3V0IGluZm9ybWF0aW9uIGhpZGluZyDigJMgcHJldmVudGluZyBpbnRlcm5hbCBmbGFncyBmcm9tIGxlYWtpbmcuIEl0J3Mgbm90IG1vZGlmeWluZyBrZXJuZWwgZXhlY3V0aW9uIG9yIHN0YXRlOyBpdCdzIGp1c3QgYWx0ZXJpbmcgYSBuZXRsaW5rIGF0dHJpYnV0ZSB2YWx1ZSBpbiB0aGUgb3V0cHV0LiBJIGRvbid0IHNlZSBob3cgZnV6emluZyB3b3VsZCB1bmNvdmVyIGFueSBuZXcgYnVncyBmcm9tIGp1c3QgbWFza2luZyBhbiBvdXRwdXQgdmFsdWUuXG5cbkJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIGd1aWRlbGluZXM6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluc+KApiBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3figKZcIiBhbmQgc28gb24uXG5cbkhvd2V2ZXIsIHRoZSBpbnN0cnVjdGlvbnMgYWxzbyBzYXksIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5UaGlzIHBhdGNoICpkb2VzKiB0b3VjaCByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgd2l0aGluIHRoZSBuZXRmaWx0ZXIgbmV0bGluayBjb2RlLiBJdCBzdWJ0bHkgY2hhbmdlcyB0aGUgZXhlY3V0aW9uIGZsb3cgYmVjYXVzZSBvZiB0aGUgYml0d2lzZSBBTkQuXG5cbldhaXQsIHRob3VnaOKApiB0aGUgZ3VpZGVsaW5lcyAqYWxzbyogc2F5LCBcIkNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvd1wiLiBUaGlzICppcyogYSBjaGFuZ2UgdG8gYSB2YWx1ZSBiZWluZyBzZW50IHRvIHVzZXJzcGFjZS4gSXTigJlzIGEgZGF0YSBjaGFuZ2UsIG5vdCBhIGNvbnRyb2wgZmxvdyBjaGFuZ2UuXG5cbk9rYXksIHNvIEnigJltIGJhY2sgdG8gaXQgYmVpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IG9uZSB0aGF0IGRvZXNuJ3Qgc2VlbSBsaWtlbHkgdG8gaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcy4gQnV0IHRoZSBndWlkZWxpbmVzIGFyZSB2ZXJ5IHNwZWNpZmljLlxuXG5JIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIGFnYWluLiBKdXN0IHRvIGJlIHN1cmUgdGhlcmUncyBub3RoaW5nIGVsc2UgdGhhdCdzIHJlbGV2YW50IHRoYXQgSSBtaWdodCBoYXZlIG1pc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczNSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDozMC42Nzg4MTc3MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MTE5Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0bmV0bGlua19leHBfZHVtcF9leHBlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDAwPXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzAwMTpjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwMDItXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjY9Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDc3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDc4OlxcdGlmIChjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHNrYiwgZXhwKSBcXHUwMDNjIDApXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNzktXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzA5Mj1jdG5ldGxpbmtfZXhwZWN0X2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9leHBfZXZlbnQgKml0ZW0pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEyMy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzEyNDpcXHRpZiAoY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChza2IsIGV4cCkgXFx1MDAzYyAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTI1LVxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDozMC43NjI5NDI2NDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4MTU2NDk5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBXb3J0aEZ1enppbmcgU2NlbmFyaW8qKlxuXG5Pa2F5LCBoZXJlJ3MgbXkgbGluZSBvZiB0aGlua2luZyBvbiB0aGlzLiBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGNoYW5nZSB3aXRoIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoaXMgaXMgYmVjYXVzZSB3ZSdyZSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgc3Vic3lzdGVtLiBBbmQgdGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgcGxhY2Ugd2hlcmUgZnV6emluZyBjYW4gYmUgcmVhbGx5IGVmZmVjdGl2ZS5cblxuSSdtIGZvY3VzZWQgaW4gb24gdGhlc2Ugc3ltYm9sczogYGN0bmV0bGlua19leHBfZmlsbF9pbmZvYCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgLlxuXG5Ib2xkIG9uIGEgc2VjLi4uIGBjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mb2AgaXMgc3RhdGljLiBUaGF0IG1ha2VzIG1lIHBhdXNlLiBJcyBpdCBhY3R1YWxseSBhbiBBUEkgZW50cnkgcG9pbnQsIG9yIGlzIGl0IG1vcmUgb2YgYW4gaW50ZXJuYWwgZnVuY3Rpb24/IE5lZWQgdG8gYmUgc3VyZSBoZXJlLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdvIHVwc3RyZWFtIGFuZCBpbnZlc3RpZ2F0ZSB3aGVyZSBgY3RuZXRsaW5rX2V4cF9maWxsX2luZm9gIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCB3aWxsIHByb3ZpZGUgdGhlIGNyaXRpY2FsIGNvbnRleHQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSB2YWxpZCBjYW5kaWRhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5ODUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDozNC43NDQ1MTE0MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3OTkwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX2V4cF9maWxsX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDY1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzA2NjpjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgcG9ydGlkLCB1MzIgc2VxLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDY3LVxcdFxcdFxcdGludCBldmVudCwgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMTUyPWN0bmV0bGlua19leHBfZHVtcF90YWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzE3OC1cXHRcXHRcXHR9XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMxNzk6XFx0XFx0XFx0aWYgKGN0bmV0bGlua19leHBfZmlsbF9pbmZvKHNrYixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzE4MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgTkVUTElOS19DQihjYi1cXHUwMDNlc2tiKS5wb3J0aWQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzE5OT1jdG5ldGxpbmtfZXhwX2N0X2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMyMjUtXFx0XFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMjI2OlxcdFxcdGlmIChjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mbyhza2IsIE5FVExJTktfQ0IoY2ItXFx1MDAzZXNrYikucG9ydGlkLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMjI3LVxcdFxcdFxcdFxcdFxcdCAgICBjYi1cXHUwMDNlbmxoLVxcdTAwM2VubG1zZ19zZXEsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzMwOT1zdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzM3Mi1cXHRyY3VfcmVhZF9sb2NrKCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMzNzM6XFx0ZXJyID0gY3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc2tiMiwgTkVUTElOS19DQihza2IpLnBvcnRpZCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzM3NC1cXHRcXHRcXHRcXHQgICAgICBpbmZvLVxcdTAwM2VubGgtXFx1MDAzZW5sbXNnX3NlcSwgSVBDVE5MX01TR19FWFBfTkVXLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDozNC44MjAzMTU0MzlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NTg3NTMzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIENvbm5lY3Rpb24gVHJhY2tpbmcgTmV0bGluayBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgZW50cnkgcG9pbnRzIGZvciB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGNvZGUuIEl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19nZXRfZXhwZWN0YCwgYGN0bmV0bGlua19leHBfZHVtcF90YWJsZWAsIGFuZCBgY3RuZXRsaW5rX2V4cF9jdF9kdW1wX3RhYmxlYCBhcmUgdGhlIHByaW1hcnkgc3RhcnRpbmcgcG9pbnRzLiBUaGF0IG1ha2VzIHNlbnNlLCB0aG9zZSBuYW1lcyBhcmUgcHJldHR5IGRlc2NyaXB0aXZlLiBUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIGZsb3csIEkgdGhpbmsgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgd2l0aCBgY3RuZXRsaW5rX2dldF9leHBlY3RgIGFuZCBgY3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlYC4gSSdsbCBkaWcgaW50byB0aG9zZSBmaXJzdCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBpcyBiZWluZyByZXRyaWV2ZWQgYW5kIGR1bXBlZC4gRnJvbSB0aGVyZSwgSSBjYW4gbGlrZWx5IGluZmVyIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIENUIGRhdGEuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBleHBlY3QgdGFibGUgaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk0MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjM3Ljg5NjE5NDA1MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI1MTg4MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX2dldF9leHBlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMjYyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX2R1bXBfZXhwX2N0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzMwOC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzMwOTpzdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMTAtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zODA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBjdG5sX2V4cF9jYltJUENUTkxfTVNHX0VYUF9NQVhdID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODA3LVxcdFtJUENUTkxfTVNHX0VYUF9HRVRdID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODA4OlxcdFxcdC5jYWxsXFx0XFx0PSBjdG5ldGxpbmtfZ2V0X2V4cGVjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzgwOS1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9NVVRFWCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MzcuOTQ4NzE5Njg5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTkwODcxMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biwgYXMgaWYgSSdtIHdvcmtpbmcgdGhyb3VnaCB0aGlzIGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbm5lY3Rpb24gVHJhY2tpbmcgTmV0bGluayBDb2RlKipcblxuUmlnaHQsIHNvIGBjdG5ldGxpbmtfZ2V0X2V4cGVjdGAgaXMgY2xlYXJseSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBgSVBDVE5MX01TR19FWFBfR0VUYCBuZXRsaW5rIG1lc3NhZ2UuIFRoYXQgbWFrZXMgc2Vuc2UsIGl0J3Mgd2hhdCBJIHdvdWxkIGV4cGVjdCBmb3IgYSBcImdldCBleHBlY3RhdGlvblwiIG9wZXJhdGlvbi4gSXQncyB0aGUgcG9pbnQgb2YgZW50cnkgZm9yIHJldHJpZXZpbmcgZXhwZWN0ZWQgY29ubmVjdGlvbnMuIEJ1dC4uLiB3aGF0IGFib3V0IGBjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGVgPyBUaGF0IG5hbWUgc3VnZ2VzdHMgYSBkaWZmZXJlbnQga2luZCBvZiBmdW5jdGlvbmFsaXR5LiBJcyB0aGF0IHVzZWQgdG8gZHVtcCB0aGUgZW50aXJlIGV4cGVjdGF0aW9uIHRhYmxlPyBPciBpcyBpdCByZWxhdGVkLCBtYXliZSBmb3IgaW5pdGlhbGl6YXRpb24gb3IgbWFpbnRlbmFuY2U/IEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBvbmUgZml0cyBpbiBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIGBnZXRgIGZ1bmN0aW9uLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBmdWxsIG5ldGxpbmsgbWVzc2FnZSBoYW5kbGluZyBmbG93IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NDgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDo0MS4yMDc4MDk1MzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNzUzNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0bmV0bGlua19leHBfZHVtcF90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMxNTE9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMTUyOmN0bmV0bGlua19leHBfZHVtcF90YWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMxNTMte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMzMDk9c3RhdGljIGludCBjdG5ldGxpbmtfZ2V0X2V4cGVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMjYtXFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZHVtcF9jb250cm9sIGMgPSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMzMjc6XFx0XFx0XFx0XFx0LmR1bXAgPSBjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGUsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMjgtXFx0XFx0XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NDEuMzAxNTY4Mzc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDk0MzAxNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlZXAgRGl2ZSBvbiBgY3RuZXRsaW5rX2V4cGVjdF9ldmVudGAqKlxuXG5TbywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBuZXRsaW5rIGNvbm5lY3Rpb24gdHJhY2tpbmcgaW50ZXJmYWNlLCBzcGVjaWZpY2FsbHksIGBjdG5ldGxpbmtfZXhwZWN0X2V2ZW50YC4gT2theSwgSSBnZXQgdGhlIGJhc2ljcywgb2J2aW91c2x5OiBpdCdzIGFib3V0IGhhbmRsaW5nIGV2ZW50cyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHJpZ2h0PyBCdXQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgaXNuJ3QgaXQ/IEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24uIFdoYXQga2luZCBvZiBkYXRhIGlzIGl0IGV4cGVjdGluZz8gV2hhdCdzIHRoZSBhbnRpY2lwYXRlZCBldmVudCBmbG93PyBEb2VzIHRoaXMgZnVuY3Rpb24gbWFuYWdlIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb25udHJhY2sgdXNlcnNwYWNlIGRhZW1vbiBvciBpcyBpdCBzb2xlbHkgcmVsYXRlZCB0byB0aGUga2VybmVsIGxldmVsIGZ1bmN0aW9ucz8gTW9yZSBpbXBvcnRhbnRseSwgaG93IGRvZXMgaXQgaGFuZGxlIGNvbmN1cnJlbmN5PyBXZSdyZSB0YWxraW5nIGFib3V0IG5ldHdvcmsgZXZlbnRzIGhlcmU7IHRoaW5ncyBjYW4gZ2V0IG1lc3N5IGZhc3QuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBEb2VzIGl0IGhhdmUgcHJvcGVyIGxvY2tpbmcgaW4gcGxhY2UgdG8gcHJvdGVjdCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzPyBBcmUgdGhlcmUgYW55IGtub3duIGdvdGNoYXMgb3IgZWRnZSBjYXNlcyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgcGVyaGFwcyBpbiByZWxhdGlvbiB0byBzcGVjaWZpYyBwcm90b2NvbCB0eXBlcyBvciB1bnVzdWFsIG5ldHdvcmsgY29uZmlndXJhdGlvbnM/IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBhcyB3ZWxsOiB3aGF0IGhhcHBlbnMgaWYgYW4gZXZlbnQgaXMgbWFsZm9ybWVkLCBvciBpZiB0aGUgc3lzdGVtIHJ1bnMgb3V0IG9mIHJlc291cmNlcz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcmV0dXJuIGNvZGVzIG9uIHRoZSBvdmVyYWxsIHN0YXRlIG9mIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1YnN5c3RlbT8gSSBuZWVkIHRvIGdvIGRlZXBlciBpbnRvIHRoZSBzb3VyY2UgY29kZS4uLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNoZWNrIHRoZSByZWxldmFudCBSRkNzIGFuZCBkb2N1bWVudGF0aW9uIGFnYWluLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDY2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NDUuMTUxMDAxODQ1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTg4OTkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfZXhwZWN0X2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzA5MT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwOTI6Y3RuZXRsaW5rX2V4cGVjdF9ldmVudCh1bnNpZ25lZCBpbnQgZXZlbnRzLCBjb25zdCBzdHJ1Y3QgbmZfZXhwX2V2ZW50ICppdGVtKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDkzLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNzU3PXN0YXRpYyBzdHJ1Y3QgbmZfY3RfZXZlbnRfbm90aWZpZXIgY3RubF9ub3RpZmllciA9IHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc1OC1cXHQuY3RfZXZlbnQgPSBjdG5ldGxpbmtfY29ubnRyYWNrX2V2ZW50LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzU5OlxcdC5leHBfZXZlbnQgPSBjdG5ldGxpbmtfZXhwZWN0X2V2ZW50LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNzYwLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjQ1LjIyMjg5NjgxM1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODUwMDkwNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gQ29ubnRyYWNrIE5ldGxpbmsgRW50cnkgUG9pbnRzIGFuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgY29ubnRyYWNrIG5ldGxpbmsgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19nZXRfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgIGFyZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24uIFRoYXQgZmVlbHMgcmlnaHQsIHVzdWFsbHkgd2hlbiBsb29raW5nIGF0IG5ldGxpbmsgaW50ZXJhY3Rpb25zIHlvdSdsbCBzZWUgYSBnZXQgYW5kIGFuIGV2ZW50IGNvbXBvbmVudC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IEkgaGFkIHRvIGNoZWNrIGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfQ1RfTkVUTElOS2AsIGJ1dCB3YWl04oCmIEkgdGhpbmsgYE5GX0NUX05FVExJTktgIGlzIHRoZSBhY3R1YWwga2V5IGNvbmZpZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBjcnVjaWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjYyLCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjQ5LjA3Mjk5MjIxM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTUxNjIzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9ORVRMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3RuZXRsaW5rX2dldF9leHBlY3RcIixcbiAgICBcImN0bmV0bGlua19leHBlY3RfZXZlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayB0aGUgYGV4cC1cXHUwMDNlZmxhZ3NgIGJlZm9yZSBzZW5kaW5nIHRoZW0gdG8gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgYWx0ZXJzIHRoZSBkYXRhIHJldHVybmVkIGJ5IG5ldGxpbmsgZHVtcHMgYW5kIGV2ZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX05FVExJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjdG5ldGxpbmtfZ2V0X2V4cGVjdFwiLFxuICAgIFwiY3RuZXRsaW5rX2V4cGVjdF9ldmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIHRoZSBgZXhwLVxcdTAwM2VmbGFnc2AgYmVmb3JlIHNlbmRpbmcgdGhlbSB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBhbHRlcnMgdGhlIGRhdGEgcmV0dXJuZWQgYnkgbmV0bGluayBkdW1wcyBhbmQgZXZlbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDo0OS4yMjQ1MTcxMDlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzE2NzI3MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NDkuMjI1MTcyNDA4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1MzE2MDY2NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayBgZXhwLVxcdTAwM2VmbGFnc2Agd2l0aCBgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBwcmV2ZW50cyBsZWFraW5nIGludGVybmFsIGtlcm5lbCBmbGFncyAoc3VjaCBhcyBgTkZfQ1RfRVhQRUNUX0RFQURgKSB0byB1c2Vyc3BhY2UuIFRoZSBgZmxhZ3NgIGZpZWxkIGl0c2VsZiBpcyBwcm9wZXJseSBpbml0aWFsaXplZDsgdGhlIGlzc3VlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgb2YgaW50ZXJuYWwgc3RhdGUsIG5vdCBhIGxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTAzNjUzZTIxZDc3Y2M2YTIzYzk3MmZmMzdlMTg3MjA5OTkyODQyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjU0OjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG5pbmRleCBmYzNmNjAwOTlhZjNiLi45YjRlMjk1NTdlYzMzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbkBAIC0zMDQyLDcgKzMwNDIsNyBAQCBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG4gI2VuZGlmXG4gXHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9USU1FT1VULCBodG9ubCh0aW1lb3V0KSkgfHxcbiBcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0lELCBuZl9leHBlY3RfZ2V0X2lkKGV4cCkpIHx8XG4tXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLVx1MDAzZWZsYWdzKSkgfHxcbitcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9NQVNLKSkgfHxcbiBcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0NMQVNTLCBodG9ubChleHAtXHUwMDNlY2xhc3MpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDo0OS4yMjUxNzM0OThaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk1Njk0NzEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXRmaWx0ZXIgQ29ubnRyYWNrIE5ldGxpbmsgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCBpbiBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgY2hhbmdpbmcgaG93IHRoZSBgZXhwLVx1MDAzZWZsYWdzYCBmaWVsZCBpcyBoYW5kbGVkIHdoZW4gc2VuZGluZyBkYXRhIG92ZXIgbmV0bGluay4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgbWFzaywgYE5GX0NUX0VYUEVDVF9NQVNLYCwgbGlrZSBzbzpcblxuYGBgZGlmZlxuLVx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC1cdTAwM2VmbGFncykpIHx8XG4rXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLVx1MDAzZWZsYWdzIFx1MDAyNiBORl9DVF9FWFBFQ1RfTUFTSykpIHx8XG5gYGBcblxuTXkgZmlyc3QgdGhvdWdodCBpcywgd2h5IHRoZSBtYXNrPyBXaGF0J3MgdGhlIHJhdGlvbmFsZSBmb3IgZmlsdGVyaW5nIHRoZXNlIGZsYWdzIGJlZm9yZSB0aGV5J3JlIHNlcmlhbGl6ZWQgdG8gdXNlcnNwYWNlPyBUaGUgb2J2aW91cyBhbnN3ZXIgaXMgbGlrZWx5IHNvbWUga2luZCBvZiBpbmZvcm1hdGlvbiBoaWRpbmcuIEl0J3MgYWxtb3N0IGNlcnRhaW5seSB0byBwcmV2ZW50IGxlYWtpbmcgaW50ZXJuYWwga2VybmVsLXNwZWNpZmljIGZsYWdzIHRvIHVzZXJzcGFjZSwgb3IgcGVyaGFwcyB0aGVyZSdzIGEgYnVnIGluIHRoZSB1c2Vyc3BhY2UgY29kZSB0aGF0IGlzIG1pc2ludGVycHJldGluZyBjZXJ0YWluIGZsYWcgYml0cyBhbmQgY2F1c2luZyBpc3N1ZXMuIFRoZSBwYXRjaCBjb3VsZCBiZSBtaXRpZ2F0aW5nIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgZXZlbiBhIHNlY3VyaXR5IGNvbmNlcm4uXG5cbkkgYnJpZWZseSBjb25zaWRlcmVkIHRoZSBwb3NzaWJpbGl0eSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBpbnZvbHZlZC4gSXQncyBhIGtuZWUtamVyayByZWFjdGlvbiB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggZmxhZyBmaWVsZHMsIGJ1dCBubywgdGhpcyBpcyBhYm91dCBtYXNraW5nIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmxhZ3MuIFRoZSBgZXhwLVx1MDAzZWZsYWdzYCBpcyBwYXJ0IG9mIHRoZSBgbmZfY29ubnRyYWNrX2V4cGVjdGAgc3RydWN0IGFuZCBpdCdzIGluaXRpYWxpemVkIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZW50cnkuIEl0IGlzbid0IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIHdvdWxkIGhhdmUgZmxhZ2dlZCBpdCBvdGhlcndpc2UuXG5cbkJ1dCB3YWl0LCBjb3VsZCBzb21lIGJpdHMgb2YgYGV4cC1cdTAwM2VmbGFnc2AgYmUgdW5pbml0aWFsaXplZCB3aGVuIHRoZSBgbmZfY29ubnRyYWNrX2V4cGVjdGAgc3RydWN0IGlzIGNyZWF0ZWQsIGJ1dCB0aGVzZSB1bmluaXRpYWxpemVkIGJpdHMgYXJlIG5vdCB1c2VkLiBUaGVuIHRoZSBtYXNrIHdpbGwgY2xlYXIgdGhlbS4gVGhhdCBtYWtlcyB0aGlzIHBhdGNoIGEgc2VjdXJpdHkgaXNzdWUuIEl0IGNhbiBiZSBleHBsb2l0ZWQgYnkgdXNlcnNwYWNlLiBCdXQgbm8sIEtNU0FOIHdvdWxkIGhhdmUgY2F1Z2h0IGl0LiBUaGUgcGF0Y2ggd291bGQgaGF2ZSBiZWVuIHJlamVjdGVkLlxuXG5TbywgbWFza2luZyB0aGUgZmxhZ3MgaXMgYWxsIGFib3V0IGNvbnRyb2xsZWQgaW5mb3JtYXRpb24gZXhwb3N1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYml0cyBhcmUgY29uc2lkZXJlZCBpbnRlcm5hbC4gTGV0IG1lIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBORl9DVF9FWFBFQ1RfTUFTS2AuIEknbGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGdldCB0aGF0IGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NTYuMTgyMTI0ODkxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQyMzIzMDExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX0NUX0VYUEVDVF9NQVNLXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oPTE1Mj1lbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oLTE2My0jZGVmaW5lIE5GX0NUX0VYUEVDVF9ERUFEXFx0XFx0MHg4XFxuaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmg6MTY0OiNkZWZpbmUgTkZfQ1RfRVhQRUNUX01BU0tcXHQoTkZfQ1RfRVhQRUNUX1BFUk1BTkVOVCB8IE5GX0NUX0VYUEVDVF9JTkFDVElWRSB8IFxcXFxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaC0xNjUtXFx0XFx0XFx0XFx0IE5GX0NUX0VYUEVDVF9VU0VSU1BBQ0UpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjYxNT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXhwX25sYV9wb2xpY3lbQ1RBX0VYUEVDVF9NQVgrMV0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjYyMy1cXHRbQ1RBX0VYUEVDVF9aT05FXVxcdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjYyNDpcXHRbQ1RBX0VYUEVDVF9GTEFHU11cXHQ9IE5MQV9QT0xJQ1lfTUFTSyhOTEFfQkUzMiwgTkZfQ1RfRVhQRUNUX01BU0spLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNjI1LVxcdFtDVEFfRVhQRUNUX0NMQVNTXVxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDAxPWN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDQ0LVxcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0lELCBuZl9leHBlY3RfZ2V0X2lkKGV4cCkpIHx8XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwNDU6XFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBORl9DVF9FWFBFQ1RfTUFTSykpIHx8XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNDYtXFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfQ0xBU1MsIGh0b25sKGV4cC1cXHUwMDNlY2xhc3MpKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NTguNjI0NDU2MDcyWiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MTY3NTUxMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSXNzdWUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHdoYXQncyBoYXBwZW5pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHN5c3RlbSBpcyB0YWtpbmcgdGhlIGBleHAtXHUwMDNlZmxhZ3NgIGRhdGEgYW5kIGFwcGx5aW5nIGEgbWFzayAoYE5GX0NUX0VYUEVDVF9NQVNLYCkgYmVmb3JlIGl0IGdldHMgc2VudCB1cCB0byB1c2Vyc3BhY2UuIFRoYXQgbWFzayBpcyBkZWZpbmVkIGFzIGAoTkZfQ1RfRVhQRUNUX1BFUk1BTkVOVCB8IE5GX0NUX0VYUEVDVF9JTkFDVElWRSB8IE5GX0NUX0VYUEVDVF9VU0VSU1BBQ0UpYC4gRXNzZW50aWFsbHksIHRoZSBnb2FsIGhlcmUgaXMgdG8gY2FyZWZ1bGx5IGNvbnRyb2wgKndoaWNoKiBmbGFncyBmcm9tIGBleHAtXHUwMDNlZmxhZ3NgIGFyZSB2aXNpYmxlIG91dHNpZGUgdGhlIGtlcm5lbC4gU3BlY2lmaWNhbGx5LCB3ZSdyZSB0cnlpbmcgdG8gcHJldmVudCBsZWFrYWdlIG9mIGludGVybmFsIGZsYWdzIGxpa2UgYE5GX0NUX0VYUEVDVF9ERUFEYCBvciBvdGhlciBwb3RlbnRpYWxseSBzZW5zaXRpdmUga2VybmVsLWludGVybmFsIHN0YXRlIGZsYWdzLlxuXG5UaGlzIGlzbid0IGEgY2FzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeTsgdGhlIG1lbW9yeSBpcyBleHBsaWNpdGx5IHNldCBieSB0aGUga2VybmVsLiBUaGUgcHJvYmxlbSBpcyBhIGxvZ2ljYWwgaW5mb3JtYXRpb24gbGVhayDigJMgd2UncmUgdW5pbnRlbnRpb25hbGx5IHJldmVhbGluZyBpbnRlcm5hbCBzdGF0ZSB0aGF0IHVzZXJzcGFjZSBzaG91bGRuJ3Qga25vdyBhYm91dC4gS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpcyBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEJ1dCwgc2luY2UgdGhpcyBpc24ndCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtLCBLTVNBTiBpc24ndCB0aGUgcmlnaHQgdG9vbCBmb3IgdGhlIGpvYi4gV2UncmUgZGVhbGluZyB3aXRoICppbml0aWFsaXplZCosIGFsYmVpdCBwb3RlbnRpYWxseSBzZW5zaXRpdmUsIGRhdGEgdGhhdCB3ZSB3YW50IHRvIGtlZXAgaGlkZGVuIGZyb20gdGhlIHVzZXJzcGFjZS5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGlzIGlzIGEgbG9naWMgYnVnIGFuZCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUsIEknbSBnb2luZyB0byBtYXJrIGBOZWVkc0tNU0FOYCBhcyBmYWxzZSBmb3IgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjcsIk91dHB1dFRva2VucyI6MTQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU1OjA0LjU0MTIxNDAxNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgYGV4cC1cXHUwMDNlZmxhZ3NgIHdpdGggYE5GX0NUX0VYUEVDVF9NQVNLYCBiZWZvcmUgc2VuZGluZyBpdCB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgcHJldmVudHMgbGVha2luZyBpbnRlcm5hbCBrZXJuZWwgZmxhZ3MgKHN1Y2ggYXMgYE5GX0NUX0VYUEVDVF9ERUFEYCkgdG8gdXNlcnNwYWNlLiBUaGUgYGZsYWdzYCBmaWVsZCBpdHNlbGYgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQ7IHRoZSBpc3N1ZSBpcyBhbiBpbmZvcm1hdGlvbiBsZWFrIG9mIGludGVybmFsIHN0YXRlLCBub3QgYSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIGBleHAtXFx1MDAzZWZsYWdzYCB3aXRoIGBORl9DVF9FWFBFQ1RfTUFTS2AgYmVmb3JlIHNlbmRpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBUaGlzIHByZXZlbnRzIGxlYWtpbmcgaW50ZXJuYWwga2VybmVsIGZsYWdzIChzdWNoIGFzIGBORl9DVF9FWFBFQ1RfREVBRGApIHRvIHVzZXJzcGFjZS4gVGhlIGBmbGFnc2AgZmllbGQgaXRzZWxmIGlzIHByb3Blcmx5IGluaXRpYWxpemVkOyB0aGUgaXNzdWUgaXMgYW4gaW5mb3JtYXRpb24gbGVhayBvZiBpbnRlcm5hbCBzdGF0ZSwgbm90IGEgbGVhayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gS01TQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0IHVzZXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSBoZXJlLiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowg2psn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 23:37:11 +0000 UTC FinishedAt: 2026-08-12 23:55:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK" ], "series_id": "8f5b232f-ba5c-40ec-8c83-192dae00747d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ctnetlink_get_expect", "ctnetlink_expect_event" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX2dldF9leHBlY3QmIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2V4cGVjdF9ldmVudCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIGBleHAtXHUwMDNlZmxhZ3NgIHdpdGggYE5GX0NUX0VYUEVDVF9NQVNLYCBiZWZvcmUgc2VuZGluZyBpdCB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgcHJldmVudHMgbGVha2luZyBpbnRlcm5hbCBrZXJuZWwgZmxhZ3MgKHN1Y2ggYXMgYE5GX0NUX0VYUEVDVF9ERUFEYCkgdG8gdXNlcnNwYWNlLiBUaGUgYGZsYWdzYCBmaWVsZCBpdHNlbGYgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQ7IHRoZSBpc3N1ZSBpcyBhbiBpbmZvcm1hdGlvbiBsZWFrIG9mIGludGVybmFsIHN0YXRlLCBub3QgYSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayB0aGUgYGV4cC1cdTAwM2VmbGFnc2AgYmVmb3JlIHNlbmRpbmcgdGhlbSB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBhbHRlcnMgdGhlIGRhdGEgcmV0dXJuZWQgYnkgbmV0bGluayBkdW1wcyBhbmQgZXZlbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTAzNjUzZTIxZDc3Y2M2YTIzYzk3MmZmMzdlMTg3MjA5OTkyODQyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjU0OjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuaW5kZXggZmMzZjYwMDk5YWYzYi4uOWI0ZTI5NTU3ZWMzMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG5AQCAtMzA0Miw3ICYjNDM7MzA0Miw3IEBAIGN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAjZW5kaWZcbiBcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX1RJTUVPVVQsIGh0b25sKHRpbWVvdXQpKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfSUQsIG5mX2V4cGVjdF9nZXRfaWQoZXhwKSkgfHxcbi1cdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtXHUwMDNlZmxhZ3MpKSB8fFxuJiM0MztcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9NQVNLKSkgfHxcbiBcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0NMQVNTLCBodG9ubChleHAtXHUwMDNlY2xhc3MpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX2dldF9leHBlY3QmIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2V4cGVjdF9ldmVudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayB0aGUgYGV4cC1cdTAwM2VmbGFnc2AgYmVmb3JlIHNlbmRpbmcgdGhlbSB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBhbHRlcnMgdGhlIGRhdGEgcmV0dXJuZWQgYnkgbmV0bGluayBkdW1wcyBhbmQgZXZlbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTAzNjUzZTIxZDc3Y2M2YTIzYzk3MmZmMzdlMTg3MjA5OTkyODQyNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDIzOjU0OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jCmluZGV4IGZjM2Y2MDA5OWFmM2IuLjliNGUyOTU1N2VjMzMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMKQEAgLTMwNDIsNyAmIzQzOzMwNDIsNyBAQCBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsCiAjZW5kaWYKIAlpZiAobmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9USU1FT1VULCBodG9ubCh0aW1lb3V0KSkgfHwKIAkgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9JRCwgbmZfZXhwZWN0X2dldF9pZChleHApKSB8fAotCSAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtJmd0O2ZsYWdzKSkgfHwKJiM0MzsJICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC0mZ3Q7ZmxhZ3MgJmFtcDsgTkZfQ1RfRVhQRUNUX01BU0spKSB8fAogCSAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0NMQVNTLCBodG9ubChleHAtJmd0O2NsYXNzKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm50cmFjayBOZXRsaW5rIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KClgIGZ1bmN0aW9uLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBjaGFuZ2luZyBob3cgZXhwZWN0YXRpb24gZmxhZ3MgYXJlIGR1bXBlZCB2aWEgbmV0bGluay4gSSBjYW4gc2VlIHRoZSBjb2RlIG5vdywgaXQmIzM5O3MgYSBzaW1wbGUsIHNlZW1pbmdseSBoYXJtbGVzcyBvbmUtbGluZXI6IGl0JiMzOTtzIG1hc2tpbmcgdGhlIGBleHAtJmd0O2ZsYWdzYCBiZWZvcmUgc2VyaWFsaXppbmcgdGhlbS4gQmVmb3JlLCBpdCB3YXMgcHV0dGluZyB0aGUgcmF3IGBleHAtJmd0O2ZsYWdzYCB2YWx1ZSBpbiB0aGUgbmV0bGluayBtZXNzYWdlLCBub3cgaXQmIzM5O3MgYXBwbHlpbmcgYE5GX0NUX0VYUEVDVF9NQVNLYCBmaXJzdC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzaWduaWZpY2FuY2UuIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KClgIC0gSSBzaG91bGQgY2hlY2sgdGhhdCBmdW5jdGlvbiwgYW5kIG5hdHVyYWxseSwgSSYjMzk7bSBnb2luZyB0byBsb29rIHVwIGBORl9DVF9FWFBFQ1RfTUFTS2AuIElzIHRoYXQgYSBiaXRtYXNrIG9yIGEgY29uc3RhbnQ/IEl0JiMzOTtzIHByb2JhYmx5IHNvbWUgZGVmaW5lZCBjb25zdGFudCwgYSBiaXRtYXNrLgoKVGhpcyBpcyBhIHJlYWxseSBtaW5vciBjaGFuZ2UsIGJ1dCBpdCBjaGFuZ2VzIHRoZSAqb3V0cHV0KiBvZiB0aGUgbmV0bGluayBkdW1wLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGFueSB0b29saW5nIHRoYXQgY29uc3VtZXMgdGhpcyBpbmZvcm1hdGlvbi4gSXQmIzM5O3MgYSBmbGFnIG1hc2tpbmcgb3BlcmF0aW9uLCBub3QgYSBidWdmaXguIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggdGhyb3dpbmcgZnV6emluZyBhdD8gSXMgdGhlcmUgYSBzdWJ0bGUgZWRnZSBjYXNlIGluIHRoZSBtYXNraW5nIHRoYXQgY291bGQgYmUgZXhwbG9pdGVkPyBIb25lc3RseSwgaXQgc2VlbXMgdW5saWtlbHksIGdpdmVuIHRoZSBzY2FsZSBvZiB0aGUgY2hhbmdlLiBJdCYjMzk7cyBtYXNraW5nIGEgc2luZ2xlIHZhbHVlLiBOZXZlcnRoZWxlc3MsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgc3RydWN0dXJlIGJldHRlciwgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IGZpbmRpbmcgd2hlcmUgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIGlzIGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzAwMD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzAwMTpjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzAwMi1cdFx0XHQgIGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHApXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjY9Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzA3Ny1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDc4Olx0aWYgKGN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc2tiLCBleHApIFx1MDAzYyAwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNzktXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDkyPWN0bmV0bGlua19leHBlY3RfZXZlbnQodW5zaWduZWQgaW50IGV2ZW50cywgY29uc3Qgc3RydWN0IG5mX2V4cF9ldmVudCAqaXRlbSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEyMy1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMTI0Olx0aWYgKGN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc2tiLCBleHApIFx1MDAzYyAwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMxMjUtXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbm50cmFjayBOZXRsaW5rIEV4cGVjdGF0aW9uIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCYjMzk7cyB0aGUgaGVhcnQgb2YgaG93IGV4cGVjdGF0aW9ucyBhcmUgaGFuZGxlZCB0aHJvdWdoIG5ldGxpbmsuIEkgY2FuIHNlZSBpdCBnZXRzIGNhbGxlZCBieSB0d28ga2V5IHBsYWNlczogYGN0bmV0bGlua19leHBfZmlsbF9pbmZvYCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgLiBUaGF0IG1ha2VzIHNlbnNlOyBgY3RuZXRsaW5rX2V4cF9maWxsX2luZm9gIGlzIGZvciBkdW1waW5nIHRoZSBleHBlY3RhdGlvbiBkYXRhIGl0c2VsZiwgYW5kIHNpbmNlIHRoYXQmIzM5O3MgbmV0bGluay1iYXNlZCwgaXQgZ2l2ZXMgbWUgYSBjbGVhciBwYXRoIHRvIHJlYWNoIHRob3NlIGV4cGVjdGF0aW9ucyBvdmVyIHRoZSBuZXR3b3JrLgoKTm93LCBnaXZlbiB0aGlzIHdob2xlIHRoaW5nIGlzIGRyaXZlbiBieSBuZXRsaW5rLCBJIHRoaW5rIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCB3b3VsZCBiZSB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgYG5mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbmV0bGluayBpbnRlcmFjdGlvbnMgYXJlIHNldCB1cCBhbmQgaG93IHRoZSBleHBlY3RhdGlvbiBkdW1wIGFuZCBldmVudHMgYXJlIHRyaWdnZXJlZCBmcm9tIHRoZSB1c2VyIHNwYWNlIHBlcnNwZWN0aXZlLiBUaGF0JiMzOTtsbCBnaXZlIG1lIHRoZSBmdWxsIHBpY3R1cmUgb2YgaG93IHRoaXMgbWVjaGFuaXNtIGFjdHVhbGx5IHdvcmtzLCBhbmQgaG93IGl0IGNhbiBiZSBjb250cm9sbGVkLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIGFuZCB3aGljaCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgY2FuIGFmZmVjdCB0aGUgd2hvbGUgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19uZXRsaW5rLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDSykgJiM0Mzs9IG5mX2Nvbm50cmFjay5vXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zNi0jIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBuZl9jb25udHJhY2tcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05GX0NUX05FVExJTkspICYjNDM7PSBuZl9jb25udHJhY2tfbmV0bGluay5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LX1RJTUVPVVQpICYjNDM7PSBuZm5ldGxpbmtfY3R0aW1lb3V0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIHNwb3RsaWdodCYjMzk7cyBvbiBgTkZfQ1RfTkVUTElOS2AuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW4gdGhlIGdyYW5kIHNjaGVtZSBvZiBOZXRmaWx0ZXI/IEl0JiMzOTtzIGNydWNpYWwgdG8gaW1tZWRpYXRlbHkgYXNjZXJ0YWluIHRoaXMgbW9kdWxlJiMzOTtzIGRlcGVuZGVuY2llcy4gVGhpcyBpcyBlc3NlbnRpYWwsIHBhcnRpY3VsYXJseSBiZWNhdXNlIE5ldGxpbmsgaXMgYSBjb3JlIGFzcGVjdCBvZiBjb21tdW5pY2F0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIE5ldGZpbHRlciBjb21wb25lbnRzLCBsaWJyYXJpZXMsIG9yIGtlcm5lbCBzdWJzeXN0ZW1zIGFyZSBpbmhlcmVudGx5IGxpbmtlZCB0byBgTkZfQ1RfTkVUTElOS2AuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIHJlYWxseSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIGZ1bmN0aW9uYWxpdHksIGl0cyBpbXBhY3Qgb24gdGhlIHN5c3RlbSwgYW5kIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBwcm9ibGVtcy4gTm8gcG9pbnQgaW4gZ29pbmcgZnVydGhlciBiZWZvcmUgSSB1bmRlcnN0YW5kIGl0cyBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgYW5kIGl0cyByb2xlIHdpdGhpbiBOZXRmaWx0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NUX05FVExJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTM1NT1jb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzY1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM2Njpjb25maWcgTkZfQ1RfTkVUTElOS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTM2Ny1cdHRyaXN0YXRlICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM3Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNzM6Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM3NC1cdHRyaXN0YXRlICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCB0dW5pbmcgdmlhIE5ldGxpbmsmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg1OmNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4Ni1cdHRyaXN0YXRlICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBoZWxwZXJzIGluIHVzZXItc3BhY2UgdmlhIE5ldGxpbmsmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzLCBhcyB0aG91Z2ggdGhlc2UgYXJlICpteSogdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgTkZfQ1RfTkVUTElOS2AqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBORl9DVF9ORVRMSU5LYCByZWxpZXMgb24sIHdoYXQgaXRzIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBhcmUuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcG9zaXRpb24gd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBoaWdobGlnaHQgaXRzIHJvbGUuIElzIGl0IGEgY29yZSBjb21wb25lbnQ/IElzIGl0IGEgbW9kdWxlIHRoYXQgZGVwZW5kcyBvbiBvdGhlciBtb2R1bGVzPyBEb2VzIGl0IGJ1aWxkIG9uIHRvcCBvZiBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eT8gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgdHVuaW5nLCBkZWJ1Z2dpbmcsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgdG8gdGhlIG1vZHVsZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgbWV0aG9kcywgc3VjaCBhcyBzZWFyY2hpbmcgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLCBleGFtaW5pbmcgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgcGVyaGFwcyBldmVuIGNoZWNraW5nIHRoZSBjb21taXQgbG9ncyB0byBmaW5kIHRoZSBoaXN0b3JpY2FsIGNvbnRleHQgYXJvdW5kIHRoaXMgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzY2Olx0Y29uZmlnIE5GX0NUX05FVExJTktcbiAzNjc6XHRcdHRyaXN0YXRlICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSYjMzk7XG4gMzY4Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAzNjk6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuIDM3MDpcdFx0aGVscFxuIDM3MTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGEgbmV0bGluay1iYXNlZCB1c2Vyc3BhY2UgaW50ZXJmYWNlXG4gMzcyOlx0XG4gMzczOlx0Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxuIDM3NDpcdFx0dHJpc3RhdGUgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0IHR1bmluZyB2aWEgTmV0bGluayYjMzk7XG4gMzc1Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28gdGhpcyBiZWhhdmlvciBpcyBjb25kaXRpb25hbC4gVGhlIGNvZGUmIzM5O3MgY2xlYXJseSBpbmRpY2F0aW5nIGEgZGVwZW5kZW5jZSBvbiBgTkZfQ09OTlRSQUNLYC4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBuZXN0bGVkIHdpdGhpbiB0aGF0IGAjaWZkZWYgTkZfQ09OTlRSQUNLYCBibG9jaywgaXQmIzM5O3MgcHJldHR5IG11Y2ggYSBnaXZlbi4gU3RpbGwsIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgYE5GX0NPTk5UUkFDS2AgbW9kdWxlLiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyB1bmV4cGVjdGVkIGhhcHBlbnMgaWYgdGhhdCBtb2R1bGUgaXMgYWJzZW50IG9yIGNvbmZpZ3VyZWQgZGlmZmVyZW50bHkuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhlIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWYgTkZfQ09OTlRSQUNLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz05OD1jb25maWcgTkZfTE9HX1NZU0xPR1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTEwOmlmIE5GX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExMS1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzM1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGgqKgoKT2theSwgc28gdGhpcyBjaGFuZ2UgaW52b2x2ZXMgYE5GX0NPTk5UUkFDS2AgYW5kIGBORl9DVF9ORVRMSU5LYCwgd2hpY2ggSSYjMzk7bSBmYW1pbGlhciB3aXRoLiBUaGUgY29yZSBvZiBpdCBsaWVzIGluIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCwgd2hlcmUgd2UmIzM5O3JlIG1hc2tpbmcgYGV4cC0mZ3Q7ZmxhZ3MgJmFtcDsgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZS4gQSBzdHJhaWdodGZvcndhcmQgYml0d2lzZSBBTkQgb3BlcmF0aW9uLCByZWFsbHkuCgpNeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgZnV6emluZyB0aGlzIHNlZW1zIGxpa2Ugb3ZlcmtpbGwuIEl0JiMzOTtzIGZ1bmN0aW9uYWwsIHllcywgYnV0IGl0JiMzOTtzIGp1c3QgYWJvdXQgaW5mb3JtYXRpb24gaGlkaW5nIOKAkyBwcmV2ZW50aW5nIGludGVybmFsIGZsYWdzIGZyb20gbGVha2luZy4gSXQmIzM5O3Mgbm90IG1vZGlmeWluZyBrZXJuZWwgZXhlY3V0aW9uIG9yIHN0YXRlOyBpdCYjMzk7cyBqdXN0IGFsdGVyaW5nIGEgbmV0bGluayBhdHRyaWJ1dGUgdmFsdWUgaW4gdGhlIG91dHB1dC4gSSBkb24mIzM5O3Qgc2VlIGhvdyBmdXp6aW5nIHdvdWxkIHVuY292ZXIgYW55IG5ldyBidWdzIGZyb20ganVzdCBtYXNraW5nIGFuIG91dHB1dCB2YWx1ZS4KCkJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIGd1aWRlbGluZXM6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluc+KApiBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3figKYmIzM0OyBhbmQgc28gb24uCgpIb3dldmVyLCB0aGUgaW5zdHJ1Y3Rpb25zIGFsc28gc2F5LCAmIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsKClRoaXMgcGF0Y2ggKmRvZXMqIHRvdWNoIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciBuZXRsaW5rIGNvZGUuIEl0IHN1YnRseSBjaGFuZ2VzIHRoZSBleGVjdXRpb24gZmxvdyBiZWNhdXNlIG9mIHRoZSBiaXR3aXNlIEFORC4KCldhaXQsIHRob3VnaOKApiB0aGUgZ3VpZGVsaW5lcyAqYWxzbyogc2F5LCAmIzM0O0NoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyYjMzQ7LiBUaGlzICppcyogYSBjaGFuZ2UgdG8gYSB2YWx1ZSBiZWluZyBzZW50IHRvIHVzZXJzcGFjZS4gSXTigJlzIGEgZGF0YSBjaGFuZ2UsIG5vdCBhIGNvbnRyb2wgZmxvdyBjaGFuZ2UuCgpPa2F5LCBzbyBJ4oCZbSBiYWNrIHRvIGl0IGJlaW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGJ1dCBvbmUgdGhhdCBkb2VzbiYjMzk7dCBzZWVtIGxpa2VseSB0byBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzLiBCdXQgdGhlIGd1aWRlbGluZXMgYXJlIHZlcnkgc3BlY2lmaWMuCgpJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIGFnYWluLiBKdXN0IHRvIGJlIHN1cmUgdGhlcmUmIzM5O3Mgbm90aGluZyBlbHNlIHRoYXQmIzM5O3MgcmVsZXZhbnQgdGhhdCBJIG1pZ2h0IGhhdmUgbWlzc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDAwPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDAxOmN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDAyLVx0XHRcdCAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzA2Nj1jdG5ldGxpbmtfZXhwX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgcG9ydGlkLCB1MzIgc2VxLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDc3LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwNzg6XHRpZiAoY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChza2IsIGV4cCkgXHUwMDNjIDApXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzA3OS1cdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwOTI9Y3RuZXRsaW5rX2V4cGVjdF9ldmVudCh1bnNpZ25lZCBpbnQgZXZlbnRzLCBjb25zdCBzdHJ1Y3QgbmZfZXhwX2V2ZW50ICppdGVtKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTIzLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMxMjQ6XHRpZiAoY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChza2IsIGV4cCkgXHUwMDNjIDApXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEyNS1cdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5ODUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBXb3J0aEZ1enppbmcgU2NlbmFyaW8qKgoKT2theSwgaGVyZSYjMzk7cyBteSBsaW5lIG9mIHRoaW5raW5nIG9uIHRoaXMuIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGNoYW5nZSB3aXRoIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoaXMgaXMgYmVjYXVzZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG5ldGZpbHRlciBuZXRsaW5rIHN1YnN5c3RlbS4gQW5kIHRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIHBsYWNlIHdoZXJlIGZ1enppbmcgY2FuIGJlIHJlYWxseSBlZmZlY3RpdmUuCgpJJiMzOTttIGZvY3VzZWQgaW4gb24gdGhlc2Ugc3ltYm9sczogYGN0bmV0bGlua19leHBfZmlsbF9pbmZvYCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgLgoKSG9sZCBvbiBhIHNlYy4uLiBgY3RuZXRsaW5rX2V4cF9maWxsX2luZm9gIGlzIHN0YXRpYy4gVGhhdCBtYWtlcyBtZSBwYXVzZS4gSXMgaXQgYWN0dWFsbHkgYW4gQVBJIGVudHJ5IHBvaW50LCBvciBpcyBpdCBtb3JlIG9mIGFuIGludGVybmFsIGZ1bmN0aW9uPyBOZWVkIHRvIGJlIHN1cmUgaGVyZS4KCkFscmlnaHQsIHRpbWUgdG8gZ28gdXBzdHJlYW0gYW5kIGludmVzdGlnYXRlIHdoZXJlIGBjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mb2AgaXMgYmVpbmcgY2FsbGVkLiBUaGF0IHdpbGwgcHJvdmlkZSB0aGUgY3JpdGljYWwgY29udGV4dCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGNhbmRpZGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjU9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwNjY6Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDY3LVx0XHRcdGludCBldmVudCwgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzE1Mj1jdG5ldGxpbmtfZXhwX2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTc4LVx0XHRcdH1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMTc5Olx0XHRcdGlmIChjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mbyhza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzE4MC1cdFx0XHRcdFx0XHQgICAgTkVUTElOS19DQihjYi1cdTAwM2Vza2IpLnBvcnRpZCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzE5OT1jdG5ldGxpbmtfZXhwX2N0X2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMjI1LVx0XHR9XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzIyNjpcdFx0aWYgKGN0bmV0bGlua19leHBfZmlsbF9pbmZvKHNrYiwgTkVUTElOS19DQihjYi1cdTAwM2Vza2IpLnBvcnRpZCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMjI3LVx0XHRcdFx0XHQgICAgY2ItXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzMwOT1zdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzNzItXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzM3MzpcdGVyciA9IGN0bmV0bGlua19leHBfZmlsbF9pbmZvKHNrYjIsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzM3NC1cdFx0XHRcdCAgICAgIGluZm8tXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSwgSVBDVE5MX01TR19FWFBfTkVXLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTQzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIENvbm5lY3Rpb24gVHJhY2tpbmcgTmV0bGluayBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIG5ldGxpbmsgY29kZS4gSXQgbG9va3MgbGlrZSBgY3RuZXRsaW5rX2dldF9leHBlY3RgLCBgY3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlYCwgYW5kIGBjdG5ldGxpbmtfZXhwX2N0X2R1bXBfdGFibGVgIGFyZSB0aGUgcHJpbWFyeSBzdGFydGluZyBwb2ludHMuIFRoYXQgbWFrZXMgc2Vuc2UsIHRob3NlIG5hbWVzIGFyZSBwcmV0dHkgZGVzY3JpcHRpdmUuIFRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIG92ZXJhbGwgZmxvdywgSSB0aGluayB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB3aXRoIGBjdG5ldGxpbmtfZ2V0X2V4cGVjdGAgYW5kIGBjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGVgLiBJJiMzOTtsbCBkaWcgaW50byB0aG9zZSBmaXJzdCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBpcyBiZWluZyByZXRyaWV2ZWQgYW5kIGR1bXBlZC4gRnJvbSB0aGVyZSwgSSBjYW4gbGlrZWx5IGluZmVyIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIENUIGRhdGEuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgZXhwZWN0IHRhYmxlIGlzIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19nZXRfZXhwZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMjYyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX2R1bXBfZXhwX2N0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMDgtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzMwOTpzdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzMxMC1cdFx0XHRcdGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4MDY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGN0bmxfZXhwX2NiW0lQQ1ROTF9NU0dfRVhQX01BWF0gPSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzgwNy1cdFtJUENUTkxfTVNHX0VYUF9HRVRdID0ge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4MDg6XHRcdC5jYWxsXHRcdD0gY3RuZXRsaW5rX2dldF9leHBlY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzgwOS1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX01VVEVYLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTQ4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGFzIGlmIEkmIzM5O20gd29ya2luZyB0aHJvdWdoIHRoaXMgY29kZToKCioqRGl2aW5nIGludG8gdGhlIENvbm5lY3Rpb24gVHJhY2tpbmcgTmV0bGluayBDb2RlKioKClJpZ2h0LCBzbyBgY3RuZXRsaW5rX2dldF9leHBlY3RgIGlzIGNsZWFybHkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgYElQQ1ROTF9NU0dfRVhQX0dFVGAgbmV0bGluayBtZXNzYWdlLiBUaGF0IG1ha2VzIHNlbnNlLCBpdCYjMzk7cyB3aGF0IEkgd291bGQgZXhwZWN0IGZvciBhICYjMzQ7Z2V0IGV4cGVjdGF0aW9uJiMzNDsgb3BlcmF0aW9uLiBJdCYjMzk7cyB0aGUgcG9pbnQgb2YgZW50cnkgZm9yIHJldHJpZXZpbmcgZXhwZWN0ZWQgY29ubmVjdGlvbnMuIEJ1dC4uLiB3aGF0IGFib3V0IGBjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGVgPyBUaGF0IG5hbWUgc3VnZ2VzdHMgYSBkaWZmZXJlbnQga2luZCBvZiBmdW5jdGlvbmFsaXR5LiBJcyB0aGF0IHVzZWQgdG8gZHVtcCB0aGUgZW50aXJlIGV4cGVjdGF0aW9uIHRhYmxlPyBPciBpcyBpdCByZWxhdGVkLCBtYXliZSBmb3IgaW5pdGlhbGl6YXRpb24gb3IgbWFpbnRlbmFuY2U/IEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgaG93IHRoYXQgb25lIGZpdHMgaW4gYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBgZ2V0YCBmdW5jdGlvbi4gR290dGEgdW5kZXJzdGFuZCB0aGUgZnVsbCBuZXRsaW5rIG1lc3NhZ2UgaGFuZGxpbmcgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMxNTE9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMxNTI6Y3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTUzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzMwOT1zdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMjYtXHRcdFx0c3RydWN0IG5ldGxpbmtfZHVtcF9jb250cm9sIGMgPSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzMyNzpcdFx0XHRcdC5kdW1wID0gY3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMjgtXHRcdFx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA2NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlZXAgRGl2ZSBvbiBgY3RuZXRsaW5rX2V4cGVjdF9ldmVudGAqKgoKU28sIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG5ldGxpbmsgY29ubmVjdGlvbiB0cmFja2luZyBpbnRlcmZhY2UsIHNwZWNpZmljYWxseSwgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgLiBPa2F5LCBJIGdldCB0aGUgYmFzaWNzLCBvYnZpb3VzbHk6IGl0JiMzOTtzIGFib3V0IGhhbmRsaW5nIGV2ZW50cyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHJpZ2h0PyBCdXQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgaXNuJiMzOTt0IGl0PyBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uLiBXaGF0IGtpbmQgb2YgZGF0YSBpcyBpdCBleHBlY3Rpbmc/IFdoYXQmIzM5O3MgdGhlIGFudGljaXBhdGVkIGV2ZW50IGZsb3c/IERvZXMgdGhpcyBmdW5jdGlvbiBtYW5hZ2UgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIGNvbm50cmFjayB1c2Vyc3BhY2UgZGFlbW9uIG9yIGlzIGl0IHNvbGVseSByZWxhdGVkIHRvIHRoZSBrZXJuZWwgbGV2ZWwgZnVuY3Rpb25zPyBNb3JlIGltcG9ydGFudGx5LCBob3cgZG9lcyBpdCBoYW5kbGUgY29uY3VycmVuY3k/IFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IG5ldHdvcmsgZXZlbnRzIGhlcmU7IHRoaW5ncyBjYW4gZ2V0IG1lc3N5IGZhc3QuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBEb2VzIGl0IGhhdmUgcHJvcGVyIGxvY2tpbmcgaW4gcGxhY2UgdG8gcHJvdGVjdCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzPyBBcmUgdGhlcmUgYW55IGtub3duIGdvdGNoYXMgb3IgZWRnZSBjYXNlcyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgcGVyaGFwcyBpbiByZWxhdGlvbiB0byBzcGVjaWZpYyBwcm90b2NvbCB0eXBlcyBvciB1bnVzdWFsIG5ldHdvcmsgY29uZmlndXJhdGlvbnM/IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBhcyB3ZWxsOiB3aGF0IGhhcHBlbnMgaWYgYW4gZXZlbnQgaXMgbWFsZm9ybWVkLCBvciBpZiB0aGUgc3lzdGVtIHJ1bnMgb3V0IG9mIHJlc291cmNlcz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcmV0dXJuIGNvZGVzIG9uIHRoZSBvdmVyYWxsIHN0YXRlIG9mIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1YnN5c3RlbT8gSSBuZWVkIHRvIGdvIGRlZXBlciBpbnRvIHRoZSBzb3VyY2UgY29kZS4uLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNoZWNrIHRoZSByZWxldmFudCBSRkNzIGFuZCBkb2N1bWVudGF0aW9uIGFnYWluLCBqdXN0IHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfZXhwZWN0X2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDkxPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDkyOmN0bmV0bGlua19leHBlY3RfZXZlbnQodW5zaWduZWQgaW50IGV2ZW50cywgY29uc3Qgc3RydWN0IG5mX2V4cF9ldmVudCAqaXRlbSlcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDkzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzc1Nz1zdGF0aWMgc3RydWN0IG5mX2N0X2V2ZW50X25vdGlmaWVyIGN0bmxfbm90aWZpZXIgPSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc1OC1cdC5jdF9ldmVudCA9IGN0bmV0bGlua19jb25udHJhY2tfZXZlbnQsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mzc1OTpcdC5leHBfZXZlbnQgPSBjdG5ldGxpbmtfZXhwZWN0X2V2ZW50LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NjAtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY2MgoJCQkJCQkJb3V0cHV0OiAxMzEKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIENvbm50cmFjayBOZXRsaW5rIEVudHJ5IFBvaW50cyBhbmQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgY29ubnRyYWNrIG5ldGxpbmsgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19nZXRfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgIGFyZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24uIFRoYXQgZmVlbHMgcmlnaHQsIHVzdWFsbHkgd2hlbiBsb29raW5nIGF0IG5ldGxpbmsgaW50ZXJhY3Rpb25zIHlvdSYjMzk7bGwgc2VlIGEgZ2V0IGFuZCBhbiBldmVudCBjb21wb25lbnQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBJIGhhZCB0byBjaGVjayBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX05FVExJTktgLCBidXQgd2FpdOKApiBJIHRoaW5rIGBORl9DVF9ORVRMSU5LYCBpcyB0aGUgYWN0dWFsIGtleSBjb25maWcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N0bmV0bGlua19nZXRfZXhwZWN0JiMzNDssCiAgICAmIzM0O2N0bmV0bGlua19leHBlY3RfZXZlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgdGhlIGBleHAtXHUwMDNlZmxhZ3NgIGJlZm9yZSBzZW5kaW5nIHRoZW0gdG8gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgYWx0ZXJzIHRoZSBkYXRhIHJldHVybmVkIGJ5IG5ldGxpbmsgZHVtcHMgYW5kIGV2ZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjdG5ldGxpbmtfZ2V0X2V4cGVjdCYjMzQ7LAogICAgJiMzNDtjdG5ldGxpbmtfZXhwZWN0X2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIHRoZSBgZXhwLVx1MDAzZWZsYWdzYCBiZWZvcmUgc2VuZGluZyB0aGVtIHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGFsdGVycyB0aGUgZGF0YSByZXR1cm5lZCBieSBuZXRsaW5rIGR1bXBzIGFuZCBldmVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgYGV4cC1cdTAwM2VmbGFnc2Agd2l0aCBgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBwcmV2ZW50cyBsZWFraW5nIGludGVybmFsIGtlcm5lbCBmbGFncyAoc3VjaCBhcyBgTkZfQ1RfRVhQRUNUX0RFQURgKSB0byB1c2Vyc3BhY2UuIFRoZSBgZmxhZ3NgIGZpZWxkIGl0c2VsZiBpcyBwcm9wZXJseSBpbml0aWFsaXplZDsgdGhlIGlzc3VlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgb2YgaW50ZXJuYWwgc3RhdGUsIG5vdCBhIGxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGUwMzY1M2UyMWQ3N2NjNmEyM2M5NzJmZjM3ZTE4NzIwOTk5Mjg0MjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAyMzo1NDowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwppbmRleCBmYzNmNjAwOTlhZjNiLi45YjRlMjk1NTdlYzMzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jCkBAIC0zMDQyLDcgJiM0MzszMDQyLDcgQEAgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogI2VuZGlmCiAJaWYgKG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfVElNRU9VVCwgaHRvbmwodGltZW91dCkpIHx8CiAJICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfSUQsIG5mX2V4cGVjdF9nZXRfaWQoZXhwKSkgfHwKLQkgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLSZndDtmbGFncykpIHx8CiYjNDM7CSAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtJmd0O2ZsYWdzICZhbXA7IE5GX0NUX0VYUEVDVF9NQVNLKSkgfHwKIAkgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9DTEFTUywgaHRvbmwoZXhwLSZndDtjbGFzcykpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXRmaWx0ZXIgQ29ubnRyYWNrIE5ldGxpbmsgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIGluIGBuZl9jb25udHJhY2tfbmV0bGluay5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgY2hhbmdpbmcgaG93IHRoZSBgZXhwLSZndDtmbGFnc2AgZmllbGQgaXMgaGFuZGxlZCB3aGVuIHNlbmRpbmcgZGF0YSBvdmVyIG5ldGxpbmsuIFNwZWNpZmljYWxseSwgaXQgaW50cm9kdWNlcyBhIG1hc2ssIGBORl9DVF9FWFBFQ1RfTUFTS2AsIGxpa2Ugc286CgpgYGBkaWZmCi0JICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC0mZ3Q7ZmxhZ3MpKSB8fAomIzQzOwkgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLSZndDtmbGFncyAmYW1wOyBORl9DVF9FWFBFQ1RfTUFTSykpIHx8CmBgYAoKTXkgZmlyc3QgdGhvdWdodCBpcywgd2h5IHRoZSBtYXNrPyBXaGF0JiMzOTtzIHRoZSByYXRpb25hbGUgZm9yIGZpbHRlcmluZyB0aGVzZSBmbGFncyBiZWZvcmUgdGhleSYjMzk7cmUgc2VyaWFsaXplZCB0byB1c2Vyc3BhY2U/IFRoZSBvYnZpb3VzIGFuc3dlciBpcyBsaWtlbHkgc29tZSBraW5kIG9mIGluZm9ybWF0aW9uIGhpZGluZy4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSB0byBwcmV2ZW50IGxlYWtpbmcgaW50ZXJuYWwga2VybmVsLXNwZWNpZmljIGZsYWdzIHRvIHVzZXJzcGFjZSwgb3IgcGVyaGFwcyB0aGVyZSYjMzk7cyBhIGJ1ZyBpbiB0aGUgdXNlcnNwYWNlIGNvZGUgdGhhdCBpcyBtaXNpbnRlcnByZXRpbmcgY2VydGFpbiBmbGFnIGJpdHMgYW5kIGNhdXNpbmcgaXNzdWVzLiBUaGUgcGF0Y2ggY291bGQgYmUgbWl0aWdhdGluZyB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGV2ZW4gYSBzZWN1cml0eSBjb25jZXJuLgoKSSBicmllZmx5IGNvbnNpZGVyZWQgdGhlIHBvc3NpYmlsaXR5IG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGludm9sdmVkLiBJdCYjMzk7cyBhIGtuZWUtamVyayByZWFjdGlvbiB3aGVuIHlvdSYjMzk7cmUgZGVhbGluZyB3aXRoIGZsYWcgZmllbGRzLCBidXQgbm8sIHRoaXMgaXMgYWJvdXQgbWFza2luZyBhbHJlYWR5IGluaXRpYWxpemVkIGZsYWdzLiBUaGUgYGV4cC0mZ3Q7ZmxhZ3NgIGlzIHBhcnQgb2YgdGhlIGBuZl9jb25udHJhY2tfZXhwZWN0YCBzdHJ1Y3QgYW5kIGl0JiMzOTtzIGluaXRpYWxpemVkIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZW50cnkuIEl0IGlzbiYjMzk7dCByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLTVNBTiB3b3VsZCBoYXZlIGZsYWdnZWQgaXQgb3RoZXJ3aXNlLgoKQnV0IHdhaXQsIGNvdWxkIHNvbWUgYml0cyBvZiBgZXhwLSZndDtmbGFnc2AgYmUgdW5pbml0aWFsaXplZCB3aGVuIHRoZSBgbmZfY29ubnRyYWNrX2V4cGVjdGAgc3RydWN0IGlzIGNyZWF0ZWQsIGJ1dCB0aGVzZSB1bmluaXRpYWxpemVkIGJpdHMgYXJlIG5vdCB1c2VkLiBUaGVuIHRoZSBtYXNrIHdpbGwgY2xlYXIgdGhlbS4gVGhhdCBtYWtlcyB0aGlzIHBhdGNoIGEgc2VjdXJpdHkgaXNzdWUuIEl0IGNhbiBiZSBleHBsb2l0ZWQgYnkgdXNlcnNwYWNlLiBCdXQgbm8sIEtNU0FOIHdvdWxkIGhhdmUgY2F1Z2h0IGl0LiBUaGUgcGF0Y2ggd291bGQgaGF2ZSBiZWVuIHJlamVjdGVkLgoKU28sIG1hc2tpbmcgdGhlIGZsYWdzIGlzIGFsbCBhYm91dCBjb250cm9sbGVkIGluZm9ybWF0aW9uIGV4cG9zdXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGJpdHMgYXJlIGNvbnNpZGVyZWQgaW50ZXJuYWwuIExldCBtZSBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgTkZfQ1RfRVhQRUNUX01BU0tgLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZ2V0IHRoYXQgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX0NUX0VYUEVDVF9NQVNLJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oPTE1Mj1lbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaC0xNjMtI2RlZmluZSBORl9DVF9FWFBFQ1RfREVBRFx0XHQweDhcbmluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oOjE2NDojZGVmaW5lIE5GX0NUX0VYUEVDVF9NQVNLXHQoTkZfQ1RfRVhQRUNUX1BFUk1BTkVOVCB8IE5GX0NUX0VYUEVDVF9JTkFDVElWRSB8IFxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaC0xNjUtXHRcdFx0XHQgTkZfQ1RfRVhQRUNUX1VTRVJTUEFDRSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjYxNT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXhwX25sYV9wb2xpY3lbQ1RBX0VYUEVDVF9NQVgmIzQzOzFdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNjIzLVx0W0NUQV9FWFBFQ1RfWk9ORV1cdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNjI0Olx0W0NUQV9FWFBFQ1RfRkxBR1NdXHQ9IE5MQV9QT0xJQ1lfTUFTSyhOTEFfQkUzMiwgTkZfQ1RfRVhQRUNUX01BU0spLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI2MjUtXHRbQ1RBX0VYUEVDVF9DTEFTU11cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzAwMT1jdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNDQtXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9JRCwgbmZfZXhwZWN0X2dldF9pZChleHApKSB8fFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwNDU6XHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLVx1MDAzZWZsYWdzIFx1MDAyNiBORl9DVF9FWFBFQ1RfTUFTSykpIHx8XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzA0Ni1cdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0NMQVNTLCBodG9ubChleHAtXHUwMDNlY2xhc3MpKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyNwoJCQkJCQkJb3V0cHV0OiAxNDgKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSXNzdWUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHN5c3RlbSBpcyB0YWtpbmcgdGhlIGBleHAtJmd0O2ZsYWdzYCBkYXRhIGFuZCBhcHBseWluZyBhIG1hc2sgKGBORl9DVF9FWFBFQ1RfTUFTS2ApIGJlZm9yZSBpdCBnZXRzIHNlbnQgdXAgdG8gdXNlcnNwYWNlLiBUaGF0IG1hc2sgaXMgZGVmaW5lZCBhcyBgKE5GX0NUX0VYUEVDVF9QRVJNQU5FTlQgfCBORl9DVF9FWFBFQ1RfSU5BQ1RJVkUgfCBORl9DVF9FWFBFQ1RfVVNFUlNQQUNFKWAuIEVzc2VudGlhbGx5LCB0aGUgZ29hbCBoZXJlIGlzIHRvIGNhcmVmdWxseSBjb250cm9sICp3aGljaCogZmxhZ3MgZnJvbSBgZXhwLSZndDtmbGFnc2AgYXJlIHZpc2libGUgb3V0c2lkZSB0aGUga2VybmVsLiBTcGVjaWZpY2FsbHksIHdlJiMzOTtyZSB0cnlpbmcgdG8gcHJldmVudCBsZWFrYWdlIG9mIGludGVybmFsIGZsYWdzIGxpa2UgYE5GX0NUX0VYUEVDVF9ERUFEYCBvciBvdGhlciBwb3RlbnRpYWxseSBzZW5zaXRpdmUga2VybmVsLWludGVybmFsIHN0YXRlIGZsYWdzLgoKVGhpcyBpc24mIzM5O3QgYSBjYXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5OyB0aGUgbWVtb3J5IGlzIGV4cGxpY2l0bHkgc2V0IGJ5IHRoZSBrZXJuZWwuIFRoZSBwcm9ibGVtIGlzIGEgbG9naWNhbCBpbmZvcm1hdGlvbiBsZWFrIOKAkyB3ZSYjMzk7cmUgdW5pbnRlbnRpb25hbGx5IHJldmVhbGluZyBpbnRlcm5hbCBzdGF0ZSB0aGF0IHVzZXJzcGFjZSBzaG91bGRuJiMzOTt0IGtub3cgYWJvdXQuIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gZGV0ZWN0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBCdXQsIHNpbmNlIHRoaXMgaXNuJiMzOTt0IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHByb2JsZW0sIEtNU0FOIGlzbiYjMzk7dCB0aGUgcmlnaHQgdG9vbCBmb3IgdGhlIGpvYi4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCAqaW5pdGlhbGl6ZWQqLCBhbGJlaXQgcG90ZW50aWFsbHkgc2Vuc2l0aXZlLCBkYXRhIHRoYXQgd2Ugd2FudCB0byBrZWVwIGhpZGRlbiBmcm9tIHRoZSB1c2Vyc3BhY2UuCgpUaGVyZWZvcmUsIHNpbmNlIHRoaXMgaXMgYSBsb2dpYyBidWcgYW5kIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSwgSSYjMzk7bSBnb2luZyB0byBtYXJrIGBOZWVkc0tNU0FOYCBhcyBmYWxzZSBmb3IgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIGBleHAtXHUwMDNlZmxhZ3NgIHdpdGggYE5GX0NUX0VYUEVDVF9NQVNLYCBiZWZvcmUgc2VuZGluZyBpdCB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgcHJldmVudHMgbGVha2luZyBpbnRlcm5hbCBrZXJuZWwgZmxhZ3MgKHN1Y2ggYXMgYE5GX0NUX0VYUEVDVF9ERUFEYCkgdG8gdXNlcnNwYWNlLiBUaGUgYGZsYWdzYCBmaWVsZCBpdHNlbGYgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQ7IHRoZSBpc3N1ZSBpcyBhbiBpbmZvcm1hdGlvbiBsZWFrIG9mIGludGVybmFsIHN0YXRlLCBub3QgYSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgYGV4cC1cdTAwM2VmbGFnc2Agd2l0aCBgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBwcmV2ZW50cyBsZWFraW5nIGludGVybmFsIGtlcm5lbCBmbGFncyAoc3VjaCBhcyBgTkZfQ1RfRVhQRUNUX0RFQURgKSB0byB1c2Vyc3BhY2UuIFRoZSBgZmxhZ3NgIGZpZWxkIGl0c2VsZiBpcyBwcm9wZXJseSBpbml0aWFsaXplZDsgdGhlIGlzc3VlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgb2YgaW50ZXJuYWwgc3RhdGUsIG5vdCBhIGxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjA2LjAwODE1MDE0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTMzMTA4OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0bmV0bGlua19nZXRfZXhwZWN0XCIsXG4gICAgXCJjdG5ldGxpbmtfZXhwZWN0X2V2ZW50XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayBgZXhwLVxcdTAwM2VmbGFnc2Agd2l0aCBgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBwcmV2ZW50cyBsZWFraW5nIGludGVybmFsIGtlcm5lbCBmbGFncyAoc3VjaCBhcyBgTkZfQ1RfRVhQRUNUX0RFQURgKSB0byB1c2Vyc3BhY2UuIFRoZSBgZmxhZ3NgIGZpZWxkIGl0c2VsZiBpcyBwcm9wZXJseSBpbml0aWFsaXplZDsgdGhlIGlzc3VlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgb2YgaW50ZXJuYWwgc3RhdGUsIG5vdCBhIGxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgdGhlIGBleHAtXFx1MDAzZWZsYWdzYCBiZWZvcmUgc2VuZGluZyB0aGVtIHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGFsdGVycyB0aGUgZGF0YSByZXR1cm5lZCBieSBuZXRsaW5rIGR1bXBzIGFuZCBldmVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjA2LjAwODE1NDk5OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyMzgzNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTAzNjUzZTIxZDc3Y2M2YTIzYzk3MmZmMzdlMTg3MjA5OTkyODQyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAyMzo1NDowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG5pbmRleCBmYzNmNjAwOTlhZjNiLi45YjRlMjk1NTdlYzMzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xcbkBAIC0zMDQyLDcgKzMwNDIsNyBAQCBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuICNlbmRpZlxcbiBcXHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9USU1FT1VULCBodG9ubCh0aW1lb3V0KSkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfSUQsIG5mX2V4cGVjdF9nZXRfaWQoZXhwKSkgfHxcXG4tXFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC1cXHUwMDNlZmxhZ3MpKSB8fFxcbitcXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLVxcdTAwM2VmbGFncyBcXHUwMDI2IE5GX0NUX0VYUEVDVF9NQVNLKSkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfQ0xBU1MsIGh0b25sKGV4cC1cXHUwMDNlY2xhc3MpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDowNi41MTEyMDA0MzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjcxMzMxMTk1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX05FVExJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjdG5ldGxpbmtfZ2V0X2V4cGVjdFwiLFxuICAgIFwiY3RuZXRsaW5rX2V4cGVjdF9ldmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIHRoZSBgZXhwLVxcdTAwM2VmbGFnc2AgYmVmb3JlIHNlbmRpbmcgdGhlbSB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBhbHRlcnMgdGhlIGRhdGEgcmV0dXJuZWQgYnkgbmV0bGluayBkdW1wcyBhbmQgZXZlbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMDM2NTNlMjFkNzdjYzZhMjNjOTcyZmYzN2UxODcyMDk5OTI4NDI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMjM6NTQ6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbmluZGV4IGZjM2Y2MDA5OWFmM2IuLjliNGUyOTU1N2VjMzMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuQEAgLTMwNDIsNyArMzA0Miw3IEBAIGN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAjZW5kaWZcbiBcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX1RJTUVPVVQsIGh0b25sKHRpbWVvdXQpKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfSUQsIG5mX2V4cGVjdF9nZXRfaWQoZXhwKSkgfHxcbi1cdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtXHUwMDNlZmxhZ3MpKSB8fFxuK1x0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC1cdTAwM2VmbGFncyBcdTAwMjYgTkZfQ1RfRVhQRUNUX01BU0spKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfQ0xBU1MsIGh0b25sKGV4cC1cdTAwM2VjbGFzcykpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjA2LjUxMTIwMjA4NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5Mjc1NDcyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm50cmFjayBOZXRsaW5rIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgY2hhbmdpbmcgaG93IGV4cGVjdGF0aW9uIGZsYWdzIGFyZSBkdW1wZWQgdmlhIG5ldGxpbmsuIEkgY2FuIHNlZSB0aGUgY29kZSBub3csIGl0J3MgYSBzaW1wbGUsIHNlZW1pbmdseSBoYXJtbGVzcyBvbmUtbGluZXI6IGl0J3MgbWFza2luZyB0aGUgYGV4cC1cdTAwM2VmbGFnc2AgYmVmb3JlIHNlcmlhbGl6aW5nIHRoZW0uIEJlZm9yZSwgaXQgd2FzIHB1dHRpbmcgdGhlIHJhdyBgZXhwLVx1MDAzZWZsYWdzYCB2YWx1ZSBpbiB0aGUgbmV0bGluayBtZXNzYWdlLCBub3cgaXQncyBhcHBseWluZyBgTkZfQ1RfRVhQRUNUX01BU0tgIGZpcnN0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2lnbmlmaWNhbmNlLiBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdCgpYCAtIEkgc2hvdWxkIGNoZWNrIHRoYXQgZnVuY3Rpb24sIGFuZCBuYXR1cmFsbHksIEknbSBnb2luZyB0byBsb29rIHVwIGBORl9DVF9FWFBFQ1RfTUFTS2AuIElzIHRoYXQgYSBiaXRtYXNrIG9yIGEgY29uc3RhbnQ/IEl0J3MgcHJvYmFibHkgc29tZSBkZWZpbmVkIGNvbnN0YW50LCBhIGJpdG1hc2suXG5cblRoaXMgaXMgYSByZWFsbHkgbWlub3IgY2hhbmdlLCBidXQgaXQgY2hhbmdlcyB0aGUgKm91dHB1dCogb2YgdGhlIG5ldGxpbmsgZHVtcCwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciBhbnkgdG9vbGluZyB0aGF0IGNvbnN1bWVzIHRoaXMgaW5mb3JtYXRpb24uIEl0J3MgYSBmbGFnIG1hc2tpbmcgb3BlcmF0aW9uLCBub3QgYSBidWdmaXguIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggdGhyb3dpbmcgZnV6emluZyBhdD8gSXMgdGhlcmUgYSBzdWJ0bGUgZWRnZSBjYXNlIGluIHRoZSBtYXNraW5nIHRoYXQgY291bGQgYmUgZXhwbG9pdGVkPyBIb25lc3RseSwgaXQgc2VlbXMgdW5saWtlbHksIGdpdmVuIHRoZSBzY2FsZSBvZiB0aGUgY2hhbmdlLiBJdCdzIG1hc2tpbmcgYSBzaW5nbGUgdmFsdWUuIE5ldmVydGhlbGVzcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB3aG9sZSBzdHJ1Y3R1cmUgYmV0dGVyLCBzbyBsZXQncyBzdGFydCBieSBmaW5kaW5nIHdoZXJlIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCBpcyBkZWZpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MTEuNDM4NzU0MTc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4NDY0MTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0bmV0bGlua19leHBfZHVtcF9leHBlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDAwPXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzAwMTpjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwMDItXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjY9Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDc3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDc4OlxcdGlmIChjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHNrYiwgZXhwKSBcXHUwMDNjIDApXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNzktXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzA5Mj1jdG5ldGxpbmtfZXhwZWN0X2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9leHBfZXZlbnQgKml0ZW0pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEyMy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzEyNDpcXHRpZiAoY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChza2IsIGV4cCkgXFx1MDAzYyAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTI1LVxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDoxMS41MjcyMjMzNjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIwODYyODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29ubnRyYWNrIE5ldGxpbmsgRXhwZWN0YXRpb24gTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgZnVuY3Rpb24sIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0J3MgdGhlIGhlYXJ0IG9mIGhvdyBleHBlY3RhdGlvbnMgYXJlIGhhbmRsZWQgdGhyb3VnaCBuZXRsaW5rLiBJIGNhbiBzZWUgaXQgZ2V0cyBjYWxsZWQgYnkgdHdvIGtleSBwbGFjZXM6IGBjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mb2AgYW5kIGBjdG5ldGxpbmtfZXhwZWN0X2V2ZW50YC4gVGhhdCBtYWtlcyBzZW5zZTsgYGN0bmV0bGlua19leHBfZmlsbF9pbmZvYCBpcyBmb3IgZHVtcGluZyB0aGUgZXhwZWN0YXRpb24gZGF0YSBpdHNlbGYsIGFuZCBzaW5jZSB0aGF0J3MgbmV0bGluay1iYXNlZCwgaXQgZ2l2ZXMgbWUgYSBjbGVhciBwYXRoIHRvIHJlYWNoIHRob3NlIGV4cGVjdGF0aW9ucyBvdmVyIHRoZSBuZXR3b3JrLlxuXG5Ob3csIGdpdmVuIHRoaXMgd2hvbGUgdGhpbmcgaXMgZHJpdmVuIGJ5IG5ldGxpbmssIEkgdGhpbmsgdGhlIG5leHQgbG9naWNhbCBzdGVwIHdvdWxkIGJlIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZvciBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBuZXRsaW5rIGludGVyYWN0aW9ucyBhcmUgc2V0IHVwIGFuZCBob3cgdGhlIGV4cGVjdGF0aW9uIGR1bXAgYW5kIGV2ZW50cyBhcmUgdHJpZ2dlcmVkIGZyb20gdGhlIHVzZXIgc3BhY2UgcGVyc3BlY3RpdmUuIFRoYXQnbGwgZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlIG9mIGhvdyB0aGlzIG1lY2hhbmlzbSBhY3R1YWxseSB3b3JrcywgYW5kIGhvdyBpdCBjYW4gYmUgY29udHJvbGxlZC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGNvbm5lY3Rpb24gaXMgbWFuYWdlZCBhbmQgd2hpY2ggY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGNhbiBhZmZlY3QgdGhlIHdob2xlIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEwNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjE0Ljk0ODA4OTEzNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDA0MjA3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfbmV0bGluay5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLKSArPSBuZl9jb25udHJhY2sub1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zNi0jIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBuZl9jb25udHJhY2tcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LKSArPSBuZl9jb25udHJhY2tfbmV0bGluay5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfTkZfQ1RfTkVUTElOS19USU1FT1VUKSArPSBuZm5ldGxpbmtfY3R0aW1lb3V0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MTUuMDIyMTM4OTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcwMzgxMjE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgc3BvdGxpZ2h0J3Mgb24gYE5GX0NUX05FVExJTktgLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBkb2VzIHRoaXMgZml0IGluIHRoZSBncmFuZCBzY2hlbWUgb2YgTmV0ZmlsdGVyPyBJdCdzIGNydWNpYWwgdG8gaW1tZWRpYXRlbHkgYXNjZXJ0YWluIHRoaXMgbW9kdWxlJ3MgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIGVzc2VudGlhbCwgcGFydGljdWxhcmx5IGJlY2F1c2UgTmV0bGluayBpcyBhIGNvcmUgYXNwZWN0IG9mIGNvbW11bmljYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgTmV0ZmlsdGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3Iga2VybmVsIHN1YnN5c3RlbXMgYXJlIGluaGVyZW50bHkgbGlua2VkIHRvIGBORl9DVF9ORVRMSU5LYC4gVGhlIGRlcGVuZGVuY2llcyBhcmUgcmVhbGx5IHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSwgaXRzIGltcGFjdCBvbiB0aGUgc3lzdGVtLCBhbmQgcG90ZW50aWFsIGludGVncmF0aW9uIHByb2JsZW1zLiBObyBwb2ludCBpbiBnb2luZyBmdXJ0aGVyIGJlZm9yZSBJIHVuZGVyc3RhbmQgaXRzIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBhbmQgaXRzIHJvbGUgd2l0aGluIE5ldGZpbHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjE3LjcyNTk1MzM5NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mzk5MTc2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ1RfTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTM1NT1jb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM2Njpjb25maWcgTkZfQ1RfTkVUTElOS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjctXFx0dHJpc3RhdGUgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgbmV0bGluayBpbnRlcmZhY2UnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzcyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNzM6Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGUgICdDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg1OmNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODYtXFx0dHJpc3RhdGUgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycyBpbiB1c2VyLXNwYWNlIHZpYSBOZXRsaW5rJ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDoxNy44MTk5NjM0MzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI4NDM1Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMsIGFzIHRob3VnaCB0aGVzZSBhcmUgKm15KiB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYE5GX0NUX05FVExJTktgKipcblxuUmlnaHQsIGxldCdzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYE5GX0NUX05FVExJTktgIHJlbGllcyBvbiwgd2hhdCBpdHMgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGFyZS4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGdsYW5jZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHBvc2l0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgaGlnaGxpZ2h0IGl0cyByb2xlLiBJcyBpdCBhIGNvcmUgY29tcG9uZW50PyBJcyBpdCBhIG1vZHVsZSB0aGF0IGRlcGVuZHMgb24gb3RoZXIgbW9kdWxlcz8gRG9lcyBpdCBidWlsZCBvbiB0b3Agb2YgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9uYWxpdHk/IFRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlIHR1bmluZywgZGVidWdnaW5nLCBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBjaGFuZ2VzIHRvIHRoZSBtb2R1bGUuIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgbWV0aG9kcywgc3VjaCBhcyBzZWFyY2hpbmcgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLCBleGFtaW5pbmcgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgcGVyaGFwcyBldmVuIGNoZWNraW5nIHRoZSBjb21taXQgbG9ncyB0byBmaW5kIHRoZSBoaXN0b3JpY2FsIGNvbnRleHQgYXJvdW5kIHRoaXMgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQ4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MjAuNzQ4NDAyNzc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3ODg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzY2LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzY2OlxcdGNvbmZpZyBORl9DVF9ORVRMSU5LXFxuIDM2NzpcXHRcXHR0cmlzdGF0ZSAnQ29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSdcXG4gMzY4OlxcdFxcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xcbiAzNjk6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuIDM3MDpcXHRcXHRoZWxwXFxuIDM3MTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgYSBuZXRsaW5rLWJhc2VkIHVzZXJzcGFjZSBpbnRlcmZhY2VcXG4gMzcyOlxcdFxcbiAzNzM6XFx0Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxcbiAzNzQ6XFx0XFx0dHJpc3RhdGUgICdDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJ1xcbiAzNzU6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjIwLjc0ODY4NjU3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTcwOTgwNTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kqKlxuXG5SaWdodCwgc28gdGhpcyBiZWhhdmlvciBpcyBjb25kaXRpb25hbC4gVGhlIGNvZGUncyBjbGVhcmx5IGluZGljYXRpbmcgYSBkZXBlbmRlbmNlIG9uIGBORl9DT05OVFJBQ0tgLiBHaXZlbiB0aGF0IGl0J3MgbmVzdGxlZCB3aXRoaW4gdGhhdCBgI2lmZGVmIE5GX0NPTk5UUkFDS2AgYmxvY2ssIGl0J3MgcHJldHR5IG11Y2ggYSBnaXZlbi4gU3RpbGwsIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgYE5GX0NPTk5UUkFDS2AgbW9kdWxlLiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyB1bmV4cGVjdGVkIGhhcHBlbnMgaWYgdGhhdCBtb2R1bGUgaXMgYWJzZW50IG9yIGNvbmZpZ3VyZWQgZGlmZmVyZW50bHkuIExldCdzIGRpZyBkZWVwZXIgYW5kIHZlcmlmeSB0aGUgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDoyMy4zMTk2Nzc2MTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwODk2MTQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZiBORl9DT05OVFJBQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz05OD1jb25maWcgTkZfTE9HX1NZU0xPR1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwOS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTEwOmlmIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTEtY29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MjMuNjI4NjQ4OTY3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNTAxNDEzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFdvcnRoKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgaW52b2x2ZXMgYE5GX0NPTk5UUkFDS2AgYW5kIGBORl9DVF9ORVRMSU5LYCwgd2hpY2ggSSdtIGZhbWlsaWFyIHdpdGguIFRoZSBjb3JlIG9mIGl0IGxpZXMgaW4gYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgLCB3aGVyZSB3ZSdyZSBtYXNraW5nIGBleHAtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9NQVNLYCBiZWZvcmUgc2VuZGluZyBpdCB0byB1c2Vyc3BhY2UuIEEgc3RyYWlnaHRmb3J3YXJkIGJpdHdpc2UgQU5EIG9wZXJhdGlvbiwgcmVhbGx5LlxuXG5NeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgZnV6emluZyB0aGlzIHNlZW1zIGxpa2Ugb3ZlcmtpbGwuIEl0J3MgZnVuY3Rpb25hbCwgeWVzLCBidXQgaXQncyBqdXN0IGFib3V0IGluZm9ybWF0aW9uIGhpZGluZyDigJMgcHJldmVudGluZyBpbnRlcm5hbCBmbGFncyBmcm9tIGxlYWtpbmcuIEl0J3Mgbm90IG1vZGlmeWluZyBrZXJuZWwgZXhlY3V0aW9uIG9yIHN0YXRlOyBpdCdzIGp1c3QgYWx0ZXJpbmcgYSBuZXRsaW5rIGF0dHJpYnV0ZSB2YWx1ZSBpbiB0aGUgb3V0cHV0LiBJIGRvbid0IHNlZSBob3cgZnV6emluZyB3b3VsZCB1bmNvdmVyIGFueSBuZXcgYnVncyBmcm9tIGp1c3QgbWFza2luZyBhbiBvdXRwdXQgdmFsdWUuXG5cbkJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIGd1aWRlbGluZXM6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluc+KApiBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3figKZcIiBhbmQgc28gb24uXG5cbkhvd2V2ZXIsIHRoZSBpbnN0cnVjdGlvbnMgYWxzbyBzYXksIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5UaGlzIHBhdGNoICpkb2VzKiB0b3VjaCByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgd2l0aGluIHRoZSBuZXRmaWx0ZXIgbmV0bGluayBjb2RlLiBJdCBzdWJ0bHkgY2hhbmdlcyB0aGUgZXhlY3V0aW9uIGZsb3cgYmVjYXVzZSBvZiB0aGUgYml0d2lzZSBBTkQuXG5cbldhaXQsIHRob3VnaOKApiB0aGUgZ3VpZGVsaW5lcyAqYWxzbyogc2F5LCBcIkNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvd1wiLiBUaGlzICppcyogYSBjaGFuZ2UgdG8gYSB2YWx1ZSBiZWluZyBzZW50IHRvIHVzZXJzcGFjZS4gSXTigJlzIGEgZGF0YSBjaGFuZ2UsIG5vdCBhIGNvbnRyb2wgZmxvdyBjaGFuZ2UuXG5cbk9rYXksIHNvIEnigJltIGJhY2sgdG8gaXQgYmVpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IG9uZSB0aGF0IGRvZXNuJ3Qgc2VlbSBsaWtlbHkgdG8gaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcy4gQnV0IHRoZSBndWlkZWxpbmVzIGFyZSB2ZXJ5IHNwZWNpZmljLlxuXG5JIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIGFnYWluLiBKdXN0IHRvIGJlIHN1cmUgdGhlcmUncyBub3RoaW5nIGVsc2UgdGhhdCdzIHJlbGV2YW50IHRoYXQgSSBtaWdodCBoYXZlIG1pc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczNSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDozMC42Nzg4MTc3MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MTE5Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0bmV0bGlua19leHBfZHVtcF9leHBlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDAwPXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzAwMTpjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwMDItXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjY9Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDc3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDc4OlxcdGlmIChjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHNrYiwgZXhwKSBcXHUwMDNjIDApXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNzktXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzA5Mj1jdG5ldGxpbmtfZXhwZWN0X2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9leHBfZXZlbnQgKml0ZW0pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEyMy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzEyNDpcXHRpZiAoY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdChza2IsIGV4cCkgXFx1MDAzYyAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTI1LVxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDozMC43NjI5NDI2NDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4MTU2NDk5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBXb3J0aEZ1enppbmcgU2NlbmFyaW8qKlxuXG5Pa2F5LCBoZXJlJ3MgbXkgbGluZSBvZiB0aGlua2luZyBvbiB0aGlzLiBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGNoYW5nZSB3aXRoIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoaXMgaXMgYmVjYXVzZSB3ZSdyZSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgc3Vic3lzdGVtLiBBbmQgdGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgcGxhY2Ugd2hlcmUgZnV6emluZyBjYW4gYmUgcmVhbGx5IGVmZmVjdGl2ZS5cblxuSSdtIGZvY3VzZWQgaW4gb24gdGhlc2Ugc3ltYm9sczogYGN0bmV0bGlua19leHBfZmlsbF9pbmZvYCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgLlxuXG5Ib2xkIG9uIGEgc2VjLi4uIGBjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mb2AgaXMgc3RhdGljLiBUaGF0IG1ha2VzIG1lIHBhdXNlLiBJcyBpdCBhY3R1YWxseSBhbiBBUEkgZW50cnkgcG9pbnQsIG9yIGlzIGl0IG1vcmUgb2YgYW4gaW50ZXJuYWwgZnVuY3Rpb24/IE5lZWQgdG8gYmUgc3VyZSBoZXJlLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdvIHVwc3RyZWFtIGFuZCBpbnZlc3RpZ2F0ZSB3aGVyZSBgY3RuZXRsaW5rX2V4cF9maWxsX2luZm9gIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCB3aWxsIHByb3ZpZGUgdGhlIGNyaXRpY2FsIGNvbnRleHQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSB2YWxpZCBjYW5kaWRhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5ODUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDozNC43NDQ1MTE0MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3OTkwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX2V4cF9maWxsX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDY1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzA2NjpjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgcG9ydGlkLCB1MzIgc2VxLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDY3LVxcdFxcdFxcdGludCBldmVudCwgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMTUyPWN0bmV0bGlua19leHBfZHVtcF90YWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzE3OC1cXHRcXHRcXHR9XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMxNzk6XFx0XFx0XFx0aWYgKGN0bmV0bGlua19leHBfZmlsbF9pbmZvKHNrYixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzE4MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgTkVUTElOS19DQihjYi1cXHUwMDNlc2tiKS5wb3J0aWQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzE5OT1jdG5ldGxpbmtfZXhwX2N0X2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMyMjUtXFx0XFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMjI2OlxcdFxcdGlmIChjdG5ldGxpbmtfZXhwX2ZpbGxfaW5mbyhza2IsIE5FVExJTktfQ0IoY2ItXFx1MDAzZXNrYikucG9ydGlkLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMjI3LVxcdFxcdFxcdFxcdFxcdCAgICBjYi1cXHUwMDNlbmxoLVxcdTAwM2VubG1zZ19zZXEsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzMwOT1zdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzM3Mi1cXHRyY3VfcmVhZF9sb2NrKCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMzNzM6XFx0ZXJyID0gY3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc2tiMiwgTkVUTElOS19DQihza2IpLnBvcnRpZCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzM3NC1cXHRcXHRcXHRcXHQgICAgICBpbmZvLVxcdTAwM2VubGgtXFx1MDAzZW5sbXNnX3NlcSwgSVBDVE5MX01TR19FWFBfTkVXLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDozNC44MjAzMTU0MzlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NTg3NTMzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIENvbm5lY3Rpb24gVHJhY2tpbmcgTmV0bGluayBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgZW50cnkgcG9pbnRzIGZvciB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGNvZGUuIEl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19nZXRfZXhwZWN0YCwgYGN0bmV0bGlua19leHBfZHVtcF90YWJsZWAsIGFuZCBgY3RuZXRsaW5rX2V4cF9jdF9kdW1wX3RhYmxlYCBhcmUgdGhlIHByaW1hcnkgc3RhcnRpbmcgcG9pbnRzLiBUaGF0IG1ha2VzIHNlbnNlLCB0aG9zZSBuYW1lcyBhcmUgcHJldHR5IGRlc2NyaXB0aXZlLiBUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIGZsb3csIEkgdGhpbmsgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgd2l0aCBgY3RuZXRsaW5rX2dldF9leHBlY3RgIGFuZCBgY3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlYC4gSSdsbCBkaWcgaW50byB0aG9zZSBmaXJzdCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBpcyBiZWluZyByZXRyaWV2ZWQgYW5kIGR1bXBlZC4gRnJvbSB0aGVyZSwgSSBjYW4gbGlrZWx5IGluZmVyIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIENUIGRhdGEuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBleHBlY3QgdGFibGUgaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk0MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjM3Ljg5NjE5NDA1MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI1MTg4MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX2dldF9leHBlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMjYyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX2R1bXBfZXhwX2N0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzMwOC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzMwOTpzdGF0aWMgaW50IGN0bmV0bGlua19nZXRfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMTAtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zODA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBjdG5sX2V4cF9jYltJUENUTkxfTVNHX0VYUF9NQVhdID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODA3LVxcdFtJUENUTkxfTVNHX0VYUF9HRVRdID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODA4OlxcdFxcdC5jYWxsXFx0XFx0PSBjdG5ldGxpbmtfZ2V0X2V4cGVjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzgwOS1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9NVVRFWCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6MzcuOTQ4NzE5Njg5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTkwODcxMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biwgYXMgaWYgSSdtIHdvcmtpbmcgdGhyb3VnaCB0aGlzIGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbm5lY3Rpb24gVHJhY2tpbmcgTmV0bGluayBDb2RlKipcblxuUmlnaHQsIHNvIGBjdG5ldGxpbmtfZ2V0X2V4cGVjdGAgaXMgY2xlYXJseSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBgSVBDVE5MX01TR19FWFBfR0VUYCBuZXRsaW5rIG1lc3NhZ2UuIFRoYXQgbWFrZXMgc2Vuc2UsIGl0J3Mgd2hhdCBJIHdvdWxkIGV4cGVjdCBmb3IgYSBcImdldCBleHBlY3RhdGlvblwiIG9wZXJhdGlvbi4gSXQncyB0aGUgcG9pbnQgb2YgZW50cnkgZm9yIHJldHJpZXZpbmcgZXhwZWN0ZWQgY29ubmVjdGlvbnMuIEJ1dC4uLiB3aGF0IGFib3V0IGBjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGVgPyBUaGF0IG5hbWUgc3VnZ2VzdHMgYSBkaWZmZXJlbnQga2luZCBvZiBmdW5jdGlvbmFsaXR5LiBJcyB0aGF0IHVzZWQgdG8gZHVtcCB0aGUgZW50aXJlIGV4cGVjdGF0aW9uIHRhYmxlPyBPciBpcyBpdCByZWxhdGVkLCBtYXliZSBmb3IgaW5pdGlhbGl6YXRpb24gb3IgbWFpbnRlbmFuY2U/IEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBvbmUgZml0cyBpbiBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIGBnZXRgIGZ1bmN0aW9uLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBmdWxsIG5ldGxpbmsgbWVzc2FnZSBoYW5kbGluZyBmbG93IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NDgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDo0MS4yMDc4MDk1MzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNzUzNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0bmV0bGlua19leHBfZHVtcF90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMxNTE9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMTUyOmN0bmV0bGlua19leHBfZHVtcF90YWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMxNTMte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMzMDk9c3RhdGljIGludCBjdG5ldGxpbmtfZ2V0X2V4cGVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMjYtXFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZHVtcF9jb250cm9sIGMgPSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMzMjc6XFx0XFx0XFx0XFx0LmR1bXAgPSBjdG5ldGxpbmtfZXhwX2R1bXBfdGFibGUsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMzMjgtXFx0XFx0XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NDEuMzAxNTY4Mzc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDk0MzAxNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlZXAgRGl2ZSBvbiBgY3RuZXRsaW5rX2V4cGVjdF9ldmVudGAqKlxuXG5TbywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBuZXRsaW5rIGNvbm5lY3Rpb24gdHJhY2tpbmcgaW50ZXJmYWNlLCBzcGVjaWZpY2FsbHksIGBjdG5ldGxpbmtfZXhwZWN0X2V2ZW50YC4gT2theSwgSSBnZXQgdGhlIGJhc2ljcywgb2J2aW91c2x5OiBpdCdzIGFib3V0IGhhbmRsaW5nIGV2ZW50cyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHJpZ2h0PyBCdXQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgaXNuJ3QgaXQ/IEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24uIFdoYXQga2luZCBvZiBkYXRhIGlzIGl0IGV4cGVjdGluZz8gV2hhdCdzIHRoZSBhbnRpY2lwYXRlZCBldmVudCBmbG93PyBEb2VzIHRoaXMgZnVuY3Rpb24gbWFuYWdlIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb25udHJhY2sgdXNlcnNwYWNlIGRhZW1vbiBvciBpcyBpdCBzb2xlbHkgcmVsYXRlZCB0byB0aGUga2VybmVsIGxldmVsIGZ1bmN0aW9ucz8gTW9yZSBpbXBvcnRhbnRseSwgaG93IGRvZXMgaXQgaGFuZGxlIGNvbmN1cnJlbmN5PyBXZSdyZSB0YWxraW5nIGFib3V0IG5ldHdvcmsgZXZlbnRzIGhlcmU7IHRoaW5ncyBjYW4gZ2V0IG1lc3N5IGZhc3QuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBEb2VzIGl0IGhhdmUgcHJvcGVyIGxvY2tpbmcgaW4gcGxhY2UgdG8gcHJvdGVjdCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzPyBBcmUgdGhlcmUgYW55IGtub3duIGdvdGNoYXMgb3IgZWRnZSBjYXNlcyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgcGVyaGFwcyBpbiByZWxhdGlvbiB0byBzcGVjaWZpYyBwcm90b2NvbCB0eXBlcyBvciB1bnVzdWFsIG5ldHdvcmsgY29uZmlndXJhdGlvbnM/IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBhcyB3ZWxsOiB3aGF0IGhhcHBlbnMgaWYgYW4gZXZlbnQgaXMgbWFsZm9ybWVkLCBvciBpZiB0aGUgc3lzdGVtIHJ1bnMgb3V0IG9mIHJlc291cmNlcz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcmV0dXJuIGNvZGVzIG9uIHRoZSBvdmVyYWxsIHN0YXRlIG9mIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHN1YnN5c3RlbT8gSSBuZWVkIHRvIGdvIGRlZXBlciBpbnRvIHRoZSBzb3VyY2UgY29kZS4uLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNoZWNrIHRoZSByZWxldmFudCBSRkNzIGFuZCBkb2N1bWVudGF0aW9uIGFnYWluLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDY2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NDUuMTUxMDAxODQ1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTg4OTkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfZXhwZWN0X2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzA5MT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwOTI6Y3RuZXRsaW5rX2V4cGVjdF9ldmVudCh1bnNpZ25lZCBpbnQgZXZlbnRzLCBjb25zdCBzdHJ1Y3QgbmZfZXhwX2V2ZW50ICppdGVtKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDkzLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNzU3PXN0YXRpYyBzdHJ1Y3QgbmZfY3RfZXZlbnRfbm90aWZpZXIgY3RubF9ub3RpZmllciA9IHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc1OC1cXHQuY3RfZXZlbnQgPSBjdG5ldGxpbmtfY29ubnRyYWNrX2V2ZW50LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzU5OlxcdC5leHBfZXZlbnQgPSBjdG5ldGxpbmtfZXhwZWN0X2V2ZW50LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNzYwLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjQ1LjIyMjg5NjgxM1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODUwMDkwNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gQ29ubnRyYWNrIE5ldGxpbmsgRW50cnkgUG9pbnRzIGFuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgY29ubnRyYWNrIG5ldGxpbmsgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19nZXRfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19leHBlY3RfZXZlbnRgIGFyZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24uIFRoYXQgZmVlbHMgcmlnaHQsIHVzdWFsbHkgd2hlbiBsb29raW5nIGF0IG5ldGxpbmsgaW50ZXJhY3Rpb25zIHlvdSdsbCBzZWUgYSBnZXQgYW5kIGFuIGV2ZW50IGNvbXBvbmVudC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IEkgaGFkIHRvIGNoZWNrIGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfQ1RfTkVUTElOS2AsIGJ1dCB3YWl04oCmIEkgdGhpbmsgYE5GX0NUX05FVExJTktgIGlzIHRoZSBhY3R1YWwga2V5IGNvbmZpZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBjcnVjaWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjYyLCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU0OjQ5LjA3Mjk5MjIxM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTUxNjIzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9ORVRMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3RuZXRsaW5rX2dldF9leHBlY3RcIixcbiAgICBcImN0bmV0bGlua19leHBlY3RfZXZlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayB0aGUgYGV4cC1cXHUwMDNlZmxhZ3NgIGJlZm9yZSBzZW5kaW5nIHRoZW0gdG8gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgYWx0ZXJzIHRoZSBkYXRhIHJldHVybmVkIGJ5IG5ldGxpbmsgZHVtcHMgYW5kIGV2ZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX05FVExJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjdG5ldGxpbmtfZ2V0X2V4cGVjdFwiLFxuICAgIFwiY3RuZXRsaW5rX2V4cGVjdF9ldmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIHRoZSBgZXhwLVxcdTAwM2VmbGFnc2AgYmVmb3JlIHNlbmRpbmcgdGhlbSB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBhbHRlcnMgdGhlIGRhdGEgcmV0dXJuZWQgYnkgbmV0bGluayBkdW1wcyBhbmQgZXZlbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDo0OS4yMjQ1MTcxMDlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzE2NzI3MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NDkuMjI1MTcyNDA4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1MzE2MDY2NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY3RuZXRsaW5rX2V4cF9kdW1wX2V4cGVjdGAgdG8gbWFzayBgZXhwLVxcdTAwM2VmbGFnc2Agd2l0aCBgTkZfQ1RfRVhQRUNUX01BU0tgIGJlZm9yZSBzZW5kaW5nIGl0IHRvIHVzZXJzcGFjZSB2aWEgbmV0bGluay4gVGhpcyBwcmV2ZW50cyBsZWFraW5nIGludGVybmFsIGtlcm5lbCBmbGFncyAoc3VjaCBhcyBgTkZfQ1RfRVhQRUNUX0RFQURgKSB0byB1c2Vyc3BhY2UuIFRoZSBgZmxhZ3NgIGZpZWxkIGl0c2VsZiBpcyBwcm9wZXJseSBpbml0aWFsaXplZDsgdGhlIGlzc3VlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgb2YgaW50ZXJuYWwgc3RhdGUsIG5vdCBhIGxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTAzNjUzZTIxZDc3Y2M2YTIzYzk3MmZmMzdlMTg3MjA5OTkyODQyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjU0OjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG5pbmRleCBmYzNmNjAwOTlhZjNiLi45YjRlMjk1NTdlYzMzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbkBAIC0zMDQyLDcgKzMwNDIsNyBAQCBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0KHN0cnVjdCBza19idWZmICpza2IsXG4gI2VuZGlmXG4gXHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9USU1FT1VULCBodG9ubCh0aW1lb3V0KSkgfHxcbiBcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0lELCBuZl9leHBlY3RfZ2V0X2lkKGV4cCkpIHx8XG4tXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLVx1MDAzZWZsYWdzKSkgfHxcbitcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0ZMQUdTLCBodG9ubChleHAtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9NQVNLKSkgfHxcbiBcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0NMQVNTLCBodG9ubChleHAtXHUwMDNlY2xhc3MpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzo1NDo0OS4yMjUxNzM0OThaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk1Njk0NzEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXRmaWx0ZXIgQ29ubnRyYWNrIE5ldGxpbmsgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCBpbiBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgY2hhbmdpbmcgaG93IHRoZSBgZXhwLVx1MDAzZWZsYWdzYCBmaWVsZCBpcyBoYW5kbGVkIHdoZW4gc2VuZGluZyBkYXRhIG92ZXIgbmV0bGluay4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgbWFzaywgYE5GX0NUX0VYUEVDVF9NQVNLYCwgbGlrZSBzbzpcblxuYGBgZGlmZlxuLVx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC1cdTAwM2VmbGFncykpIHx8XG4rXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgQ1RBX0VYUEVDVF9GTEFHUywgaHRvbmwoZXhwLVx1MDAzZWZsYWdzIFx1MDAyNiBORl9DVF9FWFBFQ1RfTUFTSykpIHx8XG5gYGBcblxuTXkgZmlyc3QgdGhvdWdodCBpcywgd2h5IHRoZSBtYXNrPyBXaGF0J3MgdGhlIHJhdGlvbmFsZSBmb3IgZmlsdGVyaW5nIHRoZXNlIGZsYWdzIGJlZm9yZSB0aGV5J3JlIHNlcmlhbGl6ZWQgdG8gdXNlcnNwYWNlPyBUaGUgb2J2aW91cyBhbnN3ZXIgaXMgbGlrZWx5IHNvbWUga2luZCBvZiBpbmZvcm1hdGlvbiBoaWRpbmcuIEl0J3MgYWxtb3N0IGNlcnRhaW5seSB0byBwcmV2ZW50IGxlYWtpbmcgaW50ZXJuYWwga2VybmVsLXNwZWNpZmljIGZsYWdzIHRvIHVzZXJzcGFjZSwgb3IgcGVyaGFwcyB0aGVyZSdzIGEgYnVnIGluIHRoZSB1c2Vyc3BhY2UgY29kZSB0aGF0IGlzIG1pc2ludGVycHJldGluZyBjZXJ0YWluIGZsYWcgYml0cyBhbmQgY2F1c2luZyBpc3N1ZXMuIFRoZSBwYXRjaCBjb3VsZCBiZSBtaXRpZ2F0aW5nIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgZXZlbiBhIHNlY3VyaXR5IGNvbmNlcm4uXG5cbkkgYnJpZWZseSBjb25zaWRlcmVkIHRoZSBwb3NzaWJpbGl0eSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBpbnZvbHZlZC4gSXQncyBhIGtuZWUtamVyayByZWFjdGlvbiB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggZmxhZyBmaWVsZHMsIGJ1dCBubywgdGhpcyBpcyBhYm91dCBtYXNraW5nIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmxhZ3MuIFRoZSBgZXhwLVx1MDAzZWZsYWdzYCBpcyBwYXJ0IG9mIHRoZSBgbmZfY29ubnRyYWNrX2V4cGVjdGAgc3RydWN0IGFuZCBpdCdzIGluaXRpYWxpemVkIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZW50cnkuIEl0IGlzbid0IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIEtNU0FOIHdvdWxkIGhhdmUgZmxhZ2dlZCBpdCBvdGhlcndpc2UuXG5cbkJ1dCB3YWl0LCBjb3VsZCBzb21lIGJpdHMgb2YgYGV4cC1cdTAwM2VmbGFnc2AgYmUgdW5pbml0aWFsaXplZCB3aGVuIHRoZSBgbmZfY29ubnRyYWNrX2V4cGVjdGAgc3RydWN0IGlzIGNyZWF0ZWQsIGJ1dCB0aGVzZSB1bmluaXRpYWxpemVkIGJpdHMgYXJlIG5vdCB1c2VkLiBUaGVuIHRoZSBtYXNrIHdpbGwgY2xlYXIgdGhlbS4gVGhhdCBtYWtlcyB0aGlzIHBhdGNoIGEgc2VjdXJpdHkgaXNzdWUuIEl0IGNhbiBiZSBleHBsb2l0ZWQgYnkgdXNlcnNwYWNlLiBCdXQgbm8sIEtNU0FOIHdvdWxkIGhhdmUgY2F1Z2h0IGl0LiBUaGUgcGF0Y2ggd291bGQgaGF2ZSBiZWVuIHJlamVjdGVkLlxuXG5TbywgbWFza2luZyB0aGUgZmxhZ3MgaXMgYWxsIGFib3V0IGNvbnRyb2xsZWQgaW5mb3JtYXRpb24gZXhwb3N1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYml0cyBhcmUgY29uc2lkZXJlZCBpbnRlcm5hbC4gTGV0IG1lIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBORl9DVF9FWFBFQ1RfTUFTS2AuIEknbGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGdldCB0aGF0IGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NTYuMTgyMTI0ODkxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQyMzIzMDExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX0NUX0VYUEVDVF9NQVNLXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oPTE1Mj1lbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oLTE2My0jZGVmaW5lIE5GX0NUX0VYUEVDVF9ERUFEXFx0XFx0MHg4XFxuaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmg6MTY0OiNkZWZpbmUgTkZfQ1RfRVhQRUNUX01BU0tcXHQoTkZfQ1RfRVhQRUNUX1BFUk1BTkVOVCB8IE5GX0NUX0VYUEVDVF9JTkFDVElWRSB8IFxcXFxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaC0xNjUtXFx0XFx0XFx0XFx0IE5GX0NUX0VYUEVDVF9VU0VSU1BBQ0UpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjYxNT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXhwX25sYV9wb2xpY3lbQ1RBX0VYUEVDVF9NQVgrMV0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjYyMy1cXHRbQ1RBX0VYUEVDVF9aT05FXVxcdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjYyNDpcXHRbQ1RBX0VYUEVDVF9GTEFHU11cXHQ9IE5MQV9QT0xJQ1lfTUFTSyhOTEFfQkUzMiwgTkZfQ1RfRVhQRUNUX01BU0spLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNjI1LVxcdFtDVEFfRVhQRUNUX0NMQVNTXVxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDAxPWN0bmV0bGlua19leHBfZHVtcF9leHBlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDQ0LVxcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBDVEFfRVhQRUNUX0lELCBuZl9leHBlY3RfZ2V0X2lkKGV4cCkpIHx8XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwNDU6XFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfRkxBR1MsIGh0b25sKGV4cC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBORl9DVF9FWFBFQ1RfTUFTSykpIHx8XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwNDYtXFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIENUQV9FWFBFQ1RfQ0xBU1MsIGh0b25sKGV4cC1cXHUwMDNlY2xhc3MpKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6NTQ6NTguNjI0NDU2MDcyWiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MTY3NTUxMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSXNzdWUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHdoYXQncyBoYXBwZW5pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHN5c3RlbSBpcyB0YWtpbmcgdGhlIGBleHAtXHUwMDNlZmxhZ3NgIGRhdGEgYW5kIGFwcGx5aW5nIGEgbWFzayAoYE5GX0NUX0VYUEVDVF9NQVNLYCkgYmVmb3JlIGl0IGdldHMgc2VudCB1cCB0byB1c2Vyc3BhY2UuIFRoYXQgbWFzayBpcyBkZWZpbmVkIGFzIGAoTkZfQ1RfRVhQRUNUX1BFUk1BTkVOVCB8IE5GX0NUX0VYUEVDVF9JTkFDVElWRSB8IE5GX0NUX0VYUEVDVF9VU0VSU1BBQ0UpYC4gRXNzZW50aWFsbHksIHRoZSBnb2FsIGhlcmUgaXMgdG8gY2FyZWZ1bGx5IGNvbnRyb2wgKndoaWNoKiBmbGFncyBmcm9tIGBleHAtXHUwMDNlZmxhZ3NgIGFyZSB2aXNpYmxlIG91dHNpZGUgdGhlIGtlcm5lbC4gU3BlY2lmaWNhbGx5LCB3ZSdyZSB0cnlpbmcgdG8gcHJldmVudCBsZWFrYWdlIG9mIGludGVybmFsIGZsYWdzIGxpa2UgYE5GX0NUX0VYUEVDVF9ERUFEYCBvciBvdGhlciBwb3RlbnRpYWxseSBzZW5zaXRpdmUga2VybmVsLWludGVybmFsIHN0YXRlIGZsYWdzLlxuXG5UaGlzIGlzbid0IGEgY2FzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeTsgdGhlIG1lbW9yeSBpcyBleHBsaWNpdGx5IHNldCBieSB0aGUga2VybmVsLiBUaGUgcHJvYmxlbSBpcyBhIGxvZ2ljYWwgaW5mb3JtYXRpb24gbGVhayDigJMgd2UncmUgdW5pbnRlbnRpb25hbGx5IHJldmVhbGluZyBpbnRlcm5hbCBzdGF0ZSB0aGF0IHVzZXJzcGFjZSBzaG91bGRuJ3Qga25vdyBhYm91dC4gS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpcyBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEJ1dCwgc2luY2UgdGhpcyBpc24ndCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtLCBLTVNBTiBpc24ndCB0aGUgcmlnaHQgdG9vbCBmb3IgdGhlIGpvYi4gV2UncmUgZGVhbGluZyB3aXRoICppbml0aWFsaXplZCosIGFsYmVpdCBwb3RlbnRpYWxseSBzZW5zaXRpdmUsIGRhdGEgdGhhdCB3ZSB3YW50IHRvIGtlZXAgaGlkZGVuIGZyb20gdGhlIHVzZXJzcGFjZS5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGlzIGlzIGEgbG9naWMgYnVnIGFuZCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUsIEknbSBnb2luZyB0byBtYXJrIGBOZWVkc0tNU0FOYCBhcyBmYWxzZSBmb3IgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjcsIk91dHB1dFRva2VucyI6MTQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjU1OjA0LjU0MTIxNDAxNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0bmV0bGlua19leHBfZHVtcF9leHBlY3RgIHRvIG1hc2sgYGV4cC1cXHUwMDNlZmxhZ3NgIHdpdGggYE5GX0NUX0VYUEVDVF9NQVNLYCBiZWZvcmUgc2VuZGluZyBpdCB0byB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIFRoaXMgcHJldmVudHMgbGVha2luZyBpbnRlcm5hbCBrZXJuZWwgZmxhZ3MgKHN1Y2ggYXMgYE5GX0NUX0VYUEVDVF9ERUFEYCkgdG8gdXNlcnNwYWNlLiBUaGUgYGZsYWdzYCBmaWVsZCBpdHNlbGYgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQ7IHRoZSBpc3N1ZSBpcyBhbiBpbmZvcm1hdGlvbiBsZWFrIG9mIGludGVybmFsIHN0YXRlLCBub3QgYSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBjdG5ldGxpbmtfZXhwX2R1bXBfZXhwZWN0YCB0byBtYXNrIGBleHAtXFx1MDAzZWZsYWdzYCB3aXRoIGBORl9DVF9FWFBFQ1RfTUFTS2AgYmVmb3JlIHNlbmRpbmcgaXQgdG8gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBUaGlzIHByZXZlbnRzIGxlYWtpbmcgaW50ZXJuYWwga2VybmVsIGZsYWdzIChzdWNoIGFzIGBORl9DVF9FWFBFQ1RfREVBRGApIHRvIHVzZXJzcGFjZS4gVGhlIGBmbGFnc2AgZmllbGQgaXRzZWxmIGlzIHByb3Blcmx5IGluaXRpYWxpemVkOyB0aGUgaXNzdWUgaXMgYW4gaW5mb3JtYXRpb24gbGVhayBvZiBpbnRlcm5hbCBzdGF0ZSwgbm90IGEgbGVhayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gS01TQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0IHVzZXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSBoZXJlLiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowg2psn[1] Phase: Succeeded StartedAt: 2026-08-12 23:55:15 +0000 UTC FinishedAt: 2026-08-12 23:55:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 23:55:15 +0000 UTC FinishedAt: 2026-08-12 23:55:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2] Phase: Succeeded StartedAt: 2026-08-12 23:55:15 +0000 UTC FinishedAt: 2026-08-13 03:39:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-12 23:55:15 +0000 UTC FinishedAt: 2026-08-13 03:39:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-12 23:55:15 +0000 UTC FinishedAt: 2026-08-12 23:55:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-12 23:55:15 +0000 UTC FinishedAt: 2026-08-12 23:55:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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-workflowg2psn/series-workflowg2psn-convert-artifact-2524359630/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-12 23:55:25 +0000 UTC FinishedAt: 2026-08-13 00:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-12 23:55:25 +0000 UTC FinishedAt: 2026-08-13 00:14:42 +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:*d26052de-8966-48b2-ba68-b6131ab05336,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-workflowg2psn/series-workflowg2psn-convert-artifact-2524359630/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": "6b3c5a9e-7728-4389-81dd-d09985550566", "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-workflowg2psn/series-workflowg2psn-build-action-4286387252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-12 23:55:25 +0000 UTC FinishedAt: 2026-08-13 00:14:32 +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:*d26052de-8966-48b2-ba68-b6131ab05336,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-workflowg2psn/series-workflowg2psn-convert-artifact-2524359630/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": "6b3c5a9e-7728-4389-81dd-d09985550566", "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-workflowg2psn/series-workflowg2psn-build-action-4286387252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 00:14:42 +0000 UTC FinishedAt: 2026-08-13 00:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 00:14:42 +0000 UTC FinishedAt: 2026-08-13 00:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 00:14:42 +0000 UTC FinishedAt: 2026-08-13 00:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 00:14:42 +0000 UTC FinishedAt: 2026-08-13 00:14:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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-workflowg2psn/series-workflowg2psn-convert-artifact-2843128001/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 00:14:52 +0000 UTC FinishedAt: 2026-08-13 00:16:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 00:14:52 +0000 UTC FinishedAt: 2026-08-13 00:16:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6b3c5a9e-7728-4389-81dd-d09985550566,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-workflowg2psn/series-workflowg2psn-build-action-4286387252/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-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 00:16:53 +0000 UTC FinishedAt: 2026-08-13 00:16:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 00:16:53 +0000 UTC FinishedAt: 2026-08-13 00:16:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 00:16:53 +0000 UTC FinishedAt: 2026-08-13 00:33:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 00:16:53 +0000 UTC FinishedAt: 2026-08-13 00:33:49 +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:*d26052de-8966-48b2-ba68-b6131ab05336,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-workflowg2psn/series-workflowg2psn-convert-artifact-2843128001/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": "5ea9915c-ccb3-4af3-a8c8-21ed48206e83", "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-workflowg2psn/series-workflowg2psn-build-action-1331219021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 00:16:53 +0000 UTC FinishedAt: 2026-08-13 00:33:39 +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:*d26052de-8966-48b2-ba68-b6131ab05336,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-workflowg2psn/series-workflowg2psn-convert-artifact-2843128001/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": "5ea9915c-ccb3-4af3-a8c8-21ed48206e83", "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-workflowg2psn/series-workflowg2psn-build-action-1331219021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 00:33:49 +0000 UTC FinishedAt: 2026-08-13 00:33:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 00:33:49 +0000 UTC FinishedAt: 2026-08-13 00:33:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 00:33:49 +0000 UTC FinishedAt: 2026-08-13 00:35:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 00:33:49 +0000 UTC FinishedAt: 2026-08-13 00:35:43 +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:*5ea9915c-ccb3-4af3-a8c8-21ed48206e83,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-workflowg2psn/series-workflowg2psn-build-action-1331219021/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-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 00:35:52 +0000 UTC FinishedAt: 2026-08-13 03:39:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 00:35:52 +0000 UTC FinishedAt: 2026-08-13 03:39:51 +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":["ctnetlink_get_expect","ctnetlink_expect_event"],"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:*6b3c5a9e-7728-4389-81dd-d09985550566,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5ea9915c-ccb3-4af3-a8c8-21ed48206e83,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-workflowg2psn/series-workflowg2psn-build-action-4286387252/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-workflowg2psn/series-workflowg2psn-build-action-1331219021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 00:35:52 +0000 UTC FinishedAt: 2026-08-13 00:36:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 00:35:52 +0000 UTC FinishedAt: 2026-08-13 00:35:57 +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":["ctnetlink_get_expect","ctnetlink_expect_event"],"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-workflowg2psn/series-workflowg2psn-convert-artifact-3501276502/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 00:35:52 +0000 UTC FinishedAt: 2026-08-13 00:35:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 00:35:52 +0000 UTC FinishedAt: 2026-08-13 00:35:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 00:35:52 +0000 UTC FinishedAt: 2026-08-13 00:35:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 00:36:02 +0000 UTC FinishedAt: 2026-08-13 03:39:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2psn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["ctnetlink_get_expect","ctnetlink_expect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"736fb8632217bd27da6b2e3f1f8cbbe3193fc2d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK"],"series_id":"8f5b232f-ba5c-40ec-8c83-192dae00747d","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 00:36:02 +0000 UTC FinishedAt: 2026-08-13 03:39:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6b3c5a9e-7728-4389-81dd-d09985550566,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5ea9915c-ccb3-4af3-a8c8-21ed48206e83,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-workflowg2psn/series-workflowg2psn-build-action-4286387252/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-workflowg2psn/series-workflowg2psn-build-action-1331219021/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-workflowg2psn/series-workflowg2psn-convert-artifact-3501276502/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,}