Name: series-workflowqxsjb Phase: Failed StartedAt: 2026-08-31 19:20:06 +0000 UTC FinishedAt: 2026-08-31 19:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqxsjb[0] Phase: Succeeded StartedAt: 2026-08-31 19:20:06 +0000 UTC FinishedAt: 2026-08-31 19:37:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqxsjb[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 19:20:06 +0000 UTC FinishedAt: 2026-08-31 19:37:39 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGl3bF9tbGRfY29weV9tY2NfcmVzcCgpYCBpbiB0aGUgYGl3bHdpZmlgIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jYCkuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIEludGVsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIEludGVsIFdpLUZpIE5JQ3MsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ODEyNzgxMTI4MDg1NTNiMjkxZmYyMGUwZDVlMzY0NDg3ZWY5OTIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTk6MzU6MjAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xuaW5kZXggODUwMjEyOWFiZTQ5My4uODMwYzI1MWY0M2FmYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xuQEAgLTE4LDkgJiM0MzsxOCwxNSBAQCBzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxuIGl3bF9tbGRfY29weV9tY2NfcmVzcChjb25zdCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICptY2NfcmVzcF92OCA9IChjb25zdCB2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4tXHRpbnQgbl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtXHUwMDNlbl9jaGFubmVscyk7XG4gXHRzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqcmVzcF9jcDtcbi1cdGludCBub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7XG4mIzQzO1x0aW50IG5fY2hhbm5lbHM7XG4mIzQzO1x0aW50IG5vdGlmX2xlbjtcbiYjNDM7XG4mIzQzO1x0aWYgKGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcdTAwM2Mgc2l6ZW9mKCptY2NfcmVzcF92OCkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiYjNDM7XG4mIzQzO1x0bl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtXHUwMDNlbl9jaGFubmVscyk7XG4mIzQzO1x0bm90aWZfbGVuID0gc3RydWN0X3NpemUocmVzcF9jcCwgY2hhbm5lbHMsIG5fY2hhbm5lbHMpO1xuIFxuIFx0aWYgKGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSAhPSBub3RpZl9sZW4pXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoKWAgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2ApLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBXaS1GaSBOSUNzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODgxMjc4MTEyODA4NTUzYjI5MWZmMjBlMGQ1ZTM2NDQ4N2VmOTkyMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDE5OjM1OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYwppbmRleCA4NTAyMTI5YWJlNDkzLi44MzBjMjUxZjQzYWZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYwpAQCAtMTgsOSAmIzQzOzE4LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqCiBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoY29uc3Qgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCkKIHsKIAljb25zdCBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqbWNjX3Jlc3BfdjggPSAoY29uc3Qgdm9pZCAqKXBrdC0mZ3Q7ZGF0YTsKLQlpbnQgbl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtJmd0O25fY2hhbm5lbHMpOwogCXN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICpyZXNwX2NwOwotCWludCBub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7CiYjNDM7CWludCBuX2NoYW5uZWxzOwomIzQzOwlpbnQgbm90aWZfbGVuOwomIzQzOwomIzQzOwlpZiAoaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICZsdDsgc2l6ZW9mKCptY2NfcmVzcF92OCkpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJbl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtJmd0O25fY2hhbm5lbHMpOwomIzQzOwlub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7CiAKIAlpZiAoaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICE9IG5vdGlmX2xlbikKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgV29ydGhGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCB0b3VjaGVzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2AsIHNwZWNpZmljYWxseSB0aGUgYGl3bF9tbGRfY29weV9tY2NfcmVzcGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgcGF5bG9hZCBsZW5ndGggY2hlY2sgdG8gdGhhdCBmdW5jdGlvbjogYGlmIChpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgJmx0OyBzaXplb2YoKm1jY19yZXNwX3Y4KSkgcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7YC4gU2VlbXMgc2Vuc2libGUsIGEgYmFzaWMgc2FmZXR5IGNoZWNrLgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgZnV6emFibGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSBvciBHQ0Ugd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUuCgpTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYGl3bHdpZmlgLiBJcyBpdCBwdXJlbHkgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIEludGVsIFdpRmkgY2FyZHMsIHJlcXVpcmluZyBhIFBDSWUvUENJL0FDUEkgZGV2aWNlLCBvciBkb2VzIGl0IGhhdmUgc29tZSBraW5kIG9mIHNpbXVsYXRlZCBoYXJkd2FyZSBwYXRoPyBEb2VzIGl0IGhhdmUgc29tZXRoaW5nIGFraW4gdG8gYG1hYzgwMjExX2h3c2ltYCBvciBhIHZpcnR1YWxpemVkIHRyYW5zcG9ydCBsYXllcj8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGBpd2wtdHJhbnMtc2ltLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLgoKSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIHN1cnJvdW5kaW5nIGBpd2x3aWZpYCBjb2RlLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdXNpbmcgZ3JlcCBvciBhIGRpcmVjdG9yeSBzZWFyY2ggdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgc2ltdWxhdGlvbiwgZW11bGF0aW9uLCBvciB0ZXN0aW5nIHdpdGhpbiBgaXdsd2lmaWAuIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIGl0IHN1cHBvcnRzIHNpbXVsYXRlZCBoYXJkd2FyZSwgb3IgaWYgaXQmIzM5O3MgcHVyZWx5IGEgdmVuZG9yIGRyaXZlciB0aWVkIHRvIHJlYWwgSW50ZWwgV2lGaSBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfbWxkX2NvcHlfbWNjX3Jlc3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTE3PXN0YXRpYyBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoxODppd2xfbWxkX2NvcHlfbWNjX3Jlc3AoY29uc3Qgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTE5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz00Mz1pd2xfbWxkX3VwZGF0ZV9tY2Moc3RydWN0IGl3bF9tbGQgKm1sZCwgY29uc3QgY2hhciAqYWxwaGEyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6NzA6XHRyZXNwX2NwID0gaXdsX21sZF9jb3B5X21jY19yZXNwKHBrdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy03MS1cdGlmIChJU19FUlIocmVzcF9jcCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQyMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBEaXZlIGZvciBpd2x3aWZpKioKCk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGUgS2NvbmZpZyBzZXR1cCBmb3IgdGhlIGl3bHdpZmkgbW9kdWxlIGFuZCBpdHMgcmVsZXZhbnQgZHJpdmVyIGNvbXBvbmVudHMuIEkmIzM5O20gaGVhZGluZyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlcjogYGl3bHdpZmlgIGl0c2VsZiwgYW5kIHRoZW4gc3BlY2lmaWNhbGx5LCB0aGUgcGF0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWAuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIG9wdGlvbnMgYXJlIGNvbmZpZ3VyZWQgYXMgZXhwZWN0ZWQsIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb2J2aW91cyBkZXBlbmRlbmNpZXMgSSYjMzk7bSBvdmVybG9va2luZywgYW5kIHRoYXQgdGhlIGJ1aWxkIGlzIHNldCB1cCBjb3JyZWN0bHkgaW4gcmVsYXRpb24gdG8gYW55IG90aGVyIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIGEgZm91bmRhdGlvbmFsIHN0ZXAsIG1ha2luZyBzdXJlIHRoZSByaWdodCBwaWVjZXMgYXJlIGV2ZW4gKmVsaWdpYmxlKiB0byBiZSBwYXJ0IG9mIHRoZSBidWlsZCBiZWZvcmUgSSBkaXZlIGludG8gYW55IG1vcmUgZGV0YWlsZWQgYW5hbHlzaXMuIEkgbmVlZCB0byBlbnN1cmUgdGhlIGJhc2ljcyBhcmUgY29ycmVjdCBiZWZvcmUgbW92aW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtpd2wtYWduLWh3LmgmIzM0OywKICAgICYjMzQ7aXdsLWNvbmZpZy5oJiMzNDssCiAgICAmIzM0O2l3bC1jc3IuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGJnLXRsdi5jJiMzNDssCiAgICAmIzM0O2l3bC1kYmctdGx2LmgmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmMmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWRhdGEuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaW8uaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaXdsd2lmaS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1tc2cuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtdWNvZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuaCYjMzQ7LAogICAgJiMzNDtpd2wtZHJ2LmMmIzM0OywKICAgICYjMzQ7aXdsLWRydi5oJiMzNDssCiAgICAmIzM0O2l3bC1maC5oJiMzNDssCiAgICAmIzM0O2l3bC1pby5jJiMzNDssCiAgICAmIzM0O2l3bC1pby5oJiMzNDssCiAgICAmIzM0O2l3bC1tb2RwYXJhbXMuaCYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXBhcnNlLmMmIzM0OywKICAgICYjMzQ7aXdsLW52bS1wYXJzZS5oJiMzNDssCiAgICAmIzM0O2l3bC1udm0tdXRpbHMuYyYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXV0aWxzLmgmIzM0OywKICAgICYjMzQ7aXdsLW9wLW1vZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtcGh5LWRiLmMmIzM0OywKICAgICYjMzQ7aXdsLXBoeS1kYi5oJiMzNDssCiAgICAmIzM0O2l3bC1wcnBoLmgmIzM0OywKICAgICYjMzQ7aXdsLXNjZC5oJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5jJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5oJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5jJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2NmZyYjMzQ7LAogICAgJiMzNDtkdm0mIzM0OywKICAgICYjMzQ7ZncmIzM0OywKICAgICYjMzQ7bWVpJiMzNDssCiAgICAmIzM0O21sZCYjMzQ7LAogICAgJiMzNDttdm0mIzM0OywKICAgICYjMzQ7cGNpZSYjMzQ7LAogICAgJiMzNDt0ZXN0cyYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA0NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgSW50ZWwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXJzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgc3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AsIG9yIGFueXRoaW5nIHNpbWlsYXIgdGhhdCBtaWdodCBjb250YWluIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGRlY2lzaW9ucyBhYm91dCBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhlc2UgZHJpdmVycyByZXNpZGUsIHNvIHRoaXMgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6Mjpjb25maWcgSVdMRUdBQ1lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZzo4OmNvbmZpZyBJV0w0OTY1XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIDQ5NjVBR04gKGl3bDQ5NjUpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6Mzc6Y29uZmlnIElXTDM5NDVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBQUk8vV2lyZWxlc3MgMzk0NUFCRy9CRyBOZXR3b3JrIENvbm5lY3Rpb24gKGl3bDM5NDUpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZz02ND1tZW51IFwmIzM0O2l3bDM5NDUgLyBpd2w0OTY1IERlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6Njc6Y29uZmlnIElXTEVHQUNZX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTY4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIGl3bGVnYWN5IChpd2wgMzk0NS80OTY1KSBkcml2ZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6OTM6Y29uZmlnIElXTEVHQUNZX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctOTQtXHRib29sIFwmIzM0O2l3bGVnYWN5IChpd2wgMzk0NS80OTY1KSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NjY6Y29uZmlnIElXTERWTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY3LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBEVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg0OmNvbmZpZyBJV0xNTERcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04NS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTQtIyBkb24mIzM5O3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5NTpjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDU9bWVudSBcJiMzNDtEZWJ1Z2dpbmcgT3B0aW9uc1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXHRib29sIFwmIzM0O0VuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cdGJvb2wgXCYjMzQ7aXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzOTpjb25maWcgSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cdGJvb2wgXCYjMzQ7aXdsd2lmaSBkZXZpY2UgYWNjZXNzIHRyYWNpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTU4PWVuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2MDpjb25maWcgSVdMTUVJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTYxLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgTWFuYWdlbWVudCBFbmdpbmUgY29tbXVuaWNhdGlvbiBvdmVyIFdMQU5cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjY3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgaXdsd2lmaSBEcml2ZXImIzM5O3MgU2NvcGUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9gIGRpcmVjdG9yeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNwZWNpZmljIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBpd2x3aWZpIGZyYW1ld29yay4gV2hhdCBhcmUgdGhlIGJ1cyBpbnRlcmZhY2VzIGFuZCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIGlzIGRlc2lnbmVkIHRvIHN1cHBvcnQ/IFVuZGVyc3RhbmRpbmcgdGhlIHN1cHBvcnRlZCBoYXJkd2FyZSBpcyBjcml0aWNhbCBmb3IgYW55IGFuYWx5c2lzLgoKRm9sbG93aW5nIHRoYXQsIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgLiBUaGlzIGZpbGUgc2hvdWxkIHNoZWQgbGlnaHQgb24gdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaXdsd2lmaS4gVGhpcyBLY29uZmlnIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3Qgd2l0aGluIHRoZSBkcml2ZXIuIFRoaXMgZXhhbWluYXRpb24gd2lsbCBnaXZlIG1lIGluc2lnaHRzIGludG8gaG93IGl3bHdpZmkgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBoYXJkd2FyZSBvciBmZWF0dXJlIHNldHMgYXJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBJV0xXSUZJXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IENGRzgwMjExXG4gICA1Olx0XHRkZXBlbmRzIG9uIElXTE1FSSB8fCAhSVdMTUVJXG4gICA2Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFNlbGVjdCB0byBidWlsZCB0aGUgZHJpdmVyIHN1cHBvcnRpbmcgdGhlOlxuICAgOTpcdFxuICAxMDpcdFx0ICBJbnRlbCBXaXJlbGVzcyBXaUZpIExpbmsgTmV4dC1HZW4gQUdOXG4gIDExOlx0XG4gIDEyOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdXNlIHdpdGggdGhlIGZvbGxvd2luZyBoYXJkd2FyZTpcbiAgMTM6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIDYyNTBBR04gQWRhcHRlclxuICAxNDpcdFx0XHRJbnRlbCA2MDAwIFNlcmllcyBXaS1GaSBBZGFwdGVycyAoNjIwMEFHTiBhbmQgNjMwMEFHTilcbiAgMTU6XHRcdFx0SW50ZWwgV2lGaSBMaW5rIDEwMDBCR05cbiAgMTY6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSA1MTUwQUdOXG4gIDE3Olx0XHRcdEludGVsIFdpcmVsZXNzIFdpRmkgNTEwMEFHTiwgNTMwMEFHTiwgYW5kIDUzNTBBR05cbiAgMTg6XHRcdFx0SW50ZWwgNjAwNSBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcbiAgMTk6XHRcdFx0SW50ZWwgNjAzMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcbiAgMjA6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIDYxNTBCR04gMiBBZGFwdGVyXG4gIDIxOlx0XHRcdEludGVsIDEwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnMgKDEwMEJHTiBhbmQgMTMwQkdOKVxuICAyMjpcdFx0XHRJbnRlbCAyMDAwIFNlcmllcyBXaS1GaSBBZGFwdGVyc1xuICAyMzpcdFx0XHRJbnRlbCA3MjYwIFdpLUZpIEFkYXB0ZXJcbiAgMjQ6XHRcdFx0SW50ZWwgMzE2MCBXaS1GaSBBZGFwdGVyXG4gIDI1Olx0XHRcdEludGVsIDcyNjUgV2ktRmkgQWRhcHRlclxuICAyNjpcdFx0XHRJbnRlbCA4MjYwIFdpLUZpIEFkYXB0ZXJcbiAgMjc6XHRcdFx0SW50ZWwgMzE2NSBXaS1GaSBBZGFwdGVyXG4gIDI4Olx0XG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRoaXMgZHJpdmVyIHVzZXMgdGhlIGtlcm5lbCYjMzk7cyBtYWM4MDIxMSBzdWJzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIEluIG9yZGVyIHRvIHVzZSB0aGlzIGRyaXZlciwgeW91IHdpbGwgbmVlZCBhIGZpcm13YXJlXG4gIDMzOlx0XHQgIGltYWdlIGZvciBpdC4gWW91IGNhbiBvYnRhaW4gdGhlIG1pY3JvY29kZSBmcm9tOlxuICAzNDpcdFxuICAzNTpcdFx0ICAgICAgICAgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvaXdsd2lmaVx1MDAzZS5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVGhlIGZpcm13YXJlIGlzIHR5cGljYWxseSBpbnN0YWxsZWQgaW4gL2xpYi9maXJtd2FyZS4gWW91IGNhblxuICAzODpcdFx0ICBsb29rIGluIHRoZSBob3RwbHVnIHNjcmlwdCAvZXRjL2hvdHBsdWcvZmlybXdhcmUuYWdlbnQgdG9cbiAgMzk6XHRcdCAgZGV0ZXJtaW5lIHdoaWNoIGRpcmVjdG9yeSBGSVJNV0FSRV9ESVIgaXMgc2V0IHRvIHdoZW4gdGhlIHNjcmlwdFxuICA0MDpcdFx0ICBydW5zLlxuICA0MTpcdFxuICA0MjpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIHRoZSBkcml2ZXIgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2ggY2FuIGJlXG4gIDQzOlx0XHQgIGluc2VydGVkIGluIGFuZCByZW1vdmVkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdSB3YW50KSxcbiAgNDQ6XHRcdCAgc2F5IE0gaGVyZSBhbmQgcmVhZCBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMucnN0XHUwMDNlLiAgVGhlXG4gIDQ1Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpd2x3aWZpLlxuICA0NjpcdFxuICA0NzpcdGlmIElXTFdJRklcbiAgNDg6XHRcbiAgNDk6XHRjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuICA1MDpcdFx0dHJpc3RhdGVcbiAgNTE6XHRcdGRlcGVuZHMgb24gS1VOSVRcbiAgNTI6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDUzOlx0XHRoZWxwXG4gIDU0Olx0XHQgIEVuYWJsZSB0aGlzIG9wdGlvbiBmb3IgaXdsd2lmaSBrdW5pdCB0ZXN0cy5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNTc6XHRcbiAgNTg6XHRjb25maWcgSVdMV0lGSV9MRURTXG4gIDU5Olx0XHRib29sXG4gIDYwOlx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gIDYxOlx0XHRkZXBlbmRzIG9uIElXTE1WTSB8fCBJV0xEVk1cbiAgNjI6XHRcdHNlbGVjdCBMRURTX1RSSUdHRVJTXG4gIDYzOlx0XHRzZWxlY3QgTUFDODAyMTFfTEVEU1xuICA2NDpcdFx0ZGVmYXVsdCB5XG4gIDY1Olx0XG4gIDY2Olx0Y29uZmlnIElXTERWTVxuICA2NzpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBEVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA2ODpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICA2OTpcdFx0aGVscFxuICA3MDpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgRFZNIGZpcm13YXJlLiBUaGUgbGlzdFxuICA3MTpcdFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxuICA3MjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcbiAgNzM6XHRcbiAgNzQ6XHRjb25maWcgSVdMTVZNXG4gIDc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4gIDc2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNzc6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNzg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNzk6XHRcdGhlbHBcbiAgODA6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgdGhlIE1WTSBmaXJtd2FyZS4gVGhlIGxpc3RcbiAgODE6XHRcdCAgb2YgdGhlIGRldmljZXMgdGhhdCB1c2UgdGhpcyBmaXJtd2FyZSBpcyBhdmFpbGFibGUgaGVyZTpcbiAgODI6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvZHJpdmVycy9pd2x3aWZpI2Zpcm13YXJlXG4gIDgzOlx0XG4gIDg0Olx0Y29uZmlnIElXTE1MRFxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA4NjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDg3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDg4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDg5Olx0XHRoZWxwXG4gIDkwOlx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIGZpcm13YXJlcyBvZiBNTEQgY2FwYWJsZSBkZXZpY2VzLlxuICA5MTpcdFx0ICBUaGUgbGlzdCBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxuICA5MjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcbiAgOTM6XHRcbiAgOTQ6XHQjIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuICA5NTpcdGNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG4gIDk2Olx0XHRib29sXG4gIDk3Olx0XHRkZWZhdWx0IHkgaWYgSVdMRFZNPW1cbiAgOTg6XHRcdGRlZmF1bHQgeSBpZiBJV0xNVk09bVxuICA5OTpcdFx0ZGVmYXVsdCB5IGlmIElXTE1MRD1tXG4gMTAwOlx0XHRkZWZhdWx0IHkgaWYgSVdMV0lGSV9LVU5JVF9URVNUUz1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0ODkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBhbmQgVmlydHVhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgYGl3bHdpZmlgIHdvcmtzIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIg4oCTIHRoYXQmIzM5O3MgY2xlYXIgZnJvbSBpdHMgZGVwZW5kZW5jaWVzIChgUENJICZhbXA7JmFtcDsgSEFTX0lPTUVNICZhbXA7JmFtcDsgQ0ZHODAyMTFgKS4gVGhlIG5leHQgcXVlc3Rpb24sIG9mIGNvdXJzZSwgaXMgaWYgUUVNVSBldmVuICpwcmV0ZW5kcyogdG8gaGF2ZSBhbiBgaXdsd2lmaWAgZGV2aWNlLiBOb3BlLCBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzb2x1dGlvbnMgbGlrZSBHQ0UgYW5kIFFFTVUgc3RpY2sgdG8gdGhlIHVzdWFsIHN1c3BlY3RzOiBgZTEwMDBgLCBgdmlydGlvLW5ldGAuIEZvciBXaS1GaSwgaXTigJlzIGFsbCBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aXJ0X3dpZmlgIHdoaWNoIGdvIHN0cmFpZ2h0IHRvIGBtYWM4MDIxMWAgd2l0aG91dCB0b3VjaGluZyBgaXdsd2lmaWAuCgpCdXQsIHdhaXQuLi4gZG9lcyBgaXdsd2lmaWAgaGF2ZSBzb21lIHNvcnQgb2YgdmlydHVhbCB0cmFuc3BvcnQgbWVjaGFuaXNtLCBvciBjYW4gaXQgYmUgcmVhY2hlZCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWA/IE5vLCBpdCBsb29rcyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgaXMgaXRzIG93biB0aGluZywgY29tcGxldGVseSBzZXBhcmF0ZSwgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYC4gSXQgZGlyZWN0bHkgaW50ZXJmYWNlcyB3aXRoIGBtYWM4MDIxMWAgd2l0aG91dCBldmVuIHVzaW5nIGBpd2x3aWZpYCAob3IgYGl3bF9tbGRgKS4KClNvLCB0aGUgY29uY2x1c2lvbiBpczogYGl3bHdpZmlgIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgSW50ZWwgV2lGaSBQQ0kgZGV2aWNlcyDigJMgdGhlIDYyNTAsIDcyNjAsIEFYMjAwLCBBWDIxMCwgQkUyMDAsIHRoZSB3aG9sZSBmYW1pbHkuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYmFjayB1cCBhIGxpdHRsZS4gTWF5YmUgdGhlcmUgYXJlIHNvbWUgdGVzdHMgb3Igb3RoZXIgaW50ZXJuYWwgd29ya2luZ3MgSSYjMzk7bSBtaXNzaW5nLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMvYCBkaXJlY3RvcnkgYW5kIHNlZSB3aGF0IHRoZSBkcml2ZXIgaGFzIGluIHN0b3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGV2aW5mby5jJiMzNDssCiAgICAmIzM0O21vZHVsZS5jJiMzNDssCiAgICAmIzM0O252bV9wYXJzZS5jJiMzNDssCiAgICAmIzM0O3V0aWxzLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjY3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gaXdsX21sZF9jb3B5X21jY19yZXNwIGFuZCBpd2xfbWxkX3VwZGF0ZV9tY2MqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW50byB0aGUgY2FsbHMgYW5kIHVzYWdlIHBhdHRlcm5zIG9mIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3BgIGFuZCBgaXdsX21sZF91cGRhdGVfbWNjYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlc2UgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSBsYXJnZXIgTUNDIChNdWx0aS1DYXJyaWVyIENvbW11bmljYXRpb24pIGZyYW1ld29yayB3aXRoaW4gdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlci4gVGhpcyBpbnZvbHZlcyB0cmFjaW5nIHRoZSBjb2RlIHBhdGhzIHRvIHNlZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlICpjYWxsZWQqIGZyb20sIGFuZCBlcXVhbGx5IGltcG9ydGFudCwgaG93IHRoZWlyICpyZXN1bHRzKiBhcmUgdGhlbiB1dGlsaXplZCBlbHNld2hlcmUgaW4gdGhlIHN5c3RlbS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHBvdGVudGlhbCBkYXRhIGRlcGVuZGVuY2llcyBhbmQgdGhlIHRpbWluZyBjb25zaWRlcmF0aW9ucyBpbnZvbHZlZCBpbiB0aGVpciBpbnRlcmFjdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBmb3IgYXNzZXNzaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbnMsIG9yIGFyZWFzIHdoZXJlIG9wdGltaXphdGlvbiBtaWdodCBiZSBwb3NzaWJsZS4gQSB0aG9yb3VnaCB1bmRlcnN0YW5kaW5nIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIGlmIHRoaXMgaXMgYW4gYXJlYSBmb3IgcmVmYWN0b3JpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tbGRfdXBkYXRlX21jYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9NDI9c3RhdGljIHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jOjQzOml3bF9tbGRfdXBkYXRlX21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLCBjb25zdCBjaGFyICphbHBoYTIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy00NC1cdFx0ICAgZW51bSBpd2xfbWNjX3NvdXJjZSBzcmNfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9ODk9aXdsX21sZF9nZXRfcmVnZG9tYWluKHN0cnVjdCBpd2xfbWxkICptbGQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6MTAzOlx0cmVzcCA9IGl3bF9tbGRfdXBkYXRlX21jYyhtbGQsIGFscGhhMiwgc3JjX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTEwNC1cdGlmIChJU19FUlIocmVzcCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg1NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIGBpd2xfbWxkX2dldF9yZWdkb21haW5gIENhbGxlcnMqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IG9mIGBpd2xfbWxkX2dldF9yZWdkb21haW5gLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgZXZlbiAqdXNlZCouIE5vIHBvaW50IGluIGFuYWx5emluZyBpdHMgaW50ZXJuYWxzIGlmIEkgZG9uJiMzOTt0IGtub3cgdGhlIGNhbGxpbmcgc2VxdWVuY2UuIFNvLCB0aGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byB0cmFjayBkb3duIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlIHdoZXJlIGBpd2xfbWxkX2dldF9yZWdkb21haW5gIGlzIGludm9rZWQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIGZvciB0aGlzIOKAkyBgZ3JlcGAsIGBmaW5kYCwgb3Igd2hhdGV2ZXImIzM5O3MgYXBwcm9wcmlhdGUgZm9yIHRoaXMgcHJvamVjdCBhbmQgaXRzIGNvZGViYXNlLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUgZm9yIGFueSBraW5kIG9mIGRlZXAgZGl2ZSBpbnRvIGEgZnVuY3Rpb24mIzM5O3Mgcm9sZS4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgaXRzIGV4ZWN1dGlvbiBwYXRoIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tbGRfZ2V0X3JlZ2RvbWFpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9ODg9c3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6ODk6aXdsX21sZF9nZXRfcmVnZG9tYWluKHN0cnVjdCBpd2xfbWxkICptbGQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy05MC1cdFx0ICAgICAgY29uc3QgY2hhciAqYWxwaGEyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTE2ND1pd2xfbWxkX2dldF9jdXJyZW50X3JlZ2RvbWFpbihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTE2Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoxNjc6XHRyZXR1cm4gaXdsX21sZF9nZXRfcmVnZG9tYWluKG1sZCwgXCYjMzQ7WlpcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0xNjgtXHRcdFx0XHQgICAgIE1DQ19TT1VSQ0VfR0VUX0NVUlJFTlQsIGNoYW5nZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTE4Nj1zdGF0aWMgaW50IGl3bF9tbGRfYXBwbHlfbGFzdF9tY2Moc3RydWN0IGl3bF9tbGQgKm1sZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yMDItXHQvKiBOb3cgc2V0IG91ciBsYXN0IHN0b3JlZCBNQ0MgYW5kIHNvdXJjZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6MjAzOlx0cmVnZCA9IGl3bF9tbGRfZ2V0X3JlZ2RvbWFpbihtbGQsIGFscGhhMiwgdXNlZF9zcmMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yMDQtXHRcdFx0XHQgICAgIFx1MDAyNmNoYW5nZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTIxOD1pbnQgaXdsX21sZF9pbml0X21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTIzNi1cdFx0a2ZyZWUocmVnZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoyMzc6XHRcdHJlZ2QgPSBpd2xfbWxkX2dldF9yZWdkb21haW4obWxkLCBtY2MsIE1DQ19TT1VSQ0VfQklPUywgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yMzgtXHRcdGlmIChJU19FUlJfT1JfTlVMTChyZWdkKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz0yNjk9dm9pZCBpd2xfbWxkX2hhbmRsZV91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMjkyLVx0XHQgICAgICBtY2MsIHNyYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoyOTM6XHRyZWdkID0gaXdsX21sZF9nZXRfcmVnZG9tYWluKG1sZCwgbWNjLCBzcmMsIFx1MDAyNmNoYW5nZWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMjk0LVx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZ2QpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5oPTExPXN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5oOjEyOml3bF9tbGRfZ2V0X3JlZ2RvbWFpbihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmgtMTMtXHRcdCAgICAgIGNvbnN0IGNoYXIgKmFscGhhMixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMzkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQ0MgVXBkYXRlIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gaG93IHRoZSBNQ0MgKE1vYmlsZSBDb3VudHJ5IENvZGUpIGlzIHVwZGF0ZWQgaW4gdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIuIE15IGluaXRpYWwgcG9pbnQgb2YgcmVmZXJlbmNlIGlzIGBpd2xfbWxkX3VwZGF0ZV9tY2NgLCB3aGljaCwgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHRoaXMgcHJvY2Vzcy4gSXQgc2VlbXMgdG8ga2ljayB0aGluZ3Mgb2ZmIGJ5IGNyYWZ0aW5nIGEgY29tbWFuZCB0aGF0IGl0IHRoZW4gcGFzc2VzIG9mZiB0byB0aGUgZmlybXdhcmUuIFNwZWNpZmljYWxseSwgaXQgdXNlcyBgaXdsX21sZF9zZW5kX2NtZF9wZHVgIHRvIGNvbnN0cnVjdCBhbmQgc2VuZCBhIFBEVSAoUHJvdG9jb2wgRGF0YSBVbml0KSwgdGFyZ2V0aW5nIGBXSURFX0lEKFJFR1VMQVRPUllfQU5EX0RFQlVHX0dST1VQLCBNQ0NfVVBEQVRFX0NNRClgLiBUaGlzIGBXSURFX0lEYCBzdWdnZXN0cyB0aGUgY29tbWFuZCBiZWxvbmdzIHRvIHRoZSByZWd1bGF0b3J5L2RlYnVnIGNhdGVnb3J5LCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgTUNDJiMzOTtzIHJlZ3VsYXRvcnkgaW1wbGljYXRpb25zLiBOb3csIEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiB0byB1bmRlcnN0YW5kIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscyBvZiB0aGlzIHVwZGF0ZS4gSSYjMzk7bGwgc3RhcnQgYnkgZXhhbWluaW5nIGBpd2xfbWxkX3VwZGF0ZV9tY2NgIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XG4gIDQxOlx0LyogSXQgaXMgdGhlIGNhbGxlciYjMzk7cyByZXNwb25zaWJpbGl0eSB0byBmcmVlIHRoZSBwb2ludGVyIHJldHVybmVkIGhlcmUgKi9cbiAgNDI6XHRzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxuICA0MzpcdGl3bF9tbGRfdXBkYXRlX21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLCBjb25zdCBjaGFyICphbHBoYTIsXG4gIDQ0Olx0XHRcdCAgIGVudW0gaXdsX21jY19zb3VyY2Ugc3JjX2lkKVxuICA0NTpcdHtcbiAgNDY6XHRcdHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9jbWQgbWNjX3VwZGF0ZV9jbWQgPSB7XG4gIDQ3Olx0XHRcdC5tY2MgPSBjcHVfdG9fbGUxNihhbHBoYTJbMF0gXHUwMDNjXHUwMDNjIDggfCBhbHBoYTJbMV0pLFxuICA0ODpcdFx0XHQuc291cmNlX2lkID0gKHU4KXNyY19pZCxcbiAgNDk6XHRcdH07XG4gIDUwOlx0XHRzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqcmVzcF9jcDtcbiAgNTE6XHRcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3Q7XG4gIDUyOlx0XHRzdHJ1Y3QgaXdsX2hvc3RfY21kIGNtZCA9IHtcbiAgNTM6XHRcdFx0LmlkID0gTUNDX1VQREFURV9DTUQsXG4gIDU0Olx0XHRcdC5mbGFncyA9IENNRF9XQU5UX1NLQixcbiAgNTU6XHRcdFx0LmRhdGEgPSB7IFx1MDAyNm1jY191cGRhdGVfY21kIH0sXG4gIDU2Olx0XHRcdC5sZW5bMF0gPSBzaXplb2YobWNjX3VwZGF0ZV9jbWQpLFxuICA1NzpcdFx0fTtcbiAgNTg6XHRcdGludCByZXQ7XG4gIDU5Olx0XHR1MTYgbWNjO1xuICA2MDpcdFxuICA2MTpcdFx0SVdMX0RFQlVHX0xBUihtbGQsIFwmIzM0O3NlbmQgTUNDIHVwZGF0ZSB0byBGVyB3aXRoICYjMzk7JWMlYyYjMzk7IHNyYyA9ICVkXFxuXCYjMzQ7LFxuICA2MjpcdFx0XHQgICAgICBhbHBoYTJbMF0sIGFscGhhMlsxXSwgc3JjX2lkKTtcbiAgNjM6XHRcbiAgNjQ6XHRcdHJldCA9IGl3bF9tbGRfc2VuZF9jbWQobWxkLCBcdTAwMjZjbWQpO1xuICA2NTpcdFx0aWYgKHJldClcbiAgNjY6XHRcdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiAgNjc6XHRcbiAgNjg6XHRcdHBrdCA9IGNtZC5yZXNwX3BrdDtcbiAgNjk6XHRcbiAgNzA6XHRcdHJlc3BfY3AgPSBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AocGt0KTtcbiAgNzE6XHRcdGlmIChJU19FUlIocmVzcF9jcCkpXG4gIDcyOlx0XHRcdGdvdG8gZXhpdDtcbiAgNzM6XHRcbiAgNzQ6XHRcdG1jYyA9IGxlMTZfdG9fY3B1KHJlc3BfY3AtXHUwMDNlbWNjKTtcbiAgNzU6XHRcbiAgNzY6XHRcdElXTF9GV19DSEVDSyhtbGQsICFtY2MsIFwmIzM0O21jYyBjYW4mIzM5O3QgYmUgMDogJWRcXG5cJiMzNDssIG1jYyk7XG4gIDc3Olx0XG4gIDc4Olx0XHRJV0xfREVCVUdfTEFSKG1sZCxcbiAgNzk6XHRcdFx0ICAgICAgXCYjMzQ7TUNDIHJlc3BvbnNlIHN0YXR1czogMHgleC4gbmV3IE1DQzogMHgleCAoJiMzOTslYyVjJiMzOTspXFxuXCYjMzQ7LFxuICA4MDpcdFx0XHQgICAgICBsZTMyX3RvX2NwdShyZXNwX2NwLVx1MDAzZXN0YXR1cyksIG1jYywgbWNjIFx1MDAzZVx1MDAzZSA4LCBtY2MgXHUwMDI2IDB4ZmYpO1xuICA4MTpcdFxuICA4MjpcdGV4aXQ6XG4gIDgzOlx0XHRpd2xfZnJlZV9yZXNwKFx1MDAyNmNtZCk7XG4gIDg0Olx0XHRyZXR1cm4gcmVzcF9jcDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNzMKCQkJCQkJCW91dHB1dDogMTI4CgkJCQkJCQl0aG91Z2h0czogNTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGBpd2x3aWZpYCBGdXp6aW5nIEFwcGxpY2FiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgZGV0ZXJtaW5pbmcgaWYgYSBzcGVjaWZpYyBjb2RlIHBhdGgsIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3BgIHdpdGhpbiB0aGUgYGl3bHdpZmlgIGRyaXZlciwgaXMgcmVhbGlzdGljYWxseSBmdXp6YWJsZS4gYGl3bHdpZmlgLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGFuZCBhcyB0aGUgaW5zdHJ1Y3Rpb25zIGNvbmZpcm0sIGlzIGEgZHJpdmVyIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgSW50ZWwgV2ktRmkgUENJZSBhZGFwdGVycy4gSXQgcmVsaWVzIG9uIHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSBhbmQsIGNydWNpYWxseSwgbG9hZGVkIG1pY3JvY29kZSBvciBmaXJtd2FyZS4gU3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFIGRvbiYjMzk7dCBlbXVsYXRlICp0aGlzKiBwYXJ0aWN1bGFyIGhhcmR3YXJlOyB0aGV5IGRvbiYjMzk7dCBwcm92aWRlIGEgdmlydHVhbGl6ZWQgSW50ZWwgV2ktRmkgUENJZSBhZGFwdGVyLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgbXkgYXNzdW1wdGlvbnMuIElzIHRoZXJlICphbnkqIFVTQiBnYWRnZXQgZW11bGF0aW9uIHRoYXQgbWlnaHQgdG91Y2ggYGl3bHdpZmlgIGNvZGU/IE5vLiBgaXdsd2lmaWAgaXMgZXhjbHVzaXZlbHkgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MuIElzIGBtYWM4MDIxMV9od3NpbWAgcmVsZXZhbnQgaGVyZT8gTm8sIHRoYXQmIzM5O3MgYSBzZXBhcmF0ZSwgaW5kZXBlbmRlbnQgZHJpdmVyIHdpdGhpbiBgbWFjODAyMTFgLCBhbmQgSSBrbm93IGl0IGRvZXNuJiMzOTt0IGV4ZWN1dGUgYGl3bHdpZmlgIGRyaXZlciBjb2RlLgoKVGhlcmVmb3JlLCBiZWNhdXNlIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3BgIGlzIHdpdGhpbiBgaXdsd2lmaWAsIHRoZXJlJiMzOTtzIG5vIHdheSB0byByZWFjaCB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cC4gV2l0aG91dCBhIHBoeXNpY2FsIEludGVsIHdpcmVsZXNzIGNhcmQsIG9yIHBvdGVudGlhbGx5ICp2ZXJ5KiBzcGVjaWZpYyBlbXVsYXRpb25zIEkgY2FuJiMzOTt0IHRoaW5rIG9mLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZS4gU28sIGJhc2VkIG9uIHRoZSBpbnN0cnVjdGlvbiB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCB3aGVuIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIFFFTVUvR0NFLCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGlzIGBmYWxzZWAgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHByZXBhcmUgdGhlIGFyZ3VtZW50cyBmb3IgYHNldC1yZXN1bHRzYC4gSSBuZWVkIHRvIGNvbnZleSB0aGlzIGNsZWFybHkgYW5kIGNvbmNpc2VseS4KCiogICBgV29ydGhGdXp6aW5nOiBmYWxzZWAgLSBiZWNhdXNlIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLgoqICAgYEZvY3VzU3ltYm9sczogW11gIC0gTm8gZm9jdXMgc3ltYm9scyBzaW5jZSB0aGlzIGlzIG5vdCBmdXp6YWJsZS4KKiAgIGBFbmFibGVDb25maWdzOiBbXWAgLSBTaW1pbGFybHksIG5vIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCwgYXMgdGhlIGRyaXZlciBpcyBub3QgYXBwbGljYWJsZSB0byB0aGUgZW52aXJvbm1lbnQuCiogICBgUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaXdsX21sZF9jb3B5X21jY19yZXNwKClgIGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MgYWRhcHRlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIChvciBzcGVjaWZpYyBmaXJtd2FyZS9QQ0llIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFKS4gQXMgc3VjaCwgdGhpcyBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7YCAtIFRoaXMgcmVhc29uaW5nIGNsZWFybHkgYXJ0aWN1bGF0ZXMgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIHRoZSBpbmFwcGxpY2FiaWxpdHkgb2YgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKRmluYWxseSwgSSYjMzk7bGwgcXVpY2tseSByZXZpZXcgZXZlcnl0aGluZzogdGhlIGxvZ2ljIGlzIHNvdW5kLCB0aGUgYXJndW1lbnRzIGFyZSBjb25zaXN0ZW50IHdpdGggdGhlIGluc3RydWN0aW9ucywgYW5kIEkmIzM5O3ZlIHByb3ZpZGVkIGEgY2xlYXIgZXhwbGFuYXRpb24uIFdlJiMzOTtyZSBnb29kIHRvIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoKWAgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2ApLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBXaS1GaSBOSUNzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaXdsX21sZF9jb3B5X21jY19yZXNwKClgIGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gSW50ZWwgUENJZSB3aXJlbGVzcyBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgSW50ZWwgV2ktRmkgTklDcywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjIxLjc4Mzg3MDY4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjM1MDM5OTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoKWAgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2ApLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBXaS1GaSBOSUNzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNToyMS43ODM4NzY3OTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMjkxNTQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg4MTI3ODExMjgwODU1M2IyOTFmZjIwZTBkNWUzNjQ0ODdlZjk5MjBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTk6MzU6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xcbmluZGV4IDg1MDIxMjlhYmU0OTMuLjgzMGMyNTFmNDNhZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xcbkBAIC0xOCw5ICsxOCwxNSBAQCBzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxcbiBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoY29uc3Qgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdClcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqbWNjX3Jlc3BfdjggPSAoY29uc3Qgdm9pZCAqKXBrdC1cXHUwMDNlZGF0YTtcXG4tXFx0aW50IG5fY2hhbm5lbHMgPSBfX2xlMzJfdG9fY3B1KG1jY19yZXNwX3Y4LVxcdTAwM2VuX2NoYW5uZWxzKTtcXG4gXFx0c3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKnJlc3BfY3A7XFxuLVxcdGludCBub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7XFxuK1xcdGludCBuX2NoYW5uZWxzO1xcbitcXHRpbnQgbm90aWZfbGVuO1xcbitcXG4rXFx0aWYgKGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcXHUwMDNjIHNpemVvZigqbWNjX3Jlc3BfdjgpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4rXFxuK1xcdG5fY2hhbm5lbHMgPSBfX2xlMzJfdG9fY3B1KG1jY19yZXNwX3Y4LVxcdTAwM2VuX2NoYW5uZWxzKTtcXG4rXFx0bm90aWZfbGVuID0gc3RydWN0X3NpemUocmVzcF9jcCwgY2hhbm5lbHMsIG5fY2hhbm5lbHMpO1xcbiBcXG4gXFx0aWYgKGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSAhPSBub3RpZl9sZW4pXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNToyMi4xOTczOTU3MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyNTkzNjg2MDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGl3bF9tbGRfY29weV9tY2NfcmVzcCgpYCBpbiB0aGUgYGl3bHdpZmlgIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jYCkuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIEludGVsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIEludGVsIFdpLUZpIE5JQ3MsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg4MTI3ODExMjgwODU1M2IyOTFmZjIwZTBkNWUzNjQ0ODdlZjk5MjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOTozNToyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNcbmluZGV4IDg1MDIxMjlhYmU0OTMuLjgzMGMyNTFmNDNhZmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNcbkBAIC0xOCw5ICsxOCwxNSBAQCBzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxuIGl3bF9tbGRfY29weV9tY2NfcmVzcChjb25zdCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICptY2NfcmVzcF92OCA9IChjb25zdCB2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4tXHRpbnQgbl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtXHUwMDNlbl9jaGFubmVscyk7XG4gXHRzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqcmVzcF9jcDtcbi1cdGludCBub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7XG4rXHRpbnQgbl9jaGFubmVscztcbitcdGludCBub3RpZl9sZW47XG4rXG4rXHRpZiAoaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBzaXplb2YoKm1jY19yZXNwX3Y4KSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4rXG4rXHRuX2NoYW5uZWxzID0gX19sZTMyX3RvX2NwdShtY2NfcmVzcF92OC1cdTAwM2VuX2NoYW5uZWxzKTtcbitcdG5vdGlmX2xlbiA9IHN0cnVjdF9zaXplKHJlc3BfY3AsIGNoYW5uZWxzLCBuX2NoYW5uZWxzKTtcbiBcbiBcdGlmIChpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgIT0gbm90aWZfbGVuKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjIyLjE5NzM5NzA5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDI1ODk4MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFdvcnRoRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaXdsX21sZF9jb3B5X21jY19yZXNwYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBhIHBheWxvYWQgbGVuZ3RoIGNoZWNrIHRvIHRoYXQgZnVuY3Rpb246IGBpZiAoaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBzaXplb2YoKm1jY19yZXNwX3Y4KSkgcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7YC4gU2VlbXMgc2Vuc2libGUsIGEgYmFzaWMgc2FmZXR5IGNoZWNrLlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBmdXp6YWJsZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQncyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIFFFTVUgb3IgR0NFIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLlxuXG5TbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYGl3bHdpZmlgLiBJcyBpdCBwdXJlbHkgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIEludGVsIFdpRmkgY2FyZHMsIHJlcXVpcmluZyBhIFBDSWUvUENJL0FDUEkgZGV2aWNlLCBvciBkb2VzIGl0IGhhdmUgc29tZSBraW5kIG9mIHNpbXVsYXRlZCBoYXJkd2FyZSBwYXRoPyBEb2VzIGl0IGhhdmUgc29tZXRoaW5nIGFraW4gdG8gYG1hYzgwMjExX2h3c2ltYCBvciBhIHZpcnR1YWxpemVkIHRyYW5zcG9ydCBsYXllcj8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGBpd2wtdHJhbnMtc2ltLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLlxuXG5JJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBzdXJyb3VuZGluZyBgaXdsd2lmaWAgY29kZS4gSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdXNpbmcgZ3JlcCBvciBhIGRpcmVjdG9yeSBzZWFyY2ggdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgc2ltdWxhdGlvbiwgZW11bGF0aW9uLCBvciB0ZXN0aW5nIHdpdGhpbiBgaXdsd2lmaWAuIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIGl0IHN1cHBvcnRzIHNpbXVsYXRlZCBoYXJkd2FyZSwgb3IgaWYgaXQncyBwdXJlbHkgYSB2ZW5kb3IgZHJpdmVyIHRpZWQgdG8gcmVhbCBJbnRlbCBXaUZpIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzU6NDcuMjIzMjk4MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjIyMDg3MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX21sZF9jb3B5X21jY19yZXNwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9MTc9c3RhdGljIHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoxODppd2xfbWxkX2NvcHlfbWNjX3Jlc3AoY29uc3Qgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0xOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz00Mz1pd2xfbWxkX3VwZGF0ZV9tY2Moc3RydWN0IGl3bF9tbGQgKm1sZCwgY29uc3QgY2hhciAqYWxwaGEyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6NzA6XFx0cmVzcF9jcCA9IGl3bF9tbGRfY29weV9tY2NfcmVzcChwa3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTcxLVxcdGlmIChJU19FUlIocmVzcF9jcCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjQ3LjQ4NTUxMzQ4OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4NzAxMjQyNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBpd2x3aWZpKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBLY29uZmlnIHNldHVwIGZvciB0aGUgaXdsd2lmaSBtb2R1bGUgYW5kIGl0cyByZWxldmFudCBkcml2ZXIgY29tcG9uZW50cy4gSSdtIGhlYWRpbmcgc3RyYWlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXI6IGBpd2x3aWZpYCBpdHNlbGYsIGFuZCB0aGVuIHNwZWNpZmljYWxseSwgdGhlIHBhdGggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBvcHRpb25zIGFyZSBjb25maWd1cmVkIGFzIGV4cGVjdGVkLCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb2J2aW91cyBkZXBlbmRlbmNpZXMgSSdtIG92ZXJsb29raW5nLCBhbmQgdGhhdCB0aGUgYnVpbGQgaXMgc2V0IHVwIGNvcnJlY3RseSBpbiByZWxhdGlvbiB0byBhbnkgb3RoZXIgd2lyZWxlc3MgY29uZmlndXJhdGlvbi4gSXQncyBhIGZvdW5kYXRpb25hbCBzdGVwLCBtYWtpbmcgc3VyZSB0aGUgcmlnaHQgcGllY2VzIGFyZSBldmVuICplbGlnaWJsZSogdG8gYmUgcGFydCBvZiB0aGUgYnVpbGQgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueSBtb3JlIGRldGFpbGVkIGFuYWx5c2lzLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBiYXNpY3MgYXJlIGNvcnJlY3QgYmVmb3JlIG1vdmluZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjUzLjM1NTYzOTUxMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJpd2wtYWduLWh3LmhcIixcbiAgICBcIml3bC1jb25maWcuaFwiLFxuICAgIFwiaXdsLWNzci5oXCIsXG4gICAgXCJpd2wtZGJnLXRsdi5jXCIsXG4gICAgXCJpd2wtZGJnLXRsdi5oXCIsXG4gICAgXCJpd2wtZGVidWcuY1wiLFxuICAgIFwiaXdsLWRlYnVnLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS1kYXRhLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS1pby5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaXdsd2lmaS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtbXNnLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS11Y29kZS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UuY1wiLFxuICAgIFwiaXdsLWRldnRyYWNlLmhcIixcbiAgICBcIml3bC1kcnYuY1wiLFxuICAgIFwiaXdsLWRydi5oXCIsXG4gICAgXCJpd2wtZmguaFwiLFxuICAgIFwiaXdsLWlvLmNcIixcbiAgICBcIml3bC1pby5oXCIsXG4gICAgXCJpd2wtbW9kcGFyYW1zLmhcIixcbiAgICBcIml3bC1udm0tcGFyc2UuY1wiLFxuICAgIFwiaXdsLW52bS1wYXJzZS5oXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmNcIixcbiAgICBcIml3bC1udm0tdXRpbHMuaFwiLFxuICAgIFwiaXdsLW9wLW1vZGUuaFwiLFxuICAgIFwiaXdsLXBoeS1kYi5jXCIsXG4gICAgXCJpd2wtcGh5LWRiLmhcIixcbiAgICBcIml3bC1wcnBoLmhcIixcbiAgICBcIml3bC1zY2QuaFwiLFxuICAgIFwiaXdsLXRyYW5zLmNcIixcbiAgICBcIml3bC10cmFucy5oXCIsXG4gICAgXCJpd2wtdXRpbHMuY1wiLFxuICAgIFwiaXdsLXV0aWxzLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiY2ZnXCIsXG4gICAgXCJkdm1cIixcbiAgICBcImZ3XCIsXG4gICAgXCJtZWlcIixcbiAgICBcIm1sZFwiLFxuICAgIFwibXZtXCIsXG4gICAgXCJwY2llXCIsXG4gICAgXCJ0ZXN0c1wiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjUzLjM1NTc0NDM3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MjEwNDUxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgSW50ZWwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcnMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBzcGVjaWZpY2FsbHksIEknbGwgYmUgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgLCBvciBhbnl0aGluZyBzaW1pbGFyIHRoYXQgbWlnaHQgY29udGFpbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc2VlIHdoYXQncyB3aGF0LiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGRlY2lzaW9ucyBhYm91dCBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhlc2UgZHJpdmVycyByZXNpZGUsIHNvIHRoaXMgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzU6NTguODc2NzkyMTM5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDM5NDQ2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjI6Y29uZmlnIElXTEVHQUNZXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZzo4OmNvbmZpZyBJV0w0OTY1XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIDQ5NjVBR04gKGl3bDQ5NjUpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjM3OmNvbmZpZyBJV0wzOTQ1XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUFJPL1dpcmVsZXNzIDM5NDVBQkcvQkcgTmV0d29yayBDb25uZWN0aW9uIChpd2wzOTQ1KVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc9NjQ9bWVudSBcXFwiaXdsMzk0NSAvIGl3bDQ5NjUgRGVidWdnaW5nIE9wdGlvbnNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6Njc6Y29uZmlnIElXTEVHQUNZX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy02OC1cXHRib29sIFxcXCJFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIGl3bGVnYWN5IChpd2wgMzk0NS80OTY1KSBkcml2ZXJzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjkzOmNvbmZpZyBJV0xFR0FDWV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05NC1cXHRib29sIFxcXCJpd2xlZ2FjeSAoaXdsIDM5NDUvNDk2NSkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2Njpjb25maWcgSVdMRFZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xNTg9ZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjA6Y29uZmlnIElXTE1FSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIkludGVsIE1hbmFnZW1lbnQgRW5naW5lIGNvbW11bmljYXRpb24gb3ZlciBXTEFOXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNTo1OS4wNTExOTI3NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTUxMTg1OTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBpd2x3aWZpIERyaXZlcidzIFNjb3BlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2AgZGlyZWN0b3J5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3BlY2lmaWMgZnVuY3Rpb24gd2l0aGluIHRoZSBicm9hZGVyIGl3bHdpZmkgZnJhbWV3b3JrLiBXaGF0IGFyZSB0aGUgYnVzIGludGVyZmFjZXMgYW5kIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIHRoaXMgcGFydGljdWxhciBtb2R1bGUgaXMgZGVzaWduZWQgdG8gc3VwcG9ydD8gVW5kZXJzdGFuZGluZyB0aGUgc3VwcG9ydGVkIGhhcmR3YXJlIGlzIGNyaXRpY2FsIGZvciBhbnkgYW5hbHlzaXMuXG5cbkZvbGxvd2luZyB0aGF0LCBJJ2xsIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgLiBUaGlzIGZpbGUgc2hvdWxkIHNoZWQgbGlnaHQgb24gdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaXdsd2lmaS4gVGhpcyBLY29uZmlnIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3Qgd2l0aGluIHRoZSBkcml2ZXIuIFRoaXMgZXhhbWluYXRpb24gd2lsbCBnaXZlIG1lIGluc2lnaHRzIGludG8gaG93IGl3bHdpZmkgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBoYXJkd2FyZSBvciBmZWF0dXJlIHNldHMgYXJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NjcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNjoxMC41NjMwNTQ1MDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIElXTFdJRklcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gSVdMTUVJIHx8ICFJV0xNRUlcXG4gICA2OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgU2VsZWN0IHRvIGJ1aWxkIHRoZSBkcml2ZXIgc3VwcG9ydGluZyB0aGU6XFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgSW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIE5leHQtR2VuIEFHTlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdXNlIHdpdGggdGhlIGZvbGxvd2luZyBoYXJkd2FyZTpcXG4gIDEzOlxcdFxcdFxcdEludGVsIFdpcmVsZXNzIFdpRmkgTGluayA2MjUwQUdOIEFkYXB0ZXJcXG4gIDE0OlxcdFxcdFxcdEludGVsIDYwMDAgU2VyaWVzIFdpLUZpIEFkYXB0ZXJzICg2MjAwQUdOIGFuZCA2MzAwQUdOKVxcbiAgMTU6XFx0XFx0XFx0SW50ZWwgV2lGaSBMaW5rIDEwMDBCR05cXG4gIDE2OlxcdFxcdFxcdEludGVsIFdpcmVsZXNzIFdpRmkgNTE1MEFHTlxcbiAgMTc6XFx0XFx0XFx0SW50ZWwgV2lyZWxlc3MgV2lGaSA1MTAwQUdOLCA1MzAwQUdOLCBhbmQgNTM1MEFHTlxcbiAgMTg6XFx0XFx0XFx0SW50ZWwgNjAwNSBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcXG4gIDE5OlxcdFxcdFxcdEludGVsIDYwMzAgU2VyaWVzIFdpLUZpIEFkYXB0ZXJzXFxuICAyMDpcXHRcXHRcXHRJbnRlbCBXaXJlbGVzcyBXaUZpIExpbmsgNjE1MEJHTiAyIEFkYXB0ZXJcXG4gIDIxOlxcdFxcdFxcdEludGVsIDEwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnMgKDEwMEJHTiBhbmQgMTMwQkdOKVxcbiAgMjI6XFx0XFx0XFx0SW50ZWwgMjAwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcXG4gIDIzOlxcdFxcdFxcdEludGVsIDcyNjAgV2ktRmkgQWRhcHRlclxcbiAgMjQ6XFx0XFx0XFx0SW50ZWwgMzE2MCBXaS1GaSBBZGFwdGVyXFxuICAyNTpcXHRcXHRcXHRJbnRlbCA3MjY1IFdpLUZpIEFkYXB0ZXJcXG4gIDI2OlxcdFxcdFxcdEludGVsIDgyNjAgV2ktRmkgQWRhcHRlclxcbiAgMjc6XFx0XFx0XFx0SW50ZWwgMzE2NSBXaS1GaSBBZGFwdGVyXFxuICAyODpcXHRcXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUaGlzIGRyaXZlciB1c2VzIHRoZSBrZXJuZWwncyBtYWM4MDIxMSBzdWJzeXN0ZW0uXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSW4gb3JkZXIgdG8gdXNlIHRoaXMgZHJpdmVyLCB5b3Ugd2lsbCBuZWVkIGEgZmlybXdhcmVcXG4gIDMzOlxcdFxcdCAgaW1hZ2UgZm9yIGl0LiBZb3UgY2FuIG9idGFpbiB0aGUgbWljcm9jb2RlIGZyb206XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgICAgICAgICBcXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9pd2x3aWZpXFx1MDAzZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBUaGUgZmlybXdhcmUgaXMgdHlwaWNhbGx5IGluc3RhbGxlZCBpbiAvbGliL2Zpcm13YXJlLiBZb3UgY2FuXFxuICAzODpcXHRcXHQgIGxvb2sgaW4gdGhlIGhvdHBsdWcgc2NyaXB0IC9ldGMvaG90cGx1Zy9maXJtd2FyZS5hZ2VudCB0b1xcbiAgMzk6XFx0XFx0ICBkZXRlcm1pbmUgd2hpY2ggZGlyZWN0b3J5IEZJUk1XQVJFX0RJUiBpcyBzZXQgdG8gd2hlbiB0aGUgc2NyaXB0XFxuICA0MDpcXHRcXHQgIHJ1bnMuXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSB0aGUgZHJpdmVyIGFzIGEgbW9kdWxlICggPSBjb2RlIHdoaWNoIGNhbiBiZVxcbiAgNDM6XFx0XFx0ICBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3Ugd2FudCksXFxuICA0NDpcXHRcXHQgIHNheSBNIGhlcmUgYW5kIHJlYWQgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3RcXHUwMDNlLiAgVGhlXFxuICA0NTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpd2x3aWZpLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRpZiBJV0xXSUZJXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuICA1MDpcXHRcXHR0cmlzdGF0ZVxcbiAgNTE6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbiAgNTI6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgRW5hYmxlIHRoaXMgb3B0aW9uIGZvciBpd2x3aWZpIGt1bml0IHRlc3RzLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1NzpcXHRcXG4gIDU4OlxcdGNvbmZpZyBJV0xXSUZJX0xFRFNcXG4gIDU5OlxcdFxcdGJvb2xcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gSVdMTVZNIHx8IElXTERWTVxcbiAgNjI6XFx0XFx0c2VsZWN0IExFRFNfVFJJR0dFUlNcXG4gIDYzOlxcdFxcdHNlbGVjdCBNQUM4MDIxMV9MRURTXFxuICA2NDpcXHRcXHRkZWZhdWx0IHlcXG4gIDY1OlxcdFxcbiAgNjY6XFx0Y29uZmlnIElXTERWTVxcbiAgNjc6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgRFZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA2ODpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICA2OTpcXHRcXHRoZWxwXFxuICA3MDpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRoZSBEVk0gZmlybXdhcmUuIFRoZSBsaXN0XFxuICA3MTpcXHRcXHQgIG9mIHRoZSBkZXZpY2VzIHRoYXQgdXNlIHRoaXMgZmlybXdhcmUgaXMgYXZhaWxhYmxlIGhlcmU6XFxuICA3MjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL2RyaXZlcnMvaXdsd2lmaSNmaXJtd2FyZVxcbiAgNzM6XFx0XFxuICA3NDpcXHRjb25maWcgSVdMTVZNXFxuICA3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFxcXCJcXG4gIDc2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgNzc6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNzk6XFx0XFx0aGVscFxcbiAgODA6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgTVZNIGZpcm13YXJlLiBUaGUgbGlzdFxcbiAgODE6XFx0XFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxcbiAgODI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcXG4gIDgzOlxcdFxcbiAgODQ6XFx0Y29uZmlnIElXTE1MRFxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA4NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDg3OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDg4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDg5OlxcdFxcdGhlbHBcXG4gIDkwOlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgZmlybXdhcmVzIG9mIE1MRCBjYXBhYmxlIGRldmljZXMuXFxuICA5MTpcXHRcXHQgIFRoZSBsaXN0IG9mIHRoZSBkZXZpY2VzIHRoYXQgdXNlIHRoaXMgZmlybXdhcmUgaXMgYXZhaWxhYmxlIGhlcmU6XFxuICA5MjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL2RyaXZlcnMvaXdsd2lmaSNmaXJtd2FyZVxcbiAgOTM6XFx0XFxuICA5NDpcXHQjIGRvbid0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXFxuICA5NTpcXHRjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxcbiAgOTY6XFx0XFx0Ym9vbFxcbiAgOTc6XFx0XFx0ZGVmYXVsdCB5IGlmIElXTERWTT1tXFxuICA5ODpcXHRcXHRkZWZhdWx0IHkgaWYgSVdMTVZNPW1cXG4gIDk5OlxcdFxcdGRlZmF1bHQgeSBpZiBJV0xNTEQ9bVxcbiAxMDA6XFx0XFx0ZGVmYXVsdCB5IGlmIElXTFdJRklfS1VOSVRfVEVTVFM9bVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNjoxMC41NjMxMjk1NzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDEwNjU2MDg2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBhbmQgVmlydHVhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IGBpd2x3aWZpYCB3b3JrcyBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgaXQncyBhIFBDSSBkcml2ZXIg4oCTIHRoYXQncyBjbGVhciBmcm9tIGl0cyBkZXBlbmRlbmNpZXMgKGBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFgKS4gVGhlIG5leHQgcXVlc3Rpb24sIG9mIGNvdXJzZSwgaXMgaWYgUUVNVSBldmVuICpwcmV0ZW5kcyogdG8gaGF2ZSBhbiBgaXdsd2lmaWAgZGV2aWNlLiBOb3BlLCBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzb2x1dGlvbnMgbGlrZSBHQ0UgYW5kIFFFTVUgc3RpY2sgdG8gdGhlIHVzdWFsIHN1c3BlY3RzOiBgZTEwMDBgLCBgdmlydGlvLW5ldGAuIEZvciBXaS1GaSwgaXTigJlzIGFsbCBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aXJ0X3dpZmlgIHdoaWNoIGdvIHN0cmFpZ2h0IHRvIGBtYWM4MDIxMWAgd2l0aG91dCB0b3VjaGluZyBgaXdsd2lmaWAuXG5cbkJ1dCwgd2FpdC4uLiBkb2VzIGBpd2x3aWZpYCBoYXZlIHNvbWUgc29ydCBvZiB2aXJ0dWFsIHRyYW5zcG9ydCBtZWNoYW5pc20sIG9yIGNhbiBpdCBiZSByZWFjaGVkIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYD8gTm8sIGl0IGxvb2tzIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBpcyBpdHMgb3duIHRoaW5nLCBjb21wbGV0ZWx5IHNlcGFyYXRlLCBkZWZpbmVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmNgLiBJdCBkaXJlY3RseSBpbnRlcmZhY2VzIHdpdGggYG1hYzgwMjExYCB3aXRob3V0IGV2ZW4gdXNpbmcgYGl3bHdpZmlgIChvciBgaXdsX21sZGApLlxuXG5TbywgdGhlIGNvbmNsdXNpb24gaXM6IGBpd2x3aWZpYCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEludGVsIFdpRmkgUENJIGRldmljZXMg4oCTIHRoZSA2MjUwLCA3MjYwLCBBWDIwMCwgQVgyMTAsIEJFMjAwLCB0aGUgd2hvbGUgZmFtaWx5LlxuXG5BbHJpZ2h0LCBsZXQncyBiYWNrIHVwIGEgbGl0dGxlLiBNYXliZSB0aGVyZSBhcmUgc29tZSB0ZXN0cyBvciBvdGhlciBpbnRlcm5hbCB3b3JraW5ncyBJJ20gbWlzc2luZy4gTGV0J3MgZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMvYCBkaXJlY3RvcnkgYW5kIHNlZSB3aGF0IHRoZSBkcml2ZXIgaGFzIGluIHN0b3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDg5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzY6NTEuNjI4NzQwMTk3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRldmluZm8uY1wiLFxuICAgIFwibW9kdWxlLmNcIixcbiAgICBcIm52bV9wYXJzZS5jXCIsXG4gICAgXCJ1dGlscy5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM2OjUxLjYyODc4ODk3N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgzMDgzNjkxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gaXdsX21sZF9jb3B5X21jY19yZXNwIGFuZCBpd2xfbWxkX3VwZGF0ZV9tY2MqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgZGl2ZSBpbnRvIHRoZSBjYWxscyBhbmQgdXNhZ2UgcGF0dGVybnMgb2YgYGl3bF9tbGRfY29weV9tY2NfcmVzcGAgYW5kIGBpd2xfbWxkX3VwZGF0ZV9tY2NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGVzZSBmdW5jdGlvbnMgZml0IGludG8gdGhlIGxhcmdlciBNQ0MgKE11bHRpLUNhcnJpZXIgQ29tbXVuaWNhdGlvbikgZnJhbWV3b3JrIHdpdGhpbiB0aGUgSW50ZWwgV2lyZWxlc3MgZHJpdmVyLiBUaGlzIGludm9sdmVzIHRyYWNpbmcgdGhlIGNvZGUgcGF0aHMgdG8gc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgKmNhbGxlZCogZnJvbSwgYW5kIGVxdWFsbHkgaW1wb3J0YW50LCBob3cgdGhlaXIgKnJlc3VsdHMqIGFyZSB0aGVuIHV0aWxpemVkIGVsc2V3aGVyZSBpbiB0aGUgc3lzdGVtLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBwb3RlbnRpYWwgZGF0YSBkZXBlbmRlbmNpZXMgYW5kIHRoZSB0aW1pbmcgY29uc2lkZXJhdGlvbnMgaW52b2x2ZWQgaW4gdGhlaXIgaW50ZXJhY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgcG9zc2libGUgcmFjZSBjb25kaXRpb25zLCBvciBhcmVhcyB3aGVyZSBvcHRpbWl6YXRpb24gbWlnaHQgYmUgcG9zc2libGUuIEEgdGhvcm91Z2ggdW5kZXJzdGFuZGluZyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyBpZiB0aGlzIGlzIGFuIGFyZWEgZm9yIHJlZmFjdG9yaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjY3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM3OjAyLjQ1OTYyNzkzMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg4NjEwODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tbGRfdXBkYXRlX21jY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTQyPXN0YXRpYyBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6NDM6aXdsX21sZF91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbWxkICptbGQsIGNvbnN0IGNoYXIgKmFscGhhMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy00NC1cXHRcXHQgICBlbnVtIGl3bF9tY2Nfc291cmNlIHNyY19pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTg5PWl3bF9tbGRfZ2V0X3JlZ2RvbWFpbihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jOjEwMzpcXHRyZXNwID0gaXdsX21sZF91cGRhdGVfbWNjKG1sZCwgYWxwaGEyLCBzcmNfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTEwNC1cXHRpZiAoSVNfRVJSKHJlc3ApKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM3OjAyLjc0ODI0NDIxOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDgyMzczMjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBgaXdsX21sZF9nZXRfcmVnZG9tYWluYCBDYWxsZXJzKipcblxuT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IG9mIGBpd2xfbWxkX2dldF9yZWdkb21haW5gLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgZXZlbiAqdXNlZCouIE5vIHBvaW50IGluIGFuYWx5emluZyBpdHMgaW50ZXJuYWxzIGlmIEkgZG9uJ3Qga25vdyB0aGUgY2FsbGluZyBzZXF1ZW5jZS4gU28sIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGUgd2hlcmUgYGl3bF9tbGRfZ2V0X3JlZ2RvbWFpbmAgaXMgaW52b2tlZC4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyBmb3IgdGhpcyDigJMgYGdyZXBgLCBgZmluZGAsIG9yIHdoYXRldmVyJ3MgYXBwcm9wcmlhdGUgZm9yIHRoaXMgcHJvamVjdCBhbmQgaXRzIGNvZGViYXNlLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUgZm9yIGFueSBraW5kIG9mIGRlZXAgZGl2ZSBpbnRvIGEgZnVuY3Rpb24ncyByb2xlLiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGFibGUgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIGl0cyBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODU0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6Mzc6MDcuMjMwNjE5NDNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mzg5NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tbGRfZ2V0X3JlZ2RvbWFpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTg4PXN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzo4OTppd2xfbWxkX2dldF9yZWdkb21haW4oc3RydWN0IGl3bF9tbGQgKm1sZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy05MC1cXHRcXHQgICAgICBjb25zdCBjaGFyICphbHBoYTIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz0xNjQ9aXdsX21sZF9nZXRfY3VycmVudF9yZWdkb21haW4oc3RydWN0IGl3bF9tbGQgKm1sZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTE2Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6MTY3OlxcdHJldHVybiBpd2xfbWxkX2dldF9yZWdkb21haW4obWxkLCBcXFwiWlpcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTE2OC1cXHRcXHRcXHRcXHQgICAgIE1DQ19TT1VSQ0VfR0VUX0NVUlJFTlQsIGNoYW5nZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9MTg2PXN0YXRpYyBpbnQgaXdsX21sZF9hcHBseV9sYXN0X21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMjAyLVxcdC8qIE5vdyBzZXQgb3VyIGxhc3Qgc3RvcmVkIE1DQyBhbmQgc291cmNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6MjAzOlxcdHJlZ2QgPSBpd2xfbWxkX2dldF9yZWdkb21haW4obWxkLCBhbHBoYTIsIHVzZWRfc3JjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTIwNC1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZjaGFuZ2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTIxOD1pbnQgaXdsX21sZF9pbml0X21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMjM2LVxcdFxcdGtmcmVlKHJlZ2QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jOjIzNzpcXHRcXHRyZWdkID0gaXdsX21sZF9nZXRfcmVnZG9tYWluKG1sZCwgbWNjLCBNQ0NfU09VUkNFX0JJT1MsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTIzOC1cXHRcXHRpZiAoSVNfRVJSX09SX05VTEwocmVnZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz0yNjk9dm9pZCBpd2xfbWxkX2hhbmRsZV91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yOTItXFx0XFx0ICAgICAgbWNjLCBzcmMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jOjI5MzpcXHRyZWdkID0gaXdsX21sZF9nZXRfcmVnZG9tYWluKG1sZCwgbWNjLCBzcmMsIFxcdTAwMjZjaGFuZ2VkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yOTQtXFx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZ2QpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmg9MTE9c3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5oOjEyOml3bF9tbGRfZ2V0X3JlZ2RvbWFpbihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5oLTEzLVxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKmFscGhhMixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6Mzc6MDcuMjgwMDEzMzE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxMjE5Nzc4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQ0MgVXBkYXRlIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIGhvdyB0aGUgTUNDIChNb2JpbGUgQ291bnRyeSBDb2RlKSBpcyB1cGRhdGVkIGluIHRoaXMgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLiBNeSBpbml0aWFsIHBvaW50IG9mIHJlZmVyZW5jZSBpcyBgaXdsX21sZF91cGRhdGVfbWNjYCwgd2hpY2gsIGZyb20gd2hhdCBJJ20gc2VlaW5nLCBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHRoaXMgcHJvY2Vzcy4gSXQgc2VlbXMgdG8ga2ljayB0aGluZ3Mgb2ZmIGJ5IGNyYWZ0aW5nIGEgY29tbWFuZCB0aGF0IGl0IHRoZW4gcGFzc2VzIG9mZiB0byB0aGUgZmlybXdhcmUuIFNwZWNpZmljYWxseSwgaXQgdXNlcyBgaXdsX21sZF9zZW5kX2NtZF9wZHVgIHRvIGNvbnN0cnVjdCBhbmQgc2VuZCBhIFBEVSAoUHJvdG9jb2wgRGF0YSBVbml0KSwgdGFyZ2V0aW5nIGBXSURFX0lEKFJFR1VMQVRPUllfQU5EX0RFQlVHX0dST1VQLCBNQ0NfVVBEQVRFX0NNRClgLiBUaGlzIGBXSURFX0lEYCBzdWdnZXN0cyB0aGUgY29tbWFuZCBiZWxvbmdzIHRvIHRoZSByZWd1bGF0b3J5L2RlYnVnIGNhdGVnb3J5LCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgTUNDJ3MgcmVndWxhdG9yeSBpbXBsaWNhdGlvbnMuIE5vdywgSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGNvZGUgaXRzZWxmIHRvIHVuZGVyc3RhbmQgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIHRoaXMgdXBkYXRlLiBJJ2xsIHN0YXJ0IGJ5IGV4YW1pbmluZyBgaXdsX21sZF91cGRhdGVfbWNjYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAzOSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNzoxNC40MDE5OTMzODhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFxuICA0MTpcXHQvKiBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZnJlZSB0aGUgcG9pbnRlciByZXR1cm5lZCBoZXJlICovXFxuICA0MjpcXHRzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxcbiAgNDM6XFx0aXdsX21sZF91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbWxkICptbGQsIGNvbnN0IGNoYXIgKmFscGhhMixcXG4gIDQ0OlxcdFxcdFxcdCAgIGVudW0gaXdsX21jY19zb3VyY2Ugc3JjX2lkKVxcbiAgNDU6XFx0e1xcbiAgNDY6XFx0XFx0c3RydWN0IGl3bF9tY2NfdXBkYXRlX2NtZCBtY2NfdXBkYXRlX2NtZCA9IHtcXG4gIDQ3OlxcdFxcdFxcdC5tY2MgPSBjcHVfdG9fbGUxNihhbHBoYTJbMF0gXFx1MDAzY1xcdTAwM2MgOCB8IGFscGhhMlsxXSksXFxuICA0ODpcXHRcXHRcXHQuc291cmNlX2lkID0gKHU4KXNyY19pZCxcXG4gIDQ5OlxcdFxcdH07XFxuICA1MDpcXHRcXHRzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqcmVzcF9jcDtcXG4gIDUxOlxcdFxcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3Q7XFxuICA1MjpcXHRcXHRzdHJ1Y3QgaXdsX2hvc3RfY21kIGNtZCA9IHtcXG4gIDUzOlxcdFxcdFxcdC5pZCA9IE1DQ19VUERBVEVfQ01ELFxcbiAgNTQ6XFx0XFx0XFx0LmZsYWdzID0gQ01EX1dBTlRfU0tCLFxcbiAgNTU6XFx0XFx0XFx0LmRhdGEgPSB7IFxcdTAwMjZtY2NfdXBkYXRlX2NtZCB9LFxcbiAgNTY6XFx0XFx0XFx0LmxlblswXSA9IHNpemVvZihtY2NfdXBkYXRlX2NtZCksXFxuICA1NzpcXHRcXHR9O1xcbiAgNTg6XFx0XFx0aW50IHJldDtcXG4gIDU5OlxcdFxcdHUxNiBtY2M7XFxuICA2MDpcXHRcXG4gIDYxOlxcdFxcdElXTF9ERUJVR19MQVIobWxkLCBcXFwic2VuZCBNQ0MgdXBkYXRlIHRvIEZXIHdpdGggJyVjJWMnIHNyYyA9ICVkXFxcXG5cXFwiLFxcbiAgNjI6XFx0XFx0XFx0ICAgICAgYWxwaGEyWzBdLCBhbHBoYTJbMV0sIHNyY19pZCk7XFxuICA2MzpcXHRcXG4gIDY0OlxcdFxcdHJldCA9IGl3bF9tbGRfc2VuZF9jbWQobWxkLCBcXHUwMDI2Y21kKTtcXG4gIDY1OlxcdFxcdGlmIChyZXQpXFxuICA2NjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiAgNjc6XFx0XFxuICA2ODpcXHRcXHRwa3QgPSBjbWQucmVzcF9wa3Q7XFxuICA2OTpcXHRcXG4gIDcwOlxcdFxcdHJlc3BfY3AgPSBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AocGt0KTtcXG4gIDcxOlxcdFxcdGlmIChJU19FUlIocmVzcF9jcCkpXFxuICA3MjpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdG1jYyA9IGxlMTZfdG9fY3B1KHJlc3BfY3AtXFx1MDAzZW1jYyk7XFxuICA3NTpcXHRcXG4gIDc2OlxcdFxcdElXTF9GV19DSEVDSyhtbGQsICFtY2MsIFxcXCJtY2MgY2FuJ3QgYmUgMDogJWRcXFxcblxcXCIsIG1jYyk7XFxuICA3NzpcXHRcXG4gIDc4OlxcdFxcdElXTF9ERUJVR19MQVIobWxkLFxcbiAgNzk6XFx0XFx0XFx0ICAgICAgXFxcIk1DQyByZXNwb25zZSBzdGF0dXM6IDB4JXguIG5ldyBNQ0M6IDB4JXggKCclYyVjJylcXFxcblxcXCIsXFxuICA4MDpcXHRcXHRcXHQgICAgICBsZTMyX3RvX2NwdShyZXNwX2NwLVxcdTAwM2VzdGF0dXMpLCBtY2MsIG1jYyBcXHUwMDNlXFx1MDAzZSA4LCBtY2MgXFx1MDAyNiAweGZmKTtcXG4gIDgxOlxcdFxcbiAgODI6XFx0ZXhpdDpcXG4gIDgzOlxcdFxcdGl3bF9mcmVlX3Jlc3AoXFx1MDAyNmNtZCk7XFxuICA4NDpcXHRcXHRyZXR1cm4gcmVzcF9jcDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6Mzc6MTQuNDAyMDc4OTU4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzNzMyMTQzNjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIGBpd2x3aWZpYCBGdXp6aW5nIEFwcGxpY2FiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHByaW1hcnkgY29uY2VybiBoZXJlIGlzIGRldGVybWluaW5nIGlmIGEgc3BlY2lmaWMgY29kZSBwYXRoLCBgaXdsX21sZF9jb3B5X21jY19yZXNwYCB3aXRoaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIsIGlzIHJlYWxpc3RpY2FsbHkgZnV6emFibGUuIGBpd2x3aWZpYCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBhbmQgYXMgdGhlIGluc3RydWN0aW9ucyBjb25maXJtLCBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEludGVsIFdpLUZpIFBDSWUgYWRhcHRlcnMuIEl0IHJlbGllcyBvbiB0aGUgcHJlc2VuY2Ugb2YgcGh5c2ljYWwgSW50ZWwgaGFyZHdhcmUgYW5kLCBjcnVjaWFsbHksIGxvYWRlZCBtaWNyb2NvZGUgb3IgZmlybXdhcmUuIFN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSBkb24ndCBlbXVsYXRlICp0aGlzKiBwYXJ0aWN1bGFyIGhhcmR3YXJlOyB0aGV5IGRvbid0IHByb3ZpZGUgYSB2aXJ0dWFsaXplZCBJbnRlbCBXaS1GaSBQQ0llIGFkYXB0ZXIuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgbXkgYXNzdW1wdGlvbnMuIElzIHRoZXJlICphbnkqIFVTQiBnYWRnZXQgZW11bGF0aW9uIHRoYXQgbWlnaHQgdG91Y2ggYGl3bHdpZmlgIGNvZGU/IE5vLiBgaXdsd2lmaWAgaXMgZXhjbHVzaXZlbHkgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MuIElzIGBtYWM4MDIxMV9od3NpbWAgcmVsZXZhbnQgaGVyZT8gTm8sIHRoYXQncyBhIHNlcGFyYXRlLCBpbmRlcGVuZGVudCBkcml2ZXIgd2l0aGluIGBtYWM4MDIxMWAsIGFuZCBJIGtub3cgaXQgZG9lc24ndCBleGVjdXRlIGBpd2x3aWZpYCBkcml2ZXIgY29kZS5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3BgIGlzIHdpdGhpbiBgaXdsd2lmaWAsIHRoZXJlJ3Mgbm8gd2F5IHRvIHJlYWNoIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIHNldHVwLiBXaXRob3V0IGEgcGh5c2ljYWwgSW50ZWwgd2lyZWxlc3MgY2FyZCwgb3IgcG90ZW50aWFsbHkgKnZlcnkqIHNwZWNpZmljIGVtdWxhdGlvbnMgSSBjYW4ndCB0aGluayBvZiwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUuIFNvLCBiYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb24gdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAgd2hlbiBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiBRRU1VL0dDRSwgaXQncyBjbGVhciB0aGF0IGl0IGlzIGBmYWxzZWAgaGVyZS5cblxuTm93LCBsZXQncyBwcmVwYXJlIHRoZSBhcmd1bWVudHMgZm9yIGBzZXQtcmVzdWx0c2AuIEkgbmVlZCB0byBjb252ZXkgdGhpcyBjbGVhcmx5IGFuZCBjb25jaXNlbHkuXG5cbiogICBgV29ydGhGdXp6aW5nOiBmYWxzZWAgLSBiZWNhdXNlIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLlxuKiAgIGBGb2N1c1N5bWJvbHM6IFtdYCAtIE5vIGZvY3VzIHN5bWJvbHMgc2luY2UgdGhpcyBpcyBub3QgZnV6emFibGUuXG4qICAgYEVuYWJsZUNvbmZpZ3M6IFtdYCAtIFNpbWlsYXJseSwgbm8gY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50LCBhcyB0aGUgZHJpdmVyIGlzIG5vdCBhcHBsaWNhYmxlIHRvIHRoZSBlbnZpcm9ubWVudC5cbiogICBgUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgaXdsX21sZF9jb3B5X21jY19yZXNwKClgIGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MgYWRhcHRlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIChvciBzcGVjaWZpYyBmaXJtd2FyZS9QQ0llIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFKS4gQXMgc3VjaCwgdGhpcyBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiYCAtIFRoaXMgcmVhc29uaW5nIGNsZWFybHkgYXJ0aWN1bGF0ZXMgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIHRoZSBpbmFwcGxpY2FiaWxpdHkgb2YgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5GaW5hbGx5LCBJJ2xsIHF1aWNrbHkgcmV2aWV3IGV2ZXJ5dGhpbmc6IHRoZSBsb2dpYyBpcyBzb3VuZCwgdGhlIGFyZ3VtZW50cyBhcmUgY29uc2lzdGVudCB3aXRoIHRoZSBpbnN0cnVjdGlvbnMsIGFuZCBJJ3ZlIHByb3ZpZGVkIGEgY2xlYXIgZXhwbGFuYXRpb24uIFdlJ3JlIGdvb2QgdG8gZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTczLCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM3OjI4LjEzNDIyNTY0OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoKWAgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2ApLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBXaS1GaSBOSUNzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgaXdsX21sZF9jb3B5X21jY19yZXNwKClgIGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gSW50ZWwgUENJZSB3aXJlbGVzcyBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgSW50ZWwgV2ktRmkgTklDcywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6Mzc6MjguMTM0MjU4ODk5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowqxsjb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 19:20:06 +0000 UTC FinishedAt: 2026-08-31 19:37: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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGl3bF9tbGRfY29weV9tY2NfcmVzcCgpYCBpbiB0aGUgYGl3bHdpZmlgIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jYCkuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIEludGVsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIEludGVsIFdpLUZpIE5JQ3MsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ODEyNzgxMTI4MDg1NTNiMjkxZmYyMGUwZDVlMzY0NDg3ZWY5OTIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTk6MzU6MjAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xuaW5kZXggODUwMjEyOWFiZTQ5My4uODMwYzI1MWY0M2FmYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xuQEAgLTE4LDkgJiM0MzsxOCwxNSBAQCBzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxuIGl3bF9tbGRfY29weV9tY2NfcmVzcChjb25zdCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICptY2NfcmVzcF92OCA9IChjb25zdCB2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4tXHRpbnQgbl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtXHUwMDNlbl9jaGFubmVscyk7XG4gXHRzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqcmVzcF9jcDtcbi1cdGludCBub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7XG4mIzQzO1x0aW50IG5fY2hhbm5lbHM7XG4mIzQzO1x0aW50IG5vdGlmX2xlbjtcbiYjNDM7XG4mIzQzO1x0aWYgKGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcdTAwM2Mgc2l6ZW9mKCptY2NfcmVzcF92OCkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiYjNDM7XG4mIzQzO1x0bl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtXHUwMDNlbl9jaGFubmVscyk7XG4mIzQzO1x0bm90aWZfbGVuID0gc3RydWN0X3NpemUocmVzcF9jcCwgY2hhbm5lbHMsIG5fY2hhbm5lbHMpO1xuIFxuIFx0aWYgKGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSAhPSBub3RpZl9sZW4pXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoKWAgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2ApLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBXaS1GaSBOSUNzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODgxMjc4MTEyODA4NTUzYjI5MWZmMjBlMGQ1ZTM2NDQ4N2VmOTkyMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDE5OjM1OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYwppbmRleCA4NTAyMTI5YWJlNDkzLi44MzBjMjUxZjQzYWZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYwpAQCAtMTgsOSAmIzQzOzE4LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqCiBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoY29uc3Qgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCkKIHsKIAljb25zdCBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqbWNjX3Jlc3BfdjggPSAoY29uc3Qgdm9pZCAqKXBrdC0mZ3Q7ZGF0YTsKLQlpbnQgbl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtJmd0O25fY2hhbm5lbHMpOwogCXN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICpyZXNwX2NwOwotCWludCBub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7CiYjNDM7CWludCBuX2NoYW5uZWxzOwomIzQzOwlpbnQgbm90aWZfbGVuOwomIzQzOwomIzQzOwlpZiAoaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICZsdDsgc2l6ZW9mKCptY2NfcmVzcF92OCkpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJbl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtJmd0O25fY2hhbm5lbHMpOwomIzQzOwlub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7CiAKIAlpZiAoaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICE9IG5vdGlmX2xlbikKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgV29ydGhGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCB0b3VjaGVzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2AsIHNwZWNpZmljYWxseSB0aGUgYGl3bF9tbGRfY29weV9tY2NfcmVzcGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgcGF5bG9hZCBsZW5ndGggY2hlY2sgdG8gdGhhdCBmdW5jdGlvbjogYGlmIChpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgJmx0OyBzaXplb2YoKm1jY19yZXNwX3Y4KSkgcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7YC4gU2VlbXMgc2Vuc2libGUsIGEgYmFzaWMgc2FmZXR5IGNoZWNrLgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgZnV6emFibGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSBvciBHQ0Ugd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUuCgpTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYGl3bHdpZmlgLiBJcyBpdCBwdXJlbHkgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIEludGVsIFdpRmkgY2FyZHMsIHJlcXVpcmluZyBhIFBDSWUvUENJL0FDUEkgZGV2aWNlLCBvciBkb2VzIGl0IGhhdmUgc29tZSBraW5kIG9mIHNpbXVsYXRlZCBoYXJkd2FyZSBwYXRoPyBEb2VzIGl0IGhhdmUgc29tZXRoaW5nIGFraW4gdG8gYG1hYzgwMjExX2h3c2ltYCBvciBhIHZpcnR1YWxpemVkIHRyYW5zcG9ydCBsYXllcj8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGBpd2wtdHJhbnMtc2ltLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLgoKSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIHN1cnJvdW5kaW5nIGBpd2x3aWZpYCBjb2RlLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdXNpbmcgZ3JlcCBvciBhIGRpcmVjdG9yeSBzZWFyY2ggdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgc2ltdWxhdGlvbiwgZW11bGF0aW9uLCBvciB0ZXN0aW5nIHdpdGhpbiBgaXdsd2lmaWAuIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIGl0IHN1cHBvcnRzIHNpbXVsYXRlZCBoYXJkd2FyZSwgb3IgaWYgaXQmIzM5O3MgcHVyZWx5IGEgdmVuZG9yIGRyaXZlciB0aWVkIHRvIHJlYWwgSW50ZWwgV2lGaSBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfbWxkX2NvcHlfbWNjX3Jlc3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTE3PXN0YXRpYyBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoxODppd2xfbWxkX2NvcHlfbWNjX3Jlc3AoY29uc3Qgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTE5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz00Mz1pd2xfbWxkX3VwZGF0ZV9tY2Moc3RydWN0IGl3bF9tbGQgKm1sZCwgY29uc3QgY2hhciAqYWxwaGEyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6NzA6XHRyZXNwX2NwID0gaXdsX21sZF9jb3B5X21jY19yZXNwKHBrdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy03MS1cdGlmIChJU19FUlIocmVzcF9jcCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQyMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBEaXZlIGZvciBpd2x3aWZpKioKCk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGUgS2NvbmZpZyBzZXR1cCBmb3IgdGhlIGl3bHdpZmkgbW9kdWxlIGFuZCBpdHMgcmVsZXZhbnQgZHJpdmVyIGNvbXBvbmVudHMuIEkmIzM5O20gaGVhZGluZyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlcjogYGl3bHdpZmlgIGl0c2VsZiwgYW5kIHRoZW4gc3BlY2lmaWNhbGx5LCB0aGUgcGF0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWAuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIG9wdGlvbnMgYXJlIGNvbmZpZ3VyZWQgYXMgZXhwZWN0ZWQsIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb2J2aW91cyBkZXBlbmRlbmNpZXMgSSYjMzk7bSBvdmVybG9va2luZywgYW5kIHRoYXQgdGhlIGJ1aWxkIGlzIHNldCB1cCBjb3JyZWN0bHkgaW4gcmVsYXRpb24gdG8gYW55IG90aGVyIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIGEgZm91bmRhdGlvbmFsIHN0ZXAsIG1ha2luZyBzdXJlIHRoZSByaWdodCBwaWVjZXMgYXJlIGV2ZW4gKmVsaWdpYmxlKiB0byBiZSBwYXJ0IG9mIHRoZSBidWlsZCBiZWZvcmUgSSBkaXZlIGludG8gYW55IG1vcmUgZGV0YWlsZWQgYW5hbHlzaXMuIEkgbmVlZCB0byBlbnN1cmUgdGhlIGJhc2ljcyBhcmUgY29ycmVjdCBiZWZvcmUgbW92aW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtpd2wtYWduLWh3LmgmIzM0OywKICAgICYjMzQ7aXdsLWNvbmZpZy5oJiMzNDssCiAgICAmIzM0O2l3bC1jc3IuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGJnLXRsdi5jJiMzNDssCiAgICAmIzM0O2l3bC1kYmctdGx2LmgmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmMmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWRhdGEuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaW8uaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaXdsd2lmaS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1tc2cuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtdWNvZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuaCYjMzQ7LAogICAgJiMzNDtpd2wtZHJ2LmMmIzM0OywKICAgICYjMzQ7aXdsLWRydi5oJiMzNDssCiAgICAmIzM0O2l3bC1maC5oJiMzNDssCiAgICAmIzM0O2l3bC1pby5jJiMzNDssCiAgICAmIzM0O2l3bC1pby5oJiMzNDssCiAgICAmIzM0O2l3bC1tb2RwYXJhbXMuaCYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXBhcnNlLmMmIzM0OywKICAgICYjMzQ7aXdsLW52bS1wYXJzZS5oJiMzNDssCiAgICAmIzM0O2l3bC1udm0tdXRpbHMuYyYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXV0aWxzLmgmIzM0OywKICAgICYjMzQ7aXdsLW9wLW1vZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtcGh5LWRiLmMmIzM0OywKICAgICYjMzQ7aXdsLXBoeS1kYi5oJiMzNDssCiAgICAmIzM0O2l3bC1wcnBoLmgmIzM0OywKICAgICYjMzQ7aXdsLXNjZC5oJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5jJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5oJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5jJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2NmZyYjMzQ7LAogICAgJiMzNDtkdm0mIzM0OywKICAgICYjMzQ7ZncmIzM0OywKICAgICYjMzQ7bWVpJiMzNDssCiAgICAmIzM0O21sZCYjMzQ7LAogICAgJiMzNDttdm0mIzM0OywKICAgICYjMzQ7cGNpZSYjMzQ7LAogICAgJiMzNDt0ZXN0cyYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA0NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgSW50ZWwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXJzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgc3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AsIG9yIGFueXRoaW5nIHNpbWlsYXIgdGhhdCBtaWdodCBjb250YWluIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGRlY2lzaW9ucyBhYm91dCBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhlc2UgZHJpdmVycyByZXNpZGUsIHNvIHRoaXMgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6Mjpjb25maWcgSVdMRUdBQ1lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZzo4OmNvbmZpZyBJV0w0OTY1XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIDQ5NjVBR04gKGl3bDQ5NjUpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6Mzc6Y29uZmlnIElXTDM5NDVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBQUk8vV2lyZWxlc3MgMzk0NUFCRy9CRyBOZXR3b3JrIENvbm5lY3Rpb24gKGl3bDM5NDUpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZz02ND1tZW51IFwmIzM0O2l3bDM5NDUgLyBpd2w0OTY1IERlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6Njc6Y29uZmlnIElXTEVHQUNZX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTY4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIGl3bGVnYWN5IChpd2wgMzk0NS80OTY1KSBkcml2ZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6OTM6Y29uZmlnIElXTEVHQUNZX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctOTQtXHRib29sIFwmIzM0O2l3bGVnYWN5IChpd2wgMzk0NS80OTY1KSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NjY6Y29uZmlnIElXTERWTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY3LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBEVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg0OmNvbmZpZyBJV0xNTERcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04NS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTQtIyBkb24mIzM5O3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5NTpjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDU9bWVudSBcJiMzNDtEZWJ1Z2dpbmcgT3B0aW9uc1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXHRib29sIFwmIzM0O0VuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cdGJvb2wgXCYjMzQ7aXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzOTpjb25maWcgSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cdGJvb2wgXCYjMzQ7aXdsd2lmaSBkZXZpY2UgYWNjZXNzIHRyYWNpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTU4PWVuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2MDpjb25maWcgSVdMTUVJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTYxLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgTWFuYWdlbWVudCBFbmdpbmUgY29tbXVuaWNhdGlvbiBvdmVyIFdMQU5cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjY3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgaXdsd2lmaSBEcml2ZXImIzM5O3MgU2NvcGUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9gIGRpcmVjdG9yeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNwZWNpZmljIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBpd2x3aWZpIGZyYW1ld29yay4gV2hhdCBhcmUgdGhlIGJ1cyBpbnRlcmZhY2VzIGFuZCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIGlzIGRlc2lnbmVkIHRvIHN1cHBvcnQ/IFVuZGVyc3RhbmRpbmcgdGhlIHN1cHBvcnRlZCBoYXJkd2FyZSBpcyBjcml0aWNhbCBmb3IgYW55IGFuYWx5c2lzLgoKRm9sbG93aW5nIHRoYXQsIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgLiBUaGlzIGZpbGUgc2hvdWxkIHNoZWQgbGlnaHQgb24gdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaXdsd2lmaS4gVGhpcyBLY29uZmlnIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3Qgd2l0aGluIHRoZSBkcml2ZXIuIFRoaXMgZXhhbWluYXRpb24gd2lsbCBnaXZlIG1lIGluc2lnaHRzIGludG8gaG93IGl3bHdpZmkgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBoYXJkd2FyZSBvciBmZWF0dXJlIHNldHMgYXJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBJV0xXSUZJXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IENGRzgwMjExXG4gICA1Olx0XHRkZXBlbmRzIG9uIElXTE1FSSB8fCAhSVdMTUVJXG4gICA2Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFNlbGVjdCB0byBidWlsZCB0aGUgZHJpdmVyIHN1cHBvcnRpbmcgdGhlOlxuICAgOTpcdFxuICAxMDpcdFx0ICBJbnRlbCBXaXJlbGVzcyBXaUZpIExpbmsgTmV4dC1HZW4gQUdOXG4gIDExOlx0XG4gIDEyOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdXNlIHdpdGggdGhlIGZvbGxvd2luZyBoYXJkd2FyZTpcbiAgMTM6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIDYyNTBBR04gQWRhcHRlclxuICAxNDpcdFx0XHRJbnRlbCA2MDAwIFNlcmllcyBXaS1GaSBBZGFwdGVycyAoNjIwMEFHTiBhbmQgNjMwMEFHTilcbiAgMTU6XHRcdFx0SW50ZWwgV2lGaSBMaW5rIDEwMDBCR05cbiAgMTY6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSA1MTUwQUdOXG4gIDE3Olx0XHRcdEludGVsIFdpcmVsZXNzIFdpRmkgNTEwMEFHTiwgNTMwMEFHTiwgYW5kIDUzNTBBR05cbiAgMTg6XHRcdFx0SW50ZWwgNjAwNSBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcbiAgMTk6XHRcdFx0SW50ZWwgNjAzMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcbiAgMjA6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIDYxNTBCR04gMiBBZGFwdGVyXG4gIDIxOlx0XHRcdEludGVsIDEwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnMgKDEwMEJHTiBhbmQgMTMwQkdOKVxuICAyMjpcdFx0XHRJbnRlbCAyMDAwIFNlcmllcyBXaS1GaSBBZGFwdGVyc1xuICAyMzpcdFx0XHRJbnRlbCA3MjYwIFdpLUZpIEFkYXB0ZXJcbiAgMjQ6XHRcdFx0SW50ZWwgMzE2MCBXaS1GaSBBZGFwdGVyXG4gIDI1Olx0XHRcdEludGVsIDcyNjUgV2ktRmkgQWRhcHRlclxuICAyNjpcdFx0XHRJbnRlbCA4MjYwIFdpLUZpIEFkYXB0ZXJcbiAgMjc6XHRcdFx0SW50ZWwgMzE2NSBXaS1GaSBBZGFwdGVyXG4gIDI4Olx0XG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRoaXMgZHJpdmVyIHVzZXMgdGhlIGtlcm5lbCYjMzk7cyBtYWM4MDIxMSBzdWJzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIEluIG9yZGVyIHRvIHVzZSB0aGlzIGRyaXZlciwgeW91IHdpbGwgbmVlZCBhIGZpcm13YXJlXG4gIDMzOlx0XHQgIGltYWdlIGZvciBpdC4gWW91IGNhbiBvYnRhaW4gdGhlIG1pY3JvY29kZSBmcm9tOlxuICAzNDpcdFxuICAzNTpcdFx0ICAgICAgICAgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvaXdsd2lmaVx1MDAzZS5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVGhlIGZpcm13YXJlIGlzIHR5cGljYWxseSBpbnN0YWxsZWQgaW4gL2xpYi9maXJtd2FyZS4gWW91IGNhblxuICAzODpcdFx0ICBsb29rIGluIHRoZSBob3RwbHVnIHNjcmlwdCAvZXRjL2hvdHBsdWcvZmlybXdhcmUuYWdlbnQgdG9cbiAgMzk6XHRcdCAgZGV0ZXJtaW5lIHdoaWNoIGRpcmVjdG9yeSBGSVJNV0FSRV9ESVIgaXMgc2V0IHRvIHdoZW4gdGhlIHNjcmlwdFxuICA0MDpcdFx0ICBydW5zLlxuICA0MTpcdFxuICA0MjpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIHRoZSBkcml2ZXIgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2ggY2FuIGJlXG4gIDQzOlx0XHQgIGluc2VydGVkIGluIGFuZCByZW1vdmVkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdSB3YW50KSxcbiAgNDQ6XHRcdCAgc2F5IE0gaGVyZSBhbmQgcmVhZCBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMucnN0XHUwMDNlLiAgVGhlXG4gIDQ1Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpd2x3aWZpLlxuICA0NjpcdFxuICA0NzpcdGlmIElXTFdJRklcbiAgNDg6XHRcbiAgNDk6XHRjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuICA1MDpcdFx0dHJpc3RhdGVcbiAgNTE6XHRcdGRlcGVuZHMgb24gS1VOSVRcbiAgNTI6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDUzOlx0XHRoZWxwXG4gIDU0Olx0XHQgIEVuYWJsZSB0aGlzIG9wdGlvbiBmb3IgaXdsd2lmaSBrdW5pdCB0ZXN0cy5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNTc6XHRcbiAgNTg6XHRjb25maWcgSVdMV0lGSV9MRURTXG4gIDU5Olx0XHRib29sXG4gIDYwOlx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gIDYxOlx0XHRkZXBlbmRzIG9uIElXTE1WTSB8fCBJV0xEVk1cbiAgNjI6XHRcdHNlbGVjdCBMRURTX1RSSUdHRVJTXG4gIDYzOlx0XHRzZWxlY3QgTUFDODAyMTFfTEVEU1xuICA2NDpcdFx0ZGVmYXVsdCB5XG4gIDY1Olx0XG4gIDY2Olx0Y29uZmlnIElXTERWTVxuICA2NzpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBEVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA2ODpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICA2OTpcdFx0aGVscFxuICA3MDpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgRFZNIGZpcm13YXJlLiBUaGUgbGlzdFxuICA3MTpcdFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxuICA3MjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcbiAgNzM6XHRcbiAgNzQ6XHRjb25maWcgSVdMTVZNXG4gIDc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4gIDc2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNzc6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNzg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNzk6XHRcdGhlbHBcbiAgODA6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgdGhlIE1WTSBmaXJtd2FyZS4gVGhlIGxpc3RcbiAgODE6XHRcdCAgb2YgdGhlIGRldmljZXMgdGhhdCB1c2UgdGhpcyBmaXJtd2FyZSBpcyBhdmFpbGFibGUgaGVyZTpcbiAgODI6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvZHJpdmVycy9pd2x3aWZpI2Zpcm13YXJlXG4gIDgzOlx0XG4gIDg0Olx0Y29uZmlnIElXTE1MRFxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA4NjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDg3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDg4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDg5Olx0XHRoZWxwXG4gIDkwOlx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIGZpcm13YXJlcyBvZiBNTEQgY2FwYWJsZSBkZXZpY2VzLlxuICA5MTpcdFx0ICBUaGUgbGlzdCBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxuICA5MjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcbiAgOTM6XHRcbiAgOTQ6XHQjIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuICA5NTpcdGNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG4gIDk2Olx0XHRib29sXG4gIDk3Olx0XHRkZWZhdWx0IHkgaWYgSVdMRFZNPW1cbiAgOTg6XHRcdGRlZmF1bHQgeSBpZiBJV0xNVk09bVxuICA5OTpcdFx0ZGVmYXVsdCB5IGlmIElXTE1MRD1tXG4gMTAwOlx0XHRkZWZhdWx0IHkgaWYgSVdMV0lGSV9LVU5JVF9URVNUUz1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0ODkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBhbmQgVmlydHVhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgYGl3bHdpZmlgIHdvcmtzIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIg4oCTIHRoYXQmIzM5O3MgY2xlYXIgZnJvbSBpdHMgZGVwZW5kZW5jaWVzIChgUENJICZhbXA7JmFtcDsgSEFTX0lPTUVNICZhbXA7JmFtcDsgQ0ZHODAyMTFgKS4gVGhlIG5leHQgcXVlc3Rpb24sIG9mIGNvdXJzZSwgaXMgaWYgUUVNVSBldmVuICpwcmV0ZW5kcyogdG8gaGF2ZSBhbiBgaXdsd2lmaWAgZGV2aWNlLiBOb3BlLCBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzb2x1dGlvbnMgbGlrZSBHQ0UgYW5kIFFFTVUgc3RpY2sgdG8gdGhlIHVzdWFsIHN1c3BlY3RzOiBgZTEwMDBgLCBgdmlydGlvLW5ldGAuIEZvciBXaS1GaSwgaXTigJlzIGFsbCBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aXJ0X3dpZmlgIHdoaWNoIGdvIHN0cmFpZ2h0IHRvIGBtYWM4MDIxMWAgd2l0aG91dCB0b3VjaGluZyBgaXdsd2lmaWAuCgpCdXQsIHdhaXQuLi4gZG9lcyBgaXdsd2lmaWAgaGF2ZSBzb21lIHNvcnQgb2YgdmlydHVhbCB0cmFuc3BvcnQgbWVjaGFuaXNtLCBvciBjYW4gaXQgYmUgcmVhY2hlZCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWA/IE5vLCBpdCBsb29rcyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgaXMgaXRzIG93biB0aGluZywgY29tcGxldGVseSBzZXBhcmF0ZSwgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYC4gSXQgZGlyZWN0bHkgaW50ZXJmYWNlcyB3aXRoIGBtYWM4MDIxMWAgd2l0aG91dCBldmVuIHVzaW5nIGBpd2x3aWZpYCAob3IgYGl3bF9tbGRgKS4KClNvLCB0aGUgY29uY2x1c2lvbiBpczogYGl3bHdpZmlgIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgSW50ZWwgV2lGaSBQQ0kgZGV2aWNlcyDigJMgdGhlIDYyNTAsIDcyNjAsIEFYMjAwLCBBWDIxMCwgQkUyMDAsIHRoZSB3aG9sZSBmYW1pbHkuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYmFjayB1cCBhIGxpdHRsZS4gTWF5YmUgdGhlcmUgYXJlIHNvbWUgdGVzdHMgb3Igb3RoZXIgaW50ZXJuYWwgd29ya2luZ3MgSSYjMzk7bSBtaXNzaW5nLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMvYCBkaXJlY3RvcnkgYW5kIHNlZSB3aGF0IHRoZSBkcml2ZXIgaGFzIGluIHN0b3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGV2aW5mby5jJiMzNDssCiAgICAmIzM0O21vZHVsZS5jJiMzNDssCiAgICAmIzM0O252bV9wYXJzZS5jJiMzNDssCiAgICAmIzM0O3V0aWxzLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjY3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gaXdsX21sZF9jb3B5X21jY19yZXNwIGFuZCBpd2xfbWxkX3VwZGF0ZV9tY2MqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW50byB0aGUgY2FsbHMgYW5kIHVzYWdlIHBhdHRlcm5zIG9mIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3BgIGFuZCBgaXdsX21sZF91cGRhdGVfbWNjYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlc2UgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSBsYXJnZXIgTUNDIChNdWx0aS1DYXJyaWVyIENvbW11bmljYXRpb24pIGZyYW1ld29yayB3aXRoaW4gdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlci4gVGhpcyBpbnZvbHZlcyB0cmFjaW5nIHRoZSBjb2RlIHBhdGhzIHRvIHNlZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlICpjYWxsZWQqIGZyb20sIGFuZCBlcXVhbGx5IGltcG9ydGFudCwgaG93IHRoZWlyICpyZXN1bHRzKiBhcmUgdGhlbiB1dGlsaXplZCBlbHNld2hlcmUgaW4gdGhlIHN5c3RlbS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHBvdGVudGlhbCBkYXRhIGRlcGVuZGVuY2llcyBhbmQgdGhlIHRpbWluZyBjb25zaWRlcmF0aW9ucyBpbnZvbHZlZCBpbiB0aGVpciBpbnRlcmFjdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBmb3IgYXNzZXNzaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbnMsIG9yIGFyZWFzIHdoZXJlIG9wdGltaXphdGlvbiBtaWdodCBiZSBwb3NzaWJsZS4gQSB0aG9yb3VnaCB1bmRlcnN0YW5kaW5nIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIGlmIHRoaXMgaXMgYW4gYXJlYSBmb3IgcmVmYWN0b3JpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tbGRfdXBkYXRlX21jYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9NDI9c3RhdGljIHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jOjQzOml3bF9tbGRfdXBkYXRlX21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLCBjb25zdCBjaGFyICphbHBoYTIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy00NC1cdFx0ICAgZW51bSBpd2xfbWNjX3NvdXJjZSBzcmNfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9ODk9aXdsX21sZF9nZXRfcmVnZG9tYWluKHN0cnVjdCBpd2xfbWxkICptbGQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6MTAzOlx0cmVzcCA9IGl3bF9tbGRfdXBkYXRlX21jYyhtbGQsIGFscGhhMiwgc3JjX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTEwNC1cdGlmIChJU19FUlIocmVzcCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg1NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIGBpd2xfbWxkX2dldF9yZWdkb21haW5gIENhbGxlcnMqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IG9mIGBpd2xfbWxkX2dldF9yZWdkb21haW5gLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgZXZlbiAqdXNlZCouIE5vIHBvaW50IGluIGFuYWx5emluZyBpdHMgaW50ZXJuYWxzIGlmIEkgZG9uJiMzOTt0IGtub3cgdGhlIGNhbGxpbmcgc2VxdWVuY2UuIFNvLCB0aGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byB0cmFjayBkb3duIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlIHdoZXJlIGBpd2xfbWxkX2dldF9yZWdkb21haW5gIGlzIGludm9rZWQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIGZvciB0aGlzIOKAkyBgZ3JlcGAsIGBmaW5kYCwgb3Igd2hhdGV2ZXImIzM5O3MgYXBwcm9wcmlhdGUgZm9yIHRoaXMgcHJvamVjdCBhbmQgaXRzIGNvZGViYXNlLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUgZm9yIGFueSBraW5kIG9mIGRlZXAgZGl2ZSBpbnRvIGEgZnVuY3Rpb24mIzM5O3Mgcm9sZS4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgaXRzIGV4ZWN1dGlvbiBwYXRoIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tbGRfZ2V0X3JlZ2RvbWFpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9ODg9c3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6ODk6aXdsX21sZF9nZXRfcmVnZG9tYWluKHN0cnVjdCBpd2xfbWxkICptbGQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy05MC1cdFx0ICAgICAgY29uc3QgY2hhciAqYWxwaGEyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTE2ND1pd2xfbWxkX2dldF9jdXJyZW50X3JlZ2RvbWFpbihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTE2Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoxNjc6XHRyZXR1cm4gaXdsX21sZF9nZXRfcmVnZG9tYWluKG1sZCwgXCYjMzQ7WlpcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0xNjgtXHRcdFx0XHQgICAgIE1DQ19TT1VSQ0VfR0VUX0NVUlJFTlQsIGNoYW5nZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTE4Nj1zdGF0aWMgaW50IGl3bF9tbGRfYXBwbHlfbGFzdF9tY2Moc3RydWN0IGl3bF9tbGQgKm1sZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yMDItXHQvKiBOb3cgc2V0IG91ciBsYXN0IHN0b3JlZCBNQ0MgYW5kIHNvdXJjZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6MjAzOlx0cmVnZCA9IGl3bF9tbGRfZ2V0X3JlZ2RvbWFpbihtbGQsIGFscGhhMiwgdXNlZF9zcmMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yMDQtXHRcdFx0XHQgICAgIFx1MDAyNmNoYW5nZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTIxOD1pbnQgaXdsX21sZF9pbml0X21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTIzNi1cdFx0a2ZyZWUocmVnZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoyMzc6XHRcdHJlZ2QgPSBpd2xfbWxkX2dldF9yZWdkb21haW4obWxkLCBtY2MsIE1DQ19TT1VSQ0VfQklPUywgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yMzgtXHRcdGlmIChJU19FUlJfT1JfTlVMTChyZWdkKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz0yNjk9dm9pZCBpd2xfbWxkX2hhbmRsZV91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMjkyLVx0XHQgICAgICBtY2MsIHNyYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoyOTM6XHRyZWdkID0gaXdsX21sZF9nZXRfcmVnZG9tYWluKG1sZCwgbWNjLCBzcmMsIFx1MDAyNmNoYW5nZWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMjk0LVx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZ2QpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5oPTExPXN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5oOjEyOml3bF9tbGRfZ2V0X3JlZ2RvbWFpbihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmgtMTMtXHRcdCAgICAgIGNvbnN0IGNoYXIgKmFscGhhMixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMzkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQ0MgVXBkYXRlIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gaG93IHRoZSBNQ0MgKE1vYmlsZSBDb3VudHJ5IENvZGUpIGlzIHVwZGF0ZWQgaW4gdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIuIE15IGluaXRpYWwgcG9pbnQgb2YgcmVmZXJlbmNlIGlzIGBpd2xfbWxkX3VwZGF0ZV9tY2NgLCB3aGljaCwgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHRoaXMgcHJvY2Vzcy4gSXQgc2VlbXMgdG8ga2ljayB0aGluZ3Mgb2ZmIGJ5IGNyYWZ0aW5nIGEgY29tbWFuZCB0aGF0IGl0IHRoZW4gcGFzc2VzIG9mZiB0byB0aGUgZmlybXdhcmUuIFNwZWNpZmljYWxseSwgaXQgdXNlcyBgaXdsX21sZF9zZW5kX2NtZF9wZHVgIHRvIGNvbnN0cnVjdCBhbmQgc2VuZCBhIFBEVSAoUHJvdG9jb2wgRGF0YSBVbml0KSwgdGFyZ2V0aW5nIGBXSURFX0lEKFJFR1VMQVRPUllfQU5EX0RFQlVHX0dST1VQLCBNQ0NfVVBEQVRFX0NNRClgLiBUaGlzIGBXSURFX0lEYCBzdWdnZXN0cyB0aGUgY29tbWFuZCBiZWxvbmdzIHRvIHRoZSByZWd1bGF0b3J5L2RlYnVnIGNhdGVnb3J5LCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgTUNDJiMzOTtzIHJlZ3VsYXRvcnkgaW1wbGljYXRpb25zLiBOb3csIEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiB0byB1bmRlcnN0YW5kIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscyBvZiB0aGlzIHVwZGF0ZS4gSSYjMzk7bGwgc3RhcnQgYnkgZXhhbWluaW5nIGBpd2xfbWxkX3VwZGF0ZV9tY2NgIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XG4gIDQxOlx0LyogSXQgaXMgdGhlIGNhbGxlciYjMzk7cyByZXNwb25zaWJpbGl0eSB0byBmcmVlIHRoZSBwb2ludGVyIHJldHVybmVkIGhlcmUgKi9cbiAgNDI6XHRzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxuICA0MzpcdGl3bF9tbGRfdXBkYXRlX21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLCBjb25zdCBjaGFyICphbHBoYTIsXG4gIDQ0Olx0XHRcdCAgIGVudW0gaXdsX21jY19zb3VyY2Ugc3JjX2lkKVxuICA0NTpcdHtcbiAgNDY6XHRcdHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9jbWQgbWNjX3VwZGF0ZV9jbWQgPSB7XG4gIDQ3Olx0XHRcdC5tY2MgPSBjcHVfdG9fbGUxNihhbHBoYTJbMF0gXHUwMDNjXHUwMDNjIDggfCBhbHBoYTJbMV0pLFxuICA0ODpcdFx0XHQuc291cmNlX2lkID0gKHU4KXNyY19pZCxcbiAgNDk6XHRcdH07XG4gIDUwOlx0XHRzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqcmVzcF9jcDtcbiAgNTE6XHRcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3Q7XG4gIDUyOlx0XHRzdHJ1Y3QgaXdsX2hvc3RfY21kIGNtZCA9IHtcbiAgNTM6XHRcdFx0LmlkID0gTUNDX1VQREFURV9DTUQsXG4gIDU0Olx0XHRcdC5mbGFncyA9IENNRF9XQU5UX1NLQixcbiAgNTU6XHRcdFx0LmRhdGEgPSB7IFx1MDAyNm1jY191cGRhdGVfY21kIH0sXG4gIDU2Olx0XHRcdC5sZW5bMF0gPSBzaXplb2YobWNjX3VwZGF0ZV9jbWQpLFxuICA1NzpcdFx0fTtcbiAgNTg6XHRcdGludCByZXQ7XG4gIDU5Olx0XHR1MTYgbWNjO1xuICA2MDpcdFxuICA2MTpcdFx0SVdMX0RFQlVHX0xBUihtbGQsIFwmIzM0O3NlbmQgTUNDIHVwZGF0ZSB0byBGVyB3aXRoICYjMzk7JWMlYyYjMzk7IHNyYyA9ICVkXFxuXCYjMzQ7LFxuICA2MjpcdFx0XHQgICAgICBhbHBoYTJbMF0sIGFscGhhMlsxXSwgc3JjX2lkKTtcbiAgNjM6XHRcbiAgNjQ6XHRcdHJldCA9IGl3bF9tbGRfc2VuZF9jbWQobWxkLCBcdTAwMjZjbWQpO1xuICA2NTpcdFx0aWYgKHJldClcbiAgNjY6XHRcdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiAgNjc6XHRcbiAgNjg6XHRcdHBrdCA9IGNtZC5yZXNwX3BrdDtcbiAgNjk6XHRcbiAgNzA6XHRcdHJlc3BfY3AgPSBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AocGt0KTtcbiAgNzE6XHRcdGlmIChJU19FUlIocmVzcF9jcCkpXG4gIDcyOlx0XHRcdGdvdG8gZXhpdDtcbiAgNzM6XHRcbiAgNzQ6XHRcdG1jYyA9IGxlMTZfdG9fY3B1KHJlc3BfY3AtXHUwMDNlbWNjKTtcbiAgNzU6XHRcbiAgNzY6XHRcdElXTF9GV19DSEVDSyhtbGQsICFtY2MsIFwmIzM0O21jYyBjYW4mIzM5O3QgYmUgMDogJWRcXG5cJiMzNDssIG1jYyk7XG4gIDc3Olx0XG4gIDc4Olx0XHRJV0xfREVCVUdfTEFSKG1sZCxcbiAgNzk6XHRcdFx0ICAgICAgXCYjMzQ7TUNDIHJlc3BvbnNlIHN0YXR1czogMHgleC4gbmV3IE1DQzogMHgleCAoJiMzOTslYyVjJiMzOTspXFxuXCYjMzQ7LFxuICA4MDpcdFx0XHQgICAgICBsZTMyX3RvX2NwdShyZXNwX2NwLVx1MDAzZXN0YXR1cyksIG1jYywgbWNjIFx1MDAzZVx1MDAzZSA4LCBtY2MgXHUwMDI2IDB4ZmYpO1xuICA4MTpcdFxuICA4MjpcdGV4aXQ6XG4gIDgzOlx0XHRpd2xfZnJlZV9yZXNwKFx1MDAyNmNtZCk7XG4gIDg0Olx0XHRyZXR1cm4gcmVzcF9jcDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNzMKCQkJCQkJCW91dHB1dDogMTI4CgkJCQkJCQl0aG91Z2h0czogNTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGBpd2x3aWZpYCBGdXp6aW5nIEFwcGxpY2FiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgZGV0ZXJtaW5pbmcgaWYgYSBzcGVjaWZpYyBjb2RlIHBhdGgsIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3BgIHdpdGhpbiB0aGUgYGl3bHdpZmlgIGRyaXZlciwgaXMgcmVhbGlzdGljYWxseSBmdXp6YWJsZS4gYGl3bHdpZmlgLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGFuZCBhcyB0aGUgaW5zdHJ1Y3Rpb25zIGNvbmZpcm0sIGlzIGEgZHJpdmVyIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgSW50ZWwgV2ktRmkgUENJZSBhZGFwdGVycy4gSXQgcmVsaWVzIG9uIHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSBhbmQsIGNydWNpYWxseSwgbG9hZGVkIG1pY3JvY29kZSBvciBmaXJtd2FyZS4gU3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFIGRvbiYjMzk7dCBlbXVsYXRlICp0aGlzKiBwYXJ0aWN1bGFyIGhhcmR3YXJlOyB0aGV5IGRvbiYjMzk7dCBwcm92aWRlIGEgdmlydHVhbGl6ZWQgSW50ZWwgV2ktRmkgUENJZSBhZGFwdGVyLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgbXkgYXNzdW1wdGlvbnMuIElzIHRoZXJlICphbnkqIFVTQiBnYWRnZXQgZW11bGF0aW9uIHRoYXQgbWlnaHQgdG91Y2ggYGl3bHdpZmlgIGNvZGU/IE5vLiBgaXdsd2lmaWAgaXMgZXhjbHVzaXZlbHkgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MuIElzIGBtYWM4MDIxMV9od3NpbWAgcmVsZXZhbnQgaGVyZT8gTm8sIHRoYXQmIzM5O3MgYSBzZXBhcmF0ZSwgaW5kZXBlbmRlbnQgZHJpdmVyIHdpdGhpbiBgbWFjODAyMTFgLCBhbmQgSSBrbm93IGl0IGRvZXNuJiMzOTt0IGV4ZWN1dGUgYGl3bHdpZmlgIGRyaXZlciBjb2RlLgoKVGhlcmVmb3JlLCBiZWNhdXNlIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3BgIGlzIHdpdGhpbiBgaXdsd2lmaWAsIHRoZXJlJiMzOTtzIG5vIHdheSB0byByZWFjaCB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cC4gV2l0aG91dCBhIHBoeXNpY2FsIEludGVsIHdpcmVsZXNzIGNhcmQsIG9yIHBvdGVudGlhbGx5ICp2ZXJ5KiBzcGVjaWZpYyBlbXVsYXRpb25zIEkgY2FuJiMzOTt0IHRoaW5rIG9mLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZS4gU28sIGJhc2VkIG9uIHRoZSBpbnN0cnVjdGlvbiB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCB3aGVuIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIFFFTVUvR0NFLCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGlzIGBmYWxzZWAgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHByZXBhcmUgdGhlIGFyZ3VtZW50cyBmb3IgYHNldC1yZXN1bHRzYC4gSSBuZWVkIHRvIGNvbnZleSB0aGlzIGNsZWFybHkgYW5kIGNvbmNpc2VseS4KCiogICBgV29ydGhGdXp6aW5nOiBmYWxzZWAgLSBiZWNhdXNlIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLgoqICAgYEZvY3VzU3ltYm9sczogW11gIC0gTm8gZm9jdXMgc3ltYm9scyBzaW5jZSB0aGlzIGlzIG5vdCBmdXp6YWJsZS4KKiAgIGBFbmFibGVDb25maWdzOiBbXWAgLSBTaW1pbGFybHksIG5vIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCwgYXMgdGhlIGRyaXZlciBpcyBub3QgYXBwbGljYWJsZSB0byB0aGUgZW52aXJvbm1lbnQuCiogICBgUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaXdsX21sZF9jb3B5X21jY19yZXNwKClgIGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MgYWRhcHRlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIChvciBzcGVjaWZpYyBmaXJtd2FyZS9QQ0llIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFKS4gQXMgc3VjaCwgdGhpcyBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7YCAtIFRoaXMgcmVhc29uaW5nIGNsZWFybHkgYXJ0aWN1bGF0ZXMgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIHRoZSBpbmFwcGxpY2FiaWxpdHkgb2YgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKRmluYWxseSwgSSYjMzk7bGwgcXVpY2tseSByZXZpZXcgZXZlcnl0aGluZzogdGhlIGxvZ2ljIGlzIHNvdW5kLCB0aGUgYXJndW1lbnRzIGFyZSBjb25zaXN0ZW50IHdpdGggdGhlIGluc3RydWN0aW9ucywgYW5kIEkmIzM5O3ZlIHByb3ZpZGVkIGEgY2xlYXIgZXhwbGFuYXRpb24uIFdlJiMzOTtyZSBnb29kIHRvIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoKWAgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2ApLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBXaS1GaSBOSUNzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaXdsX21sZF9jb3B5X21jY19yZXNwKClgIGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gSW50ZWwgUENJZSB3aXJlbGVzcyBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgSW50ZWwgV2ktRmkgTklDcywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjIxLjc4Mzg3MDY4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjM1MDM5OTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoKWAgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2ApLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBXaS1GaSBOSUNzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNToyMS43ODM4NzY3OTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMjkxNTQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg4MTI3ODExMjgwODU1M2IyOTFmZjIwZTBkNWUzNjQ0ODdlZjk5MjBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTk6MzU6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xcbmluZGV4IDg1MDIxMjlhYmU0OTMuLjgzMGMyNTFmNDNhZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xcbkBAIC0xOCw5ICsxOCwxNSBAQCBzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxcbiBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoY29uc3Qgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdClcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqbWNjX3Jlc3BfdjggPSAoY29uc3Qgdm9pZCAqKXBrdC1cXHUwMDNlZGF0YTtcXG4tXFx0aW50IG5fY2hhbm5lbHMgPSBfX2xlMzJfdG9fY3B1KG1jY19yZXNwX3Y4LVxcdTAwM2VuX2NoYW5uZWxzKTtcXG4gXFx0c3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKnJlc3BfY3A7XFxuLVxcdGludCBub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7XFxuK1xcdGludCBuX2NoYW5uZWxzO1xcbitcXHRpbnQgbm90aWZfbGVuO1xcbitcXG4rXFx0aWYgKGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcXHUwMDNjIHNpemVvZigqbWNjX3Jlc3BfdjgpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4rXFxuK1xcdG5fY2hhbm5lbHMgPSBfX2xlMzJfdG9fY3B1KG1jY19yZXNwX3Y4LVxcdTAwM2VuX2NoYW5uZWxzKTtcXG4rXFx0bm90aWZfbGVuID0gc3RydWN0X3NpemUocmVzcF9jcCwgY2hhbm5lbHMsIG5fY2hhbm5lbHMpO1xcbiBcXG4gXFx0aWYgKGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSAhPSBub3RpZl9sZW4pXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNToyMi4xOTczOTU3MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyNTkzNjg2MDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGl3bF9tbGRfY29weV9tY2NfcmVzcCgpYCBpbiB0aGUgYGl3bHdpZmlgIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jYCkuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIEludGVsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIEludGVsIFdpLUZpIE5JQ3MsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg4MTI3ODExMjgwODU1M2IyOTFmZjIwZTBkNWUzNjQ0ODdlZjk5MjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOTozNToyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNcbmluZGV4IDg1MDIxMjlhYmU0OTMuLjgzMGMyNTFmNDNhZmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNcbkBAIC0xOCw5ICsxOCwxNSBAQCBzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxuIGl3bF9tbGRfY29weV9tY2NfcmVzcChjb25zdCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICptY2NfcmVzcF92OCA9IChjb25zdCB2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4tXHRpbnQgbl9jaGFubmVscyA9IF9fbGUzMl90b19jcHUobWNjX3Jlc3BfdjgtXHUwMDNlbl9jaGFubmVscyk7XG4gXHRzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqcmVzcF9jcDtcbi1cdGludCBub3RpZl9sZW4gPSBzdHJ1Y3Rfc2l6ZShyZXNwX2NwLCBjaGFubmVscywgbl9jaGFubmVscyk7XG4rXHRpbnQgbl9jaGFubmVscztcbitcdGludCBub3RpZl9sZW47XG4rXG4rXHRpZiAoaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBzaXplb2YoKm1jY19yZXNwX3Y4KSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4rXG4rXHRuX2NoYW5uZWxzID0gX19sZTMyX3RvX2NwdShtY2NfcmVzcF92OC1cdTAwM2VuX2NoYW5uZWxzKTtcbitcdG5vdGlmX2xlbiA9IHN0cnVjdF9zaXplKHJlc3BfY3AsIGNoYW5uZWxzLCBuX2NoYW5uZWxzKTtcbiBcbiBcdGlmIChpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgIT0gbm90aWZfbGVuKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjIyLjE5NzM5NzA5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDI1ODk4MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFdvcnRoRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaXdsX21sZF9jb3B5X21jY19yZXNwYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBhIHBheWxvYWQgbGVuZ3RoIGNoZWNrIHRvIHRoYXQgZnVuY3Rpb246IGBpZiAoaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBzaXplb2YoKm1jY19yZXNwX3Y4KSkgcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7YC4gU2VlbXMgc2Vuc2libGUsIGEgYmFzaWMgc2FmZXR5IGNoZWNrLlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBmdXp6YWJsZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQncyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIFFFTVUgb3IgR0NFIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLlxuXG5TbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYGl3bHdpZmlgLiBJcyBpdCBwdXJlbHkgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIEludGVsIFdpRmkgY2FyZHMsIHJlcXVpcmluZyBhIFBDSWUvUENJL0FDUEkgZGV2aWNlLCBvciBkb2VzIGl0IGhhdmUgc29tZSBraW5kIG9mIHNpbXVsYXRlZCBoYXJkd2FyZSBwYXRoPyBEb2VzIGl0IGhhdmUgc29tZXRoaW5nIGFraW4gdG8gYG1hYzgwMjExX2h3c2ltYCBvciBhIHZpcnR1YWxpemVkIHRyYW5zcG9ydCBsYXllcj8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGBpd2wtdHJhbnMtc2ltLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLlxuXG5JJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBzdXJyb3VuZGluZyBgaXdsd2lmaWAgY29kZS4gSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdXNpbmcgZ3JlcCBvciBhIGRpcmVjdG9yeSBzZWFyY2ggdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgc2ltdWxhdGlvbiwgZW11bGF0aW9uLCBvciB0ZXN0aW5nIHdpdGhpbiBgaXdsd2lmaWAuIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIGl0IHN1cHBvcnRzIHNpbXVsYXRlZCBoYXJkd2FyZSwgb3IgaWYgaXQncyBwdXJlbHkgYSB2ZW5kb3IgZHJpdmVyIHRpZWQgdG8gcmVhbCBJbnRlbCBXaUZpIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzU6NDcuMjIzMjk4MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjIyMDg3MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX21sZF9jb3B5X21jY19yZXNwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9MTc9c3RhdGljIHN0cnVjdCBpd2xfbWNjX3VwZGF0ZV9yZXNwX3Y4ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzoxODppd2xfbWxkX2NvcHlfbWNjX3Jlc3AoY29uc3Qgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0xOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz00Mz1pd2xfbWxkX3VwZGF0ZV9tY2Moc3RydWN0IGl3bF9tbGQgKm1sZCwgY29uc3QgY2hhciAqYWxwaGEyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6NzA6XFx0cmVzcF9jcCA9IGl3bF9tbGRfY29weV9tY2NfcmVzcChwa3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTcxLVxcdGlmIChJU19FUlIocmVzcF9jcCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjQ3LjQ4NTUxMzQ4OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4NzAxMjQyNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBpd2x3aWZpKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBLY29uZmlnIHNldHVwIGZvciB0aGUgaXdsd2lmaSBtb2R1bGUgYW5kIGl0cyByZWxldmFudCBkcml2ZXIgY29tcG9uZW50cy4gSSdtIGhlYWRpbmcgc3RyYWlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXI6IGBpd2x3aWZpYCBpdHNlbGYsIGFuZCB0aGVuIHNwZWNpZmljYWxseSwgdGhlIHBhdGggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBvcHRpb25zIGFyZSBjb25maWd1cmVkIGFzIGV4cGVjdGVkLCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb2J2aW91cyBkZXBlbmRlbmNpZXMgSSdtIG92ZXJsb29raW5nLCBhbmQgdGhhdCB0aGUgYnVpbGQgaXMgc2V0IHVwIGNvcnJlY3RseSBpbiByZWxhdGlvbiB0byBhbnkgb3RoZXIgd2lyZWxlc3MgY29uZmlndXJhdGlvbi4gSXQncyBhIGZvdW5kYXRpb25hbCBzdGVwLCBtYWtpbmcgc3VyZSB0aGUgcmlnaHQgcGllY2VzIGFyZSBldmVuICplbGlnaWJsZSogdG8gYmUgcGFydCBvZiB0aGUgYnVpbGQgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueSBtb3JlIGRldGFpbGVkIGFuYWx5c2lzLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBiYXNpY3MgYXJlIGNvcnJlY3QgYmVmb3JlIG1vdmluZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjUzLjM1NTYzOTUxMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJpd2wtYWduLWh3LmhcIixcbiAgICBcIml3bC1jb25maWcuaFwiLFxuICAgIFwiaXdsLWNzci5oXCIsXG4gICAgXCJpd2wtZGJnLXRsdi5jXCIsXG4gICAgXCJpd2wtZGJnLXRsdi5oXCIsXG4gICAgXCJpd2wtZGVidWcuY1wiLFxuICAgIFwiaXdsLWRlYnVnLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS1kYXRhLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS1pby5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaXdsd2lmaS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtbXNnLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS11Y29kZS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UuY1wiLFxuICAgIFwiaXdsLWRldnRyYWNlLmhcIixcbiAgICBcIml3bC1kcnYuY1wiLFxuICAgIFwiaXdsLWRydi5oXCIsXG4gICAgXCJpd2wtZmguaFwiLFxuICAgIFwiaXdsLWlvLmNcIixcbiAgICBcIml3bC1pby5oXCIsXG4gICAgXCJpd2wtbW9kcGFyYW1zLmhcIixcbiAgICBcIml3bC1udm0tcGFyc2UuY1wiLFxuICAgIFwiaXdsLW52bS1wYXJzZS5oXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmNcIixcbiAgICBcIml3bC1udm0tdXRpbHMuaFwiLFxuICAgIFwiaXdsLW9wLW1vZGUuaFwiLFxuICAgIFwiaXdsLXBoeS1kYi5jXCIsXG4gICAgXCJpd2wtcGh5LWRiLmhcIixcbiAgICBcIml3bC1wcnBoLmhcIixcbiAgICBcIml3bC1zY2QuaFwiLFxuICAgIFwiaXdsLXRyYW5zLmNcIixcbiAgICBcIml3bC10cmFucy5oXCIsXG4gICAgXCJpd2wtdXRpbHMuY1wiLFxuICAgIFwiaXdsLXV0aWxzLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiY2ZnXCIsXG4gICAgXCJkdm1cIixcbiAgICBcImZ3XCIsXG4gICAgXCJtZWlcIixcbiAgICBcIm1sZFwiLFxuICAgIFwibXZtXCIsXG4gICAgXCJwY2llXCIsXG4gICAgXCJ0ZXN0c1wiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM1OjUzLjM1NTc0NDM3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MjEwNDUxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgSW50ZWwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcnMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBzcGVjaWZpY2FsbHksIEknbGwgYmUgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgLCBvciBhbnl0aGluZyBzaW1pbGFyIHRoYXQgbWlnaHQgY29udGFpbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc2VlIHdoYXQncyB3aGF0LiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGRlY2lzaW9ucyBhYm91dCBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhlc2UgZHJpdmVycyByZXNpZGUsIHNvIHRoaXMgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzU6NTguODc2NzkyMTM5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDM5NDQ2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjI6Y29uZmlnIElXTEVHQUNZXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZzo4OmNvbmZpZyBJV0w0OTY1XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIDQ5NjVBR04gKGl3bDQ5NjUpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjM3OmNvbmZpZyBJV0wzOTQ1XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUFJPL1dpcmVsZXNzIDM5NDVBQkcvQkcgTmV0d29yayBDb25uZWN0aW9uIChpd2wzOTQ1KVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc9NjQ9bWVudSBcXFwiaXdsMzk0NSAvIGl3bDQ5NjUgRGVidWdnaW5nIE9wdGlvbnNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWc6Njc6Y29uZmlnIElXTEVHQUNZX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy02OC1cXHRib29sIFxcXCJFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIGl3bGVnYWN5IChpd2wgMzk0NS80OTY1KSBkcml2ZXJzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjkzOmNvbmZpZyBJV0xFR0FDWV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05NC1cXHRib29sIFxcXCJpd2xlZ2FjeSAoaXdsIDM5NDUvNDk2NSkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2Njpjb25maWcgSVdMRFZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xNTg9ZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjA6Y29uZmlnIElXTE1FSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIkludGVsIE1hbmFnZW1lbnQgRW5naW5lIGNvbW11bmljYXRpb24gb3ZlciBXTEFOXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNTo1OS4wNTExOTI3NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTUxMTg1OTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBpd2x3aWZpIERyaXZlcidzIFNjb3BlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2AgZGlyZWN0b3J5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3BlY2lmaWMgZnVuY3Rpb24gd2l0aGluIHRoZSBicm9hZGVyIGl3bHdpZmkgZnJhbWV3b3JrLiBXaGF0IGFyZSB0aGUgYnVzIGludGVyZmFjZXMgYW5kIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIHRoaXMgcGFydGljdWxhciBtb2R1bGUgaXMgZGVzaWduZWQgdG8gc3VwcG9ydD8gVW5kZXJzdGFuZGluZyB0aGUgc3VwcG9ydGVkIGhhcmR3YXJlIGlzIGNyaXRpY2FsIGZvciBhbnkgYW5hbHlzaXMuXG5cbkZvbGxvd2luZyB0aGF0LCBJJ2xsIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgLiBUaGlzIGZpbGUgc2hvdWxkIHNoZWQgbGlnaHQgb24gdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaXdsd2lmaS4gVGhpcyBLY29uZmlnIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3Qgd2l0aGluIHRoZSBkcml2ZXIuIFRoaXMgZXhhbWluYXRpb24gd2lsbCBnaXZlIG1lIGluc2lnaHRzIGludG8gaG93IGl3bHdpZmkgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBoYXJkd2FyZSBvciBmZWF0dXJlIHNldHMgYXJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NjcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNjoxMC41NjMwNTQ1MDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIElXTFdJRklcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gSVdMTUVJIHx8ICFJV0xNRUlcXG4gICA2OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgU2VsZWN0IHRvIGJ1aWxkIHRoZSBkcml2ZXIgc3VwcG9ydGluZyB0aGU6XFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgSW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIE5leHQtR2VuIEFHTlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdXNlIHdpdGggdGhlIGZvbGxvd2luZyBoYXJkd2FyZTpcXG4gIDEzOlxcdFxcdFxcdEludGVsIFdpcmVsZXNzIFdpRmkgTGluayA2MjUwQUdOIEFkYXB0ZXJcXG4gIDE0OlxcdFxcdFxcdEludGVsIDYwMDAgU2VyaWVzIFdpLUZpIEFkYXB0ZXJzICg2MjAwQUdOIGFuZCA2MzAwQUdOKVxcbiAgMTU6XFx0XFx0XFx0SW50ZWwgV2lGaSBMaW5rIDEwMDBCR05cXG4gIDE2OlxcdFxcdFxcdEludGVsIFdpcmVsZXNzIFdpRmkgNTE1MEFHTlxcbiAgMTc6XFx0XFx0XFx0SW50ZWwgV2lyZWxlc3MgV2lGaSA1MTAwQUdOLCA1MzAwQUdOLCBhbmQgNTM1MEFHTlxcbiAgMTg6XFx0XFx0XFx0SW50ZWwgNjAwNSBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcXG4gIDE5OlxcdFxcdFxcdEludGVsIDYwMzAgU2VyaWVzIFdpLUZpIEFkYXB0ZXJzXFxuICAyMDpcXHRcXHRcXHRJbnRlbCBXaXJlbGVzcyBXaUZpIExpbmsgNjE1MEJHTiAyIEFkYXB0ZXJcXG4gIDIxOlxcdFxcdFxcdEludGVsIDEwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnMgKDEwMEJHTiBhbmQgMTMwQkdOKVxcbiAgMjI6XFx0XFx0XFx0SW50ZWwgMjAwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcXG4gIDIzOlxcdFxcdFxcdEludGVsIDcyNjAgV2ktRmkgQWRhcHRlclxcbiAgMjQ6XFx0XFx0XFx0SW50ZWwgMzE2MCBXaS1GaSBBZGFwdGVyXFxuICAyNTpcXHRcXHRcXHRJbnRlbCA3MjY1IFdpLUZpIEFkYXB0ZXJcXG4gIDI2OlxcdFxcdFxcdEludGVsIDgyNjAgV2ktRmkgQWRhcHRlclxcbiAgMjc6XFx0XFx0XFx0SW50ZWwgMzE2NSBXaS1GaSBBZGFwdGVyXFxuICAyODpcXHRcXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUaGlzIGRyaXZlciB1c2VzIHRoZSBrZXJuZWwncyBtYWM4MDIxMSBzdWJzeXN0ZW0uXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSW4gb3JkZXIgdG8gdXNlIHRoaXMgZHJpdmVyLCB5b3Ugd2lsbCBuZWVkIGEgZmlybXdhcmVcXG4gIDMzOlxcdFxcdCAgaW1hZ2UgZm9yIGl0LiBZb3UgY2FuIG9idGFpbiB0aGUgbWljcm9jb2RlIGZyb206XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgICAgICAgICBcXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9pd2x3aWZpXFx1MDAzZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBUaGUgZmlybXdhcmUgaXMgdHlwaWNhbGx5IGluc3RhbGxlZCBpbiAvbGliL2Zpcm13YXJlLiBZb3UgY2FuXFxuICAzODpcXHRcXHQgIGxvb2sgaW4gdGhlIGhvdHBsdWcgc2NyaXB0IC9ldGMvaG90cGx1Zy9maXJtd2FyZS5hZ2VudCB0b1xcbiAgMzk6XFx0XFx0ICBkZXRlcm1pbmUgd2hpY2ggZGlyZWN0b3J5IEZJUk1XQVJFX0RJUiBpcyBzZXQgdG8gd2hlbiB0aGUgc2NyaXB0XFxuICA0MDpcXHRcXHQgIHJ1bnMuXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSB0aGUgZHJpdmVyIGFzIGEgbW9kdWxlICggPSBjb2RlIHdoaWNoIGNhbiBiZVxcbiAgNDM6XFx0XFx0ICBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3Ugd2FudCksXFxuICA0NDpcXHRcXHQgIHNheSBNIGhlcmUgYW5kIHJlYWQgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3RcXHUwMDNlLiAgVGhlXFxuICA0NTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpd2x3aWZpLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRpZiBJV0xXSUZJXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuICA1MDpcXHRcXHR0cmlzdGF0ZVxcbiAgNTE6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbiAgNTI6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgRW5hYmxlIHRoaXMgb3B0aW9uIGZvciBpd2x3aWZpIGt1bml0IHRlc3RzLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1NzpcXHRcXG4gIDU4OlxcdGNvbmZpZyBJV0xXSUZJX0xFRFNcXG4gIDU5OlxcdFxcdGJvb2xcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gSVdMTVZNIHx8IElXTERWTVxcbiAgNjI6XFx0XFx0c2VsZWN0IExFRFNfVFJJR0dFUlNcXG4gIDYzOlxcdFxcdHNlbGVjdCBNQUM4MDIxMV9MRURTXFxuICA2NDpcXHRcXHRkZWZhdWx0IHlcXG4gIDY1OlxcdFxcbiAgNjY6XFx0Y29uZmlnIElXTERWTVxcbiAgNjc6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgRFZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA2ODpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICA2OTpcXHRcXHRoZWxwXFxuICA3MDpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRoZSBEVk0gZmlybXdhcmUuIFRoZSBsaXN0XFxuICA3MTpcXHRcXHQgIG9mIHRoZSBkZXZpY2VzIHRoYXQgdXNlIHRoaXMgZmlybXdhcmUgaXMgYXZhaWxhYmxlIGhlcmU6XFxuICA3MjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL2RyaXZlcnMvaXdsd2lmaSNmaXJtd2FyZVxcbiAgNzM6XFx0XFxuICA3NDpcXHRjb25maWcgSVdMTVZNXFxuICA3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFxcXCJcXG4gIDc2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgNzc6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNzk6XFx0XFx0aGVscFxcbiAgODA6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgTVZNIGZpcm13YXJlLiBUaGUgbGlzdFxcbiAgODE6XFx0XFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxcbiAgODI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcXG4gIDgzOlxcdFxcbiAgODQ6XFx0Y29uZmlnIElXTE1MRFxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA4NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDg3OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDg4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDg5OlxcdFxcdGhlbHBcXG4gIDkwOlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgZmlybXdhcmVzIG9mIE1MRCBjYXBhYmxlIGRldmljZXMuXFxuICA5MTpcXHRcXHQgIFRoZSBsaXN0IG9mIHRoZSBkZXZpY2VzIHRoYXQgdXNlIHRoaXMgZmlybXdhcmUgaXMgYXZhaWxhYmxlIGhlcmU6XFxuICA5MjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL2RyaXZlcnMvaXdsd2lmaSNmaXJtd2FyZVxcbiAgOTM6XFx0XFxuICA5NDpcXHQjIGRvbid0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXFxuICA5NTpcXHRjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxcbiAgOTY6XFx0XFx0Ym9vbFxcbiAgOTc6XFx0XFx0ZGVmYXVsdCB5IGlmIElXTERWTT1tXFxuICA5ODpcXHRcXHRkZWZhdWx0IHkgaWYgSVdMTVZNPW1cXG4gIDk5OlxcdFxcdGRlZmF1bHQgeSBpZiBJV0xNTEQ9bVxcbiAxMDA6XFx0XFx0ZGVmYXVsdCB5IGlmIElXTFdJRklfS1VOSVRfVEVTVFM9bVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNjoxMC41NjMxMjk1NzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDEwNjU2MDg2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBhbmQgVmlydHVhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IGBpd2x3aWZpYCB3b3JrcyBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgaXQncyBhIFBDSSBkcml2ZXIg4oCTIHRoYXQncyBjbGVhciBmcm9tIGl0cyBkZXBlbmRlbmNpZXMgKGBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFgKS4gVGhlIG5leHQgcXVlc3Rpb24sIG9mIGNvdXJzZSwgaXMgaWYgUUVNVSBldmVuICpwcmV0ZW5kcyogdG8gaGF2ZSBhbiBgaXdsd2lmaWAgZGV2aWNlLiBOb3BlLCBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzb2x1dGlvbnMgbGlrZSBHQ0UgYW5kIFFFTVUgc3RpY2sgdG8gdGhlIHVzdWFsIHN1c3BlY3RzOiBgZTEwMDBgLCBgdmlydGlvLW5ldGAuIEZvciBXaS1GaSwgaXTigJlzIGFsbCBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aXJ0X3dpZmlgIHdoaWNoIGdvIHN0cmFpZ2h0IHRvIGBtYWM4MDIxMWAgd2l0aG91dCB0b3VjaGluZyBgaXdsd2lmaWAuXG5cbkJ1dCwgd2FpdC4uLiBkb2VzIGBpd2x3aWZpYCBoYXZlIHNvbWUgc29ydCBvZiB2aXJ0dWFsIHRyYW5zcG9ydCBtZWNoYW5pc20sIG9yIGNhbiBpdCBiZSByZWFjaGVkIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYD8gTm8sIGl0IGxvb2tzIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBpcyBpdHMgb3duIHRoaW5nLCBjb21wbGV0ZWx5IHNlcGFyYXRlLCBkZWZpbmVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmNgLiBJdCBkaXJlY3RseSBpbnRlcmZhY2VzIHdpdGggYG1hYzgwMjExYCB3aXRob3V0IGV2ZW4gdXNpbmcgYGl3bHdpZmlgIChvciBgaXdsX21sZGApLlxuXG5TbywgdGhlIGNvbmNsdXNpb24gaXM6IGBpd2x3aWZpYCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEludGVsIFdpRmkgUENJIGRldmljZXMg4oCTIHRoZSA2MjUwLCA3MjYwLCBBWDIwMCwgQVgyMTAsIEJFMjAwLCB0aGUgd2hvbGUgZmFtaWx5LlxuXG5BbHJpZ2h0LCBsZXQncyBiYWNrIHVwIGEgbGl0dGxlLiBNYXliZSB0aGVyZSBhcmUgc29tZSB0ZXN0cyBvciBvdGhlciBpbnRlcm5hbCB3b3JraW5ncyBJJ20gbWlzc2luZy4gTGV0J3MgZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMvYCBkaXJlY3RvcnkgYW5kIHNlZSB3aGF0IHRoZSBkcml2ZXIgaGFzIGluIHN0b3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDg5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzY6NTEuNjI4NzQwMTk3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRldmluZm8uY1wiLFxuICAgIFwibW9kdWxlLmNcIixcbiAgICBcIm52bV9wYXJzZS5jXCIsXG4gICAgXCJ1dGlscy5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM2OjUxLjYyODc4ODk3N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgzMDgzNjkxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gaXdsX21sZF9jb3B5X21jY19yZXNwIGFuZCBpd2xfbWxkX3VwZGF0ZV9tY2MqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgZGl2ZSBpbnRvIHRoZSBjYWxscyBhbmQgdXNhZ2UgcGF0dGVybnMgb2YgYGl3bF9tbGRfY29weV9tY2NfcmVzcGAgYW5kIGBpd2xfbWxkX3VwZGF0ZV9tY2NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGVzZSBmdW5jdGlvbnMgZml0IGludG8gdGhlIGxhcmdlciBNQ0MgKE11bHRpLUNhcnJpZXIgQ29tbXVuaWNhdGlvbikgZnJhbWV3b3JrIHdpdGhpbiB0aGUgSW50ZWwgV2lyZWxlc3MgZHJpdmVyLiBUaGlzIGludm9sdmVzIHRyYWNpbmcgdGhlIGNvZGUgcGF0aHMgdG8gc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgKmNhbGxlZCogZnJvbSwgYW5kIGVxdWFsbHkgaW1wb3J0YW50LCBob3cgdGhlaXIgKnJlc3VsdHMqIGFyZSB0aGVuIHV0aWxpemVkIGVsc2V3aGVyZSBpbiB0aGUgc3lzdGVtLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBwb3RlbnRpYWwgZGF0YSBkZXBlbmRlbmNpZXMgYW5kIHRoZSB0aW1pbmcgY29uc2lkZXJhdGlvbnMgaW52b2x2ZWQgaW4gdGhlaXIgaW50ZXJhY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgcG9zc2libGUgcmFjZSBjb25kaXRpb25zLCBvciBhcmVhcyB3aGVyZSBvcHRpbWl6YXRpb24gbWlnaHQgYmUgcG9zc2libGUuIEEgdGhvcm91Z2ggdW5kZXJzdGFuZGluZyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyBpZiB0aGlzIGlzIGFuIGFyZWEgZm9yIHJlZmFjdG9yaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjY3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM3OjAyLjQ1OTYyNzkzMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg4NjEwODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tbGRfdXBkYXRlX21jY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTQyPXN0YXRpYyBzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6NDM6aXdsX21sZF91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbWxkICptbGQsIGNvbnN0IGNoYXIgKmFscGhhMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy00NC1cXHRcXHQgICBlbnVtIGl3bF9tY2Nfc291cmNlIHNyY19pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTg5PWl3bF9tbGRfZ2V0X3JlZ2RvbWFpbihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jOjEwMzpcXHRyZXNwID0gaXdsX21sZF91cGRhdGVfbWNjKG1sZCwgYWxwaGEyLCBzcmNfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTEwNC1cXHRpZiAoSVNfRVJSKHJlc3ApKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM3OjAyLjc0ODI0NDIxOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDgyMzczMjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBgaXdsX21sZF9nZXRfcmVnZG9tYWluYCBDYWxsZXJzKipcblxuT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IG9mIGBpd2xfbWxkX2dldF9yZWdkb21haW5gLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgZXZlbiAqdXNlZCouIE5vIHBvaW50IGluIGFuYWx5emluZyBpdHMgaW50ZXJuYWxzIGlmIEkgZG9uJ3Qga25vdyB0aGUgY2FsbGluZyBzZXF1ZW5jZS4gU28sIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGUgd2hlcmUgYGl3bF9tbGRfZ2V0X3JlZ2RvbWFpbmAgaXMgaW52b2tlZC4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyBmb3IgdGhpcyDigJMgYGdyZXBgLCBgZmluZGAsIG9yIHdoYXRldmVyJ3MgYXBwcm9wcmlhdGUgZm9yIHRoaXMgcHJvamVjdCBhbmQgaXRzIGNvZGViYXNlLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUgZm9yIGFueSBraW5kIG9mIGRlZXAgZGl2ZSBpbnRvIGEgZnVuY3Rpb24ncyByb2xlLiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGFibGUgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIGl0cyBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODU0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6Mzc6MDcuMjMwNjE5NDNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mzg5NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tbGRfZ2V0X3JlZ2RvbWFpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTg4PXN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYzo4OTppd2xfbWxkX2dldF9yZWdkb21haW4oc3RydWN0IGl3bF9tbGQgKm1sZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy05MC1cXHRcXHQgICAgICBjb25zdCBjaGFyICphbHBoYTIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz0xNjQ9aXdsX21sZF9nZXRfY3VycmVudF9yZWdkb21haW4oc3RydWN0IGl3bF9tbGQgKm1sZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTE2Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6MTY3OlxcdHJldHVybiBpd2xfbWxkX2dldF9yZWdkb21haW4obWxkLCBcXFwiWlpcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTE2OC1cXHRcXHRcXHRcXHQgICAgIE1DQ19TT1VSQ0VfR0VUX0NVUlJFTlQsIGNoYW5nZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM9MTg2PXN0YXRpYyBpbnQgaXdsX21sZF9hcHBseV9sYXN0X21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMjAyLVxcdC8qIE5vdyBzZXQgb3VyIGxhc3Qgc3RvcmVkIE1DQyBhbmQgc291cmNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmM6MjAzOlxcdHJlZ2QgPSBpd2xfbWxkX2dldF9yZWdkb21haW4obWxkLCBhbHBoYTIsIHVzZWRfc3JjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTIwNC1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZjaGFuZ2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jPTIxOD1pbnQgaXdsX21sZF9pbml0X21jYyhzdHJ1Y3QgaXdsX21sZCAqbWxkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmMtMjM2LVxcdFxcdGtmcmVlKHJlZ2QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jOjIzNzpcXHRcXHRyZWdkID0gaXdsX21sZF9nZXRfcmVnZG9tYWluKG1sZCwgbWNjLCBNQ0NfU09VUkNFX0JJT1MsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jLTIzOC1cXHRcXHRpZiAoSVNfRVJSX09SX05VTEwocmVnZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYz0yNjk9dm9pZCBpd2xfbWxkX2hhbmRsZV91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yOTItXFx0XFx0ICAgICAgbWNjLCBzcmMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jOjI5MzpcXHRyZWdkID0gaXdsX21sZF9nZXRfcmVnZG9tYWluKG1sZCwgbWNjLCBzcmMsIFxcdTAwMjZjaGFuZ2VkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuYy0yOTQtXFx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZ2QpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmg9MTE9c3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5oOjEyOml3bF9tbGRfZ2V0X3JlZ2RvbWFpbihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5oLTEzLVxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKmFscGhhMixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6Mzc6MDcuMjgwMDEzMzE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxMjE5Nzc4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQ0MgVXBkYXRlIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIGhvdyB0aGUgTUNDIChNb2JpbGUgQ291bnRyeSBDb2RlKSBpcyB1cGRhdGVkIGluIHRoaXMgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLiBNeSBpbml0aWFsIHBvaW50IG9mIHJlZmVyZW5jZSBpcyBgaXdsX21sZF91cGRhdGVfbWNjYCwgd2hpY2gsIGZyb20gd2hhdCBJJ20gc2VlaW5nLCBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHRoaXMgcHJvY2Vzcy4gSXQgc2VlbXMgdG8ga2ljayB0aGluZ3Mgb2ZmIGJ5IGNyYWZ0aW5nIGEgY29tbWFuZCB0aGF0IGl0IHRoZW4gcGFzc2VzIG9mZiB0byB0aGUgZmlybXdhcmUuIFNwZWNpZmljYWxseSwgaXQgdXNlcyBgaXdsX21sZF9zZW5kX2NtZF9wZHVgIHRvIGNvbnN0cnVjdCBhbmQgc2VuZCBhIFBEVSAoUHJvdG9jb2wgRGF0YSBVbml0KSwgdGFyZ2V0aW5nIGBXSURFX0lEKFJFR1VMQVRPUllfQU5EX0RFQlVHX0dST1VQLCBNQ0NfVVBEQVRFX0NNRClgLiBUaGlzIGBXSURFX0lEYCBzdWdnZXN0cyB0aGUgY29tbWFuZCBiZWxvbmdzIHRvIHRoZSByZWd1bGF0b3J5L2RlYnVnIGNhdGVnb3J5LCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgTUNDJ3MgcmVndWxhdG9yeSBpbXBsaWNhdGlvbnMuIE5vdywgSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGNvZGUgaXRzZWxmIHRvIHVuZGVyc3RhbmQgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIHRoaXMgdXBkYXRlLiBJJ2xsIHN0YXJ0IGJ5IGV4YW1pbmluZyBgaXdsX21sZF91cGRhdGVfbWNjYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21jYy5jYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAzOSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozNzoxNC40MDE5OTMzODhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFxuICA0MTpcXHQvKiBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZnJlZSB0aGUgcG9pbnRlciByZXR1cm5lZCBoZXJlICovXFxuICA0MjpcXHRzdGF0aWMgc3RydWN0IGl3bF9tY2NfdXBkYXRlX3Jlc3BfdjggKlxcbiAgNDM6XFx0aXdsX21sZF91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbWxkICptbGQsIGNvbnN0IGNoYXIgKmFscGhhMixcXG4gIDQ0OlxcdFxcdFxcdCAgIGVudW0gaXdsX21jY19zb3VyY2Ugc3JjX2lkKVxcbiAgNDU6XFx0e1xcbiAgNDY6XFx0XFx0c3RydWN0IGl3bF9tY2NfdXBkYXRlX2NtZCBtY2NfdXBkYXRlX2NtZCA9IHtcXG4gIDQ3OlxcdFxcdFxcdC5tY2MgPSBjcHVfdG9fbGUxNihhbHBoYTJbMF0gXFx1MDAzY1xcdTAwM2MgOCB8IGFscGhhMlsxXSksXFxuICA0ODpcXHRcXHRcXHQuc291cmNlX2lkID0gKHU4KXNyY19pZCxcXG4gIDQ5OlxcdFxcdH07XFxuICA1MDpcXHRcXHRzdHJ1Y3QgaXdsX21jY191cGRhdGVfcmVzcF92OCAqcmVzcF9jcDtcXG4gIDUxOlxcdFxcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3Q7XFxuICA1MjpcXHRcXHRzdHJ1Y3QgaXdsX2hvc3RfY21kIGNtZCA9IHtcXG4gIDUzOlxcdFxcdFxcdC5pZCA9IE1DQ19VUERBVEVfQ01ELFxcbiAgNTQ6XFx0XFx0XFx0LmZsYWdzID0gQ01EX1dBTlRfU0tCLFxcbiAgNTU6XFx0XFx0XFx0LmRhdGEgPSB7IFxcdTAwMjZtY2NfdXBkYXRlX2NtZCB9LFxcbiAgNTY6XFx0XFx0XFx0LmxlblswXSA9IHNpemVvZihtY2NfdXBkYXRlX2NtZCksXFxuICA1NzpcXHRcXHR9O1xcbiAgNTg6XFx0XFx0aW50IHJldDtcXG4gIDU5OlxcdFxcdHUxNiBtY2M7XFxuICA2MDpcXHRcXG4gIDYxOlxcdFxcdElXTF9ERUJVR19MQVIobWxkLCBcXFwic2VuZCBNQ0MgdXBkYXRlIHRvIEZXIHdpdGggJyVjJWMnIHNyYyA9ICVkXFxcXG5cXFwiLFxcbiAgNjI6XFx0XFx0XFx0ICAgICAgYWxwaGEyWzBdLCBhbHBoYTJbMV0sIHNyY19pZCk7XFxuICA2MzpcXHRcXG4gIDY0OlxcdFxcdHJldCA9IGl3bF9tbGRfc2VuZF9jbWQobWxkLCBcXHUwMDI2Y21kKTtcXG4gIDY1OlxcdFxcdGlmIChyZXQpXFxuICA2NjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiAgNjc6XFx0XFxuICA2ODpcXHRcXHRwa3QgPSBjbWQucmVzcF9wa3Q7XFxuICA2OTpcXHRcXG4gIDcwOlxcdFxcdHJlc3BfY3AgPSBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AocGt0KTtcXG4gIDcxOlxcdFxcdGlmIChJU19FUlIocmVzcF9jcCkpXFxuICA3MjpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdG1jYyA9IGxlMTZfdG9fY3B1KHJlc3BfY3AtXFx1MDAzZW1jYyk7XFxuICA3NTpcXHRcXG4gIDc2OlxcdFxcdElXTF9GV19DSEVDSyhtbGQsICFtY2MsIFxcXCJtY2MgY2FuJ3QgYmUgMDogJWRcXFxcblxcXCIsIG1jYyk7XFxuICA3NzpcXHRcXG4gIDc4OlxcdFxcdElXTF9ERUJVR19MQVIobWxkLFxcbiAgNzk6XFx0XFx0XFx0ICAgICAgXFxcIk1DQyByZXNwb25zZSBzdGF0dXM6IDB4JXguIG5ldyBNQ0M6IDB4JXggKCclYyVjJylcXFxcblxcXCIsXFxuICA4MDpcXHRcXHRcXHQgICAgICBsZTMyX3RvX2NwdShyZXNwX2NwLVxcdTAwM2VzdGF0dXMpLCBtY2MsIG1jYyBcXHUwMDNlXFx1MDAzZSA4LCBtY2MgXFx1MDAyNiAweGZmKTtcXG4gIDgxOlxcdFxcbiAgODI6XFx0ZXhpdDpcXG4gIDgzOlxcdFxcdGl3bF9mcmVlX3Jlc3AoXFx1MDAyNmNtZCk7XFxuICA4NDpcXHRcXHRyZXR1cm4gcmVzcF9jcDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6Mzc6MTQuNDAyMDc4OTU4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzNzMyMTQzNjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIGBpd2x3aWZpYCBGdXp6aW5nIEFwcGxpY2FiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHByaW1hcnkgY29uY2VybiBoZXJlIGlzIGRldGVybWluaW5nIGlmIGEgc3BlY2lmaWMgY29kZSBwYXRoLCBgaXdsX21sZF9jb3B5X21jY19yZXNwYCB3aXRoaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIsIGlzIHJlYWxpc3RpY2FsbHkgZnV6emFibGUuIGBpd2x3aWZpYCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBhbmQgYXMgdGhlIGluc3RydWN0aW9ucyBjb25maXJtLCBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEludGVsIFdpLUZpIFBDSWUgYWRhcHRlcnMuIEl0IHJlbGllcyBvbiB0aGUgcHJlc2VuY2Ugb2YgcGh5c2ljYWwgSW50ZWwgaGFyZHdhcmUgYW5kLCBjcnVjaWFsbHksIGxvYWRlZCBtaWNyb2NvZGUgb3IgZmlybXdhcmUuIFN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSBkb24ndCBlbXVsYXRlICp0aGlzKiBwYXJ0aWN1bGFyIGhhcmR3YXJlOyB0aGV5IGRvbid0IHByb3ZpZGUgYSB2aXJ0dWFsaXplZCBJbnRlbCBXaS1GaSBQQ0llIGFkYXB0ZXIuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgbXkgYXNzdW1wdGlvbnMuIElzIHRoZXJlICphbnkqIFVTQiBnYWRnZXQgZW11bGF0aW9uIHRoYXQgbWlnaHQgdG91Y2ggYGl3bHdpZmlgIGNvZGU/IE5vLiBgaXdsd2lmaWAgaXMgZXhjbHVzaXZlbHkgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MuIElzIGBtYWM4MDIxMV9od3NpbWAgcmVsZXZhbnQgaGVyZT8gTm8sIHRoYXQncyBhIHNlcGFyYXRlLCBpbmRlcGVuZGVudCBkcml2ZXIgd2l0aGluIGBtYWM4MDIxMWAsIGFuZCBJIGtub3cgaXQgZG9lc24ndCBleGVjdXRlIGBpd2x3aWZpYCBkcml2ZXIgY29kZS5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3BgIGlzIHdpdGhpbiBgaXdsd2lmaWAsIHRoZXJlJ3Mgbm8gd2F5IHRvIHJlYWNoIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIHNldHVwLiBXaXRob3V0IGEgcGh5c2ljYWwgSW50ZWwgd2lyZWxlc3MgY2FyZCwgb3IgcG90ZW50aWFsbHkgKnZlcnkqIHNwZWNpZmljIGVtdWxhdGlvbnMgSSBjYW4ndCB0aGluayBvZiwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUuIFNvLCBiYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb24gdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAgd2hlbiBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiBRRU1VL0dDRSwgaXQncyBjbGVhciB0aGF0IGl0IGlzIGBmYWxzZWAgaGVyZS5cblxuTm93LCBsZXQncyBwcmVwYXJlIHRoZSBhcmd1bWVudHMgZm9yIGBzZXQtcmVzdWx0c2AuIEkgbmVlZCB0byBjb252ZXkgdGhpcyBjbGVhcmx5IGFuZCBjb25jaXNlbHkuXG5cbiogICBgV29ydGhGdXp6aW5nOiBmYWxzZWAgLSBiZWNhdXNlIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLlxuKiAgIGBGb2N1c1N5bWJvbHM6IFtdYCAtIE5vIGZvY3VzIHN5bWJvbHMgc2luY2UgdGhpcyBpcyBub3QgZnV6emFibGUuXG4qICAgYEVuYWJsZUNvbmZpZ3M6IFtdYCAtIFNpbWlsYXJseSwgbm8gY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50LCBhcyB0aGUgZHJpdmVyIGlzIG5vdCBhcHBsaWNhYmxlIHRvIHRoZSBlbnZpcm9ubWVudC5cbiogICBgUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgaXdsX21sZF9jb3B5X21jY19yZXNwKClgIGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MgYWRhcHRlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIChvciBzcGVjaWZpYyBmaXJtd2FyZS9QQ0llIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFKS4gQXMgc3VjaCwgdGhpcyBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiYCAtIFRoaXMgcmVhc29uaW5nIGNsZWFybHkgYXJ0aWN1bGF0ZXMgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIHRoZSBpbmFwcGxpY2FiaWxpdHkgb2YgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5GaW5hbGx5LCBJJ2xsIHF1aWNrbHkgcmV2aWV3IGV2ZXJ5dGhpbmc6IHRoZSBsb2dpYyBpcyBzb3VuZCwgdGhlIGFyZ3VtZW50cyBhcmUgY29uc2lzdGVudCB3aXRoIHRoZSBpbnN0cnVjdGlvbnMsIGFuZCBJJ3ZlIHByb3ZpZGVkIGEgY2xlYXIgZXhwbGFuYXRpb24uIFdlJ3JlIGdvb2QgdG8gZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTczLCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjM3OjI4LjEzNDIyNTY0OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBpd2xfbWxkX2NvcHlfbWNjX3Jlc3AoKWAgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tY2MuY2ApLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBXaS1GaSBOSUNzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgaXdsX21sZF9jb3B5X21jY19yZXNwKClgIGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWNjLmNgKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gSW50ZWwgUENJZSB3aXJlbGVzcyBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgSW50ZWwgV2ktRmkgTklDcywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6Mzc6MjguMTM0MjU4ODk5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowqxsjb[1] Phase: Running StartedAt: 2026-08-31 19:37:39 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqxsjb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 19:37:39 +0000 UTC FinishedAt: 2026-08-31 19:37:43 +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,}