Name: series-workfloww9hqk Phase: Failed StartedAt: 2026-08-10 06:09:03 +0000 UTC FinishedAt: 2026-08-10 06:11:53 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9hqk[0] Phase: Succeeded StartedAt: 2026-08-10 06:09:03 +0000 UTC FinishedAt: 2026-08-10 06:11:29 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9hqk[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 06:09:03 +0000 UTC FinishedAt: 2026-08-10 06:11:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgbWVtc2V0IHRvIGluaXRpYWxpemUgYSBsYXRlbmN5IHRyYWNlIGFycmF5LCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBpbmZvIGxlYWsuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNGMwMDc1MzUwOGQ5NTIxNGU2Y2QwNTAzYzM5MjJjZDk5MzhiYWJmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTA6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9yZWN2LmMgYi9uZXQvcmRzL3JlY3YuY1xuaW5kZXggY2YzODg0ZDg3OTMxOS4uMGJkMjljZjRhNDBmMyAxMDA2NDRcbi0tLSBhL25ldC9yZHMvcmVjdi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL3JlY3YuY1xuQEAgLTY1LDYgJiM0Mzs2NSw4IEBAIHZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3AsXG4gXHRpbmMtXHUwMDNlaV9zYWRkciA9ICpzYWRkcjtcbiBcdGluYy1cdTAwM2VpX3VzZXJjb3B5LnJkbWFfY29va2llID0gMDtcbiBcdGluYy1cdTAwM2VpX3VzZXJjb3B5LnJ4X3RzdGFtcCA9IGt0aW1lX3NldCgwLCAwKTtcbiYjNDM7XG4mIzQzO1x0bWVtc2V0KGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSkpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChyZHNfaW5jX3BhdGhfaW5pdCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG1lbXNldCB0byBpbml0aWFsaXplIGEgbGF0ZW5jeSB0cmFjZSBhcnJheSwgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mbyBsZWFrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDRjMDA3NTM1MDhkOTUyMTRlNmNkMDUwM2MzOTIyY2Q5OTM4YmFiZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDA2OjEwOjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3Jkcy9yZWN2LmMgYi9uZXQvcmRzL3JlY3YuYwppbmRleCBjZjM4ODRkODc5MzE5Li4wYmQyOWNmNGE0MGYzIDEwMDY0NAotLS0gYS9uZXQvcmRzL3JlY3YuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL3JlY3YuYwpAQCAtNjUsNiAmIzQzOzY1LDggQEAgdm9pZCByZHNfaW5jX3BhdGhfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubl9wYXRoICpjcCwKIAlpbmMtJmd0O2lfc2FkZHIgPSAqc2FkZHI7CiAJaW5jLSZndDtpX3VzZXJjb3B5LnJkbWFfY29va2llID0gMDsKIAlpbmMtJmd0O2lfdXNlcmNvcHkucnhfdHN0YW1wID0ga3RpbWVfc2V0KDAsIDApOwomIzQzOwomIzQzOwltZW1zZXQoaW5jLSZndDtpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy0mZ3Q7aV9yeF9sYXRfdHJhY2UpKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHJkc19pbmNfcGF0aF9pbml0KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3Jkcy9yZWN2LmNgLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIHRoaW5nIHRoaXMgcGF0Y2ggZG9lcyBpcyBhZGQgYSBgbWVtc2V0YCBjYWxsIHdpdGhpbiB0aGUgYHJkc19pbmNfcGF0aF9pbml0YCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbml0aWFsaXppbmcgYGluYy0mZ3Q7aV9yeF9sYXRfdHJhY2VgIHRvIHplcm8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtZW1vcnkgaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBSRFMgc3Vic3lzdGVtLCBhbmQgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiBgaV9yeF9sYXRfdHJhY2VgLiBJcyBpdCBqdXN0IHNvbWUgaW5zdHJ1bWVudGF0aW9uLCBvciBkb2VzIGl0IHJlcHJlc2VudCBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSBhIHRhcmdldCBmb3IgZnV6emluZz8gS25vd2luZyB0aGUgZGF0YSB0eXBlIGFuZCBwdXJwb3NlIG9mIHRoYXQgbWVtYmVyIGlzIGNydWNpYWwuIFJpZ2h0IG5vdywgaXQganVzdCBzZWVtcyBsaWtlIGEgc2ltcGxlIGBtZW1zZXRgIGluIGFuIGluaXQgZnVuY3Rpb24sIG5vdGhpbmcgb3ZlcnRseSBjb21wbGV4LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgYHJkc19pbmNfcGF0aF9pbml0YCBmdW5jdGlvbiBpdHNlbGYgYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGhpbiBgbmV0L3Jkcy9yZWN2LmNgLiBJIG5lZWQgbW9yZSBjb250ZXh0IHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jkc19pbmNfcGF0aF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Jkcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9yZHMuaD05MzU9dm9pZCByZHNfaW5jX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sXG5uZXQvcmRzL3Jkcy5oLTkzNi1cdFx0ICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKTtcbm5ldC9yZHMvcmRzLmg6OTM3OnZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY29ubixcbm5ldC9yZHMvcmRzLmgtOTM4LVx0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7XG4tLVxubmV0L3Jkcy9yZWN2LmM9NTY9RVhQT1JUX1NZTUJPTF9HUEwocmRzX2luY19pbml0KTtcbm5ldC9yZHMvcmVjdi5jLTU3LVxubmV0L3Jkcy9yZWN2LmM6NTg6dm9pZCByZHNfaW5jX3BhdGhfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubl9wYXRoICpjcCxcbm5ldC9yZHMvcmVjdi5jLTU5LVx0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICAqc2FkZHIpXG4tLVxubmV0L3Jkcy9yZWN2LmMtNzAtfVxubmV0L3Jkcy9yZWN2LmM6NzE6RVhQT1JUX1NZTUJPTF9HUEwocmRzX2luY19wYXRoX2luaXQpO1xubmV0L3Jkcy9yZWN2LmMtNzItXG4tLVxubmV0L3Jkcy90Y3BfcmVjdi5jPTE1NT1zdGF0aWMgaW50IHJkc190Y3BfZGF0YV9yZWN2KHJlYWRfZGVzY3JpcHRvcl90ICpkZXNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9yZHMvdGNwX3JlY3YuYy0xODEtXHRcdFx0cmRzZGVidWcoXCYjMzQ7YWxsb2NhdGVkIHRpbmMgJXBcXG5cJiMzNDssIHRpbmMpO1xubmV0L3Jkcy90Y3BfcmVjdi5jOjE4MjpcdFx0XHRyZHNfaW5jX3BhdGhfaW5pdChcdTAwMjZ0aW5jLVx1MDAzZXRpX2luYywgY3AsXG5uZXQvcmRzL3RjcF9yZWN2LmMtMTgzLVx0XHRcdFx0XHQgIFx1MDAyNmNwLVx1MDAzZWNwX2Nvbm4tXHUwMDNlY19mYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipMYXRlbmN5IFRyYWNpbmcgSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBzdGFydHMgYnkgc2V0dGluZyBgaV9yeF9sYXRfdHJhY2VgIHRvIHplcm8uIFN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGl0JiMzOTtzIGluaXRpYWxpemluZyB0aGF0IGxhdGVuY3kgdHJhY2tpbmcgdHJhY2UgYXJyYXkuIEkgaW1tZWRpYXRlbHkgd2FudCB0byBkaWcgaW50byBob3cgdGhpcyBhcnJheSBpcyAqYWN0dWFsbHkqIHVzZWQsIHRob3VnaC4gS25vd2luZyBpdCYjMzk7cyB6ZXJvZWQgaXMgYSBzdGFydGluZyBwb2ludCwgYnV0IHRoZSByZWFsIG1lYXQgaXMgaW4gdGhlIHN1YnNlcXVlbnQgb3BlcmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBldmVudHMgYXJlIGJlaW5nIHRpbWVzdGFtcGVkLCBob3cgdGhlc2UgdGltZXN0YW1wcyBhcmUgc3RvcmVkIGluIHRoZSBhcnJheSwgYW5kIHRoZW4sIGNydWNpYWxseSwgaG93IHRoaXMgZGF0YSBpcyBhbmFseXplZCB0byBwcm92aWRlIGluc2lnaHQgaW50byByZWNlaXZlIHBhdGggbGF0ZW5jeS4gU28sIHdoZXJlIGRvZXMgdGhpcyBgaV9yeF9sYXRfdHJhY2VgIHNob3cgdXAgaW4gdGhlIGNvZGU/IExldCYjMzk7cyB0cmFjZSBpdHMgdXNhZ2UgYW5kIHNlZSBpZiBhbnl0aGluZyBpbnRlcmVzdGluZyBqdW1wcyBvdXQuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGxhdGVuY3kgbWVhc3VyZW1lbnRzIGFyZSBiZWluZyBjYWxjdWxhdGVkIGFuZCBwcmVzZW50ZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhleSBhcmUgZGVhbGluZyB3aXRoIGFueSBjb3JuZXIgY2FzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aV9yeF9sYXRfdHJhY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmRzL2liX3JlY3YuYz04NDk9c3RhdGljIHZvaWQgcmRzX2liX3Byb2Nlc3NfcmVjdihzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sXG4tLVxubmV0L3Jkcy9pYl9yZWN2LmMtOTI3LVx0XHRoZHIgPSBcdTAwMjZpYmluYy1cdTAwM2VpaV9pbmMuaV9oZHI7XG5uZXQvcmRzL2liX3JlY3YuYzo5Mjg6XHRcdGliaW5jLVx1MDAzZWlpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0hEUl0gPVxubmV0L3Jkcy9pYl9yZWN2LmMtOTI5LVx0XHRcdFx0bG9jYWxfY2xvY2soKTtcbi0tXG5uZXQvcmRzL2liX3JlY3YuYy05MzEtXHRcdGljLVx1MDAzZWlfcmVjdl9kYXRhX3JlbSA9IGJlMzJfdG9fY3B1KGhkci1cdTAwM2VoX2xlbik7XG5uZXQvcmRzL2liX3JlY3YuYzo5MzI6XHRcdGliaW5jLVx1MDAzZWlpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX1NUQVJUXSA9XG5uZXQvcmRzL2liX3JlY3YuYy05MzMtXHRcdFx0XHRsb2NhbF9jbG9jaygpO1xuLS1cbm5ldC9yZHMvcmRzLmg9MzAwPXN0cnVjdCByZHNfaW5jb21pbmcge1xuLS1cbm5ldC9yZHMvcmRzLmgtMzA5LVx0c3RydWN0IHJkc19pbmNfdXNlcmNvcHkgaV91c2VyY29weTtcbm5ldC9yZHMvcmRzLmg6MzEwOlx0dTY0XHRcdFx0aV9yeF9sYXRfdHJhY2VbUkRTX1JYX01BWF9UUkFDRVNdO1xubmV0L3Jkcy9yZHMuaC0zMTEtfTtcbi0tXG5uZXQvcmRzL3JlY3YuYz00ND12b2lkIHJkc19pbmNfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcbi0tXG5uZXQvcmRzL3JlY3YuYy01My1cbm5ldC9yZHMvcmVjdi5jOjU0Olx0bWVtc2V0KGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSkpO1xubmV0L3Jkcy9yZWN2LmMtNTUtfVxuLS1cbm5ldC9yZHMvcmVjdi5jPTU4PXZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3AsXG4tLVxubmV0L3Jkcy9yZWN2LmMtNjgtXG5uZXQvcmRzL3JlY3YuYzo2OTpcdG1lbXNldChpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2UsIDAsIHNpemVvZihpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2UpKTtcbm5ldC9yZHMvcmVjdi5jLTcwLX1cbi0tXG5uZXQvcmRzL3JlY3YuYz0zMTg9dm9pZCByZHNfcmVjdl9pbmNvbWluZyhzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsXG4tLVxubmV0L3Jkcy9yZWN2LmMtNDM1LVx0XHRyZHNfaW5jX2FkZHJlZihpbmMpO1xubmV0L3Jkcy9yZWN2LmM6NDM2Olx0XHRpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2VbUkRTX01TR19SWF9FTkRdID0gbG9jYWxfY2xvY2soKTtcbm5ldC9yZHMvcmVjdi5jLTQzNy1cdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZpbmMtXHUwMDNlaV9pdGVtLCBcdTAwMjZycy1cdTAwM2Vyc19yZWN2X3F1ZXVlKTtcbi0tXG5uZXQvcmRzL3JlY3YuYz01OTQ9c3RhdGljIGludCByZHNfY21zZ19yZWN2KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IG1zZ2hkciAqbXNnLFxuLS1cbm5ldC9yZHMvcmVjdi5jLTYzMy1cdFx0bWVtc2V0KFx1MDAyNnQsIDAsIHNpemVvZih0KSk7XG5uZXQvcmRzL3JlY3YuYzo2MzQ6XHRcdGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0NNU0ddID0gbG9jYWxfY2xvY2soKTtcbm5ldC9yZHMvcmVjdi5jLTYzNS1cdFx0dC5yeF90cmFjZXMgPSAgcnMtXHUwMDNlcnNfcnhfdHJhY2VzO1xuLS1cbm5ldC9yZHMvcmVjdi5jLTYzOC1cdFx0XHR0LnJ4X3RyYWNlX3Bvc1tpXSA9IGo7XG5uZXQvcmRzL3JlY3YuYzo2Mzk6XHRcdFx0dC5yeF90cmFjZVtpXSA9IGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZVtqICYjNDM7IDFdIC1cbm5ldC9yZHMvcmVjdi5jOjY0MDpcdFx0XHRcdFx0ICBpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2Vbal07XG5uZXQvcmRzL3JlY3YuYy02NDEtXHRcdH1cbi0tXG5uZXQvcmRzL3RjcF9yZWN2LmM9MTU1PXN0YXRpYyBpbnQgcmRzX3RjcF9kYXRhX3JlY3YocmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3Jkcy90Y3BfcmVjdi5jLTE4My1cdFx0XHRcdFx0ICBcdTAwMjZjcC1cdTAwM2VjcF9jb25uLVx1MDAzZWNfZmFkZHIpO1xubmV0L3Jkcy90Y3BfcmVjdi5jOjE4NDpcdFx0XHR0aW5jLVx1MDAzZXRpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0hEUl0gPVxubmV0L3Jkcy90Y3BfcmVjdi5jLTE4NS1cdFx0XHRcdFx0bG9jYWxfY2xvY2soKTtcbi0tXG5uZXQvcmRzL3RjcF9yZWN2LmMtMjEwLVx0XHRcdFx0XHRiZTMyX3RvX2NwdSh0aW5jLVx1MDAzZXRpX2luYy5pX2hkci5oX2xlbik7XG5uZXQvcmRzL3RjcF9yZWN2LmM6MjExOlx0XHRcdFx0dGluYy1cdTAwM2V0aV9pbmMuaV9yeF9sYXRfdHJhY2VbUkRTX01TR19SWF9TVEFSVF0gPVxubmV0L3Jkcy90Y3BfcmVjdi5jLTIxMi1cdFx0XHRcdFx0bG9jYWxfY2xvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjY0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgUkRTIExhdGVuY3kgVHJhY2UgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYG1lbXNldGAgd2l0aGluIGByZHNfaW5jX3BhdGhfaW5pdGAuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCYjMzk7cyBtZXJlbHkgY29zbWV0aWMg4oCTIHNldHRpbmcgYSBsYXRlbmN5IHRyYWNlIGFycmF5IHRvIHplcm8uIFRoaXMgYGlfcnhfbGF0X3RyYWNlYCB2YXJpYWJsZSBhcHBlYXJzIHRvIGJlIGV4Y2x1c2l2ZWx5IGVtcGxveWVkIGJ5IGByZHNfY21zZ19yZWN2YCwgYW5kIGl0cyBzb2xlIHB1cnBvc2UgaXMgdG8gcmVwb3J0IGxhdGVuY3kgdHJhY2VzIHZpYSBhIGNtc2cgKGBSRFNfQ01TR19SWFBBVEhfTEFURU5DWWApLiBJdCYjMzk7cyBhbGwganVzdCB0cmFjaW5nLCBub3QgY3JpdGljYWwgZnVuY3Rpb25hbGl0eS4KCldhaXQgYSBzZWNvbmTigKYgaWYgdGhpcyBhcnJheSBpc24mIzM5O3QgZXhwbGljaXRseSBpbml0aWFsaXplZCwgaXQgKmNvdWxkKiBwb3RlbnRpYWxseSBsZWFrIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2UgdGhyb3VnaCB0aGF0IGNtc2chIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSB2dWxuZXJhYmlsaXR5IGlmIGl0JiMzOTtzIG5vdCBoYW5kbGVkIGNhcmVmdWxseS4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgcmRzX2Ntc2dfcmVjdmAgdG8gZW5zdXJlIHRoaXMgaXNuJiMzOTt0IHRoZSBjYXNlLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JEU19DTVNHX1JYUEFUSF9MQVRFTkNZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Jkcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9yZWN2LmM9NTk0PXN0YXRpYyBpbnQgcmRzX2Ntc2dfcmVjdihzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvcmRzL3JlY3YuYy02NDItXG5uZXQvcmRzL3JlY3YuYzo2NDM6XHRcdHJldCA9IHB1dF9jbXNnKG1zZywgU09MX1JEUywgUkRTX0NNU0dfUlhQQVRIX0xBVEVOQ1ksXG5uZXQvcmRzL3JlY3YuYy02NDQtXHRcdFx0ICAgICAgIHNpemVvZih0KSwgXHUwMDI2dCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byBgcmRzX2Ntc2dfcmVjdmAqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiBgcmRzX2Ntc2dfcmVjdmAgbm93LCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9yZHMvcmVjdi5jYC4gVGhlIG5hbWUgaXRzZWxmIGlzIGEgcHJldHR5IGdvb2QgY2x1ZTsgaXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgcHJlc3VtYWJseSBkZWFsaW5nIHdpdGggcmVjZWl2aW5nIENvbnRyb2wgTWVzc2FnZXMgKGNtc2dzKSB3aXRoaW4gdGhlIFJEUyAoUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cykgY29udGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBwcm9iYWJseSBoYW5kbGVzIHRoZSBleHRyYWN0aW9uIGFuZCBwcm9jZXNzaW5nIG9mIG91dC1vZi1iYW5kIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGFuIFJEUyByZWNlaXZlIG9wZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgdW5kZXJseWluZyBuZXR3b3JrIHN0YWNrLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBSRFMgY29ubmVjdGlvbiBzdGF0ZS4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWTigJRwcm9iYWJseSBgc3RydWN0IG1zZ2hkcmAsIGBzdHJ1Y3QgY21zZ2hkcmAsIGFuZCBhbnl0aGluZyBSRFMtc3BlY2lmaWMgbGlrZSB0aGUgYHJkc19jb25uZWN0aW9uYCBhbmQgYXNzb2NpYXRlZCBidWZmZXJzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgY29udHJvbCBtZXNzYWdlcywgc3BlY2lmaWNhbGx5IHdoZW4gaXQgY29tZXMgdG8gUkRNQS4gSSBzdXNwZWN0IGl0IHdvdWxkIGNoZWNrIGZvciBhbnkgUkRNQSBoaW50cyAobGlrZSByZW1vdGUga2V5IHZhbHVlcykuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBkZWFscyB3aXRoIGZyYWdtZW50YXRpb24gYW5kIHJlYXNzZW1ibHksIGFuZCBhbHNvIGhvdyBpdCBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgY21zZ3MgdGhhdCBjYW4gYmUgZXhwZWN0ZWQsIGxpa2UgUkRNQSBvcGVyYXRpb25zIG9yIHBvdGVudGlhbCBjb25uZWN0aW9uIG1hbmFnZW1lbnQgbWVzc2FnZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3Jkcy9yZWN2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYyMDpcdFxuIDYyMTpcdFx0XHRcdHJldCA9IHB1dF9jbXNnKG1zZywgU09MX1NPQ0tFVCwgU09fVElNRVNUQU1QX05FVyxcbiA2MjI6XHRcdFx0XHRcdCAgICAgICBzaXplb2Yoc2tfdHYpLCBcdTAwMjZza190dik7XG4gNjIzOlx0XHRcdH1cbiA2MjQ6XHRcbiA2MjU6XHRcdFx0aWYgKHJldClcbiA2MjY6XHRcdFx0XHRnb3RvIG91dDtcbiA2Mjc6XHRcdH1cbiA2Mjg6XHRcbiA2Mjk6XHRcdGlmIChycy1cdTAwM2Vyc19yeF90cmFjZXMpIHtcbiA2MzA6XHRcdFx0c3RydWN0IHJkc19jbXNnX3J4X3RyYWNlIHQ7XG4gNjMxOlx0XHRcdGludCBpLCBqO1xuIDYzMjpcdFxuIDYzMzpcdFx0XHRtZW1zZXQoXHUwMDI2dCwgMCwgc2l6ZW9mKHQpKTtcbiA2MzQ6XHRcdFx0aW5jLVx1MDAzZWlfcnhfbGF0X3RyYWNlW1JEU19NU0dfUlhfQ01TR10gPSBsb2NhbF9jbG9jaygpO1xuIDYzNTpcdFx0XHR0LnJ4X3RyYWNlcyA9ICBycy1cdTAwM2Vyc19yeF90cmFjZXM7XG4gNjM2Olx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHJzLVx1MDAzZXJzX3J4X3RyYWNlczsgaSYjNDM7JiM0MzspIHtcbiA2Mzc6XHRcdFx0XHRqID0gcnMtXHUwMDNlcnNfcnhfdHJhY2VbaV07XG4gNjM4Olx0XHRcdFx0dC5yeF90cmFjZV9wb3NbaV0gPSBqO1xuIDYzOTpcdFx0XHRcdHQucnhfdHJhY2VbaV0gPSBpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2VbaiAmIzQzOyAxXSAtXG4gNjQwOlx0XHRcdFx0XHRcdCAgaW5jLVx1MDAzZWlfcnhfbGF0X3RyYWNlW2pdO1xuIDY0MTpcdFx0XHR9XG4gNjQyOlx0XG4gNjQzOlx0XHRcdHJldCA9IHB1dF9jbXNnKG1zZywgU09MX1JEUywgUkRTX0NNU0dfUlhQQVRIX0xBVEVOQ1ksXG4gNjQ0Olx0XHRcdFx0ICAgICAgIHNpemVvZih0KSwgXHUwMDI2dCk7XG4gNjQ1Olx0XHRcdGlmIChyZXQpXG4gNjQ2Olx0XHRcdFx0Z290byBvdXQ7XG4gNjQ3Olx0XHR9XG4gNjQ4Olx0XG4gNjQ5Olx0b3V0OlxuIDY1MDpcdFx0cmV0dXJuIHJldDtcbiA2NTE6XHR9XG4gNjUyOlx0XG4gNjUzOlx0c3RhdGljIGJvb2wgcmRzX3JlY3Ztc2dfemNvb2tpZShzdHJ1Y3QgcmRzX3NvY2sgKnJzLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4gNjU0Olx0e1xuIDY1NTpcdFx0c3RydWN0IHJkc19tc2dfemNvcHlfcXVldWUgKnEgPSBcdTAwMjZycy1cdTAwM2Vyc196Y29va2llX3F1ZXVlO1xuIDY1NjpcdFx0c3RydWN0IHJkc19tc2dfemNvcHlfaW5mbyAqaW5mbyA9IE5VTEw7XG4gNjU3Olx0XHRzdHJ1Y3QgcmRzX3pjb3B5X2Nvb2tpZXMgKmRvbmU7XG4gNjU4Olx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIDY1OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg0CgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogNTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyBldmVuIHdvcnRoIGJvdGhlcmluZyB3aXRoIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlPyYjMzQ7IEl0JiMzOTtzIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGxlYWsgaW4gYGluYy0mZ3Q7aV9yeF9sYXRfdHJhY2VgLiBUaGUgZml4PyBKdXN0IGEgYG1lbXNldGAgY2FsbCB0byB6ZXJvIG91dCB0aGUgYXJyYXkuIEl0JiMzOTtzIHVzZWQgZm9yIGxhdGVuY3kgdHJhY2luZywgbm90aGluZyBjb21wbGV4LgoKTm93LCB0aGUgcHJvbXB0IGdpdmVzIG1lIHNvbWUgcHJldHR5IGNsZWFyIGd1aWRhbmNlOiBpdCB3YW50cyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggKm9ubHkqIGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgbGlrZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIEtjb25maWcgY2hhbmdlcywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgb3IgdHdlYWtzIHRvIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgYWxzbyBsaXN0cyBzb21lIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW9zLCBsaWtlIGNvZGUgaW4gdGVhcmRvd24gY2FsbGJhY2tzIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4KCkluaXRpYWxseSwgSSB0aG91Z2h0LCAmIzM0O1dlbGwsIGl0JiMzOTtzIG5vdCBzdHJpY3RseSBvbmUgb2YgdGhvc2UgbGlzdGVkIGNhdGVnb3JpZXMuIEJ1dCBpdCAqaXMqIGp1c3QgYSBzaW5nbGUgYG1lbXNldGAuJiMzNDsgRG9lcyB0aGF0IGZ1bmN0aW9uYWxseSBjaGFuZ2UgaG93IHRoZSBjb2RlIHJ1bnM/IE5vLCBpdCBqdXN0IGluaXRpYWxpemVzIG1lbW9yeS4gSWYgaXQgKndhcyogYW4gaW5mbyBsZWFrIGZpeCwgaXQgZG9lc24mIzM5O3QgcmVhbGx5IGFsdGVyIGV4ZWN1dGlvbi4KCk15IGluc3RpbmN0IGlzIHNheWluZyBmdXp6aW5nIHdvbiYjMzk7dCB1bmNvdmVyIGFueXRoaW5nIG5ldyBoZXJlLiBJdCYjMzk7cyBwcmV2ZW50aW5nIEtNU0FOIG9yIHNvbWV0aGluZyBzaW1pbGFyIGZyb20gY29tcGxhaW5pbmcsIG9yIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVhay4gTm8gbmV3IGxvZ2ljIGlzIGludHJvZHVjZWQgYW5kIHRoZSBleGVjdXRpb24gZmxvdyB3b24mIzM5O3QgY2hhbmdlIGluIGFueSBtYW5uZXIgdGhhdCBuZWVkcyBmdXp6aW5nLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBidXQgdGhlIHBhdGNoIGlzIGluY3JlZGlibHkgc2ltcGxlOgoKYGBgYwogCWluYy0mZ3Q7aV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7CiAJaW5jLSZndDtpX3VzZXJjb3B5LnJ4X3RzdGFtcCA9IGt0aW1lX3NldCgwLCAwKTsKJiM0MzsKJiM0MzsJbWVtc2V0KGluYy0mZ3Q7aV9yeF9sYXRfdHJhY2UsIDAsIHNpemVvZihpbmMtJmd0O2lfcnhfbGF0X3RyYWNlKSk7CiB9CmBgYAoKSXQmIzM5O3MgKmxpdGVyYWxseSoganVzdCB0aGF0IGBtZW1zZXRgLiBTbywgYmFzZWQgb24gdGhhdCBhbmQgdGhlIGRpcmVjdGlvbnMgZ2l2ZW4sIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBtZW1zZXQgdG8gaW5pdGlhbGl6ZSBhIGxhdGVuY3kgdHJhY2UgYXJyYXksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGluZm8gbGVhay4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCByZXF1aXJlcyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgbWVtc2V0IHRvIGluaXRpYWxpemUgYSBsYXRlbmN5IHRyYWNlIGFycmF5LCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBpbmZvIGxlYWsuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjExPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMDo0OS41NjAyNjg4NDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTE0NDM0MDg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIG1lbXNldCB0byBpbml0aWFsaXplIGEgbGF0ZW5jeSB0cmFjZSBhcnJheSwgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mbyBsZWFrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMDo0OS41NjAyNzU1ODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTMzMzIxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNGMwMDc1MzUwOGQ5NTIxNGU2Y2QwNTAzYzM5MjJjZDk5MzhiYWJmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDA2OjEwOjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmNcXG5pbmRleCBjZjM4ODRkODc5MzE5Li4wYmQyOWNmNGE0MGYzIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvcmVjdi5jXFxuKysrIGIvbmV0L3Jkcy9yZWN2LmNcXG5AQCAtNjUsNiArNjUsOCBAQCB2b2lkIHJkc19pbmNfcGF0aF9pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uX3BhdGggKmNwLFxcbiBcXHRpbmMtXFx1MDAzZWlfc2FkZHIgPSAqc2FkZHI7XFxuIFxcdGluYy1cXHUwMDNlaV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7XFxuIFxcdGluYy1cXHUwMDNlaV91c2VyY29weS5yeF90c3RhbXAgPSBrdGltZV9zZXQoMCwgMCk7XFxuK1xcbitcXHRtZW1zZXQoaW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cXHUwMDNlaV9yeF9sYXRfdHJhY2UpKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChyZHNfaW5jX3BhdGhfaW5pdCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMDo1MS4yNTQxNjM0NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzQ1MDQyMTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgbWVtc2V0IHRvIGluaXRpYWxpemUgYSBsYXRlbmN5IHRyYWNlIGFycmF5LCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBpbmZvIGxlYWsuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA0YzAwNzUzNTA4ZDk1MjE0ZTZjZDA1MDNjMzkyMmNkOTkzOGJhYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAwNjoxMDo0NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmNcbmluZGV4IGNmMzg4NGQ4NzkzMTkuLjBiZDI5Y2Y0YTQwZjMgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL3JlY3YuY1xuKysrIGIvbmV0L3Jkcy9yZWN2LmNcbkBAIC02NSw2ICs2NSw4IEBAIHZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3AsXG4gXHRpbmMtXHUwMDNlaV9zYWRkciA9ICpzYWRkcjtcbiBcdGluYy1cdTAwM2VpX3VzZXJjb3B5LnJkbWFfY29va2llID0gMDtcbiBcdGluYy1cdTAwM2VpX3VzZXJjb3B5LnJ4X3RzdGFtcCA9IGt0aW1lX3NldCgwLCAwKTtcbitcbitcdG1lbXNldChpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2UsIDAsIHNpemVvZihpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2UpKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocmRzX2luY19wYXRoX2luaXQpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTA6NTEuMjU0MTY0NTU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwNjEzMDYzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIFN1YnN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvcmRzL3JlY3YuY2AuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gdGhpbmcgdGhpcyBwYXRjaCBkb2VzIGlzIGFkZCBhIGBtZW1zZXRgIGNhbGwgd2l0aGluIHRoZSBgcmRzX2luY19wYXRoX2luaXRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgaW5pdGlhbGl6aW5nIGBpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2VgIHRvIHplcm8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtZW1vcnkgaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBSRFMgc3Vic3lzdGVtLCBhbmQgdGhhdCdzIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2lnbmlmaWNhbmNlIG9mIGBpX3J4X2xhdF90cmFjZWAuIElzIGl0IGp1c3Qgc29tZSBpbnN0cnVtZW50YXRpb24sIG9yIGRvZXMgaXQgcmVwcmVzZW50IHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nPyBLbm93aW5nIHRoZSBkYXRhIHR5cGUgYW5kIHB1cnBvc2Ugb2YgdGhhdCBtZW1iZXIgaXMgY3J1Y2lhbC4gUmlnaHQgbm93LCBpdCBqdXN0IHNlZW1zIGxpa2UgYSBzaW1wbGUgYG1lbXNldGAgaW4gYW4gaW5pdCBmdW5jdGlvbiwgbm90aGluZyBvdmVydGx5IGNvbXBsZXguIExldCdzIGRlbHZlIGludG8gdGhlIGByZHNfaW5jX3BhdGhfaW5pdGAgZnVuY3Rpb24gaXRzZWxmIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGhpbiBgbmV0L3Jkcy9yZWN2LmNgLiBJIG5lZWQgbW9yZSBjb250ZXh0IHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTA6NTYuNDYwMjk4OTEyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MzM1MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJkc19pbmNfcGF0aF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yZHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvcmRzLmg9OTM1PXZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9yZHMvcmRzLmgtOTM2LVxcdFxcdCAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7XFxubmV0L3Jkcy9yZHMuaDo5Mzc6dm9pZCByZHNfaW5jX3BhdGhfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubl9wYXRoICpjb25uLFxcbm5ldC9yZHMvcmRzLmgtOTM4LVxcdFxcdCAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKTtcXG4tLVxcbm5ldC9yZHMvcmVjdi5jPTU2PUVYUE9SVF9TWU1CT0xfR1BMKHJkc19pbmNfaW5pdCk7XFxubmV0L3Jkcy9yZWN2LmMtNTctXFxubmV0L3Jkcy9yZWN2LmM6NTg6dm9pZCByZHNfaW5jX3BhdGhfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubl9wYXRoICpjcCxcXG5uZXQvcmRzL3JlY3YuYy01OS1cXHRcXHQgICAgICAgc3RydWN0IGluNl9hZGRyICAqc2FkZHIpXFxuLS1cXG5uZXQvcmRzL3JlY3YuYy03MC19XFxubmV0L3Jkcy9yZWN2LmM6NzE6RVhQT1JUX1NZTUJPTF9HUEwocmRzX2luY19wYXRoX2luaXQpO1xcbm5ldC9yZHMvcmVjdi5jLTcyLVxcbi0tXFxubmV0L3Jkcy90Y3BfcmVjdi5jPTE1NT1zdGF0aWMgaW50IHJkc190Y3BfZGF0YV9yZWN2KHJlYWRfZGVzY3JpcHRvcl90ICpkZXNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3Jkcy90Y3BfcmVjdi5jLTE4MS1cXHRcXHRcXHRyZHNkZWJ1ZyhcXFwiYWxsb2NhdGVkIHRpbmMgJXBcXFxcblxcXCIsIHRpbmMpO1xcbm5ldC9yZHMvdGNwX3JlY3YuYzoxODI6XFx0XFx0XFx0cmRzX2luY19wYXRoX2luaXQoXFx1MDAyNnRpbmMtXFx1MDAzZXRpX2luYywgY3AsXFxubmV0L3Jkcy90Y3BfcmVjdi5jLTE4My1cXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZjcC1cXHUwMDNlY3BfY29ubi1cXHUwMDNlY19mYWRkcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEwOjU2LjU0NjYzNzUyNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTYxNjMzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkxhdGVuY3kgVHJhY2luZyBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggc3RhcnRzIGJ5IHNldHRpbmcgYGlfcnhfbGF0X3RyYWNlYCB0byB6ZXJvLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyBpdCdzIGluaXRpYWxpemluZyB0aGF0IGxhdGVuY3kgdHJhY2tpbmcgdHJhY2UgYXJyYXkuIEkgaW1tZWRpYXRlbHkgd2FudCB0byBkaWcgaW50byBob3cgdGhpcyBhcnJheSBpcyAqYWN0dWFsbHkqIHVzZWQsIHRob3VnaC4gS25vd2luZyBpdCdzIHplcm9lZCBpcyBhIHN0YXJ0aW5nIHBvaW50LCBidXQgdGhlIHJlYWwgbWVhdCBpcyBpbiB0aGUgc3Vic2VxdWVudCBvcGVyYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV2ZW50cyBhcmUgYmVpbmcgdGltZXN0YW1wZWQsIGhvdyB0aGVzZSB0aW1lc3RhbXBzIGFyZSBzdG9yZWQgaW4gdGhlIGFycmF5LCBhbmQgdGhlbiwgY3J1Y2lhbGx5LCBob3cgdGhpcyBkYXRhIGlzIGFuYWx5emVkIHRvIHByb3ZpZGUgaW5zaWdodCBpbnRvIHJlY2VpdmUgcGF0aCBsYXRlbmN5LiBTbywgd2hlcmUgZG9lcyB0aGlzIGBpX3J4X2xhdF90cmFjZWAgc2hvdyB1cCBpbiB0aGUgY29kZT8gTGV0J3MgdHJhY2UgaXRzIHVzYWdlIGFuZCBzZWUgaWYgYW55dGhpbmcgaW50ZXJlc3RpbmcganVtcHMgb3V0LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBsYXRlbmN5IG1lYXN1cmVtZW50cyBhcmUgYmVpbmcgY2FsY3VsYXRlZCBhbmQgcHJlc2VudGVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhleSBhcmUgZGVhbGluZyB3aXRoIGFueSBjb3JuZXIgY2FzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMTowMC43NDI4MDM3MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNDUwMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlfcnhfbGF0X3RyYWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yZHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvaWJfcmVjdi5jPTg0OT1zdGF0aWMgdm9pZCByZHNfaWJfcHJvY2Vzc19yZWN2KHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcXG4tLVxcbm5ldC9yZHMvaWJfcmVjdi5jLTkyNy1cXHRcXHRoZHIgPSBcXHUwMDI2aWJpbmMtXFx1MDAzZWlpX2luYy5pX2hkcjtcXG5uZXQvcmRzL2liX3JlY3YuYzo5Mjg6XFx0XFx0aWJpbmMtXFx1MDAzZWlpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0hEUl0gPVxcbm5ldC9yZHMvaWJfcmVjdi5jLTkyOS1cXHRcXHRcXHRcXHRsb2NhbF9jbG9jaygpO1xcbi0tXFxubmV0L3Jkcy9pYl9yZWN2LmMtOTMxLVxcdFxcdGljLVxcdTAwM2VpX3JlY3ZfZGF0YV9yZW0gPSBiZTMyX3RvX2NwdShoZHItXFx1MDAzZWhfbGVuKTtcXG5uZXQvcmRzL2liX3JlY3YuYzo5MzI6XFx0XFx0aWJpbmMtXFx1MDAzZWlpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX1NUQVJUXSA9XFxubmV0L3Jkcy9pYl9yZWN2LmMtOTMzLVxcdFxcdFxcdFxcdGxvY2FsX2Nsb2NrKCk7XFxuLS1cXG5uZXQvcmRzL3Jkcy5oPTMwMD1zdHJ1Y3QgcmRzX2luY29taW5nIHtcXG4tLVxcbm5ldC9yZHMvcmRzLmgtMzA5LVxcdHN0cnVjdCByZHNfaW5jX3VzZXJjb3B5IGlfdXNlcmNvcHk7XFxubmV0L3Jkcy9yZHMuaDozMTA6XFx0dTY0XFx0XFx0XFx0aV9yeF9sYXRfdHJhY2VbUkRTX1JYX01BWF9UUkFDRVNdO1xcbm5ldC9yZHMvcmRzLmgtMzExLX07XFxuLS1cXG5uZXQvcmRzL3JlY3YuYz00ND12b2lkIHJkc19pbmNfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcXG4tLVxcbm5ldC9yZHMvcmVjdi5jLTUzLVxcbm5ldC9yZHMvcmVjdi5jOjU0OlxcdG1lbXNldChpbmMtXFx1MDAzZWlfcnhfbGF0X3RyYWNlLCAwLCBzaXplb2YoaW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZSkpO1xcbm5ldC9yZHMvcmVjdi5jLTU1LX1cXG4tLVxcbm5ldC9yZHMvcmVjdi5jPTU4PXZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3AsXFxuLS1cXG5uZXQvcmRzL3JlY3YuYy02OC1cXG5uZXQvcmRzL3JlY3YuYzo2OTpcXHRtZW1zZXQoaW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cXHUwMDNlaV9yeF9sYXRfdHJhY2UpKTtcXG5uZXQvcmRzL3JlY3YuYy03MC19XFxuLS1cXG5uZXQvcmRzL3JlY3YuYz0zMTg9dm9pZCByZHNfcmVjdl9pbmNvbWluZyhzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsXFxuLS1cXG5uZXQvcmRzL3JlY3YuYy00MzUtXFx0XFx0cmRzX2luY19hZGRyZWYoaW5jKTtcXG5uZXQvcmRzL3JlY3YuYzo0MzY6XFx0XFx0aW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0VORF0gPSBsb2NhbF9jbG9jaygpO1xcbm5ldC9yZHMvcmVjdi5jLTQzNy1cXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZpbmMtXFx1MDAzZWlfaXRlbSwgXFx1MDAyNnJzLVxcdTAwM2Vyc19yZWN2X3F1ZXVlKTtcXG4tLVxcbm5ldC9yZHMvcmVjdi5jPTU5ND1zdGF0aWMgaW50IHJkc19jbXNnX3JlY3Yoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvcmRzL3JlY3YuYy02MzMtXFx0XFx0bWVtc2V0KFxcdTAwMjZ0LCAwLCBzaXplb2YodCkpO1xcbm5ldC9yZHMvcmVjdi5jOjYzNDpcXHRcXHRpbmMtXFx1MDAzZWlfcnhfbGF0X3RyYWNlW1JEU19NU0dfUlhfQ01TR10gPSBsb2NhbF9jbG9jaygpO1xcbm5ldC9yZHMvcmVjdi5jLTYzNS1cXHRcXHR0LnJ4X3RyYWNlcyA9ICBycy1cXHUwMDNlcnNfcnhfdHJhY2VzO1xcbi0tXFxubmV0L3Jkcy9yZWN2LmMtNjM4LVxcdFxcdFxcdHQucnhfdHJhY2VfcG9zW2ldID0gajtcXG5uZXQvcmRzL3JlY3YuYzo2Mzk6XFx0XFx0XFx0dC5yeF90cmFjZVtpXSA9IGluYy1cXHUwMDNlaV9yeF9sYXRfdHJhY2VbaiArIDFdIC1cXG5uZXQvcmRzL3JlY3YuYzo2NDA6XFx0XFx0XFx0XFx0XFx0ICBpbmMtXFx1MDAzZWlfcnhfbGF0X3RyYWNlW2pdO1xcbm5ldC9yZHMvcmVjdi5jLTY0MS1cXHRcXHR9XFxuLS1cXG5uZXQvcmRzL3RjcF9yZWN2LmM9MTU1PXN0YXRpYyBpbnQgcmRzX3RjcF9kYXRhX3JlY3YocmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvcmRzL3RjcF9yZWN2LmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmNwLVxcdTAwM2VjcF9jb25uLVxcdTAwM2VjX2ZhZGRyKTtcXG5uZXQvcmRzL3RjcF9yZWN2LmM6MTg0OlxcdFxcdFxcdHRpbmMtXFx1MDAzZXRpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0hEUl0gPVxcbm5ldC9yZHMvdGNwX3JlY3YuYy0xODUtXFx0XFx0XFx0XFx0XFx0bG9jYWxfY2xvY2soKTtcXG4tLVxcbm5ldC9yZHMvdGNwX3JlY3YuYy0yMTAtXFx0XFx0XFx0XFx0XFx0YmUzMl90b19jcHUodGluYy1cXHUwMDNldGlfaW5jLmlfaGRyLmhfbGVuKTtcXG5uZXQvcmRzL3RjcF9yZWN2LmM6MjExOlxcdFxcdFxcdFxcdHRpbmMtXFx1MDAzZXRpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX1NUQVJUXSA9XFxubmV0L3Jkcy90Y3BfcmVjdi5jLTIxMi1cXHRcXHRcXHRcXHRcXHRsb2NhbF9jbG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMTowMC44NDYyNTgwNDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDM2ODUzMzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgUkRTIExhdGVuY3kgVHJhY2UgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgbWVtc2V0YCB3aXRoaW4gYHJkc19pbmNfcGF0aF9pbml0YC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0J3MgbWVyZWx5IGNvc21ldGljIOKAkyBzZXR0aW5nIGEgbGF0ZW5jeSB0cmFjZSBhcnJheSB0byB6ZXJvLiBUaGlzIGBpX3J4X2xhdF90cmFjZWAgdmFyaWFibGUgYXBwZWFycyB0byBiZSBleGNsdXNpdmVseSBlbXBsb3llZCBieSBgcmRzX2Ntc2dfcmVjdmAsIGFuZCBpdHMgc29sZSBwdXJwb3NlIGlzIHRvIHJlcG9ydCBsYXRlbmN5IHRyYWNlcyB2aWEgYSBjbXNnIChgUkRTX0NNU0dfUlhQQVRIX0xBVEVOQ1lgKS4gSXQncyBhbGwganVzdCB0cmFjaW5nLCBub3QgY3JpdGljYWwgZnVuY3Rpb25hbGl0eS5cblxuV2FpdCBhIHNlY29uZOKApiBpZiB0aGlzIGFycmF5IGlzbid0IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQsIGl0ICpjb3VsZCogcG90ZW50aWFsbHkgbGVhayB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhhdCBjbXNnISBUaGF0J3MgYSBkZWZpbml0ZSB2dWxuZXJhYmlsaXR5IGlmIGl0J3Mgbm90IGhhbmRsZWQgY2FyZWZ1bGx5LiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGByZHNfY21zZ19yZWN2YCB0byBlbnN1cmUgdGhpcyBpc24ndCB0aGUgY2FzZS4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMTowNC44ODMxMTQ0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzUxMzc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSRFNfQ01TR19SWFBBVEhfTEFURU5DWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcmRzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcmRzL3JlY3YuYz01OTQ9c3RhdGljIGludCByZHNfY21zZ19yZWN2KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxubmV0L3Jkcy9yZWN2LmMtNjQyLVxcbm5ldC9yZHMvcmVjdi5jOjY0MzpcXHRcXHRyZXQgPSBwdXRfY21zZyhtc2csIFNPTF9SRFMsIFJEU19DTVNHX1JYUEFUSF9MQVRFTkNZLFxcbm5ldC9yZHMvcmVjdi5jLTY0NC1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKHQpLCBcXHUwMDI2dCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjExOjA0Ljk0NjYzNTgyNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjcyNzgxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byBgcmRzX2Ntc2dfcmVjdmAqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgaW4gb24gYHJkc19jbXNnX3JlY3ZgIG5vdywgc3BlY2lmaWNhbGx5IGluIGBuZXQvcmRzL3JlY3YuY2AuIFRoZSBuYW1lIGl0c2VsZiBpcyBhIHByZXR0eSBnb29kIGNsdWU7IGl0J3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgcHJlc3VtYWJseSBkZWFsaW5nIHdpdGggcmVjZWl2aW5nIENvbnRyb2wgTWVzc2FnZXMgKGNtc2dzKSB3aXRoaW4gdGhlIFJEUyAoUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cykgY29udGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBwcm9iYWJseSBoYW5kbGVzIHRoZSBleHRyYWN0aW9uIGFuZCBwcm9jZXNzaW5nIG9mIG91dC1vZi1iYW5kIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGFuIFJEUyByZWNlaXZlIG9wZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgdW5kZXJseWluZyBuZXR3b3JrIHN0YWNrLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBSRFMgY29ubmVjdGlvbiBzdGF0ZS4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZOKAlHByb2JhYmx5IGBzdHJ1Y3QgbXNnaGRyYCwgYHN0cnVjdCBjbXNnaGRyYCwgYW5kIGFueXRoaW5nIFJEUy1zcGVjaWZpYyBsaWtlIHRoZSBgcmRzX2Nvbm5lY3Rpb25gIGFuZCBhc3NvY2lhdGVkIGJ1ZmZlcnMuIExldCdzIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIGNvbnRyb2wgbWVzc2FnZXMsIHNwZWNpZmljYWxseSB3aGVuIGl0IGNvbWVzIHRvIFJETUEuIEkgc3VzcGVjdCBpdCB3b3VsZCBjaGVjayBmb3IgYW55IFJETUEgaGludHMgKGxpa2UgcmVtb3RlIGtleSB2YWx1ZXMpLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgZGVhbHMgd2l0aCBmcmFnbWVudGF0aW9uIGFuZCByZWFzc2VtYmx5LCBhbmQgYWxzbyBob3cgaXQgaGFuZGxlcyB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIGNtc2dzIHRoYXQgY2FuIGJlIGV4cGVjdGVkLCBsaWtlIFJETUEgb3BlcmF0aW9ucyBvciBwb3RlbnRpYWwgY29ubmVjdGlvbiBtYW5hZ2VtZW50IG1lc3NhZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzI2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTE6MDguNzEzOTE2Njk2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcmRzL3JlY3YuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MjA6XFx0XFxuIDYyMTpcXHRcXHRcXHRcXHRyZXQgPSBwdXRfY21zZyhtc2csIFNPTF9TT0NLRVQsIFNPX1RJTUVTVEFNUF9ORVcsXFxuIDYyMjpcXHRcXHRcXHRcXHRcXHQgICAgICAgc2l6ZW9mKHNrX3R2KSwgXFx1MDAyNnNrX3R2KTtcXG4gNjIzOlxcdFxcdFxcdH1cXG4gNjI0OlxcdFxcbiA2MjU6XFx0XFx0XFx0aWYgKHJldClcXG4gNjI2OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA2Mjc6XFx0XFx0fVxcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHRpZiAocnMtXFx1MDAzZXJzX3J4X3RyYWNlcykge1xcbiA2MzA6XFx0XFx0XFx0c3RydWN0IHJkc19jbXNnX3J4X3RyYWNlIHQ7XFxuIDYzMTpcXHRcXHRcXHRpbnQgaSwgajtcXG4gNjMyOlxcdFxcbiA2MzM6XFx0XFx0XFx0bWVtc2V0KFxcdTAwMjZ0LCAwLCBzaXplb2YodCkpO1xcbiA2MzQ6XFx0XFx0XFx0aW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0NNU0ddID0gbG9jYWxfY2xvY2soKTtcXG4gNjM1OlxcdFxcdFxcdHQucnhfdHJhY2VzID0gIHJzLVxcdTAwM2Vyc19yeF90cmFjZXM7XFxuIDYzNjpcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcnMtXFx1MDAzZXJzX3J4X3RyYWNlczsgaSsrKSB7XFxuIDYzNzpcXHRcXHRcXHRcXHRqID0gcnMtXFx1MDAzZXJzX3J4X3RyYWNlW2ldO1xcbiA2Mzg6XFx0XFx0XFx0XFx0dC5yeF90cmFjZV9wb3NbaV0gPSBqO1xcbiA2Mzk6XFx0XFx0XFx0XFx0dC5yeF90cmFjZVtpXSA9IGluYy1cXHUwMDNlaV9yeF9sYXRfdHJhY2VbaiArIDFdIC1cXG4gNjQwOlxcdFxcdFxcdFxcdFxcdFxcdCAgaW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZVtqXTtcXG4gNjQxOlxcdFxcdFxcdH1cXG4gNjQyOlxcdFxcbiA2NDM6XFx0XFx0XFx0cmV0ID0gcHV0X2Ntc2cobXNnLCBTT0xfUkRTLCBSRFNfQ01TR19SWFBBVEhfTEFURU5DWSxcXG4gNjQ0OlxcdFxcdFxcdFxcdCAgICAgICBzaXplb2YodCksIFxcdTAwMjZ0KTtcXG4gNjQ1OlxcdFxcdFxcdGlmIChyZXQpXFxuIDY0NjpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNjQ3OlxcdFxcdH1cXG4gNjQ4OlxcdFxcbiA2NDk6XFx0b3V0OlxcbiA2NTA6XFx0XFx0cmV0dXJuIHJldDtcXG4gNjUxOlxcdH1cXG4gNjUyOlxcdFxcbiA2NTM6XFx0c3RhdGljIGJvb2wgcmRzX3JlY3Ztc2dfemNvb2tpZShzdHJ1Y3QgcmRzX3NvY2sgKnJzLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuIDY1NDpcXHR7XFxuIDY1NTpcXHRcXHRzdHJ1Y3QgcmRzX21zZ196Y29weV9xdWV1ZSAqcSA9IFxcdTAwMjZycy1cXHUwMDNlcnNfemNvb2tpZV9xdWV1ZTtcXG4gNjU2OlxcdFxcdHN0cnVjdCByZHNfbXNnX3pjb3B5X2luZm8gKmluZm8gPSBOVUxMO1xcbiA2NTc6XFx0XFx0c3RydWN0IHJkc196Y29weV9jb29raWVzICpkb25lO1xcbiA2NTg6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gNjU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMTowOC43MTQwNDQ0MjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTk5MDQ4NDg0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGlzIGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmU/XCIgSXQncyBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBsZWFrIGluIGBpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2VgLiBUaGUgZml4PyBKdXN0IGEgYG1lbXNldGAgY2FsbCB0byB6ZXJvIG91dCB0aGUgYXJyYXkuIEl0J3MgdXNlZCBmb3IgbGF0ZW5jeSB0cmFjaW5nLCBub3RoaW5nIGNvbXBsZXguXG5cbk5vdywgdGhlIHByb21wdCBnaXZlcyBtZSBzb21lIHByZXR0eSBjbGVhciBndWlkYW5jZTogaXQgd2FudHMgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBtb2RpZmljYXRpb25zIGxpa2UgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBLY29uZmlnIGNoYW5nZXMsIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIHR3ZWFrcyB0byBjb25zdGFudHMgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgYWxzbyBsaXN0cyBzb21lIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW9zLCBsaWtlIGNvZGUgaW4gdGVhcmRvd24gY2FsbGJhY2tzIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSW5pdGlhbGx5LCBJIHRob3VnaHQsIFwiV2VsbCwgaXQncyBub3Qgc3RyaWN0bHkgb25lIG9mIHRob3NlIGxpc3RlZCBjYXRlZ29yaWVzLiBCdXQgaXQgKmlzKiBqdXN0IGEgc2luZ2xlIGBtZW1zZXRgLlwiIERvZXMgdGhhdCBmdW5jdGlvbmFsbHkgY2hhbmdlIGhvdyB0aGUgY29kZSBydW5zPyBObywgaXQganVzdCBpbml0aWFsaXplcyBtZW1vcnkuIElmIGl0ICp3YXMqIGFuIGluZm8gbGVhayBmaXgsIGl0IGRvZXNuJ3QgcmVhbGx5IGFsdGVyIGV4ZWN1dGlvbi5cblxuTXkgaW5zdGluY3QgaXMgc2F5aW5nIGZ1enppbmcgd29uJ3QgdW5jb3ZlciBhbnl0aGluZyBuZXcgaGVyZS4gSXQncyBwcmV2ZW50aW5nIEtNU0FOIG9yIHNvbWV0aGluZyBzaW1pbGFyIGZyb20gY29tcGxhaW5pbmcsIG9yIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVhay4gTm8gbmV3IGxvZ2ljIGlzIGludHJvZHVjZWQgYW5kIHRoZSBleGVjdXRpb24gZmxvdyB3b24ndCBjaGFuZ2UgaW4gYW55IG1hbm5lciB0aGF0IG5lZWRzIGZ1enppbmcuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgYnV0IHRoZSBwYXRjaCBpcyBpbmNyZWRpYmx5IHNpbXBsZTpcblxuYGBgY1xuIFx0aW5jLVx1MDAzZWlfdXNlcmNvcHkucmRtYV9jb29raWUgPSAwO1xuIFx0aW5jLVx1MDAzZWlfdXNlcmNvcHkucnhfdHN0YW1wID0ga3RpbWVfc2V0KDAsIDApO1xuK1xuK1x0bWVtc2V0KGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSkpO1xuIH1cbmBgYFxuXG5JdCdzICpsaXRlcmFsbHkqIGp1c3QgdGhhdCBgbWVtc2V0YC4gU28sIGJhc2VkIG9uIHRoYXQgYW5kIHRoZSBkaXJlY3Rpb25zIGdpdmVuLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY4NCwiT3V0cHV0VG9rZW5zIjo3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjExOjE4LjcwNDUzMjIyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIG1lbXNldCB0byBpbml0aWFsaXplIGEgbGF0ZW5jeSB0cmFjZSBhcnJheSwgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mbyBsZWFrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBtZW1zZXQgdG8gaW5pdGlhbGl6ZSBhIGxhdGVuY3kgdHJhY2UgYXJyYXksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGluZm8gbGVhay4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCByZXF1aXJlcyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTE6MTguNzA0NTg3NjU0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww9hqk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 06:09:03 +0000 UTC FinishedAt: 2026-08-10 06:11:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgbWVtc2V0IHRvIGluaXRpYWxpemUgYSBsYXRlbmN5IHRyYWNlIGFycmF5LCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBpbmZvIGxlYWsuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNGMwMDc1MzUwOGQ5NTIxNGU2Y2QwNTAzYzM5MjJjZDk5MzhiYWJmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTA6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9yZWN2LmMgYi9uZXQvcmRzL3JlY3YuY1xuaW5kZXggY2YzODg0ZDg3OTMxOS4uMGJkMjljZjRhNDBmMyAxMDA2NDRcbi0tLSBhL25ldC9yZHMvcmVjdi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL3JlY3YuY1xuQEAgLTY1LDYgJiM0Mzs2NSw4IEBAIHZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3AsXG4gXHRpbmMtXHUwMDNlaV9zYWRkciA9ICpzYWRkcjtcbiBcdGluYy1cdTAwM2VpX3VzZXJjb3B5LnJkbWFfY29va2llID0gMDtcbiBcdGluYy1cdTAwM2VpX3VzZXJjb3B5LnJ4X3RzdGFtcCA9IGt0aW1lX3NldCgwLCAwKTtcbiYjNDM7XG4mIzQzO1x0bWVtc2V0KGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSkpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChyZHNfaW5jX3BhdGhfaW5pdCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG1lbXNldCB0byBpbml0aWFsaXplIGEgbGF0ZW5jeSB0cmFjZSBhcnJheSwgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mbyBsZWFrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDRjMDA3NTM1MDhkOTUyMTRlNmNkMDUwM2MzOTIyY2Q5OTM4YmFiZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDA2OjEwOjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3Jkcy9yZWN2LmMgYi9uZXQvcmRzL3JlY3YuYwppbmRleCBjZjM4ODRkODc5MzE5Li4wYmQyOWNmNGE0MGYzIDEwMDY0NAotLS0gYS9uZXQvcmRzL3JlY3YuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL3JlY3YuYwpAQCAtNjUsNiAmIzQzOzY1LDggQEAgdm9pZCByZHNfaW5jX3BhdGhfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubl9wYXRoICpjcCwKIAlpbmMtJmd0O2lfc2FkZHIgPSAqc2FkZHI7CiAJaW5jLSZndDtpX3VzZXJjb3B5LnJkbWFfY29va2llID0gMDsKIAlpbmMtJmd0O2lfdXNlcmNvcHkucnhfdHN0YW1wID0ga3RpbWVfc2V0KDAsIDApOwomIzQzOwomIzQzOwltZW1zZXQoaW5jLSZndDtpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy0mZ3Q7aV9yeF9sYXRfdHJhY2UpKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHJkc19pbmNfcGF0aF9pbml0KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3Jkcy9yZWN2LmNgLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIHRoaW5nIHRoaXMgcGF0Y2ggZG9lcyBpcyBhZGQgYSBgbWVtc2V0YCBjYWxsIHdpdGhpbiB0aGUgYHJkc19pbmNfcGF0aF9pbml0YCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbml0aWFsaXppbmcgYGluYy0mZ3Q7aV9yeF9sYXRfdHJhY2VgIHRvIHplcm8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtZW1vcnkgaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBSRFMgc3Vic3lzdGVtLCBhbmQgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiBgaV9yeF9sYXRfdHJhY2VgLiBJcyBpdCBqdXN0IHNvbWUgaW5zdHJ1bWVudGF0aW9uLCBvciBkb2VzIGl0IHJlcHJlc2VudCBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSBhIHRhcmdldCBmb3IgZnV6emluZz8gS25vd2luZyB0aGUgZGF0YSB0eXBlIGFuZCBwdXJwb3NlIG9mIHRoYXQgbWVtYmVyIGlzIGNydWNpYWwuIFJpZ2h0IG5vdywgaXQganVzdCBzZWVtcyBsaWtlIGEgc2ltcGxlIGBtZW1zZXRgIGluIGFuIGluaXQgZnVuY3Rpb24sIG5vdGhpbmcgb3ZlcnRseSBjb21wbGV4LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgYHJkc19pbmNfcGF0aF9pbml0YCBmdW5jdGlvbiBpdHNlbGYgYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGhpbiBgbmV0L3Jkcy9yZWN2LmNgLiBJIG5lZWQgbW9yZSBjb250ZXh0IHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jkc19pbmNfcGF0aF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Jkcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9yZHMuaD05MzU9dm9pZCByZHNfaW5jX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sXG5uZXQvcmRzL3Jkcy5oLTkzNi1cdFx0ICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKTtcbm5ldC9yZHMvcmRzLmg6OTM3OnZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY29ubixcbm5ldC9yZHMvcmRzLmgtOTM4LVx0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7XG4tLVxubmV0L3Jkcy9yZWN2LmM9NTY9RVhQT1JUX1NZTUJPTF9HUEwocmRzX2luY19pbml0KTtcbm5ldC9yZHMvcmVjdi5jLTU3LVxubmV0L3Jkcy9yZWN2LmM6NTg6dm9pZCByZHNfaW5jX3BhdGhfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubl9wYXRoICpjcCxcbm5ldC9yZHMvcmVjdi5jLTU5LVx0XHQgICAgICAgc3RydWN0IGluNl9hZGRyICAqc2FkZHIpXG4tLVxubmV0L3Jkcy9yZWN2LmMtNzAtfVxubmV0L3Jkcy9yZWN2LmM6NzE6RVhQT1JUX1NZTUJPTF9HUEwocmRzX2luY19wYXRoX2luaXQpO1xubmV0L3Jkcy9yZWN2LmMtNzItXG4tLVxubmV0L3Jkcy90Y3BfcmVjdi5jPTE1NT1zdGF0aWMgaW50IHJkc190Y3BfZGF0YV9yZWN2KHJlYWRfZGVzY3JpcHRvcl90ICpkZXNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9yZHMvdGNwX3JlY3YuYy0xODEtXHRcdFx0cmRzZGVidWcoXCYjMzQ7YWxsb2NhdGVkIHRpbmMgJXBcXG5cJiMzNDssIHRpbmMpO1xubmV0L3Jkcy90Y3BfcmVjdi5jOjE4MjpcdFx0XHRyZHNfaW5jX3BhdGhfaW5pdChcdTAwMjZ0aW5jLVx1MDAzZXRpX2luYywgY3AsXG5uZXQvcmRzL3RjcF9yZWN2LmMtMTgzLVx0XHRcdFx0XHQgIFx1MDAyNmNwLVx1MDAzZWNwX2Nvbm4tXHUwMDNlY19mYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipMYXRlbmN5IFRyYWNpbmcgSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBzdGFydHMgYnkgc2V0dGluZyBgaV9yeF9sYXRfdHJhY2VgIHRvIHplcm8uIFN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGl0JiMzOTtzIGluaXRpYWxpemluZyB0aGF0IGxhdGVuY3kgdHJhY2tpbmcgdHJhY2UgYXJyYXkuIEkgaW1tZWRpYXRlbHkgd2FudCB0byBkaWcgaW50byBob3cgdGhpcyBhcnJheSBpcyAqYWN0dWFsbHkqIHVzZWQsIHRob3VnaC4gS25vd2luZyBpdCYjMzk7cyB6ZXJvZWQgaXMgYSBzdGFydGluZyBwb2ludCwgYnV0IHRoZSByZWFsIG1lYXQgaXMgaW4gdGhlIHN1YnNlcXVlbnQgb3BlcmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBldmVudHMgYXJlIGJlaW5nIHRpbWVzdGFtcGVkLCBob3cgdGhlc2UgdGltZXN0YW1wcyBhcmUgc3RvcmVkIGluIHRoZSBhcnJheSwgYW5kIHRoZW4sIGNydWNpYWxseSwgaG93IHRoaXMgZGF0YSBpcyBhbmFseXplZCB0byBwcm92aWRlIGluc2lnaHQgaW50byByZWNlaXZlIHBhdGggbGF0ZW5jeS4gU28sIHdoZXJlIGRvZXMgdGhpcyBgaV9yeF9sYXRfdHJhY2VgIHNob3cgdXAgaW4gdGhlIGNvZGU/IExldCYjMzk7cyB0cmFjZSBpdHMgdXNhZ2UgYW5kIHNlZSBpZiBhbnl0aGluZyBpbnRlcmVzdGluZyBqdW1wcyBvdXQuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGxhdGVuY3kgbWVhc3VyZW1lbnRzIGFyZSBiZWluZyBjYWxjdWxhdGVkIGFuZCBwcmVzZW50ZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhleSBhcmUgZGVhbGluZyB3aXRoIGFueSBjb3JuZXIgY2FzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aV9yeF9sYXRfdHJhY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmRzL2liX3JlY3YuYz04NDk9c3RhdGljIHZvaWQgcmRzX2liX3Byb2Nlc3NfcmVjdihzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sXG4tLVxubmV0L3Jkcy9pYl9yZWN2LmMtOTI3LVx0XHRoZHIgPSBcdTAwMjZpYmluYy1cdTAwM2VpaV9pbmMuaV9oZHI7XG5uZXQvcmRzL2liX3JlY3YuYzo5Mjg6XHRcdGliaW5jLVx1MDAzZWlpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0hEUl0gPVxubmV0L3Jkcy9pYl9yZWN2LmMtOTI5LVx0XHRcdFx0bG9jYWxfY2xvY2soKTtcbi0tXG5uZXQvcmRzL2liX3JlY3YuYy05MzEtXHRcdGljLVx1MDAzZWlfcmVjdl9kYXRhX3JlbSA9IGJlMzJfdG9fY3B1KGhkci1cdTAwM2VoX2xlbik7XG5uZXQvcmRzL2liX3JlY3YuYzo5MzI6XHRcdGliaW5jLVx1MDAzZWlpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX1NUQVJUXSA9XG5uZXQvcmRzL2liX3JlY3YuYy05MzMtXHRcdFx0XHRsb2NhbF9jbG9jaygpO1xuLS1cbm5ldC9yZHMvcmRzLmg9MzAwPXN0cnVjdCByZHNfaW5jb21pbmcge1xuLS1cbm5ldC9yZHMvcmRzLmgtMzA5LVx0c3RydWN0IHJkc19pbmNfdXNlcmNvcHkgaV91c2VyY29weTtcbm5ldC9yZHMvcmRzLmg6MzEwOlx0dTY0XHRcdFx0aV9yeF9sYXRfdHJhY2VbUkRTX1JYX01BWF9UUkFDRVNdO1xubmV0L3Jkcy9yZHMuaC0zMTEtfTtcbi0tXG5uZXQvcmRzL3JlY3YuYz00ND12b2lkIHJkc19pbmNfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcbi0tXG5uZXQvcmRzL3JlY3YuYy01My1cbm5ldC9yZHMvcmVjdi5jOjU0Olx0bWVtc2V0KGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSkpO1xubmV0L3Jkcy9yZWN2LmMtNTUtfVxuLS1cbm5ldC9yZHMvcmVjdi5jPTU4PXZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3AsXG4tLVxubmV0L3Jkcy9yZWN2LmMtNjgtXG5uZXQvcmRzL3JlY3YuYzo2OTpcdG1lbXNldChpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2UsIDAsIHNpemVvZihpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2UpKTtcbm5ldC9yZHMvcmVjdi5jLTcwLX1cbi0tXG5uZXQvcmRzL3JlY3YuYz0zMTg9dm9pZCByZHNfcmVjdl9pbmNvbWluZyhzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsXG4tLVxubmV0L3Jkcy9yZWN2LmMtNDM1LVx0XHRyZHNfaW5jX2FkZHJlZihpbmMpO1xubmV0L3Jkcy9yZWN2LmM6NDM2Olx0XHRpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2VbUkRTX01TR19SWF9FTkRdID0gbG9jYWxfY2xvY2soKTtcbm5ldC9yZHMvcmVjdi5jLTQzNy1cdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZpbmMtXHUwMDNlaV9pdGVtLCBcdTAwMjZycy1cdTAwM2Vyc19yZWN2X3F1ZXVlKTtcbi0tXG5uZXQvcmRzL3JlY3YuYz01OTQ9c3RhdGljIGludCByZHNfY21zZ19yZWN2KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IG1zZ2hkciAqbXNnLFxuLS1cbm5ldC9yZHMvcmVjdi5jLTYzMy1cdFx0bWVtc2V0KFx1MDAyNnQsIDAsIHNpemVvZih0KSk7XG5uZXQvcmRzL3JlY3YuYzo2MzQ6XHRcdGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0NNU0ddID0gbG9jYWxfY2xvY2soKTtcbm5ldC9yZHMvcmVjdi5jLTYzNS1cdFx0dC5yeF90cmFjZXMgPSAgcnMtXHUwMDNlcnNfcnhfdHJhY2VzO1xuLS1cbm5ldC9yZHMvcmVjdi5jLTYzOC1cdFx0XHR0LnJ4X3RyYWNlX3Bvc1tpXSA9IGo7XG5uZXQvcmRzL3JlY3YuYzo2Mzk6XHRcdFx0dC5yeF90cmFjZVtpXSA9IGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZVtqICYjNDM7IDFdIC1cbm5ldC9yZHMvcmVjdi5jOjY0MDpcdFx0XHRcdFx0ICBpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2Vbal07XG5uZXQvcmRzL3JlY3YuYy02NDEtXHRcdH1cbi0tXG5uZXQvcmRzL3RjcF9yZWN2LmM9MTU1PXN0YXRpYyBpbnQgcmRzX3RjcF9kYXRhX3JlY3YocmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3Jkcy90Y3BfcmVjdi5jLTE4My1cdFx0XHRcdFx0ICBcdTAwMjZjcC1cdTAwM2VjcF9jb25uLVx1MDAzZWNfZmFkZHIpO1xubmV0L3Jkcy90Y3BfcmVjdi5jOjE4NDpcdFx0XHR0aW5jLVx1MDAzZXRpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0hEUl0gPVxubmV0L3Jkcy90Y3BfcmVjdi5jLTE4NS1cdFx0XHRcdFx0bG9jYWxfY2xvY2soKTtcbi0tXG5uZXQvcmRzL3RjcF9yZWN2LmMtMjEwLVx0XHRcdFx0XHRiZTMyX3RvX2NwdSh0aW5jLVx1MDAzZXRpX2luYy5pX2hkci5oX2xlbik7XG5uZXQvcmRzL3RjcF9yZWN2LmM6MjExOlx0XHRcdFx0dGluYy1cdTAwM2V0aV9pbmMuaV9yeF9sYXRfdHJhY2VbUkRTX01TR19SWF9TVEFSVF0gPVxubmV0L3Jkcy90Y3BfcmVjdi5jLTIxMi1cdFx0XHRcdFx0bG9jYWxfY2xvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjY0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgUkRTIExhdGVuY3kgVHJhY2UgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYG1lbXNldGAgd2l0aGluIGByZHNfaW5jX3BhdGhfaW5pdGAuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCYjMzk7cyBtZXJlbHkgY29zbWV0aWMg4oCTIHNldHRpbmcgYSBsYXRlbmN5IHRyYWNlIGFycmF5IHRvIHplcm8uIFRoaXMgYGlfcnhfbGF0X3RyYWNlYCB2YXJpYWJsZSBhcHBlYXJzIHRvIGJlIGV4Y2x1c2l2ZWx5IGVtcGxveWVkIGJ5IGByZHNfY21zZ19yZWN2YCwgYW5kIGl0cyBzb2xlIHB1cnBvc2UgaXMgdG8gcmVwb3J0IGxhdGVuY3kgdHJhY2VzIHZpYSBhIGNtc2cgKGBSRFNfQ01TR19SWFBBVEhfTEFURU5DWWApLiBJdCYjMzk7cyBhbGwganVzdCB0cmFjaW5nLCBub3QgY3JpdGljYWwgZnVuY3Rpb25hbGl0eS4KCldhaXQgYSBzZWNvbmTigKYgaWYgdGhpcyBhcnJheSBpc24mIzM5O3QgZXhwbGljaXRseSBpbml0aWFsaXplZCwgaXQgKmNvdWxkKiBwb3RlbnRpYWxseSBsZWFrIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2UgdGhyb3VnaCB0aGF0IGNtc2chIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSB2dWxuZXJhYmlsaXR5IGlmIGl0JiMzOTtzIG5vdCBoYW5kbGVkIGNhcmVmdWxseS4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgcmRzX2Ntc2dfcmVjdmAgdG8gZW5zdXJlIHRoaXMgaXNuJiMzOTt0IHRoZSBjYXNlLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JEU19DTVNHX1JYUEFUSF9MQVRFTkNZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Jkcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9yZWN2LmM9NTk0PXN0YXRpYyBpbnQgcmRzX2Ntc2dfcmVjdihzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvcmRzL3JlY3YuYy02NDItXG5uZXQvcmRzL3JlY3YuYzo2NDM6XHRcdHJldCA9IHB1dF9jbXNnKG1zZywgU09MX1JEUywgUkRTX0NNU0dfUlhQQVRIX0xBVEVOQ1ksXG5uZXQvcmRzL3JlY3YuYy02NDQtXHRcdFx0ICAgICAgIHNpemVvZih0KSwgXHUwMDI2dCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byBgcmRzX2Ntc2dfcmVjdmAqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiBgcmRzX2Ntc2dfcmVjdmAgbm93LCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9yZHMvcmVjdi5jYC4gVGhlIG5hbWUgaXRzZWxmIGlzIGEgcHJldHR5IGdvb2QgY2x1ZTsgaXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgcHJlc3VtYWJseSBkZWFsaW5nIHdpdGggcmVjZWl2aW5nIENvbnRyb2wgTWVzc2FnZXMgKGNtc2dzKSB3aXRoaW4gdGhlIFJEUyAoUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cykgY29udGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBwcm9iYWJseSBoYW5kbGVzIHRoZSBleHRyYWN0aW9uIGFuZCBwcm9jZXNzaW5nIG9mIG91dC1vZi1iYW5kIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGFuIFJEUyByZWNlaXZlIG9wZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgdW5kZXJseWluZyBuZXR3b3JrIHN0YWNrLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBSRFMgY29ubmVjdGlvbiBzdGF0ZS4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWTigJRwcm9iYWJseSBgc3RydWN0IG1zZ2hkcmAsIGBzdHJ1Y3QgY21zZ2hkcmAsIGFuZCBhbnl0aGluZyBSRFMtc3BlY2lmaWMgbGlrZSB0aGUgYHJkc19jb25uZWN0aW9uYCBhbmQgYXNzb2NpYXRlZCBidWZmZXJzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgY29udHJvbCBtZXNzYWdlcywgc3BlY2lmaWNhbGx5IHdoZW4gaXQgY29tZXMgdG8gUkRNQS4gSSBzdXNwZWN0IGl0IHdvdWxkIGNoZWNrIGZvciBhbnkgUkRNQSBoaW50cyAobGlrZSByZW1vdGUga2V5IHZhbHVlcykuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBkZWFscyB3aXRoIGZyYWdtZW50YXRpb24gYW5kIHJlYXNzZW1ibHksIGFuZCBhbHNvIGhvdyBpdCBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgY21zZ3MgdGhhdCBjYW4gYmUgZXhwZWN0ZWQsIGxpa2UgUkRNQSBvcGVyYXRpb25zIG9yIHBvdGVudGlhbCBjb25uZWN0aW9uIG1hbmFnZW1lbnQgbWVzc2FnZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3Jkcy9yZWN2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYyMDpcdFxuIDYyMTpcdFx0XHRcdHJldCA9IHB1dF9jbXNnKG1zZywgU09MX1NPQ0tFVCwgU09fVElNRVNUQU1QX05FVyxcbiA2MjI6XHRcdFx0XHRcdCAgICAgICBzaXplb2Yoc2tfdHYpLCBcdTAwMjZza190dik7XG4gNjIzOlx0XHRcdH1cbiA2MjQ6XHRcbiA2MjU6XHRcdFx0aWYgKHJldClcbiA2MjY6XHRcdFx0XHRnb3RvIG91dDtcbiA2Mjc6XHRcdH1cbiA2Mjg6XHRcbiA2Mjk6XHRcdGlmIChycy1cdTAwM2Vyc19yeF90cmFjZXMpIHtcbiA2MzA6XHRcdFx0c3RydWN0IHJkc19jbXNnX3J4X3RyYWNlIHQ7XG4gNjMxOlx0XHRcdGludCBpLCBqO1xuIDYzMjpcdFxuIDYzMzpcdFx0XHRtZW1zZXQoXHUwMDI2dCwgMCwgc2l6ZW9mKHQpKTtcbiA2MzQ6XHRcdFx0aW5jLVx1MDAzZWlfcnhfbGF0X3RyYWNlW1JEU19NU0dfUlhfQ01TR10gPSBsb2NhbF9jbG9jaygpO1xuIDYzNTpcdFx0XHR0LnJ4X3RyYWNlcyA9ICBycy1cdTAwM2Vyc19yeF90cmFjZXM7XG4gNjM2Olx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHJzLVx1MDAzZXJzX3J4X3RyYWNlczsgaSYjNDM7JiM0MzspIHtcbiA2Mzc6XHRcdFx0XHRqID0gcnMtXHUwMDNlcnNfcnhfdHJhY2VbaV07XG4gNjM4Olx0XHRcdFx0dC5yeF90cmFjZV9wb3NbaV0gPSBqO1xuIDYzOTpcdFx0XHRcdHQucnhfdHJhY2VbaV0gPSBpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2VbaiAmIzQzOyAxXSAtXG4gNjQwOlx0XHRcdFx0XHRcdCAgaW5jLVx1MDAzZWlfcnhfbGF0X3RyYWNlW2pdO1xuIDY0MTpcdFx0XHR9XG4gNjQyOlx0XG4gNjQzOlx0XHRcdHJldCA9IHB1dF9jbXNnKG1zZywgU09MX1JEUywgUkRTX0NNU0dfUlhQQVRIX0xBVEVOQ1ksXG4gNjQ0Olx0XHRcdFx0ICAgICAgIHNpemVvZih0KSwgXHUwMDI2dCk7XG4gNjQ1Olx0XHRcdGlmIChyZXQpXG4gNjQ2Olx0XHRcdFx0Z290byBvdXQ7XG4gNjQ3Olx0XHR9XG4gNjQ4Olx0XG4gNjQ5Olx0b3V0OlxuIDY1MDpcdFx0cmV0dXJuIHJldDtcbiA2NTE6XHR9XG4gNjUyOlx0XG4gNjUzOlx0c3RhdGljIGJvb2wgcmRzX3JlY3Ztc2dfemNvb2tpZShzdHJ1Y3QgcmRzX3NvY2sgKnJzLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4gNjU0Olx0e1xuIDY1NTpcdFx0c3RydWN0IHJkc19tc2dfemNvcHlfcXVldWUgKnEgPSBcdTAwMjZycy1cdTAwM2Vyc196Y29va2llX3F1ZXVlO1xuIDY1NjpcdFx0c3RydWN0IHJkc19tc2dfemNvcHlfaW5mbyAqaW5mbyA9IE5VTEw7XG4gNjU3Olx0XHRzdHJ1Y3QgcmRzX3pjb3B5X2Nvb2tpZXMgKmRvbmU7XG4gNjU4Olx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIDY1OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg0CgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogNTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyBldmVuIHdvcnRoIGJvdGhlcmluZyB3aXRoIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlPyYjMzQ7IEl0JiMzOTtzIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGxlYWsgaW4gYGluYy0mZ3Q7aV9yeF9sYXRfdHJhY2VgLiBUaGUgZml4PyBKdXN0IGEgYG1lbXNldGAgY2FsbCB0byB6ZXJvIG91dCB0aGUgYXJyYXkuIEl0JiMzOTtzIHVzZWQgZm9yIGxhdGVuY3kgdHJhY2luZywgbm90aGluZyBjb21wbGV4LgoKTm93LCB0aGUgcHJvbXB0IGdpdmVzIG1lIHNvbWUgcHJldHR5IGNsZWFyIGd1aWRhbmNlOiBpdCB3YW50cyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggKm9ubHkqIGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgbGlrZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIEtjb25maWcgY2hhbmdlcywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgb3IgdHdlYWtzIHRvIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgYWxzbyBsaXN0cyBzb21lIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW9zLCBsaWtlIGNvZGUgaW4gdGVhcmRvd24gY2FsbGJhY2tzIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4KCkluaXRpYWxseSwgSSB0aG91Z2h0LCAmIzM0O1dlbGwsIGl0JiMzOTtzIG5vdCBzdHJpY3RseSBvbmUgb2YgdGhvc2UgbGlzdGVkIGNhdGVnb3JpZXMuIEJ1dCBpdCAqaXMqIGp1c3QgYSBzaW5nbGUgYG1lbXNldGAuJiMzNDsgRG9lcyB0aGF0IGZ1bmN0aW9uYWxseSBjaGFuZ2UgaG93IHRoZSBjb2RlIHJ1bnM/IE5vLCBpdCBqdXN0IGluaXRpYWxpemVzIG1lbW9yeS4gSWYgaXQgKndhcyogYW4gaW5mbyBsZWFrIGZpeCwgaXQgZG9lc24mIzM5O3QgcmVhbGx5IGFsdGVyIGV4ZWN1dGlvbi4KCk15IGluc3RpbmN0IGlzIHNheWluZyBmdXp6aW5nIHdvbiYjMzk7dCB1bmNvdmVyIGFueXRoaW5nIG5ldyBoZXJlLiBJdCYjMzk7cyBwcmV2ZW50aW5nIEtNU0FOIG9yIHNvbWV0aGluZyBzaW1pbGFyIGZyb20gY29tcGxhaW5pbmcsIG9yIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVhay4gTm8gbmV3IGxvZ2ljIGlzIGludHJvZHVjZWQgYW5kIHRoZSBleGVjdXRpb24gZmxvdyB3b24mIzM5O3QgY2hhbmdlIGluIGFueSBtYW5uZXIgdGhhdCBuZWVkcyBmdXp6aW5nLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBidXQgdGhlIHBhdGNoIGlzIGluY3JlZGlibHkgc2ltcGxlOgoKYGBgYwogCWluYy0mZ3Q7aV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7CiAJaW5jLSZndDtpX3VzZXJjb3B5LnJ4X3RzdGFtcCA9IGt0aW1lX3NldCgwLCAwKTsKJiM0MzsKJiM0MzsJbWVtc2V0KGluYy0mZ3Q7aV9yeF9sYXRfdHJhY2UsIDAsIHNpemVvZihpbmMtJmd0O2lfcnhfbGF0X3RyYWNlKSk7CiB9CmBgYAoKSXQmIzM5O3MgKmxpdGVyYWxseSoganVzdCB0aGF0IGBtZW1zZXRgLiBTbywgYmFzZWQgb24gdGhhdCBhbmQgdGhlIGRpcmVjdGlvbnMgZ2l2ZW4sIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBtZW1zZXQgdG8gaW5pdGlhbGl6ZSBhIGxhdGVuY3kgdHJhY2UgYXJyYXksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGluZm8gbGVhay4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCByZXF1aXJlcyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgbWVtc2V0IHRvIGluaXRpYWxpemUgYSBsYXRlbmN5IHRyYWNlIGFycmF5LCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBpbmZvIGxlYWsuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjExPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMDo0OS41NjAyNjg4NDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTE0NDM0MDg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIG1lbXNldCB0byBpbml0aWFsaXplIGEgbGF0ZW5jeSB0cmFjZSBhcnJheSwgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mbyBsZWFrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMDo0OS41NjAyNzU1ODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTMzMzIxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNGMwMDc1MzUwOGQ5NTIxNGU2Y2QwNTAzYzM5MjJjZDk5MzhiYWJmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDA2OjEwOjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmNcXG5pbmRleCBjZjM4ODRkODc5MzE5Li4wYmQyOWNmNGE0MGYzIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvcmVjdi5jXFxuKysrIGIvbmV0L3Jkcy9yZWN2LmNcXG5AQCAtNjUsNiArNjUsOCBAQCB2b2lkIHJkc19pbmNfcGF0aF9pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uX3BhdGggKmNwLFxcbiBcXHRpbmMtXFx1MDAzZWlfc2FkZHIgPSAqc2FkZHI7XFxuIFxcdGluYy1cXHUwMDNlaV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7XFxuIFxcdGluYy1cXHUwMDNlaV91c2VyY29weS5yeF90c3RhbXAgPSBrdGltZV9zZXQoMCwgMCk7XFxuK1xcbitcXHRtZW1zZXQoaW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cXHUwMDNlaV9yeF9sYXRfdHJhY2UpKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChyZHNfaW5jX3BhdGhfaW5pdCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMDo1MS4yNTQxNjM0NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzQ1MDQyMTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgbWVtc2V0IHRvIGluaXRpYWxpemUgYSBsYXRlbmN5IHRyYWNlIGFycmF5LCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBpbmZvIGxlYWsuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA0YzAwNzUzNTA4ZDk1MjE0ZTZjZDA1MDNjMzkyMmNkOTkzOGJhYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAwNjoxMDo0NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmNcbmluZGV4IGNmMzg4NGQ4NzkzMTkuLjBiZDI5Y2Y0YTQwZjMgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL3JlY3YuY1xuKysrIGIvbmV0L3Jkcy9yZWN2LmNcbkBAIC02NSw2ICs2NSw4IEBAIHZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3AsXG4gXHRpbmMtXHUwMDNlaV9zYWRkciA9ICpzYWRkcjtcbiBcdGluYy1cdTAwM2VpX3VzZXJjb3B5LnJkbWFfY29va2llID0gMDtcbiBcdGluYy1cdTAwM2VpX3VzZXJjb3B5LnJ4X3RzdGFtcCA9IGt0aW1lX3NldCgwLCAwKTtcbitcbitcdG1lbXNldChpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2UsIDAsIHNpemVvZihpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2UpKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocmRzX2luY19wYXRoX2luaXQpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTA6NTEuMjU0MTY0NTU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwNjEzMDYzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIFN1YnN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvcmRzL3JlY3YuY2AuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gdGhpbmcgdGhpcyBwYXRjaCBkb2VzIGlzIGFkZCBhIGBtZW1zZXRgIGNhbGwgd2l0aGluIHRoZSBgcmRzX2luY19wYXRoX2luaXRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgaW5pdGlhbGl6aW5nIGBpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2VgIHRvIHplcm8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtZW1vcnkgaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBSRFMgc3Vic3lzdGVtLCBhbmQgdGhhdCdzIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2lnbmlmaWNhbmNlIG9mIGBpX3J4X2xhdF90cmFjZWAuIElzIGl0IGp1c3Qgc29tZSBpbnN0cnVtZW50YXRpb24sIG9yIGRvZXMgaXQgcmVwcmVzZW50IHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nPyBLbm93aW5nIHRoZSBkYXRhIHR5cGUgYW5kIHB1cnBvc2Ugb2YgdGhhdCBtZW1iZXIgaXMgY3J1Y2lhbC4gUmlnaHQgbm93LCBpdCBqdXN0IHNlZW1zIGxpa2UgYSBzaW1wbGUgYG1lbXNldGAgaW4gYW4gaW5pdCBmdW5jdGlvbiwgbm90aGluZyBvdmVydGx5IGNvbXBsZXguIExldCdzIGRlbHZlIGludG8gdGhlIGByZHNfaW5jX3BhdGhfaW5pdGAgZnVuY3Rpb24gaXRzZWxmIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGhpbiBgbmV0L3Jkcy9yZWN2LmNgLiBJIG5lZWQgbW9yZSBjb250ZXh0IHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTA6NTYuNDYwMjk4OTEyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MzM1MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJkc19pbmNfcGF0aF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yZHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvcmRzLmg9OTM1PXZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9yZHMvcmRzLmgtOTM2LVxcdFxcdCAgc3RydWN0IGluNl9hZGRyICpzYWRkcik7XFxubmV0L3Jkcy9yZHMuaDo5Mzc6dm9pZCByZHNfaW5jX3BhdGhfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubl9wYXRoICpjb25uLFxcbm5ldC9yZHMvcmRzLmgtOTM4LVxcdFxcdCAgICAgICBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKTtcXG4tLVxcbm5ldC9yZHMvcmVjdi5jPTU2PUVYUE9SVF9TWU1CT0xfR1BMKHJkc19pbmNfaW5pdCk7XFxubmV0L3Jkcy9yZWN2LmMtNTctXFxubmV0L3Jkcy9yZWN2LmM6NTg6dm9pZCByZHNfaW5jX3BhdGhfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubl9wYXRoICpjcCxcXG5uZXQvcmRzL3JlY3YuYy01OS1cXHRcXHQgICAgICAgc3RydWN0IGluNl9hZGRyICAqc2FkZHIpXFxuLS1cXG5uZXQvcmRzL3JlY3YuYy03MC19XFxubmV0L3Jkcy9yZWN2LmM6NzE6RVhQT1JUX1NZTUJPTF9HUEwocmRzX2luY19wYXRoX2luaXQpO1xcbm5ldC9yZHMvcmVjdi5jLTcyLVxcbi0tXFxubmV0L3Jkcy90Y3BfcmVjdi5jPTE1NT1zdGF0aWMgaW50IHJkc190Y3BfZGF0YV9yZWN2KHJlYWRfZGVzY3JpcHRvcl90ICpkZXNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3Jkcy90Y3BfcmVjdi5jLTE4MS1cXHRcXHRcXHRyZHNkZWJ1ZyhcXFwiYWxsb2NhdGVkIHRpbmMgJXBcXFxcblxcXCIsIHRpbmMpO1xcbm5ldC9yZHMvdGNwX3JlY3YuYzoxODI6XFx0XFx0XFx0cmRzX2luY19wYXRoX2luaXQoXFx1MDAyNnRpbmMtXFx1MDAzZXRpX2luYywgY3AsXFxubmV0L3Jkcy90Y3BfcmVjdi5jLTE4My1cXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZjcC1cXHUwMDNlY3BfY29ubi1cXHUwMDNlY19mYWRkcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEwOjU2LjU0NjYzNzUyNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTYxNjMzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkxhdGVuY3kgVHJhY2luZyBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggc3RhcnRzIGJ5IHNldHRpbmcgYGlfcnhfbGF0X3RyYWNlYCB0byB6ZXJvLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyBpdCdzIGluaXRpYWxpemluZyB0aGF0IGxhdGVuY3kgdHJhY2tpbmcgdHJhY2UgYXJyYXkuIEkgaW1tZWRpYXRlbHkgd2FudCB0byBkaWcgaW50byBob3cgdGhpcyBhcnJheSBpcyAqYWN0dWFsbHkqIHVzZWQsIHRob3VnaC4gS25vd2luZyBpdCdzIHplcm9lZCBpcyBhIHN0YXJ0aW5nIHBvaW50LCBidXQgdGhlIHJlYWwgbWVhdCBpcyBpbiB0aGUgc3Vic2VxdWVudCBvcGVyYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV2ZW50cyBhcmUgYmVpbmcgdGltZXN0YW1wZWQsIGhvdyB0aGVzZSB0aW1lc3RhbXBzIGFyZSBzdG9yZWQgaW4gdGhlIGFycmF5LCBhbmQgdGhlbiwgY3J1Y2lhbGx5LCBob3cgdGhpcyBkYXRhIGlzIGFuYWx5emVkIHRvIHByb3ZpZGUgaW5zaWdodCBpbnRvIHJlY2VpdmUgcGF0aCBsYXRlbmN5LiBTbywgd2hlcmUgZG9lcyB0aGlzIGBpX3J4X2xhdF90cmFjZWAgc2hvdyB1cCBpbiB0aGUgY29kZT8gTGV0J3MgdHJhY2UgaXRzIHVzYWdlIGFuZCBzZWUgaWYgYW55dGhpbmcgaW50ZXJlc3RpbmcganVtcHMgb3V0LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBsYXRlbmN5IG1lYXN1cmVtZW50cyBhcmUgYmVpbmcgY2FsY3VsYXRlZCBhbmQgcHJlc2VudGVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhleSBhcmUgZGVhbGluZyB3aXRoIGFueSBjb3JuZXIgY2FzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMTowMC43NDI4MDM3MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNDUwMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlfcnhfbGF0X3RyYWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yZHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvaWJfcmVjdi5jPTg0OT1zdGF0aWMgdm9pZCByZHNfaWJfcHJvY2Vzc19yZWN2KHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcXG4tLVxcbm5ldC9yZHMvaWJfcmVjdi5jLTkyNy1cXHRcXHRoZHIgPSBcXHUwMDI2aWJpbmMtXFx1MDAzZWlpX2luYy5pX2hkcjtcXG5uZXQvcmRzL2liX3JlY3YuYzo5Mjg6XFx0XFx0aWJpbmMtXFx1MDAzZWlpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0hEUl0gPVxcbm5ldC9yZHMvaWJfcmVjdi5jLTkyOS1cXHRcXHRcXHRcXHRsb2NhbF9jbG9jaygpO1xcbi0tXFxubmV0L3Jkcy9pYl9yZWN2LmMtOTMxLVxcdFxcdGljLVxcdTAwM2VpX3JlY3ZfZGF0YV9yZW0gPSBiZTMyX3RvX2NwdShoZHItXFx1MDAzZWhfbGVuKTtcXG5uZXQvcmRzL2liX3JlY3YuYzo5MzI6XFx0XFx0aWJpbmMtXFx1MDAzZWlpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX1NUQVJUXSA9XFxubmV0L3Jkcy9pYl9yZWN2LmMtOTMzLVxcdFxcdFxcdFxcdGxvY2FsX2Nsb2NrKCk7XFxuLS1cXG5uZXQvcmRzL3Jkcy5oPTMwMD1zdHJ1Y3QgcmRzX2luY29taW5nIHtcXG4tLVxcbm5ldC9yZHMvcmRzLmgtMzA5LVxcdHN0cnVjdCByZHNfaW5jX3VzZXJjb3B5IGlfdXNlcmNvcHk7XFxubmV0L3Jkcy9yZHMuaDozMTA6XFx0dTY0XFx0XFx0XFx0aV9yeF9sYXRfdHJhY2VbUkRTX1JYX01BWF9UUkFDRVNdO1xcbm5ldC9yZHMvcmRzLmgtMzExLX07XFxuLS1cXG5uZXQvcmRzL3JlY3YuYz00ND12b2lkIHJkc19pbmNfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcXG4tLVxcbm5ldC9yZHMvcmVjdi5jLTUzLVxcbm5ldC9yZHMvcmVjdi5jOjU0OlxcdG1lbXNldChpbmMtXFx1MDAzZWlfcnhfbGF0X3RyYWNlLCAwLCBzaXplb2YoaW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZSkpO1xcbm5ldC9yZHMvcmVjdi5jLTU1LX1cXG4tLVxcbm5ldC9yZHMvcmVjdi5jPTU4PXZvaWQgcmRzX2luY19wYXRoX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3AsXFxuLS1cXG5uZXQvcmRzL3JlY3YuYy02OC1cXG5uZXQvcmRzL3JlY3YuYzo2OTpcXHRtZW1zZXQoaW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cXHUwMDNlaV9yeF9sYXRfdHJhY2UpKTtcXG5uZXQvcmRzL3JlY3YuYy03MC19XFxuLS1cXG5uZXQvcmRzL3JlY3YuYz0zMTg9dm9pZCByZHNfcmVjdl9pbmNvbWluZyhzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsXFxuLS1cXG5uZXQvcmRzL3JlY3YuYy00MzUtXFx0XFx0cmRzX2luY19hZGRyZWYoaW5jKTtcXG5uZXQvcmRzL3JlY3YuYzo0MzY6XFx0XFx0aW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0VORF0gPSBsb2NhbF9jbG9jaygpO1xcbm5ldC9yZHMvcmVjdi5jLTQzNy1cXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZpbmMtXFx1MDAzZWlfaXRlbSwgXFx1MDAyNnJzLVxcdTAwM2Vyc19yZWN2X3F1ZXVlKTtcXG4tLVxcbm5ldC9yZHMvcmVjdi5jPTU5ND1zdGF0aWMgaW50IHJkc19jbXNnX3JlY3Yoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvcmRzL3JlY3YuYy02MzMtXFx0XFx0bWVtc2V0KFxcdTAwMjZ0LCAwLCBzaXplb2YodCkpO1xcbm5ldC9yZHMvcmVjdi5jOjYzNDpcXHRcXHRpbmMtXFx1MDAzZWlfcnhfbGF0X3RyYWNlW1JEU19NU0dfUlhfQ01TR10gPSBsb2NhbF9jbG9jaygpO1xcbm5ldC9yZHMvcmVjdi5jLTYzNS1cXHRcXHR0LnJ4X3RyYWNlcyA9ICBycy1cXHUwMDNlcnNfcnhfdHJhY2VzO1xcbi0tXFxubmV0L3Jkcy9yZWN2LmMtNjM4LVxcdFxcdFxcdHQucnhfdHJhY2VfcG9zW2ldID0gajtcXG5uZXQvcmRzL3JlY3YuYzo2Mzk6XFx0XFx0XFx0dC5yeF90cmFjZVtpXSA9IGluYy1cXHUwMDNlaV9yeF9sYXRfdHJhY2VbaiArIDFdIC1cXG5uZXQvcmRzL3JlY3YuYzo2NDA6XFx0XFx0XFx0XFx0XFx0ICBpbmMtXFx1MDAzZWlfcnhfbGF0X3RyYWNlW2pdO1xcbm5ldC9yZHMvcmVjdi5jLTY0MS1cXHRcXHR9XFxuLS1cXG5uZXQvcmRzL3RjcF9yZWN2LmM9MTU1PXN0YXRpYyBpbnQgcmRzX3RjcF9kYXRhX3JlY3YocmVhZF9kZXNjcmlwdG9yX3QgKmRlc2MsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvcmRzL3RjcF9yZWN2LmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmNwLVxcdTAwM2VjcF9jb25uLVxcdTAwM2VjX2ZhZGRyKTtcXG5uZXQvcmRzL3RjcF9yZWN2LmM6MTg0OlxcdFxcdFxcdHRpbmMtXFx1MDAzZXRpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0hEUl0gPVxcbm5ldC9yZHMvdGNwX3JlY3YuYy0xODUtXFx0XFx0XFx0XFx0XFx0bG9jYWxfY2xvY2soKTtcXG4tLVxcbm5ldC9yZHMvdGNwX3JlY3YuYy0yMTAtXFx0XFx0XFx0XFx0XFx0YmUzMl90b19jcHUodGluYy1cXHUwMDNldGlfaW5jLmlfaGRyLmhfbGVuKTtcXG5uZXQvcmRzL3RjcF9yZWN2LmM6MjExOlxcdFxcdFxcdFxcdHRpbmMtXFx1MDAzZXRpX2luYy5pX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX1NUQVJUXSA9XFxubmV0L3Jkcy90Y3BfcmVjdi5jLTIxMi1cXHRcXHRcXHRcXHRcXHRsb2NhbF9jbG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMTowMC44NDYyNTgwNDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDM2ODUzMzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgUkRTIExhdGVuY3kgVHJhY2UgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgbWVtc2V0YCB3aXRoaW4gYHJkc19pbmNfcGF0aF9pbml0YC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0J3MgbWVyZWx5IGNvc21ldGljIOKAkyBzZXR0aW5nIGEgbGF0ZW5jeSB0cmFjZSBhcnJheSB0byB6ZXJvLiBUaGlzIGBpX3J4X2xhdF90cmFjZWAgdmFyaWFibGUgYXBwZWFycyB0byBiZSBleGNsdXNpdmVseSBlbXBsb3llZCBieSBgcmRzX2Ntc2dfcmVjdmAsIGFuZCBpdHMgc29sZSBwdXJwb3NlIGlzIHRvIHJlcG9ydCBsYXRlbmN5IHRyYWNlcyB2aWEgYSBjbXNnIChgUkRTX0NNU0dfUlhQQVRIX0xBVEVOQ1lgKS4gSXQncyBhbGwganVzdCB0cmFjaW5nLCBub3QgY3JpdGljYWwgZnVuY3Rpb25hbGl0eS5cblxuV2FpdCBhIHNlY29uZOKApiBpZiB0aGlzIGFycmF5IGlzbid0IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQsIGl0ICpjb3VsZCogcG90ZW50aWFsbHkgbGVhayB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhhdCBjbXNnISBUaGF0J3MgYSBkZWZpbml0ZSB2dWxuZXJhYmlsaXR5IGlmIGl0J3Mgbm90IGhhbmRsZWQgY2FyZWZ1bGx5LiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGByZHNfY21zZ19yZWN2YCB0byBlbnN1cmUgdGhpcyBpc24ndCB0aGUgY2FzZS4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMTowNC44ODMxMTQ0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzUxMzc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSRFNfQ01TR19SWFBBVEhfTEFURU5DWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcmRzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcmRzL3JlY3YuYz01OTQ9c3RhdGljIGludCByZHNfY21zZ19yZWN2KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxubmV0L3Jkcy9yZWN2LmMtNjQyLVxcbm5ldC9yZHMvcmVjdi5jOjY0MzpcXHRcXHRyZXQgPSBwdXRfY21zZyhtc2csIFNPTF9SRFMsIFJEU19DTVNHX1JYUEFUSF9MQVRFTkNZLFxcbm5ldC9yZHMvcmVjdi5jLTY0NC1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKHQpLCBcXHUwMDI2dCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjExOjA0Ljk0NjYzNTgyNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjcyNzgxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byBgcmRzX2Ntc2dfcmVjdmAqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgaW4gb24gYHJkc19jbXNnX3JlY3ZgIG5vdywgc3BlY2lmaWNhbGx5IGluIGBuZXQvcmRzL3JlY3YuY2AuIFRoZSBuYW1lIGl0c2VsZiBpcyBhIHByZXR0eSBnb29kIGNsdWU7IGl0J3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgcHJlc3VtYWJseSBkZWFsaW5nIHdpdGggcmVjZWl2aW5nIENvbnRyb2wgTWVzc2FnZXMgKGNtc2dzKSB3aXRoaW4gdGhlIFJEUyAoUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cykgY29udGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBwcm9iYWJseSBoYW5kbGVzIHRoZSBleHRyYWN0aW9uIGFuZCBwcm9jZXNzaW5nIG9mIG91dC1vZi1iYW5kIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGFuIFJEUyByZWNlaXZlIG9wZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgdW5kZXJseWluZyBuZXR3b3JrIHN0YWNrLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBSRFMgY29ubmVjdGlvbiBzdGF0ZS4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZOKAlHByb2JhYmx5IGBzdHJ1Y3QgbXNnaGRyYCwgYHN0cnVjdCBjbXNnaGRyYCwgYW5kIGFueXRoaW5nIFJEUy1zcGVjaWZpYyBsaWtlIHRoZSBgcmRzX2Nvbm5lY3Rpb25gIGFuZCBhc3NvY2lhdGVkIGJ1ZmZlcnMuIExldCdzIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIGNvbnRyb2wgbWVzc2FnZXMsIHNwZWNpZmljYWxseSB3aGVuIGl0IGNvbWVzIHRvIFJETUEuIEkgc3VzcGVjdCBpdCB3b3VsZCBjaGVjayBmb3IgYW55IFJETUEgaGludHMgKGxpa2UgcmVtb3RlIGtleSB2YWx1ZXMpLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgZGVhbHMgd2l0aCBmcmFnbWVudGF0aW9uIGFuZCByZWFzc2VtYmx5LCBhbmQgYWxzbyBob3cgaXQgaGFuZGxlcyB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIGNtc2dzIHRoYXQgY2FuIGJlIGV4cGVjdGVkLCBsaWtlIFJETUEgb3BlcmF0aW9ucyBvciBwb3RlbnRpYWwgY29ubmVjdGlvbiBtYW5hZ2VtZW50IG1lc3NhZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzI2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTE6MDguNzEzOTE2Njk2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcmRzL3JlY3YuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MjA6XFx0XFxuIDYyMTpcXHRcXHRcXHRcXHRyZXQgPSBwdXRfY21zZyhtc2csIFNPTF9TT0NLRVQsIFNPX1RJTUVTVEFNUF9ORVcsXFxuIDYyMjpcXHRcXHRcXHRcXHRcXHQgICAgICAgc2l6ZW9mKHNrX3R2KSwgXFx1MDAyNnNrX3R2KTtcXG4gNjIzOlxcdFxcdFxcdH1cXG4gNjI0OlxcdFxcbiA2MjU6XFx0XFx0XFx0aWYgKHJldClcXG4gNjI2OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA2Mjc6XFx0XFx0fVxcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHRpZiAocnMtXFx1MDAzZXJzX3J4X3RyYWNlcykge1xcbiA2MzA6XFx0XFx0XFx0c3RydWN0IHJkc19jbXNnX3J4X3RyYWNlIHQ7XFxuIDYzMTpcXHRcXHRcXHRpbnQgaSwgajtcXG4gNjMyOlxcdFxcbiA2MzM6XFx0XFx0XFx0bWVtc2V0KFxcdTAwMjZ0LCAwLCBzaXplb2YodCkpO1xcbiA2MzQ6XFx0XFx0XFx0aW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZVtSRFNfTVNHX1JYX0NNU0ddID0gbG9jYWxfY2xvY2soKTtcXG4gNjM1OlxcdFxcdFxcdHQucnhfdHJhY2VzID0gIHJzLVxcdTAwM2Vyc19yeF90cmFjZXM7XFxuIDYzNjpcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcnMtXFx1MDAzZXJzX3J4X3RyYWNlczsgaSsrKSB7XFxuIDYzNzpcXHRcXHRcXHRcXHRqID0gcnMtXFx1MDAzZXJzX3J4X3RyYWNlW2ldO1xcbiA2Mzg6XFx0XFx0XFx0XFx0dC5yeF90cmFjZV9wb3NbaV0gPSBqO1xcbiA2Mzk6XFx0XFx0XFx0XFx0dC5yeF90cmFjZVtpXSA9IGluYy1cXHUwMDNlaV9yeF9sYXRfdHJhY2VbaiArIDFdIC1cXG4gNjQwOlxcdFxcdFxcdFxcdFxcdFxcdCAgaW5jLVxcdTAwM2VpX3J4X2xhdF90cmFjZVtqXTtcXG4gNjQxOlxcdFxcdFxcdH1cXG4gNjQyOlxcdFxcbiA2NDM6XFx0XFx0XFx0cmV0ID0gcHV0X2Ntc2cobXNnLCBTT0xfUkRTLCBSRFNfQ01TR19SWFBBVEhfTEFURU5DWSxcXG4gNjQ0OlxcdFxcdFxcdFxcdCAgICAgICBzaXplb2YodCksIFxcdTAwMjZ0KTtcXG4gNjQ1OlxcdFxcdFxcdGlmIChyZXQpXFxuIDY0NjpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNjQ3OlxcdFxcdH1cXG4gNjQ4OlxcdFxcbiA2NDk6XFx0b3V0OlxcbiA2NTA6XFx0XFx0cmV0dXJuIHJldDtcXG4gNjUxOlxcdH1cXG4gNjUyOlxcdFxcbiA2NTM6XFx0c3RhdGljIGJvb2wgcmRzX3JlY3Ztc2dfemNvb2tpZShzdHJ1Y3QgcmRzX3NvY2sgKnJzLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuIDY1NDpcXHR7XFxuIDY1NTpcXHRcXHRzdHJ1Y3QgcmRzX21zZ196Y29weV9xdWV1ZSAqcSA9IFxcdTAwMjZycy1cXHUwMDNlcnNfemNvb2tpZV9xdWV1ZTtcXG4gNjU2OlxcdFxcdHN0cnVjdCByZHNfbXNnX3pjb3B5X2luZm8gKmluZm8gPSBOVUxMO1xcbiA2NTc6XFx0XFx0c3RydWN0IHJkc196Y29weV9jb29raWVzICpkb25lO1xcbiA2NTg6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gNjU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMTowOC43MTQwNDQ0MjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTk5MDQ4NDg0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGlzIGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmU/XCIgSXQncyBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBsZWFrIGluIGBpbmMtXHUwMDNlaV9yeF9sYXRfdHJhY2VgLiBUaGUgZml4PyBKdXN0IGEgYG1lbXNldGAgY2FsbCB0byB6ZXJvIG91dCB0aGUgYXJyYXkuIEl0J3MgdXNlZCBmb3IgbGF0ZW5jeSB0cmFjaW5nLCBub3RoaW5nIGNvbXBsZXguXG5cbk5vdywgdGhlIHByb21wdCBnaXZlcyBtZSBzb21lIHByZXR0eSBjbGVhciBndWlkYW5jZTogaXQgd2FudHMgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBtb2RpZmljYXRpb25zIGxpa2UgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBLY29uZmlnIGNoYW5nZXMsIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIHR3ZWFrcyB0byBjb25zdGFudHMgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgYWxzbyBsaXN0cyBzb21lIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW9zLCBsaWtlIGNvZGUgaW4gdGVhcmRvd24gY2FsbGJhY2tzIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSW5pdGlhbGx5LCBJIHRob3VnaHQsIFwiV2VsbCwgaXQncyBub3Qgc3RyaWN0bHkgb25lIG9mIHRob3NlIGxpc3RlZCBjYXRlZ29yaWVzLiBCdXQgaXQgKmlzKiBqdXN0IGEgc2luZ2xlIGBtZW1zZXRgLlwiIERvZXMgdGhhdCBmdW5jdGlvbmFsbHkgY2hhbmdlIGhvdyB0aGUgY29kZSBydW5zPyBObywgaXQganVzdCBpbml0aWFsaXplcyBtZW1vcnkuIElmIGl0ICp3YXMqIGFuIGluZm8gbGVhayBmaXgsIGl0IGRvZXNuJ3QgcmVhbGx5IGFsdGVyIGV4ZWN1dGlvbi5cblxuTXkgaW5zdGluY3QgaXMgc2F5aW5nIGZ1enppbmcgd29uJ3QgdW5jb3ZlciBhbnl0aGluZyBuZXcgaGVyZS4gSXQncyBwcmV2ZW50aW5nIEtNU0FOIG9yIHNvbWV0aGluZyBzaW1pbGFyIGZyb20gY29tcGxhaW5pbmcsIG9yIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVhay4gTm8gbmV3IGxvZ2ljIGlzIGludHJvZHVjZWQgYW5kIHRoZSBleGVjdXRpb24gZmxvdyB3b24ndCBjaGFuZ2UgaW4gYW55IG1hbm5lciB0aGF0IG5lZWRzIGZ1enppbmcuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgYnV0IHRoZSBwYXRjaCBpcyBpbmNyZWRpYmx5IHNpbXBsZTpcblxuYGBgY1xuIFx0aW5jLVx1MDAzZWlfdXNlcmNvcHkucmRtYV9jb29raWUgPSAwO1xuIFx0aW5jLVx1MDAzZWlfdXNlcmNvcHkucnhfdHN0YW1wID0ga3RpbWVfc2V0KDAsIDApO1xuK1xuK1x0bWVtc2V0KGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSwgMCwgc2l6ZW9mKGluYy1cdTAwM2VpX3J4X2xhdF90cmFjZSkpO1xuIH1cbmBgYFxuXG5JdCdzICpsaXRlcmFsbHkqIGp1c3QgdGhhdCBgbWVtc2V0YC4gU28sIGJhc2VkIG9uIHRoYXQgYW5kIHRoZSBkaXJlY3Rpb25zIGdpdmVuLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY4NCwiT3V0cHV0VG9rZW5zIjo3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjExOjE4LjcwNDUzMjIyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIG1lbXNldCB0byBpbml0aWFsaXplIGEgbGF0ZW5jeSB0cmFjZSBhcnJheSwgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mbyBsZWFrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBtZW1zZXQgdG8gaW5pdGlhbGl6ZSBhIGxhdGVuY3kgdHJhY2UgYXJyYXksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGluZm8gbGVhay4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCByZXF1aXJlcyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTE6MTguNzA0NTg3NjU0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww9hqk[1] Phase: Running StartedAt: 2026-08-10 06:11:29 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9hqk[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-10 06:11:29 +0000 UTC FinishedAt: 2026-08-10 06:11:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}