Name: series-workflowwhsqp Phase: Failed StartedAt: 2026-08-31 18:00:00 +0000 UTC FinishedAt: 2026-08-31 18:48:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwhsqp[0] Phase: Succeeded StartedAt: 2026-08-31 18:00:00 +0000 UTC FinishedAt: 2026-08-31 18:48:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwhsqp[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 18:00:00 +0000 UTC FinishedAt: 2026-08-31 18:48:32 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE4OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhkYjAxODZiNTY2N2Q1YjgxZmU1YTU0MzY0ZjM1ZWMxZTAwMTQxYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxODo0NzozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xuaW5kZXggODlhYzRjNmIzZTU0My4uZTIzODJiZThlZGQ3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNcbkBAIC0xLDcgJiM0MzsxLDcgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAvKlxuICAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJIXG4tICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjUgSW50ZWwgQ29ycG9yYXRpb25cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKi9cbiAjaW5jbHVkZSBcJiMzNDtycy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZnctYXBpLmhcJiMzNDtcbkBAIC00MjMsOSAmIzQzOzQyMywxNCBAQCB2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuIFx0c3RydWN0IGl3bF9scV9zdGFfcnNfZncgKmxxX3N0YTtcbiBcdHUzMiBmbGFncztcbiBcbiYjNDM7XHRub3RpZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sIG5vdGlmLVx1MDAzZXN0YV9pZCBcdTAwM2U9IG12bS1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLm51bV9zdGF0aW9ucyxcbiYjNDM7XHRcdFx0IFwmIzM0O0ludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IG5vdGlmLVx1MDAzZXN0YV9pZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFxuLVx0bm90aWYgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuIFx0bGlua19zdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLVx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVx1MDAzZXN0YV9pZF0pO1xuIFx0c3RhID0gcmN1X2RlcmVmZXJlbmNlKG12bS1cdTAwM2Vmd19pZF90b19tYWNfaWRbbm90aWYtXHUwMDNlc3RhX2lkXSk7XG4gXHRpZiAoSVNfRVJSX09SX05VTEwoc3RhKSB8fCAhbGlua19zdGEpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciB0aGUgc3RhdGlvbiBJRCBpbiBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoKSB3aXRoaW4gdGhlIEludGVsIGl3bHdpZmkgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGNvZGUgaGFuZGxlcyBub3RpZmljYXRpb25zIHJlY2VpdmVkIGZyb20gSW50ZWwgV2ktRmkgZmlybXdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIEludGVsIFBDSWUvQ05WaSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGRiMDE4NmI1NjY3ZDViODFmZTVhNTQzNjRmMzVlYzFlMDAxNDFiZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDE4OjQ3OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMKaW5kZXggODlhYzRjNmIzZTU0My4uZTIzODJiZThlZGQ3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jCkBAIC0xLDcgJiM0MzsxLDcgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJICi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvbgomIzQzOyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI2IEludGVsIENvcnBvcmF0aW9uCiAgKi8KICNpbmNsdWRlICYjMzQ7cnMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2Z3LWFwaS5oJiMzNDsKQEAgLTQyMyw5ICYjNDM7NDIzLDE0IEBAIHZvaWQgaXdsX212bV90bGNfdXBkYXRlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJc3RydWN0IGl3bF9scV9zdGFfcnNfZncgKmxxX3N0YTsKIAl1MzIgZmxhZ3M7CiAKJiM0MzsJbm90aWYgPSAodm9pZCAqKXBrdC0mZ3Q7ZGF0YTsKJiM0MzsJaWYgKElXTF9GV19DSEVDSyhtdm0sIG5vdGlmLSZndDtzdGFfaWQgJmd0Oz0gbXZtLSZndDtmdy0mZ3Q7dWNvZGVfY2FwYS5udW1fc3RhdGlvbnMsCiYjNDM7CQkJICYjMzQ7SW52YWxpZCBzdGEgaWQgKCVkKSBpbiBUTEMgbm90aWZpY2F0aW9uXG4mIzM0OywKJiM0MzsJCQkgbm90aWYtJmd0O3N0YV9pZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJcmN1X3JlYWRfbG9jaygpOwogCi0Jbm90aWYgPSAodm9pZCAqKXBrdC0mZ3Q7ZGF0YTsKIAlsaW5rX3N0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tJmd0O2Z3X2lkX3RvX2xpbmtfc3RhW25vdGlmLSZndDtzdGFfaWRdKTsKIAlzdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLSZndDtmd19pZF90b19tYWNfaWRbbm90aWYtJmd0O3N0YV9pZF0pOwogCWlmIChJU19FUlJfT1JfTlVMTChzdGEpIHx8ICFsaW5rX3N0YSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzcxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IGl3bHdpZmkgYW5kIFdvcnRoRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaXdsX212bV90bGNfdXBkYXRlX25vdGlmYCBmdW5jdGlvbi4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBgaXdsd2lmaWAgaXMgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQgZGVhbHMgd2l0aCBuZXR3b3JrIGNvbW11bmljYXRpb25zLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gYXJpc2VzOiBjYW4gSSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgY29kZSBmb3IgZnV6emluZz8gSXMgaXQgcmVsaWFudCBvbiBzcGVjaWZpYyBJbnRlbCBoYXJkd2FyZSwgb3IgY2FuIGl0IGJlIGVtdWxhdGVkIHdpdGhpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8KCldhaXQsIGhvbGQgb24uIFRoZXJlJiMzOTtzIGEgc2V0IG9mIGluc3RydWN0aW9ucyBJIHNob3VsZCBmb2xsb3cuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBldmVuICpXb3J0aEZ1enppbmcqLiBUaGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRoYXQgaWYgdGhlIHBhdGNoIGlzIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBjaGFuZ2VzLCBjb21tZW50cywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gY29uc3RhbnRzIG9yIG1hY3JvcyB3aXRob3V0IGFmZmVjdGluZyBleGVjdXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGVuIEkgc2hvdWxkIHJldHVybiBgZmFsc2VgLiBUaGUga2V5IGhlcmUgaXMsIEkgbmVlZCB0byBjaGVjayBpZiBgaXdsd2lmaWAgaGFzIGFueSBzaW11bGF0aW9uL2VtdWxhdGlvbi9tYWM4MDIxMV9od3NpbSBvciB2aXJ0X3dpZmkgb3IgaXdsd2lmaSBzaW11bGF0aW9uLgoKSSBuZWVkIHRvIHNlZSBpZiB0aGlzIGNvZGUgaXMgaW4gYSBwYXRoIHRoYXQmIzM5O3MgZXZlbiBhY2Nlc3NpYmxlIGluIG15IHRlc3QgZW52aXJvbm1lbnRzLiBUaGUgcGF0Y2ggY291bGQgYmUgdG91Y2hpbmcgY29kZSB0aGF0IHJlcXVpcmVzIGEgcGh5c2ljYWwgSW50ZWwgUENJZSBjYXJkLCBvciByZWxpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byBtYWtlIHRoaXMgcnVuIGluIFFFTVUgb3IgR0NFLiBMZXQgbWUgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHVzaW5nIGdyZXAgZm9yIGBpd2x3aWZpYCBhbmQgdGVybXMgbGlrZSAmIzM0O3NpbXVsYXRpb24mIzM0OyBvciAmIzM0O3Rlc3QmIzM0OyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGhpbnQgb2YgYSBzaW11bGF0ZWQgZW52aXJvbm1lbnQgZm9yIHRlc3RpbmcsIHRvIGhlbHAgZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX212bV90bGNfdXBkYXRlX25vdGlmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTMxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGl3bF9yeF9oYW5kbGVycyBpd2xfbXZtX3J4X2hhbmRsZXJzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMzIzLVx0UlhfSEFORExFUl9HUlAoREFUQV9QQVRIX0dST1VQLCBUTENfTU5HX1VQREFURV9OT1RJRixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jOjMyNDpcdFx0ICAgICAgIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZiwgUlhfSEFORExFUl9TWU5DLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMzI1LVx0XHQgICAgICAgc3RydWN0IGl3bF90bGNfdXBkYXRlX25vdGlmKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jPTM2Nj1zdGF0aWMgdm9pZCByc19md19zZXRfc3VwcF9yYXRlcyhzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMtNDEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYzo0MTQ6dm9pZCBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMtNDE1LVx0XHRcdCAgICAgIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9NDQ3PWludCByc19md190eF9wcm90ZWN0aW9uKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfbXZtX3N0YSAqbXZtc3RhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00NDgtXHRcdFx0Ym9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaDo0NDk6dm9pZCBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtNDUwLVx0XHRcdCAgICAgIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzMxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWAgZGlyZWN0b3J5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBhcHByb2FjaCBoZXJlLiBJcyB0aGlzIGFuIEludGVsLXNwZWNpZmljIFBDSWUgZHJpdmVyLCBvciBhcmUgdGhleSBkb2luZyBzb21lIGtpbmQgb2YgZW11bGF0aW9uPyBXaGF0JiMzOTtzIHRoZWlyIGRlc2lnbiBwaGlsb3NvcGh5PyBJIGhhdmUgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBvZiB0aGUgaW1wbGVtZW50YXRpb24uIFNvLCB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIGxvY2F0ZSBhbGwgaW5zdGFuY2VzIG9mICYjMzQ7aXdsd2lmaSYjMzQ7IHdpdGhpbiB0aGUgc291cmNlIHRyZWUuIEtub3dpbmcgd2hlcmUgaXQmIzM5O3MgdXNlZCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGhvdyB0aGUgY29tcG9uZW50cyBpbnRlcnJlbGF0ZS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHBlcnZhc2l2ZSBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFLipwY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0zND1WSVNJQkxFX0lGX0lXTFdJRklfS1VOSVQgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXdsX2h3X2NhcmRfaWRzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTU1NC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjU1NTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaXdsX2h3X2NhcmRfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01NTYtRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9od19jYXJkX2lkcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzNAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgQWx0ZXJuYXRpdmUgaXdsd2lmaSBUcmFuc3BvcnRzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIGJyb2FkZW4gb3VyIHNjb3BlIGEgYml0IHdoZW4gaXQgY29tZXMgdG8gdGhlIGl3bHdpZmkgZHJpdmVyLiBXaGlsZSB3ZeKAmXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIGNvbnNpZGVyaW5nIGFsbCB0aGUgcG90ZW50aWFsIGF2ZW51ZXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZXhwbG9yZSB0aGUgbGFuZHNjYXBlIG9mIGRpZmZlcmVudCB0cmFuc3BvcnRzIHRoYXQgbWlnaHQgZXhpc3QgZm9yIHRoaXMgbW9kdWxlLiBJIG1lYW4sIHdlJiMzOTt2ZSBnb3QgdGhlIHJlYWwtd29ybGQgaGFyZHdhcmUsIG9mIGNvdXJzZSwgYnV0IGFyZSB0aGVyZSBvdGhlciBpbXBsZW1lbnRhdGlvbnMgd2UgbWlnaHQgbGV2ZXJhZ2UsIGRlYnVnIG9yIGV2ZW4gbGVhcm4gZnJvbS4gQXJlIHRoZXJlIGFueSBkZWRpY2F0ZWQgdGVzdCBmcmFtZXdvcmtzIGxpa2UgYHRlc3RgLCBgc2ltYCwgb3IgYGt1bml0YCB0aGF0IGhhdmUgYmVlbiBidWlsdCBvciBtaWdodCBiZSByZWxldmFudD8gSWRlbnRpZnlpbmcgdGhlIGZ1bGwgc2V0IG9mIHRyYW5zcG9ydHMgd291bGQgYWxsb3cgbWUgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGRyaXZlciYjMzk7cyBmbGV4aWJpbGl0eSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcywgYW5kIG1ha2Ugc3VyZSB0aGF0IHdlIGFyZSBjb25zaWRlcmluZyBhbGwgYW5nbGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBkaWZmZXJlbnQgdHJhbnNwb3J0cyBpcyBnb2luZyB0byBiZSBrZXkgdG8gYSBjb21wcmVoZW5zaXZlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtpd2wtYWduLWh3LmgmIzM0OywKICAgICYjMzQ7aXdsLWNvbmZpZy5oJiMzNDssCiAgICAmIzM0O2l3bC1jc3IuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGJnLXRsdi5jJiMzNDssCiAgICAmIzM0O2l3bC1kYmctdGx2LmgmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmMmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWRhdGEuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaW8uaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaXdsd2lmaS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1tc2cuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtdWNvZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuaCYjMzQ7LAogICAgJiMzNDtpd2wtZHJ2LmMmIzM0OywKICAgICYjMzQ7aXdsLWRydi5oJiMzNDssCiAgICAmIzM0O2l3bC1maC5oJiMzNDssCiAgICAmIzM0O2l3bC1pby5jJiMzNDssCiAgICAmIzM0O2l3bC1pby5oJiMzNDssCiAgICAmIzM0O2l3bC1tb2RwYXJhbXMuaCYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXBhcnNlLmMmIzM0OywKICAgICYjMzQ7aXdsLW52bS1wYXJzZS5oJiMzNDssCiAgICAmIzM0O2l3bC1udm0tdXRpbHMuYyYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXV0aWxzLmgmIzM0OywKICAgICYjMzQ7aXdsLW9wLW1vZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtcGh5LWRiLmMmIzM0OywKICAgICYjMzQ7aXdsLXBoeS1kYi5oJiMzNDssCiAgICAmIzM0O2l3bC1wcnBoLmgmIzM0OywKICAgICYjMzQ7aXdsLXNjZC5oJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5jJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5oJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5jJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2NmZyYjMzQ7LAogICAgJiMzNDtkdm0mIzM0OywKICAgICYjMzQ7ZncmIzM0OywKICAgICYjMzQ7bWVpJiMzNDssCiAgICAmIzM0O21sZCYjMzQ7LAogICAgJiMzNDttdm0mIzM0OywKICAgICYjMzQ7cGNpZSYjMzQ7LAogICAgJiMzNDt0ZXN0cyYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZmAgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgaXdsX212bV90bGNfdXBkYXRlX25vdGlmYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY2AuIFRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIGJ5IGEgZmlybXdhcmUgbm90aWZpY2F0aW9uIChgVExDX01OR19VUERBVEVfTk9USUZgKSB0aHJvdWdoIHRoZSBSWCBoYW5kbGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgd2hldGhlciB3ZSBjYW4gZXZlbiBoaXQgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBzeXprYWxsZXIsIHNwZWNpZmljYWxseSBHQ0Ugb3Igc3RhbmRhcmQgUUVNVS4KClRoZSBpd2x3aWZpIGRyaXZlciBpcyB2ZW5kb3Itc3BlY2lmaWMgdG8gSW50ZWwgV2ktRmkgY2FyZHMuIEl0IGxldmVyYWdlcyBlaXRoZXIgUENJZSBvciBDTlZpIGludGVyZmFjZXMuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIGZpcm13YXJlIGxvYWRpbmcuIFN0YW5kYXJkIFFFTVUsIGFzIGZhciBhcyBJIGtub3csIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlc2UgSW50ZWwgaXdsd2lmaSBQQ0llIE5JQ3MuIE1vc3QgUUVNVSB3aXJlbGVzcyBlbXVsYXRpb24gbGVhbnMgdG93YXJkcyB0aGluZ3MgbGlrZSBtYWM4MDIxMV9od3NpbSwgdmlydGlvLCBvciBVU0ItZW11bGF0ZWQgZGV2aWNlcywgbm9uZSBvZiB3aGljaCBkaXJlY3RseSBpbnZvbHZlIGl3bHdpZmkuCgpXYWl0LCBpcyB0aGVyZSBhbnkgcG9zc2liaWxpdHkgbWFjODAyMTFfaHdzaW0gbWlnaHQgc29tZWhvdyBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcz8gTGV0JiMzOTtzIGJlIHN1cmUgYWJvdXQgdGhpcy4gTm8sIHRoYXQmIzM5O3Mgd3JvbmcuIGBtYWM4MDIxMV9od3NpbWAgaXMgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uY2ApLCBkaXN0aW5jdCBmcm9tIHRoZSBpd2x3aWZpIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvYCkuIEFuZCwgYGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZmAgaXMgc3BlY2lmaWNhbGx5IGFuIGludGVybmFsIGZpcm13YXJlIFJYIGhhbmRsZXIgZm9yIHRoZSBJbnRlbCBNVk0gYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyBhIG1hYzgwMjExIHZlbmRvciBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCA3MDAwJiM0Mzsgc2VyaWVzIGNhcmRzLiBJdCYjMzk7cyBoYW5kbGluZyBhIHBhY2tldCBvciBhIG5vdGlmaWNhdGlvbiBmcm9tIHRoZSBmaXJtd2FyZSBydW5uaW5nIG9uIHRoZSBJbnRlbCBOSUMsIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJpbmcgaW4gdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIGNvZGUgcGF0aHMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIG91ciB0ZXN0aW5nIGVudmlyb25tZW50LiBUaGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGF0IHdlIHNob3VsZCBzZXQgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgYSBwYXRjaCB0b3VjaGVzOgoKKiAgIENvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGVkIGhhcmR3YXJlIChtYWM4MDIxMV9od3NpbSwgdXNiIGdhZGdldCwgZXRjKS4KKiAgIFZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIChlLmcuLCBtbHhzdywgcWVkLCBhbWRncHUsIGV0Yy4pLgoKQmFzZWQgb24gbXkgYW5hbHlzaXMsIGl0IHNlZW1zIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGlzIGZhbGxzIGludG8gdGhlICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCYjMzQ7IGNhdGVnb3J5LiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY2FsbCBzaXRlcyBvciB0ZXN0cyB0aGF0IHNvbWVob3cgKmNvdWxkKiBjYWxsIHRoaXMgZnVuY3Rpb24sIGJ1dCBteSBwcmVsaW1pbmFyeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyB1bmxpa2VseSB0byBiZSB3b3J0aCBmdXp6aW5nIGluIG91ciB0eXBpY2FsIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfbXZtX3RsY191cGRhdGVfbm90aWYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM9MzE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXdsX3J4X2hhbmRsZXJzIGl3bF9tdm1fcnhfaGFuZGxlcnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zMjMtXHRSWF9IQU5ETEVSX0dSUChEQVRBX1BBVEhfR1JPVVAsIFRMQ19NTkdfVVBEQVRFX05PVElGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM6MzI0Olx0XHQgICAgICAgaXdsX212bV90bGNfdXBkYXRlX25vdGlmLCBSWF9IQU5ETEVSX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zMjUtXHRcdCAgICAgICBzdHJ1Y3QgaXdsX3RsY191cGRhdGVfbm90aWYpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmM9MzY2PXN0YXRpYyB2b2lkIHJzX2Z3X3NldF9zdXBwX3JhdGVzKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYy00MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jOjQxNDp2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYy00MTUtXHRcdFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaD00NDc9aW50IHJzX2Z3X3R4X3Byb3RlY3Rpb24oc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9tdm1fc3RhICptdm1zdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTQ0OC1cdFx0XHRib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oOjQ0OTp2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00NTAtXHRcdFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDU1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKml3bHdpZmkgVGVzdCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBgaXdsd2lmaWAgdGVzdHMgYXJlIGFjdHVhbGx5IGNhbGxpbmcgaW50byB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cy9gLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcXVlc3Rpb24sIGJ1dCB0aGUgaW1wbGljYXRpb25zIGNvdWxkIGJlIHNpZ25pZmljYW50IGZvciBteSB3b3JrLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSB0ZXN0aW5nIGlzIGNvbXByZWhlbnNpdmUgYW5kIGhpdHRpbmcgdGhlIGNvcnJlY3QgcGFydHMgb2YgdGhlIGRyaXZlci4gSWYgdGhlIHRlc3RzICphcmVuJiMzOTt0KiBjaGVja2luZyBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGluIHRoYXQgdGVzdCBkaXJlY3RvcnksIHRoZW4gdGhlcmUgY291bGQgYmUgcG90ZW50aWFsIGdhcHMuIEkmIzM5O20gaW1hZ2luaW5nIHNvbWUgZGVidWdnaW5nIHNlc3Npb25zIGFuZCBzb21lIGNhcmVmdWwgdHJhY2luZyB0aHJvdWdoIHRoZSBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgdGVzdCBzdWl0ZSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBleHBsaWNpdCBjYWxscyBvciBpZiB0aGV5IGFyZSBpbmRpcmVjdGx5IGNhbGxlZCwgcHJvYmFibHkgYnkgbG9va2luZyBmb3Igc3BlY2lmaWMgZnVuY3Rpb24gbmFtZXMgb3IgbW9kdWxlIG5hbWVzIGJlaW5nIHJlZmVyZW5jZWQuIEkgY2FuJiMzOTt0IGJlIHRvbyBoYXN0eSwgSSYjMzk7bGwgbmVlZCB0byBkbyBpdCBtZXRob2RpY2FsbHkgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9ucy4gT25jZSBJIGhhdmUgdGhlIGFuc3dlciwgSSBjYW4gZGV0ZXJtaW5lIGlmIGFueSBjaGFuZ2VzIG9yIGFkZGl0aW9ucyBtaWdodCBiZSByZXF1aXJlZCBpbiBvcmRlciB0byBtYWtlIHRoZSB0ZXN0aW5nIGFkZXF1YXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGV2aW5mby5jJiMzNDssCiAgICAmIzM0O21vZHVsZS5jJiMzNDssCiAgICAmIzM0O252bV9wYXJzZS5jJiMzNDssCiAgICAmIzM0O3V0aWxzLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzgwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIEludGVsIFdpLUZpIEZpcm13YXJlIFVwZGF0ZXMgaW4gYSBWaXJ0dWFsIEVudmlyb25tZW50KioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGVzZSBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzYCBkaXJlY3RvcnkuIEkgc2VlIGBkZXZpbmZvLmNgLCBgbW9kdWxlLmNgLCBgbnZtX3BhcnNlLmNgLCBhbmQgYHV0aWxzLmNgIGFyZSBLVW5pdCB0ZXN0c+KAlGJhc2ljYWxseSBjaGVja2luZyB0aGUgYmFzaWNzIG9mIGhlbHBlciBmdW5jdGlvbnMgYW5kIE5WTSBwYXJzaW5nLCB3aGljaCBpcyBzdGFuZGFyZCBzdHVmZi4gTm93LCBgaXdsX212bV90bGNfdXBkYXRlX25vdGlmYCBpcyB0aGUgaW50ZXJlc3RpbmcgcGllY2UgaGVyZS4gSXQmIzM5O3MgZXhjbHVzaXZlbHkgdHJpZ2dlcmVkIHdpdGhpbiBgaXdsX212bV9yeF9oYW5kbGVyc2AsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIGRyaXZlciBnZXRzIGEgVExDX01OR19VUERBVEVfTk9USUYgbm90aWZpY2F0aW9uIGZyb20gdGhlIEludGVsIFdpLUZpIGZpcm13YXJlIG9uIGFuIEludGVsIHdpcmVsZXNzIE5JQyBQQ0llIGRldmljZS4KClNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoIG5lY2Vzc2l0YXRlcyBhY3R1YWwgSW50ZWwgUENJZSB3aXJlbGVzcyBoYXJkd2FyZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZmlybXdhcmUuIENvbnNpZGVyaW5nIHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gc2FmZWx5IHNheSB0aGF0IHJlYWNoaW5nIHRoaXMgc3BlY2lmaWMgYml0IG9mIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciB5b3VyIGV2ZXJ5ZGF5IFFFTVUgaXMgaW1wb3NzaWJsZS4gTm90IHdpdGhvdXQgc29tZSBzZXJpb3VzIGhhcmR3YXJlIG1hZ2ljIQoKVG8gYmUgYWJzb2x1dGVseSBzdXJlIG9mIHRoZSBjaGFuZ2VzIGludm9sdmVkLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jYCBhcm91bmQgbGluZSA0MjMuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBhcmVhIHNob3VsZCBnaXZlIG1lIHRoZSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MTQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQxNDpcdHZvaWQgaXdsX212bV90bGNfdXBkYXRlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gNDE1Olx0XHRcdFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4gNDE2Olx0e1xuIDQxNzpcdFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7XG4gNDE4Olx0XHRzdHJ1Y3QgaXdsX3RsY191cGRhdGVfbm90aWYgKm5vdGlmO1xuIDQxOTpcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcbiA0MjA6XHRcdHN0cnVjdCBpZWVlODAyMTFfbGlua19zdGEgKmxpbmtfc3RhO1xuIDQyMTpcdFx0c3RydWN0IGl3bF9tdm1fc3RhICptdm1zdGE7XG4gNDIyOlx0XHRzdHJ1Y3QgaXdsX212bV9saW5rX3N0YSAqbXZtX2xpbmtfc3RhO1xuIDQyMzpcdFx0c3RydWN0IGl3bF9scV9zdGFfcnNfZncgKmxxX3N0YTtcbiA0MjQ6XHRcdHUzMiBmbGFncztcbiA0MjU6XHRcbiA0MjY6XHRcdG5vdGlmID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiA0Mjc6XHRcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCBub3RpZi1cdTAwM2VzdGFfaWQgXHUwMDNlPSBtdm0tXHUwMDNlZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMsXG4gNDI4Olx0XHRcdFx0IFwmIzM0O0ludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcblwmIzM0OyxcbiA0Mjk6XHRcdFx0XHQgbm90aWYtXHUwMDNlc3RhX2lkKSlcbiA0MzA6XHRcdFx0cmV0dXJuO1xuIDQzMTpcdFxuIDQzMjpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDQzMzpcdFxuIDQzNDpcdFx0bGlua19zdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLVx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVx1MDAzZXN0YV9pZF0pO1xuIDQzNTpcdFx0c3RhID0gcmN1X2RlcmVmZXJlbmNlKG12bS1cdTAwM2Vmd19pZF90b19tYWNfaWRbbm90aWYtXHUwMDNlc3RhX2lkXSk7XG4gNDM2Olx0XHRpZiAoSVNfRVJSX09SX05VTEwoc3RhKSB8fCAhbGlua19zdGEpIHtcbiA0Mzc6XHRcdFx0LyogY2FuIGhhcHBlbiBpbiByZW1vdmUgc3RhdGlvbiBmbG93IHdoZXJlIG12bSByZW1vdmVkIGludGVybmFsbHlcbiA0Mzg6XHRcdFx0ICogdGhlIHN0YXRpb24gYmVmb3JlIHJlbW92aW5nIGZyb20gRldcbiA0Mzk6XHRcdFx0ICovXG4gNDQwOlx0XHRcdElXTF9ERUJVR19SQVRFKG12bSxcbiA0NDE6XHRcdFx0XHQgICAgICAgXCYjMzQ7SW52YWxpZCBtdm0gUkNVIHBvaW50ZXIgZm9yIHN0YSBpZCAoJWQpIGluIFRMQyBub3RpZmljYXRpb25cXG5cJiMzNDssXG4gNDQyOlx0XHRcdFx0ICAgICAgIG5vdGlmLVx1MDAzZXN0YV9pZCk7XG4gNDQzOlx0XHRcdGdvdG8gb3V0O1xuIDQ0NDpcdFx0fVxuIDQ0NTpcdFxuIDQ0NjpcdFx0bXZtc3RhID0gaXdsX212bV9zdGFfZnJvbV9tYWM4MDIxMShzdGEpO1xuIDQ0NzpcdFxuIDQ0ODpcdFx0ZmxhZ3MgPSBsZTMyX3RvX2NwdShub3RpZi1cdTAwM2VmbGFncyk7XG4gNDQ5Olx0XG4gNDUwOlx0XHRtdm1fbGlua19zdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtc3RhLVx1MDAzZWxpbmtbbGlua19zdGEtXHUwMDNlbGlua19pZF0pO1xuIDQ1MTpcdFx0aWYgKCFtdm1fbGlua19zdGEpIHtcbiA0NTI6XHRcdFx0SVdMX0RFQlVHX1JBVEUobXZtLFxuIDQ1MzpcdFx0XHRcdCAgICAgICBcJiMzNDtJbnZhbGlkIG12bXN0YSBSQ1UgcG9pbnRlciBmb3IgbGluayAoJWQpIG9mICBzdGEgaWQgKCVkKSBpbiBUTEMgbm90aWZpY2F0aW9uXFxuXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDg4CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpd2x3aWZpIEZpcm13YXJlIE5vdGlmaWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgSW50ZWwgaXdsd2lmaSBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgZ3VhcmRpbmcgYWNjZXNzIHRvIGBtdm0tJmd0O2Z3X2lkX3RvX2xpbmtfc3RhW25vdGlmLSZndDtzdGFfaWRdYCBieSB2ZXJpZnlpbmcgdGhhdCBgbm90aWYtJmd0O3N0YV9pZGAgaXMgd2l0aGluIGEgdmFsaWQgcmFuZ2XigJRgbXZtLSZndDtmdy0mZ3Q7dWNvZGVfY2FwYS5udW1fc3RhdGlvbnNgLiBHb29kLCB3ZSBkb24mIzM5O3Qgd2FudCBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGlzIGlzIGluIHRoZSBjb250ZXh0IG9mIGhhbmRsaW5nIGZpcm13YXJlIG5vdGlmaWNhdGlvbnMsIHdoaWNoIG1ha2VzIHNlbnNlLgoKSG93ZXZlciwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIGl3bHdpZmkgYW5kIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIEkgaGF2ZSBhIHN0cm9uZyBzdXNwaWNpb24gYWJvdXQgaXRzIGZ1enphYmlsaXR5LiBpd2x3aWZpLCBiZWluZyBhbiBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHJlbGllcyBvbiBzcGVjaWZpYyBJbnRlbCBoYXJkd2FyZS4gVGhpcyBwcmVzZW50cyBhIHNpZ25pZmljYW50IGNoYWxsZW5nZSBmb3IgZnV6emluZywgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gVGhlc2UgcGxhdGZvcm1zIGFyZSBpbmNyZWRpYmx5IHVzZWZ1bCwgYnV0IHRoZXkgZG9uJiMzOTt0IHByb3ZpZGUgdGhlIHNhbWUgaW50ZXJhY3Rpb24gbGV2ZWwgd2l0aCB0aGUgaGFyZHdhcmUgdGhhdCB3ZSB3b3VsZCBuZWVkIHRvIHRyaWdnZXIgdGhpcyBjaGVjay4KClRoZXJlZm9yZSwgZGVzcGl0ZSB0aGUgaW1wb3J0YW5jZSBvZiB0aGlzIHBhdGNoIGluIGl0cyBmdW5jdGlvbiwgSSYjMzk7bSBjb25maWRlbnQgd2Ugc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBXZSBjYW4gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBlbnN1cmUgdGhlIGZ1enppbmcgcGlwZWxpbmUgYWNrbm93bGVkZ2VzIHRoaXMuIEl0IHdvdWxkIGJlIGEgZnV0aWxlIGVmZm9ydCB0byBwcmlvcml0aXplIHRoaXMgZnVuY3Rpb24gb3ZlciBvdGhlcnMgdGhhdCBhcmUgbW9yZSByZWFkaWx5IGFjY2Vzc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTg6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ3OjMyLjQyODQxNzY5OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTMzNDUzMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDc6MzIuNDI4NDIzMjE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAxMzYyNjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGRiMDE4NmI1NjY3ZDViODFmZTVhNTQzNjRmMzVlYzFlMDAxNDFiZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxODo0NzozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xcbmluZGV4IDg5YWM0YzZiM2U1NDMuLmUyMzgyYmU4ZWRkNzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNcXG5AQCAtMSw3ICsxLDcgQEBcXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuIC8qXFxuICAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJIXFxuLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uXFxuKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI2IEludGVsIENvcnBvcmF0aW9uXFxuICAqL1xcbiAjaW5jbHVkZSBcXFwicnMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImZ3LWFwaS5oXFxcIlxcbkBAIC00MjMsOSArNDIzLDE0IEBAIHZvaWQgaXdsX212bV90bGNfdXBkYXRlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuIFxcdHN0cnVjdCBpd2xfbHFfc3RhX3JzX2Z3ICpscV9zdGE7XFxuIFxcdHUzMiBmbGFncztcXG4gXFxuK1xcdG5vdGlmID0gKHZvaWQgKilwa3QtXFx1MDAzZWRhdGE7XFxuK1xcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCBub3RpZi1cXHUwMDNlc3RhX2lkIFxcdTAwM2U9IG12bS1cXHUwMDNlZnctXFx1MDAzZXVjb2RlX2NhcGEubnVtX3N0YXRpb25zLFxcbitcXHRcXHRcXHQgXFxcIkludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IG5vdGlmLVxcdTAwM2VzdGFfaWQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcbi1cXHRub3RpZiA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbiBcXHRsaW5rX3N0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXFx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVxcdTAwM2VzdGFfaWRdKTtcXG4gXFx0c3RhID0gcmN1X2RlcmVmZXJlbmNlKG12bS1cXHUwMDNlZndfaWRfdG9fbWFjX2lkW25vdGlmLVxcdTAwM2VzdGFfaWRdKTtcXG4gXFx0aWYgKElTX0VSUl9PUl9OVUxMKHN0YSkgfHwgIWxpbmtfc3RhKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ3OjMzLjgzMDU3NDk0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDc3MzEyODM5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIHRoZSBzdGF0aW9uIElEIGluIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZigpIHdpdGhpbiB0aGUgSW50ZWwgaXdsd2lmaSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgY29kZSBoYW5kbGVzIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgZnJvbSBJbnRlbCBXaS1GaSBmaXJtd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgSW50ZWwgUENJZS9DTlZpIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhkYjAxODZiNTY2N2Q1YjgxZmU1YTU0MzY0ZjM1ZWMxZTAwMTQxYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxODo0NzozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jXG5pbmRleCA4OWFjNGM2YjNlNTQzLi5lMjM4MmJlOGVkZDc4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xuQEAgLTEsNyArMSw3IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gLypcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgRGV1dHNjaGxhbmQgR21iSFxuLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uXG4rICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKi9cbiAjaW5jbHVkZSBcInJzLmhcIlxuICNpbmNsdWRlIFwiZnctYXBpLmhcIlxuQEAgLTQyMyw5ICs0MjMsMTQgQEAgdm9pZCBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdHN0cnVjdCBpd2xfbHFfc3RhX3JzX2Z3ICpscV9zdGE7XG4gXHR1MzIgZmxhZ3M7XG4gXG4rXHRub3RpZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4rXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgbm90aWYtXHUwMDNlc3RhX2lkIFx1MDAzZT0gbXZtLVx1MDAzZWZ3LVx1MDAzZXVjb2RlX2NhcGEubnVtX3N0YXRpb25zLFxuK1x0XHRcdCBcIkludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcblwiLFxuK1x0XHRcdCBub3RpZi1cdTAwM2VzdGFfaWQpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXG4tXHRub3RpZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4gXHRsaW5rX3N0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXHUwMDNlZndfaWRfdG9fbGlua19zdGFbbm90aWYtXHUwMDNlc3RhX2lkXSk7XG4gXHRzdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLVx1MDAzZWZ3X2lkX3RvX21hY19pZFtub3RpZi1cdTAwM2VzdGFfaWRdKTtcbiBcdGlmIChJU19FUlJfT1JfTlVMTChzdGEpIHx8ICFsaW5rX3N0YSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDc6MzMuODMwNTc3MDY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTIzNzY3Nzc4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaDogaXdsd2lmaSBhbmQgV29ydGhGdXp6aW5nKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpd2xfbXZtX3RsY191cGRhdGVfbm90aWZgIGZ1bmN0aW9uLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIGBpd2x3aWZpYCBpcyB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBtZWFucyBpdCBkZWFscyB3aXRoIG5ldHdvcmsgY29tbXVuaWNhdGlvbnMuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBhcmlzZXM6IGNhbiBJIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBjb2RlIGZvciBmdXp6aW5nPyBJcyBpdCByZWxpYW50IG9uIHNwZWNpZmljIEludGVsIGhhcmR3YXJlLCBvciBjYW4gaXQgYmUgZW11bGF0ZWQgd2l0aGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lP1xuXG5XYWl0LCBob2xkIG9uLiBUaGVyZSdzIGEgc2V0IG9mIGluc3RydWN0aW9ucyBJIHNob3VsZCBmb2xsb3cuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBldmVuICpXb3J0aEZ1enppbmcqLiBUaGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRoYXQgaWYgdGhlIHBhdGNoIGlzIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBjaGFuZ2VzLCBjb21tZW50cywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gY29uc3RhbnRzIG9yIG1hY3JvcyB3aXRob3V0IGFmZmVjdGluZyBleGVjdXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGVuIEkgc2hvdWxkIHJldHVybiBgZmFsc2VgLiBUaGUga2V5IGhlcmUgaXMsIEkgbmVlZCB0byBjaGVjayBpZiBgaXdsd2lmaWAgaGFzIGFueSBzaW11bGF0aW9uL2VtdWxhdGlvbi9tYWM4MDIxMV9od3NpbSBvciB2aXJ0X3dpZmkgb3IgaXdsd2lmaSBzaW11bGF0aW9uLlxuXG5JIG5lZWQgdG8gc2VlIGlmIHRoaXMgY29kZSBpcyBpbiBhIHBhdGggdGhhdCdzIGV2ZW4gYWNjZXNzaWJsZSBpbiBteSB0ZXN0IGVudmlyb25tZW50cy4gVGhlIHBhdGNoIGNvdWxkIGJlIHRvdWNoaW5nIGNvZGUgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIEludGVsIFBDSWUgY2FyZCwgb3IgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQncyBub3QgZW11bGF0ZWQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUncyBhbnkgd2F5IHRvIG1ha2UgdGhpcyBydW4gaW4gUUVNVSBvciBHQ0UuIExldCBtZSBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdXNpbmcgZ3JlcCBmb3IgYGl3bHdpZmlgIGFuZCB0ZXJtcyBsaWtlIFwic2ltdWxhdGlvblwiIG9yIFwidGVzdFwiIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBoaW50IG9mIGEgc2ltdWxhdGVkIGVudmlyb25tZW50IGZvciB0ZXN0aW5nLCB0byBoZWxwIGRldGVybWluZSB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzcxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDc6NDYuMjA3MzU2ODYyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTg2MDAwNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX212bV90bGNfdXBkYXRlX25vdGlmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTMxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGl3bF9yeF9oYW5kbGVycyBpd2xfbXZtX3J4X2hhbmRsZXJzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zMjMtXFx0UlhfSEFORExFUl9HUlAoREFUQV9QQVRIX0dST1VQLCBUTENfTU5HX1VQREFURV9OT1RJRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYzozMjQ6XFx0XFx0ICAgICAgIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZiwgUlhfSEFORExFUl9TWU5DLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTMyNS1cXHRcXHQgICAgICAgc3RydWN0IGl3bF90bGNfdXBkYXRlX25vdGlmKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmM9MzY2PXN0YXRpYyB2b2lkIHJzX2Z3X3NldF9zdXBwX3JhdGVzKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTQxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jOjQxNDp2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMtNDE1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaD00NDc9aW50IHJzX2Z3X3R4X3Byb3RlY3Rpb24oc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9tdm1fc3RhICptdm1zdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00NDgtXFx0XFx0XFx0Ym9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg6NDQ5OnZvaWQgaXdsX212bV90bGNfdXBkYXRlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00NTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxODo0Nzo0OC4wMjU5NjA5OTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjU1MTA0ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWAgZGlyZWN0b3J5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBhcHByb2FjaCBoZXJlLiBJcyB0aGlzIGFuIEludGVsLXNwZWNpZmljIFBDSWUgZHJpdmVyLCBvciBhcmUgdGhleSBkb2luZyBzb21lIGtpbmQgb2YgZW11bGF0aW9uPyBXaGF0J3MgdGhlaXIgZGVzaWduIHBoaWxvc29waHk/IEkgaGF2ZSB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gU28sIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gbG9jYXRlIGFsbCBpbnN0YW5jZXMgb2YgXCJpd2x3aWZpXCIgd2l0aGluIHRoZSBzb3VyY2UgdHJlZS4gS25vd2luZyB3aGVyZSBpdCdzIHVzZWQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBob3cgdGhlIGNvbXBvbmVudHMgaW50ZXJyZWxhdGUuIEknbGwgbmVlZCB0byBzZWUgaG93IHBlcnZhc2l2ZSBpdCBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczMSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ3OjUwLjY4MTA2ODAwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQ1MDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT0RVTEVfREVWSUNFX1RBQkxFLipwY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MzQ9VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGl3bF9od19jYXJkX2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTU1NC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzo1NTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGl3bF9od19jYXJkX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTU1Ni1FWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX2h3X2NhcmRfaWRzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDc6NTAuNzMyNTIzMzgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODgyMjE5OTU1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBBbHRlcm5hdGl2ZSBpd2x3aWZpIFRyYW5zcG9ydHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gYnJvYWRlbiBvdXIgc2NvcGUgYSBiaXQgd2hlbiBpdCBjb21lcyB0byB0aGUgaXdsd2lmaSBkcml2ZXIuIFdoaWxlIHdl4oCZcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSBjb25zaWRlcmluZyBhbGwgdGhlIHBvdGVudGlhbCBhdmVudWVzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGV4cGxvcmUgdGhlIGxhbmRzY2FwZSBvZiBkaWZmZXJlbnQgdHJhbnNwb3J0cyB0aGF0IG1pZ2h0IGV4aXN0IGZvciB0aGlzIG1vZHVsZS4gSSBtZWFuLCB3ZSd2ZSBnb3QgdGhlIHJlYWwtd29ybGQgaGFyZHdhcmUsIG9mIGNvdXJzZSwgYnV0IGFyZSB0aGVyZSBvdGhlciBpbXBsZW1lbnRhdGlvbnMgd2UgbWlnaHQgbGV2ZXJhZ2UsIGRlYnVnIG9yIGV2ZW4gbGVhcm4gZnJvbS4gQXJlIHRoZXJlIGFueSBkZWRpY2F0ZWQgdGVzdCBmcmFtZXdvcmtzIGxpa2UgYHRlc3RgLCBgc2ltYCwgb3IgYGt1bml0YCB0aGF0IGhhdmUgYmVlbiBidWlsdCBvciBtaWdodCBiZSByZWxldmFudD8gSWRlbnRpZnlpbmcgdGhlIGZ1bGwgc2V0IG9mIHRyYW5zcG9ydHMgd291bGQgYWxsb3cgbWUgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGRyaXZlcidzIGZsZXhpYmlsaXR5IGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLCBhbmQgbWFrZSBzdXJlIHRoYXQgd2UgYXJlIGNvbnNpZGVyaW5nIGFsbCBhbmdsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGRpZmZlcmVudCB0cmFuc3BvcnRzIGlzIGdvaW5nIHRvIGJlIGtleSB0byBhIGNvbXByZWhlbnNpdmUgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxODo0Nzo1OS41NTQ3MjU2NjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJpd2wtYWduLWh3LmhcIixcbiAgICBcIml3bC1jb25maWcuaFwiLFxuICAgIFwiaXdsLWNzci5oXCIsXG4gICAgXCJpd2wtZGJnLXRsdi5jXCIsXG4gICAgXCJpd2wtZGJnLXRsdi5oXCIsXG4gICAgXCJpd2wtZGVidWcuY1wiLFxuICAgIFwiaXdsLWRlYnVnLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS1kYXRhLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS1pby5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaXdsd2lmaS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtbXNnLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS11Y29kZS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UuY1wiLFxuICAgIFwiaXdsLWRldnRyYWNlLmhcIixcbiAgICBcIml3bC1kcnYuY1wiLFxuICAgIFwiaXdsLWRydi5oXCIsXG4gICAgXCJpd2wtZmguaFwiLFxuICAgIFwiaXdsLWlvLmNcIixcbiAgICBcIml3bC1pby5oXCIsXG4gICAgXCJpd2wtbW9kcGFyYW1zLmhcIixcbiAgICBcIml3bC1udm0tcGFyc2UuY1wiLFxuICAgIFwiaXdsLW52bS1wYXJzZS5oXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmNcIixcbiAgICBcIml3bC1udm0tdXRpbHMuaFwiLFxuICAgIFwiaXdsLW9wLW1vZGUuaFwiLFxuICAgIFwiaXdsLXBoeS1kYi5jXCIsXG4gICAgXCJpd2wtcGh5LWRiLmhcIixcbiAgICBcIml3bC1wcnBoLmhcIixcbiAgICBcIml3bC1zY2QuaFwiLFxuICAgIFwiaXdsLXRyYW5zLmNcIixcbiAgICBcIml3bC10cmFucy5oXCIsXG4gICAgXCJpd2wtdXRpbHMuY1wiLFxuICAgIFwiaXdsLXV0aWxzLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiY2ZnXCIsXG4gICAgXCJkdm1cIixcbiAgICBcImZ3XCIsXG4gICAgXCJtZWlcIixcbiAgICBcIm1sZFwiLFxuICAgIFwibXZtXCIsXG4gICAgXCJwY2llXCIsXG4gICAgXCJ0ZXN0c1wiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ3OjU5LjU1NDgxNjgzM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgyODU0NTQ4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGBpd2xfbXZtX3RsY191cGRhdGVfbm90aWZgIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IGBpd2xfbXZtX3RsY191cGRhdGVfbm90aWZgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jYC4gVGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgYnkgYSBmaXJtd2FyZSBub3RpZmljYXRpb24gKGBUTENfTU5HX1VQREFURV9OT1RJRmApIHRocm91Z2ggdGhlIFJYIGhhbmRsZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB3aGV0aGVyIHdlIGNhbiBldmVuIGhpdCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IEdDRSBvciBzdGFuZGFyZCBRRU1VLlxuXG5UaGUgaXdsd2lmaSBkcml2ZXIgaXMgdmVuZG9yLXNwZWNpZmljIHRvIEludGVsIFdpLUZpIGNhcmRzLiBJdCBsZXZlcmFnZXMgZWl0aGVyIFBDSWUgb3IgQ05WaSBpbnRlcmZhY2VzLiBUaGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIGZpcm13YXJlIGxvYWRpbmcuIFN0YW5kYXJkIFFFTVUsIGFzIGZhciBhcyBJIGtub3csIGRvZXNuJ3QgZW11bGF0ZSB0aGVzZSBJbnRlbCBpd2x3aWZpIFBDSWUgTklDcy4gTW9zdCBRRU1VIHdpcmVsZXNzIGVtdWxhdGlvbiBsZWFucyB0b3dhcmRzIHRoaW5ncyBsaWtlIG1hYzgwMjExX2h3c2ltLCB2aXJ0aW8sIG9yIFVTQi1lbXVsYXRlZCBkZXZpY2VzLCBub25lIG9mIHdoaWNoIGRpcmVjdGx5IGludm9sdmUgaXdsd2lmaS5cblxuV2FpdCwgaXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG1hYzgwMjExX2h3c2ltIG1pZ2h0IHNvbWVob3cgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXM/IExldCdzIGJlIHN1cmUgYWJvdXQgdGhpcy4gTm8sIHRoYXQncyB3cm9uZy4gYG1hYzgwMjExX2h3c2ltYCBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYCksIGRpc3RpbmN0IGZyb20gdGhlIGl3bHdpZmkgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9gKS4gQW5kLCBgaXdsX212bV90bGNfdXBkYXRlX25vdGlmYCBpcyBzcGVjaWZpY2FsbHkgYW4gaW50ZXJuYWwgZmlybXdhcmUgUlggaGFuZGxlciBmb3IgdGhlIEludGVsIE1WTSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGEgbWFjODAyMTEgdmVuZG9yIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIEludGVsIDcwMDArIHNlcmllcyBjYXJkcy4gSXQncyBoYW5kbGluZyBhIHBhY2tldCBvciBhIG5vdGlmaWNhdGlvbiBmcm9tIHRoZSBmaXJtd2FyZSBydW5uaW5nIG9uIHRoZSBJbnRlbCBOSUMsIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQuXG5cbkFscmlnaHQsIGxldCdzIGJyaW5nIGluIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFdlJ3JlIGxvb2tpbmcgZm9yIGNvZGUgcGF0aHMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIG91ciB0ZXN0aW5nIGVudmlyb25tZW50LiBUaGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGF0IHdlIHNob3VsZCBzZXQgXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgYSBwYXRjaCB0b3VjaGVzOlxuXG4qICAgQ29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0ZWQgaGFyZHdhcmUgKG1hYzgwMjExX2h3c2ltLCB1c2IgZ2FkZ2V0LCBldGMpLlxuKiAgIFZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIChlLmcuLCBtbHhzdywgcWVkLCBhbWRncHUsIGV0Yy4pLlxuXG5CYXNlZCBvbiBteSBhbmFseXNpcywgaXQgc2VlbXMgaGlnaGx5IGxpa2VseSB0aGF0IHRoaXMgZmFsbHMgaW50byB0aGUgXCJpbXBvc3NpYmxlIHRvIHJlYWNoXCIgY2F0ZWdvcnkuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNhbGwgc2l0ZXMgb3IgdGVzdHMgdGhhdCBzb21laG93ICpjb3VsZCogY2FsbCB0aGlzIGZ1bmN0aW9uLCBidXQgbXkgcHJlbGltaW5hcnkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgdW5saWtlbHkgdG8gYmUgd29ydGggZnV6emluZyBpbiBvdXIgdHlwaWNhbCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5MywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MDcuODQwMjg1MjMzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgxNDI1Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYz0zMTc9c3RhdGljIGNvbnN0IHN0cnVjdCBpd2xfcnhfaGFuZGxlcnMgaXdsX212bV9yeF9oYW5kbGVyc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMzIzLVxcdFJYX0hBTkRMRVJfR1JQKERBVEFfUEFUSF9HUk9VUCwgVExDX01OR19VUERBVEVfTk9USUYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM6MzI0OlxcdFxcdCAgICAgICBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYsIFJYX0hBTkRMRVJfU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zMjUtXFx0XFx0ICAgICAgIHN0cnVjdCBpd2xfdGxjX3VwZGF0ZV9ub3RpZiksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jPTM2Nj1zdGF0aWMgdm9pZCByc19md19zZXRfc3VwcF9yYXRlcyhzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYy00MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYzo0MTQ6dm9pZCBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTQxNS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9NDQ3PWludCByc19md190eF9wcm90ZWN0aW9uKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfbXZtX3N0YSAqbXZtc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtNDQ4LVxcdFxcdFxcdGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oOjQ0OTp2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtNDUwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MDkuNDIxNzE5MTA4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ2MDI5NzU3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKippd2x3aWZpIFRlc3QgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBgaXdsd2lmaWAgdGVzdHMgYXJlIGFjdHVhbGx5IGNhbGxpbmcgaW50byB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cy9gLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBxdWVzdGlvbiwgYnV0IHRoZSBpbXBsaWNhdGlvbnMgY291bGQgYmUgc2lnbmlmaWNhbnQgZm9yIG15IHdvcmsuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIHRlc3RpbmcgaXMgY29tcHJlaGVuc2l2ZSBhbmQgaGl0dGluZyB0aGUgY29ycmVjdCBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBJZiB0aGUgdGVzdHMgKmFyZW4ndCogY2hlY2tpbmcgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBpbiB0aGF0IHRlc3QgZGlyZWN0b3J5LCB0aGVuIHRoZXJlIGNvdWxkIGJlIHBvdGVudGlhbCBnYXBzLiBJJ20gaW1hZ2luaW5nIHNvbWUgZGVidWdnaW5nIHNlc3Npb25zIGFuZCBzb21lIGNhcmVmdWwgdHJhY2luZyB0aHJvdWdoIHRoZSBjb2RlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIHRoZSB0ZXN0IHN1aXRlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGV4cGxpY2l0IGNhbGxzIG9yIGlmIHRoZXkgYXJlIGluZGlyZWN0bHkgY2FsbGVkLCBwcm9iYWJseSBieSBsb29raW5nIGZvciBzcGVjaWZpYyBmdW5jdGlvbiBuYW1lcyBvciBtb2R1bGUgbmFtZXMgYmVpbmcgcmVmZXJlbmNlZC4gSSBjYW4ndCBiZSB0b28gaGFzdHksIEknbGwgbmVlZCB0byBkbyBpdCBtZXRob2RpY2FsbHkgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9ucy4gT25jZSBJIGhhdmUgdGhlIGFuc3dlciwgSSBjYW4gZGV0ZXJtaW5lIGlmIGFueSBjaGFuZ2VzIG9yIGFkZGl0aW9ucyBtaWdodCBiZSByZXF1aXJlZCBpbiBvcmRlciB0byBtYWtlIHRoZSB0ZXN0aW5nIGFkZXF1YXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDU1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MTQuMDI0Njk3NDQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRldmluZm8uY1wiLFxuICAgIFwibW9kdWxlLmNcIixcbiAgICBcIm52bV9wYXJzZS5jXCIsXG4gICAgXCJ1dGlscy5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ4OjE0LjAyNDc1MDgwNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDAyMTk1NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIEludGVsIFdpLUZpIEZpcm13YXJlIFVwZGF0ZXMgaW4gYSBWaXJ0dWFsIEVudmlyb25tZW50KipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlc2UgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0c2AgZGlyZWN0b3J5LiBJIHNlZSBgZGV2aW5mby5jYCwgYG1vZHVsZS5jYCwgYG52bV9wYXJzZS5jYCwgYW5kIGB1dGlscy5jYCBhcmUgS1VuaXQgdGVzdHPigJRiYXNpY2FsbHkgY2hlY2tpbmcgdGhlIGJhc2ljcyBvZiBoZWxwZXIgZnVuY3Rpb25zIGFuZCBOVk0gcGFyc2luZywgd2hpY2ggaXMgc3RhbmRhcmQgc3R1ZmYuIE5vdywgYGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZmAgaXMgdGhlIGludGVyZXN0aW5nIHBpZWNlIGhlcmUuIEl0J3MgZXhjbHVzaXZlbHkgdHJpZ2dlcmVkIHdpdGhpbiBgaXdsX212bV9yeF9oYW5kbGVyc2AsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIGRyaXZlciBnZXRzIGEgVExDX01OR19VUERBVEVfTk9USUYgbm90aWZpY2F0aW9uIGZyb20gdGhlIEludGVsIFdpLUZpIGZpcm13YXJlIG9uIGFuIEludGVsIHdpcmVsZXNzIE5JQyBQQ0llIGRldmljZS5cblxuU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggbmVjZXNzaXRhdGVzIGFjdHVhbCBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCB0aGUgY29ycmVzcG9uZGluZyBmaXJtd2FyZS4gQ29uc2lkZXJpbmcgdGhpcywgSSdtIGdvaW5nIHRvIHNhZmVseSBzYXkgdGhhdCByZWFjaGluZyB0aGlzIHNwZWNpZmljIGJpdCBvZiBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgeW91ciBldmVyeWRheSBRRU1VIGlzIGltcG9zc2libGUuIE5vdCB3aXRob3V0IHNvbWUgc2VyaW91cyBoYXJkd2FyZSBtYWdpYyFcblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlIG9mIHRoZSBjaGFuZ2VzIGludm9sdmVkLCBJJ2xsIHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNgIGFyb3VuZCBsaW5lIDQyMy4gQSBxdWljayBjaGVjayBvZiB0aGF0IGFyZWEgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3ODAsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ4OjE3LjQyNjk0ODUzMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQxNCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQxNDpcXHR2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiA0MTU6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXFxuIDQxNjpcXHR7XFxuIDQxNzpcXHRcXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcXG4gNDE4OlxcdFxcdHN0cnVjdCBpd2xfdGxjX3VwZGF0ZV9ub3RpZiAqbm90aWY7XFxuIDQxOTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhO1xcbiA0MjA6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGE7XFxuIDQyMTpcXHRcXHRzdHJ1Y3QgaXdsX212bV9zdGEgKm12bXN0YTtcXG4gNDIyOlxcdFxcdHN0cnVjdCBpd2xfbXZtX2xpbmtfc3RhICptdm1fbGlua19zdGE7XFxuIDQyMzpcXHRcXHRzdHJ1Y3QgaXdsX2xxX3N0YV9yc19mdyAqbHFfc3RhO1xcbiA0MjQ6XFx0XFx0dTMyIGZsYWdzO1xcbiA0MjU6XFx0XFxuIDQyNjpcXHRcXHRub3RpZiA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbiA0Mjc6XFx0XFx0aWYgKElXTF9GV19DSEVDSyhtdm0sIG5vdGlmLVxcdTAwM2VzdGFfaWQgXFx1MDAzZT0gbXZtLVxcdTAwM2Vmdy1cXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMsXFxuIDQyODpcXHRcXHRcXHRcXHQgXFxcIkludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcXFxuXFxcIixcXG4gNDI5OlxcdFxcdFxcdFxcdCBub3RpZi1cXHUwMDNlc3RhX2lkKSlcXG4gNDMwOlxcdFxcdFxcdHJldHVybjtcXG4gNDMxOlxcdFxcbiA0MzI6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiA0MzM6XFx0XFxuIDQzNDpcXHRcXHRsaW5rX3N0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXFx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVxcdTAwM2VzdGFfaWRdKTtcXG4gNDM1OlxcdFxcdHN0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXFx1MDAzZWZ3X2lkX3RvX21hY19pZFtub3RpZi1cXHUwMDNlc3RhX2lkXSk7XFxuIDQzNjpcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwoc3RhKSB8fCAhbGlua19zdGEpIHtcXG4gNDM3OlxcdFxcdFxcdC8qIGNhbiBoYXBwZW4gaW4gcmVtb3ZlIHN0YXRpb24gZmxvdyB3aGVyZSBtdm0gcmVtb3ZlZCBpbnRlcm5hbGx5XFxuIDQzODpcXHRcXHRcXHQgKiB0aGUgc3RhdGlvbiBiZWZvcmUgcmVtb3ZpbmcgZnJvbSBGV1xcbiA0Mzk6XFx0XFx0XFx0ICovXFxuIDQ0MDpcXHRcXHRcXHRJV0xfREVCVUdfUkFURShtdm0sXFxuIDQ0MTpcXHRcXHRcXHRcXHQgICAgICAgXFxcIkludmFsaWQgbXZtIFJDVSBwb2ludGVyIGZvciBzdGEgaWQgKCVkKSBpbiBUTEMgbm90aWZpY2F0aW9uXFxcXG5cXFwiLFxcbiA0NDI6XFx0XFx0XFx0XFx0ICAgICAgIG5vdGlmLVxcdTAwM2VzdGFfaWQpO1xcbiA0NDM6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ0NDpcXHRcXHR9XFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdFxcdG12bXN0YSA9IGl3bF9tdm1fc3RhX2Zyb21fbWFjODAyMTEoc3RhKTtcXG4gNDQ3OlxcdFxcbiA0NDg6XFx0XFx0ZmxhZ3MgPSBsZTMyX3RvX2NwdShub3RpZi1cXHUwMDNlZmxhZ3MpO1xcbiA0NDk6XFx0XFxuIDQ1MDpcXHRcXHRtdm1fbGlua19zdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtc3RhLVxcdTAwM2VsaW5rW2xpbmtfc3RhLVxcdTAwM2VsaW5rX2lkXSk7XFxuIDQ1MTpcXHRcXHRpZiAoIW12bV9saW5rX3N0YSkge1xcbiA0NTI6XFx0XFx0XFx0SVdMX0RFQlVHX1JBVEUobXZtLFxcbiA0NTM6XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJJbnZhbGlkIG12bXN0YSBSQ1UgcG9pbnRlciBmb3IgbGluayAoJWQpIG9mICBzdGEgaWQgKCVkKSBpbiBUTEMgbm90aWZpY2F0aW9uXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxODo0ODoxNy40MjcwMzg2NjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDEzNDc5Nzg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpd2x3aWZpIEZpcm13YXJlIE5vdGlmaWNhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIGEgY3J1Y2lhbCBib3VuZHMgY2hlY2sgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGd1YXJkaW5nIGFjY2VzcyB0byBgbXZtLVx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVx1MDAzZXN0YV9pZF1gIGJ5IHZlcmlmeWluZyB0aGF0IGBub3RpZi1cdTAwM2VzdGFfaWRgIGlzIHdpdGhpbiBhIHZhbGlkIHJhbmdl4oCUYG12bS1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLm51bV9zdGF0aW9uc2AuIEdvb2QsIHdlIGRvbid0IHdhbnQgb3V0LW9mLWJvdW5kcyByZWFkcy4gVGhpcyBpcyBpbiB0aGUgY29udGV4dCBvZiBoYW5kbGluZyBmaXJtd2FyZSBub3RpZmljYXRpb25zLCB3aGljaCBtYWtlcyBzZW5zZS5cblxuSG93ZXZlciwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIGl3bHdpZmkgYW5kIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIEkgaGF2ZSBhIHN0cm9uZyBzdXNwaWNpb24gYWJvdXQgaXRzIGZ1enphYmlsaXR5LiBpd2x3aWZpLCBiZWluZyBhbiBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHJlbGllcyBvbiBzcGVjaWZpYyBJbnRlbCBoYXJkd2FyZS4gVGhpcyBwcmVzZW50cyBhIHNpZ25pZmljYW50IGNoYWxsZW5nZSBmb3IgZnV6emluZywgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gVGhlc2UgcGxhdGZvcm1zIGFyZSBpbmNyZWRpYmx5IHVzZWZ1bCwgYnV0IHRoZXkgZG9uJ3QgcHJvdmlkZSB0aGUgc2FtZSBpbnRlcmFjdGlvbiBsZXZlbCB3aXRoIHRoZSBoYXJkd2FyZSB0aGF0IHdlIHdvdWxkIG5lZWQgdG8gdHJpZ2dlciB0aGlzIGNoZWNrLlxuXG5UaGVyZWZvcmUsIGRlc3BpdGUgdGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBwYXRjaCBpbiBpdHMgZnVuY3Rpb24sIEknbSBjb25maWRlbnQgd2Ugc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBXZSBjYW4gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBlbnN1cmUgdGhlIGZ1enppbmcgcGlwZWxpbmUgYWNrbm93bGVkZ2VzIHRoaXMuIEl0IHdvdWxkIGJlIGEgZnV0aWxlIGVmZm9ydCB0byBwcmlvcml0aXplIHRoaXMgZnVuY3Rpb24gb3ZlciBvdGhlcnMgdGhhdCBhcmUgbW9yZSByZWFkaWx5IGFjY2Vzc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwODgsIk91dHB1dFRva2VucyI6MTA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MjEuNTYxODM4ODE4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MjEuNTYxODYwNDE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowwhsqp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 18:00:00 +0000 UTC FinishedAt: 2026-08-31 18:48:22 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE4OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhkYjAxODZiNTY2N2Q1YjgxZmU1YTU0MzY0ZjM1ZWMxZTAwMTQxYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxODo0NzozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xuaW5kZXggODlhYzRjNmIzZTU0My4uZTIzODJiZThlZGQ3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNcbkBAIC0xLDcgJiM0MzsxLDcgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAvKlxuICAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJIXG4tICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjUgSW50ZWwgQ29ycG9yYXRpb25cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKi9cbiAjaW5jbHVkZSBcJiMzNDtycy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZnctYXBpLmhcJiMzNDtcbkBAIC00MjMsOSAmIzQzOzQyMywxNCBAQCB2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuIFx0c3RydWN0IGl3bF9scV9zdGFfcnNfZncgKmxxX3N0YTtcbiBcdHUzMiBmbGFncztcbiBcbiYjNDM7XHRub3RpZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sIG5vdGlmLVx1MDAzZXN0YV9pZCBcdTAwM2U9IG12bS1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLm51bV9zdGF0aW9ucyxcbiYjNDM7XHRcdFx0IFwmIzM0O0ludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IG5vdGlmLVx1MDAzZXN0YV9pZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFxuLVx0bm90aWYgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuIFx0bGlua19zdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLVx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVx1MDAzZXN0YV9pZF0pO1xuIFx0c3RhID0gcmN1X2RlcmVmZXJlbmNlKG12bS1cdTAwM2Vmd19pZF90b19tYWNfaWRbbm90aWYtXHUwMDNlc3RhX2lkXSk7XG4gXHRpZiAoSVNfRVJSX09SX05VTEwoc3RhKSB8fCAhbGlua19zdGEpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciB0aGUgc3RhdGlvbiBJRCBpbiBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoKSB3aXRoaW4gdGhlIEludGVsIGl3bHdpZmkgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGNvZGUgaGFuZGxlcyBub3RpZmljYXRpb25zIHJlY2VpdmVkIGZyb20gSW50ZWwgV2ktRmkgZmlybXdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIEludGVsIFBDSWUvQ05WaSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGRiMDE4NmI1NjY3ZDViODFmZTVhNTQzNjRmMzVlYzFlMDAxNDFiZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDE4OjQ3OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMKaW5kZXggODlhYzRjNmIzZTU0My4uZTIzODJiZThlZGQ3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jCkBAIC0xLDcgJiM0MzsxLDcgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJICi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvbgomIzQzOyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI2IEludGVsIENvcnBvcmF0aW9uCiAgKi8KICNpbmNsdWRlICYjMzQ7cnMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2Z3LWFwaS5oJiMzNDsKQEAgLTQyMyw5ICYjNDM7NDIzLDE0IEBAIHZvaWQgaXdsX212bV90bGNfdXBkYXRlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJc3RydWN0IGl3bF9scV9zdGFfcnNfZncgKmxxX3N0YTsKIAl1MzIgZmxhZ3M7CiAKJiM0MzsJbm90aWYgPSAodm9pZCAqKXBrdC0mZ3Q7ZGF0YTsKJiM0MzsJaWYgKElXTF9GV19DSEVDSyhtdm0sIG5vdGlmLSZndDtzdGFfaWQgJmd0Oz0gbXZtLSZndDtmdy0mZ3Q7dWNvZGVfY2FwYS5udW1fc3RhdGlvbnMsCiYjNDM7CQkJICYjMzQ7SW52YWxpZCBzdGEgaWQgKCVkKSBpbiBUTEMgbm90aWZpY2F0aW9uXG4mIzM0OywKJiM0MzsJCQkgbm90aWYtJmd0O3N0YV9pZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJcmN1X3JlYWRfbG9jaygpOwogCi0Jbm90aWYgPSAodm9pZCAqKXBrdC0mZ3Q7ZGF0YTsKIAlsaW5rX3N0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tJmd0O2Z3X2lkX3RvX2xpbmtfc3RhW25vdGlmLSZndDtzdGFfaWRdKTsKIAlzdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLSZndDtmd19pZF90b19tYWNfaWRbbm90aWYtJmd0O3N0YV9pZF0pOwogCWlmIChJU19FUlJfT1JfTlVMTChzdGEpIHx8ICFsaW5rX3N0YSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzcxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IGl3bHdpZmkgYW5kIFdvcnRoRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaXdsX212bV90bGNfdXBkYXRlX25vdGlmYCBmdW5jdGlvbi4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBgaXdsd2lmaWAgaXMgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQgZGVhbHMgd2l0aCBuZXR3b3JrIGNvbW11bmljYXRpb25zLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gYXJpc2VzOiBjYW4gSSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgY29kZSBmb3IgZnV6emluZz8gSXMgaXQgcmVsaWFudCBvbiBzcGVjaWZpYyBJbnRlbCBoYXJkd2FyZSwgb3IgY2FuIGl0IGJlIGVtdWxhdGVkIHdpdGhpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8KCldhaXQsIGhvbGQgb24uIFRoZXJlJiMzOTtzIGEgc2V0IG9mIGluc3RydWN0aW9ucyBJIHNob3VsZCBmb2xsb3cuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBldmVuICpXb3J0aEZ1enppbmcqLiBUaGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRoYXQgaWYgdGhlIHBhdGNoIGlzIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBjaGFuZ2VzLCBjb21tZW50cywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gY29uc3RhbnRzIG9yIG1hY3JvcyB3aXRob3V0IGFmZmVjdGluZyBleGVjdXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGVuIEkgc2hvdWxkIHJldHVybiBgZmFsc2VgLiBUaGUga2V5IGhlcmUgaXMsIEkgbmVlZCB0byBjaGVjayBpZiBgaXdsd2lmaWAgaGFzIGFueSBzaW11bGF0aW9uL2VtdWxhdGlvbi9tYWM4MDIxMV9od3NpbSBvciB2aXJ0X3dpZmkgb3IgaXdsd2lmaSBzaW11bGF0aW9uLgoKSSBuZWVkIHRvIHNlZSBpZiB0aGlzIGNvZGUgaXMgaW4gYSBwYXRoIHRoYXQmIzM5O3MgZXZlbiBhY2Nlc3NpYmxlIGluIG15IHRlc3QgZW52aXJvbm1lbnRzLiBUaGUgcGF0Y2ggY291bGQgYmUgdG91Y2hpbmcgY29kZSB0aGF0IHJlcXVpcmVzIGEgcGh5c2ljYWwgSW50ZWwgUENJZSBjYXJkLCBvciByZWxpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byBtYWtlIHRoaXMgcnVuIGluIFFFTVUgb3IgR0NFLiBMZXQgbWUgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHVzaW5nIGdyZXAgZm9yIGBpd2x3aWZpYCBhbmQgdGVybXMgbGlrZSAmIzM0O3NpbXVsYXRpb24mIzM0OyBvciAmIzM0O3Rlc3QmIzM0OyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGhpbnQgb2YgYSBzaW11bGF0ZWQgZW52aXJvbm1lbnQgZm9yIHRlc3RpbmcsIHRvIGhlbHAgZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX212bV90bGNfdXBkYXRlX25vdGlmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTMxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGl3bF9yeF9oYW5kbGVycyBpd2xfbXZtX3J4X2hhbmRsZXJzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMzIzLVx0UlhfSEFORExFUl9HUlAoREFUQV9QQVRIX0dST1VQLCBUTENfTU5HX1VQREFURV9OT1RJRixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jOjMyNDpcdFx0ICAgICAgIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZiwgUlhfSEFORExFUl9TWU5DLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMzI1LVx0XHQgICAgICAgc3RydWN0IGl3bF90bGNfdXBkYXRlX25vdGlmKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jPTM2Nj1zdGF0aWMgdm9pZCByc19md19zZXRfc3VwcF9yYXRlcyhzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMtNDEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYzo0MTQ6dm9pZCBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMtNDE1LVx0XHRcdCAgICAgIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9NDQ3PWludCByc19md190eF9wcm90ZWN0aW9uKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfbXZtX3N0YSAqbXZtc3RhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00NDgtXHRcdFx0Ym9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaDo0NDk6dm9pZCBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtNDUwLVx0XHRcdCAgICAgIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzMxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWAgZGlyZWN0b3J5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBhcHByb2FjaCBoZXJlLiBJcyB0aGlzIGFuIEludGVsLXNwZWNpZmljIFBDSWUgZHJpdmVyLCBvciBhcmUgdGhleSBkb2luZyBzb21lIGtpbmQgb2YgZW11bGF0aW9uPyBXaGF0JiMzOTtzIHRoZWlyIGRlc2lnbiBwaGlsb3NvcGh5PyBJIGhhdmUgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBvZiB0aGUgaW1wbGVtZW50YXRpb24uIFNvLCB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIGxvY2F0ZSBhbGwgaW5zdGFuY2VzIG9mICYjMzQ7aXdsd2lmaSYjMzQ7IHdpdGhpbiB0aGUgc291cmNlIHRyZWUuIEtub3dpbmcgd2hlcmUgaXQmIzM5O3MgdXNlZCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGhvdyB0aGUgY29tcG9uZW50cyBpbnRlcnJlbGF0ZS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHBlcnZhc2l2ZSBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFLipwY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0zND1WSVNJQkxFX0lGX0lXTFdJRklfS1VOSVQgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXdsX2h3X2NhcmRfaWRzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTU1NC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjU1NTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaXdsX2h3X2NhcmRfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01NTYtRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9od19jYXJkX2lkcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzNAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgQWx0ZXJuYXRpdmUgaXdsd2lmaSBUcmFuc3BvcnRzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIGJyb2FkZW4gb3VyIHNjb3BlIGEgYml0IHdoZW4gaXQgY29tZXMgdG8gdGhlIGl3bHdpZmkgZHJpdmVyLiBXaGlsZSB3ZeKAmXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIGNvbnNpZGVyaW5nIGFsbCB0aGUgcG90ZW50aWFsIGF2ZW51ZXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZXhwbG9yZSB0aGUgbGFuZHNjYXBlIG9mIGRpZmZlcmVudCB0cmFuc3BvcnRzIHRoYXQgbWlnaHQgZXhpc3QgZm9yIHRoaXMgbW9kdWxlLiBJIG1lYW4sIHdlJiMzOTt2ZSBnb3QgdGhlIHJlYWwtd29ybGQgaGFyZHdhcmUsIG9mIGNvdXJzZSwgYnV0IGFyZSB0aGVyZSBvdGhlciBpbXBsZW1lbnRhdGlvbnMgd2UgbWlnaHQgbGV2ZXJhZ2UsIGRlYnVnIG9yIGV2ZW4gbGVhcm4gZnJvbS4gQXJlIHRoZXJlIGFueSBkZWRpY2F0ZWQgdGVzdCBmcmFtZXdvcmtzIGxpa2UgYHRlc3RgLCBgc2ltYCwgb3IgYGt1bml0YCB0aGF0IGhhdmUgYmVlbiBidWlsdCBvciBtaWdodCBiZSByZWxldmFudD8gSWRlbnRpZnlpbmcgdGhlIGZ1bGwgc2V0IG9mIHRyYW5zcG9ydHMgd291bGQgYWxsb3cgbWUgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGRyaXZlciYjMzk7cyBmbGV4aWJpbGl0eSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcywgYW5kIG1ha2Ugc3VyZSB0aGF0IHdlIGFyZSBjb25zaWRlcmluZyBhbGwgYW5nbGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBkaWZmZXJlbnQgdHJhbnNwb3J0cyBpcyBnb2luZyB0byBiZSBrZXkgdG8gYSBjb21wcmVoZW5zaXZlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtpd2wtYWduLWh3LmgmIzM0OywKICAgICYjMzQ7aXdsLWNvbmZpZy5oJiMzNDssCiAgICAmIzM0O2l3bC1jc3IuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGJnLXRsdi5jJiMzNDssCiAgICAmIzM0O2l3bC1kYmctdGx2LmgmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmMmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWRhdGEuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaW8uaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaXdsd2lmaS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1tc2cuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtdWNvZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuaCYjMzQ7LAogICAgJiMzNDtpd2wtZHJ2LmMmIzM0OywKICAgICYjMzQ7aXdsLWRydi5oJiMzNDssCiAgICAmIzM0O2l3bC1maC5oJiMzNDssCiAgICAmIzM0O2l3bC1pby5jJiMzNDssCiAgICAmIzM0O2l3bC1pby5oJiMzNDssCiAgICAmIzM0O2l3bC1tb2RwYXJhbXMuaCYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXBhcnNlLmMmIzM0OywKICAgICYjMzQ7aXdsLW52bS1wYXJzZS5oJiMzNDssCiAgICAmIzM0O2l3bC1udm0tdXRpbHMuYyYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXV0aWxzLmgmIzM0OywKICAgICYjMzQ7aXdsLW9wLW1vZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtcGh5LWRiLmMmIzM0OywKICAgICYjMzQ7aXdsLXBoeS1kYi5oJiMzNDssCiAgICAmIzM0O2l3bC1wcnBoLmgmIzM0OywKICAgICYjMzQ7aXdsLXNjZC5oJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5jJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5oJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5jJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2NmZyYjMzQ7LAogICAgJiMzNDtkdm0mIzM0OywKICAgICYjMzQ7ZncmIzM0OywKICAgICYjMzQ7bWVpJiMzNDssCiAgICAmIzM0O21sZCYjMzQ7LAogICAgJiMzNDttdm0mIzM0OywKICAgICYjMzQ7cGNpZSYjMzQ7LAogICAgJiMzNDt0ZXN0cyYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZmAgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgaXdsX212bV90bGNfdXBkYXRlX25vdGlmYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY2AuIFRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIGJ5IGEgZmlybXdhcmUgbm90aWZpY2F0aW9uIChgVExDX01OR19VUERBVEVfTk9USUZgKSB0aHJvdWdoIHRoZSBSWCBoYW5kbGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgd2hldGhlciB3ZSBjYW4gZXZlbiBoaXQgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBzeXprYWxsZXIsIHNwZWNpZmljYWxseSBHQ0Ugb3Igc3RhbmRhcmQgUUVNVS4KClRoZSBpd2x3aWZpIGRyaXZlciBpcyB2ZW5kb3Itc3BlY2lmaWMgdG8gSW50ZWwgV2ktRmkgY2FyZHMuIEl0IGxldmVyYWdlcyBlaXRoZXIgUENJZSBvciBDTlZpIGludGVyZmFjZXMuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIGZpcm13YXJlIGxvYWRpbmcuIFN0YW5kYXJkIFFFTVUsIGFzIGZhciBhcyBJIGtub3csIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlc2UgSW50ZWwgaXdsd2lmaSBQQ0llIE5JQ3MuIE1vc3QgUUVNVSB3aXJlbGVzcyBlbXVsYXRpb24gbGVhbnMgdG93YXJkcyB0aGluZ3MgbGlrZSBtYWM4MDIxMV9od3NpbSwgdmlydGlvLCBvciBVU0ItZW11bGF0ZWQgZGV2aWNlcywgbm9uZSBvZiB3aGljaCBkaXJlY3RseSBpbnZvbHZlIGl3bHdpZmkuCgpXYWl0LCBpcyB0aGVyZSBhbnkgcG9zc2liaWxpdHkgbWFjODAyMTFfaHdzaW0gbWlnaHQgc29tZWhvdyBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcz8gTGV0JiMzOTtzIGJlIHN1cmUgYWJvdXQgdGhpcy4gTm8sIHRoYXQmIzM5O3Mgd3JvbmcuIGBtYWM4MDIxMV9od3NpbWAgaXMgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uY2ApLCBkaXN0aW5jdCBmcm9tIHRoZSBpd2x3aWZpIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvYCkuIEFuZCwgYGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZmAgaXMgc3BlY2lmaWNhbGx5IGFuIGludGVybmFsIGZpcm13YXJlIFJYIGhhbmRsZXIgZm9yIHRoZSBJbnRlbCBNVk0gYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyBhIG1hYzgwMjExIHZlbmRvciBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCA3MDAwJiM0Mzsgc2VyaWVzIGNhcmRzLiBJdCYjMzk7cyBoYW5kbGluZyBhIHBhY2tldCBvciBhIG5vdGlmaWNhdGlvbiBmcm9tIHRoZSBmaXJtd2FyZSBydW5uaW5nIG9uIHRoZSBJbnRlbCBOSUMsIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJpbmcgaW4gdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIGNvZGUgcGF0aHMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIG91ciB0ZXN0aW5nIGVudmlyb25tZW50LiBUaGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGF0IHdlIHNob3VsZCBzZXQgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgYSBwYXRjaCB0b3VjaGVzOgoKKiAgIENvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGVkIGhhcmR3YXJlIChtYWM4MDIxMV9od3NpbSwgdXNiIGdhZGdldCwgZXRjKS4KKiAgIFZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIChlLmcuLCBtbHhzdywgcWVkLCBhbWRncHUsIGV0Yy4pLgoKQmFzZWQgb24gbXkgYW5hbHlzaXMsIGl0IHNlZW1zIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGlzIGZhbGxzIGludG8gdGhlICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCYjMzQ7IGNhdGVnb3J5LiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY2FsbCBzaXRlcyBvciB0ZXN0cyB0aGF0IHNvbWVob3cgKmNvdWxkKiBjYWxsIHRoaXMgZnVuY3Rpb24sIGJ1dCBteSBwcmVsaW1pbmFyeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyB1bmxpa2VseSB0byBiZSB3b3J0aCBmdXp6aW5nIGluIG91ciB0eXBpY2FsIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfbXZtX3RsY191cGRhdGVfbm90aWYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM9MzE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXdsX3J4X2hhbmRsZXJzIGl3bF9tdm1fcnhfaGFuZGxlcnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zMjMtXHRSWF9IQU5ETEVSX0dSUChEQVRBX1BBVEhfR1JPVVAsIFRMQ19NTkdfVVBEQVRFX05PVElGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM6MzI0Olx0XHQgICAgICAgaXdsX212bV90bGNfdXBkYXRlX25vdGlmLCBSWF9IQU5ETEVSX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zMjUtXHRcdCAgICAgICBzdHJ1Y3QgaXdsX3RsY191cGRhdGVfbm90aWYpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmM9MzY2PXN0YXRpYyB2b2lkIHJzX2Z3X3NldF9zdXBwX3JhdGVzKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYy00MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jOjQxNDp2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYy00MTUtXHRcdFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaD00NDc9aW50IHJzX2Z3X3R4X3Byb3RlY3Rpb24oc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9tdm1fc3RhICptdm1zdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTQ0OC1cdFx0XHRib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oOjQ0OTp2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00NTAtXHRcdFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDU1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKml3bHdpZmkgVGVzdCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBgaXdsd2lmaWAgdGVzdHMgYXJlIGFjdHVhbGx5IGNhbGxpbmcgaW50byB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cy9gLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcXVlc3Rpb24sIGJ1dCB0aGUgaW1wbGljYXRpb25zIGNvdWxkIGJlIHNpZ25pZmljYW50IGZvciBteSB3b3JrLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSB0ZXN0aW5nIGlzIGNvbXByZWhlbnNpdmUgYW5kIGhpdHRpbmcgdGhlIGNvcnJlY3QgcGFydHMgb2YgdGhlIGRyaXZlci4gSWYgdGhlIHRlc3RzICphcmVuJiMzOTt0KiBjaGVja2luZyBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGluIHRoYXQgdGVzdCBkaXJlY3RvcnksIHRoZW4gdGhlcmUgY291bGQgYmUgcG90ZW50aWFsIGdhcHMuIEkmIzM5O20gaW1hZ2luaW5nIHNvbWUgZGVidWdnaW5nIHNlc3Npb25zIGFuZCBzb21lIGNhcmVmdWwgdHJhY2luZyB0aHJvdWdoIHRoZSBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgdGVzdCBzdWl0ZSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBleHBsaWNpdCBjYWxscyBvciBpZiB0aGV5IGFyZSBpbmRpcmVjdGx5IGNhbGxlZCwgcHJvYmFibHkgYnkgbG9va2luZyBmb3Igc3BlY2lmaWMgZnVuY3Rpb24gbmFtZXMgb3IgbW9kdWxlIG5hbWVzIGJlaW5nIHJlZmVyZW5jZWQuIEkgY2FuJiMzOTt0IGJlIHRvbyBoYXN0eSwgSSYjMzk7bGwgbmVlZCB0byBkbyBpdCBtZXRob2RpY2FsbHkgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9ucy4gT25jZSBJIGhhdmUgdGhlIGFuc3dlciwgSSBjYW4gZGV0ZXJtaW5lIGlmIGFueSBjaGFuZ2VzIG9yIGFkZGl0aW9ucyBtaWdodCBiZSByZXF1aXJlZCBpbiBvcmRlciB0byBtYWtlIHRoZSB0ZXN0aW5nIGFkZXF1YXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGV2aW5mby5jJiMzNDssCiAgICAmIzM0O21vZHVsZS5jJiMzNDssCiAgICAmIzM0O252bV9wYXJzZS5jJiMzNDssCiAgICAmIzM0O3V0aWxzLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzgwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIEludGVsIFdpLUZpIEZpcm13YXJlIFVwZGF0ZXMgaW4gYSBWaXJ0dWFsIEVudmlyb25tZW50KioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGVzZSBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzYCBkaXJlY3RvcnkuIEkgc2VlIGBkZXZpbmZvLmNgLCBgbW9kdWxlLmNgLCBgbnZtX3BhcnNlLmNgLCBhbmQgYHV0aWxzLmNgIGFyZSBLVW5pdCB0ZXN0c+KAlGJhc2ljYWxseSBjaGVja2luZyB0aGUgYmFzaWNzIG9mIGhlbHBlciBmdW5jdGlvbnMgYW5kIE5WTSBwYXJzaW5nLCB3aGljaCBpcyBzdGFuZGFyZCBzdHVmZi4gTm93LCBgaXdsX212bV90bGNfdXBkYXRlX25vdGlmYCBpcyB0aGUgaW50ZXJlc3RpbmcgcGllY2UgaGVyZS4gSXQmIzM5O3MgZXhjbHVzaXZlbHkgdHJpZ2dlcmVkIHdpdGhpbiBgaXdsX212bV9yeF9oYW5kbGVyc2AsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIGRyaXZlciBnZXRzIGEgVExDX01OR19VUERBVEVfTk9USUYgbm90aWZpY2F0aW9uIGZyb20gdGhlIEludGVsIFdpLUZpIGZpcm13YXJlIG9uIGFuIEludGVsIHdpcmVsZXNzIE5JQyBQQ0llIGRldmljZS4KClNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoIG5lY2Vzc2l0YXRlcyBhY3R1YWwgSW50ZWwgUENJZSB3aXJlbGVzcyBoYXJkd2FyZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZmlybXdhcmUuIENvbnNpZGVyaW5nIHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gc2FmZWx5IHNheSB0aGF0IHJlYWNoaW5nIHRoaXMgc3BlY2lmaWMgYml0IG9mIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciB5b3VyIGV2ZXJ5ZGF5IFFFTVUgaXMgaW1wb3NzaWJsZS4gTm90IHdpdGhvdXQgc29tZSBzZXJpb3VzIGhhcmR3YXJlIG1hZ2ljIQoKVG8gYmUgYWJzb2x1dGVseSBzdXJlIG9mIHRoZSBjaGFuZ2VzIGludm9sdmVkLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jYCBhcm91bmQgbGluZSA0MjMuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBhcmVhIHNob3VsZCBnaXZlIG1lIHRoZSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MTQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQxNDpcdHZvaWQgaXdsX212bV90bGNfdXBkYXRlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gNDE1Olx0XHRcdFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4gNDE2Olx0e1xuIDQxNzpcdFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7XG4gNDE4Olx0XHRzdHJ1Y3QgaXdsX3RsY191cGRhdGVfbm90aWYgKm5vdGlmO1xuIDQxOTpcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcbiA0MjA6XHRcdHN0cnVjdCBpZWVlODAyMTFfbGlua19zdGEgKmxpbmtfc3RhO1xuIDQyMTpcdFx0c3RydWN0IGl3bF9tdm1fc3RhICptdm1zdGE7XG4gNDIyOlx0XHRzdHJ1Y3QgaXdsX212bV9saW5rX3N0YSAqbXZtX2xpbmtfc3RhO1xuIDQyMzpcdFx0c3RydWN0IGl3bF9scV9zdGFfcnNfZncgKmxxX3N0YTtcbiA0MjQ6XHRcdHUzMiBmbGFncztcbiA0MjU6XHRcbiA0MjY6XHRcdG5vdGlmID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiA0Mjc6XHRcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCBub3RpZi1cdTAwM2VzdGFfaWQgXHUwMDNlPSBtdm0tXHUwMDNlZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMsXG4gNDI4Olx0XHRcdFx0IFwmIzM0O0ludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcblwmIzM0OyxcbiA0Mjk6XHRcdFx0XHQgbm90aWYtXHUwMDNlc3RhX2lkKSlcbiA0MzA6XHRcdFx0cmV0dXJuO1xuIDQzMTpcdFxuIDQzMjpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDQzMzpcdFxuIDQzNDpcdFx0bGlua19zdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLVx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVx1MDAzZXN0YV9pZF0pO1xuIDQzNTpcdFx0c3RhID0gcmN1X2RlcmVmZXJlbmNlKG12bS1cdTAwM2Vmd19pZF90b19tYWNfaWRbbm90aWYtXHUwMDNlc3RhX2lkXSk7XG4gNDM2Olx0XHRpZiAoSVNfRVJSX09SX05VTEwoc3RhKSB8fCAhbGlua19zdGEpIHtcbiA0Mzc6XHRcdFx0LyogY2FuIGhhcHBlbiBpbiByZW1vdmUgc3RhdGlvbiBmbG93IHdoZXJlIG12bSByZW1vdmVkIGludGVybmFsbHlcbiA0Mzg6XHRcdFx0ICogdGhlIHN0YXRpb24gYmVmb3JlIHJlbW92aW5nIGZyb20gRldcbiA0Mzk6XHRcdFx0ICovXG4gNDQwOlx0XHRcdElXTF9ERUJVR19SQVRFKG12bSxcbiA0NDE6XHRcdFx0XHQgICAgICAgXCYjMzQ7SW52YWxpZCBtdm0gUkNVIHBvaW50ZXIgZm9yIHN0YSBpZCAoJWQpIGluIFRMQyBub3RpZmljYXRpb25cXG5cJiMzNDssXG4gNDQyOlx0XHRcdFx0ICAgICAgIG5vdGlmLVx1MDAzZXN0YV9pZCk7XG4gNDQzOlx0XHRcdGdvdG8gb3V0O1xuIDQ0NDpcdFx0fVxuIDQ0NTpcdFxuIDQ0NjpcdFx0bXZtc3RhID0gaXdsX212bV9zdGFfZnJvbV9tYWM4MDIxMShzdGEpO1xuIDQ0NzpcdFxuIDQ0ODpcdFx0ZmxhZ3MgPSBsZTMyX3RvX2NwdShub3RpZi1cdTAwM2VmbGFncyk7XG4gNDQ5Olx0XG4gNDUwOlx0XHRtdm1fbGlua19zdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtc3RhLVx1MDAzZWxpbmtbbGlua19zdGEtXHUwMDNlbGlua19pZF0pO1xuIDQ1MTpcdFx0aWYgKCFtdm1fbGlua19zdGEpIHtcbiA0NTI6XHRcdFx0SVdMX0RFQlVHX1JBVEUobXZtLFxuIDQ1MzpcdFx0XHRcdCAgICAgICBcJiMzNDtJbnZhbGlkIG12bXN0YSBSQ1UgcG9pbnRlciBmb3IgbGluayAoJWQpIG9mICBzdGEgaWQgKCVkKSBpbiBUTEMgbm90aWZpY2F0aW9uXFxuXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDg4CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpd2x3aWZpIEZpcm13YXJlIE5vdGlmaWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgSW50ZWwgaXdsd2lmaSBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgZ3VhcmRpbmcgYWNjZXNzIHRvIGBtdm0tJmd0O2Z3X2lkX3RvX2xpbmtfc3RhW25vdGlmLSZndDtzdGFfaWRdYCBieSB2ZXJpZnlpbmcgdGhhdCBgbm90aWYtJmd0O3N0YV9pZGAgaXMgd2l0aGluIGEgdmFsaWQgcmFuZ2XigJRgbXZtLSZndDtmdy0mZ3Q7dWNvZGVfY2FwYS5udW1fc3RhdGlvbnNgLiBHb29kLCB3ZSBkb24mIzM5O3Qgd2FudCBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGlzIGlzIGluIHRoZSBjb250ZXh0IG9mIGhhbmRsaW5nIGZpcm13YXJlIG5vdGlmaWNhdGlvbnMsIHdoaWNoIG1ha2VzIHNlbnNlLgoKSG93ZXZlciwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIGl3bHdpZmkgYW5kIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIEkgaGF2ZSBhIHN0cm9uZyBzdXNwaWNpb24gYWJvdXQgaXRzIGZ1enphYmlsaXR5LiBpd2x3aWZpLCBiZWluZyBhbiBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHJlbGllcyBvbiBzcGVjaWZpYyBJbnRlbCBoYXJkd2FyZS4gVGhpcyBwcmVzZW50cyBhIHNpZ25pZmljYW50IGNoYWxsZW5nZSBmb3IgZnV6emluZywgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gVGhlc2UgcGxhdGZvcm1zIGFyZSBpbmNyZWRpYmx5IHVzZWZ1bCwgYnV0IHRoZXkgZG9uJiMzOTt0IHByb3ZpZGUgdGhlIHNhbWUgaW50ZXJhY3Rpb24gbGV2ZWwgd2l0aCB0aGUgaGFyZHdhcmUgdGhhdCB3ZSB3b3VsZCBuZWVkIHRvIHRyaWdnZXIgdGhpcyBjaGVjay4KClRoZXJlZm9yZSwgZGVzcGl0ZSB0aGUgaW1wb3J0YW5jZSBvZiB0aGlzIHBhdGNoIGluIGl0cyBmdW5jdGlvbiwgSSYjMzk7bSBjb25maWRlbnQgd2Ugc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBXZSBjYW4gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBlbnN1cmUgdGhlIGZ1enppbmcgcGlwZWxpbmUgYWNrbm93bGVkZ2VzIHRoaXMuIEl0IHdvdWxkIGJlIGEgZnV0aWxlIGVmZm9ydCB0byBwcmlvcml0aXplIHRoaXMgZnVuY3Rpb24gb3ZlciBvdGhlcnMgdGhhdCBhcmUgbW9yZSByZWFkaWx5IGFjY2Vzc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTg6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ3OjMyLjQyODQxNzY5OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTMzNDUzMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDc6MzIuNDI4NDIzMjE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAxMzYyNjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGRiMDE4NmI1NjY3ZDViODFmZTVhNTQzNjRmMzVlYzFlMDAxNDFiZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxODo0NzozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xcbmluZGV4IDg5YWM0YzZiM2U1NDMuLmUyMzgyYmU4ZWRkNzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNcXG5AQCAtMSw3ICsxLDcgQEBcXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuIC8qXFxuICAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJIXFxuLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uXFxuKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI2IEludGVsIENvcnBvcmF0aW9uXFxuICAqL1xcbiAjaW5jbHVkZSBcXFwicnMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImZ3LWFwaS5oXFxcIlxcbkBAIC00MjMsOSArNDIzLDE0IEBAIHZvaWQgaXdsX212bV90bGNfdXBkYXRlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuIFxcdHN0cnVjdCBpd2xfbHFfc3RhX3JzX2Z3ICpscV9zdGE7XFxuIFxcdHUzMiBmbGFncztcXG4gXFxuK1xcdG5vdGlmID0gKHZvaWQgKilwa3QtXFx1MDAzZWRhdGE7XFxuK1xcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCBub3RpZi1cXHUwMDNlc3RhX2lkIFxcdTAwM2U9IG12bS1cXHUwMDNlZnctXFx1MDAzZXVjb2RlX2NhcGEubnVtX3N0YXRpb25zLFxcbitcXHRcXHRcXHQgXFxcIkludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IG5vdGlmLVxcdTAwM2VzdGFfaWQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcbi1cXHRub3RpZiA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbiBcXHRsaW5rX3N0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXFx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVxcdTAwM2VzdGFfaWRdKTtcXG4gXFx0c3RhID0gcmN1X2RlcmVmZXJlbmNlKG12bS1cXHUwMDNlZndfaWRfdG9fbWFjX2lkW25vdGlmLVxcdTAwM2VzdGFfaWRdKTtcXG4gXFx0aWYgKElTX0VSUl9PUl9OVUxMKHN0YSkgfHwgIWxpbmtfc3RhKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ3OjMzLjgzMDU3NDk0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDc3MzEyODM5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIHRoZSBzdGF0aW9uIElEIGluIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZigpIHdpdGhpbiB0aGUgSW50ZWwgaXdsd2lmaSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgY29kZSBoYW5kbGVzIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgZnJvbSBJbnRlbCBXaS1GaSBmaXJtd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgSW50ZWwgUENJZS9DTlZpIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhkYjAxODZiNTY2N2Q1YjgxZmU1YTU0MzY0ZjM1ZWMxZTAwMTQxYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxODo0NzozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jXG5pbmRleCA4OWFjNGM2YjNlNTQzLi5lMjM4MmJlOGVkZDc4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuY1xuQEAgLTEsNyArMSw3IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gLypcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgRGV1dHNjaGxhbmQgR21iSFxuLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uXG4rICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKi9cbiAjaW5jbHVkZSBcInJzLmhcIlxuICNpbmNsdWRlIFwiZnctYXBpLmhcIlxuQEAgLTQyMyw5ICs0MjMsMTQgQEAgdm9pZCBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdHN0cnVjdCBpd2xfbHFfc3RhX3JzX2Z3ICpscV9zdGE7XG4gXHR1MzIgZmxhZ3M7XG4gXG4rXHRub3RpZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4rXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgbm90aWYtXHUwMDNlc3RhX2lkIFx1MDAzZT0gbXZtLVx1MDAzZWZ3LVx1MDAzZXVjb2RlX2NhcGEubnVtX3N0YXRpb25zLFxuK1x0XHRcdCBcIkludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcblwiLFxuK1x0XHRcdCBub3RpZi1cdTAwM2VzdGFfaWQpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXG4tXHRub3RpZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4gXHRsaW5rX3N0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXHUwMDNlZndfaWRfdG9fbGlua19zdGFbbm90aWYtXHUwMDNlc3RhX2lkXSk7XG4gXHRzdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLVx1MDAzZWZ3X2lkX3RvX21hY19pZFtub3RpZi1cdTAwM2VzdGFfaWRdKTtcbiBcdGlmIChJU19FUlJfT1JfTlVMTChzdGEpIHx8ICFsaW5rX3N0YSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDc6MzMuODMwNTc3MDY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTIzNzY3Nzc4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaDogaXdsd2lmaSBhbmQgV29ydGhGdXp6aW5nKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpd2xfbXZtX3RsY191cGRhdGVfbm90aWZgIGZ1bmN0aW9uLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIGBpd2x3aWZpYCBpcyB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBtZWFucyBpdCBkZWFscyB3aXRoIG5ldHdvcmsgY29tbXVuaWNhdGlvbnMuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBhcmlzZXM6IGNhbiBJIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBjb2RlIGZvciBmdXp6aW5nPyBJcyBpdCByZWxpYW50IG9uIHNwZWNpZmljIEludGVsIGhhcmR3YXJlLCBvciBjYW4gaXQgYmUgZW11bGF0ZWQgd2l0aGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lP1xuXG5XYWl0LCBob2xkIG9uLiBUaGVyZSdzIGEgc2V0IG9mIGluc3RydWN0aW9ucyBJIHNob3VsZCBmb2xsb3cuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBldmVuICpXb3J0aEZ1enppbmcqLiBUaGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRoYXQgaWYgdGhlIHBhdGNoIGlzIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBjaGFuZ2VzLCBjb21tZW50cywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gY29uc3RhbnRzIG9yIG1hY3JvcyB3aXRob3V0IGFmZmVjdGluZyBleGVjdXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGVuIEkgc2hvdWxkIHJldHVybiBgZmFsc2VgLiBUaGUga2V5IGhlcmUgaXMsIEkgbmVlZCB0byBjaGVjayBpZiBgaXdsd2lmaWAgaGFzIGFueSBzaW11bGF0aW9uL2VtdWxhdGlvbi9tYWM4MDIxMV9od3NpbSBvciB2aXJ0X3dpZmkgb3IgaXdsd2lmaSBzaW11bGF0aW9uLlxuXG5JIG5lZWQgdG8gc2VlIGlmIHRoaXMgY29kZSBpcyBpbiBhIHBhdGggdGhhdCdzIGV2ZW4gYWNjZXNzaWJsZSBpbiBteSB0ZXN0IGVudmlyb25tZW50cy4gVGhlIHBhdGNoIGNvdWxkIGJlIHRvdWNoaW5nIGNvZGUgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIEludGVsIFBDSWUgY2FyZCwgb3IgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQncyBub3QgZW11bGF0ZWQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUncyBhbnkgd2F5IHRvIG1ha2UgdGhpcyBydW4gaW4gUUVNVSBvciBHQ0UuIExldCBtZSBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdXNpbmcgZ3JlcCBmb3IgYGl3bHdpZmlgIGFuZCB0ZXJtcyBsaWtlIFwic2ltdWxhdGlvblwiIG9yIFwidGVzdFwiIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBoaW50IG9mIGEgc2ltdWxhdGVkIGVudmlyb25tZW50IGZvciB0ZXN0aW5nLCB0byBoZWxwIGRldGVybWluZSB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzcxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDc6NDYuMjA3MzU2ODYyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTg2MDAwNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX212bV90bGNfdXBkYXRlX25vdGlmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTMxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGl3bF9yeF9oYW5kbGVycyBpd2xfbXZtX3J4X2hhbmRsZXJzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zMjMtXFx0UlhfSEFORExFUl9HUlAoREFUQV9QQVRIX0dST1VQLCBUTENfTU5HX1VQREFURV9OT1RJRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYzozMjQ6XFx0XFx0ICAgICAgIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZiwgUlhfSEFORExFUl9TWU5DLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTMyNS1cXHRcXHQgICAgICAgc3RydWN0IGl3bF90bGNfdXBkYXRlX25vdGlmKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmM9MzY2PXN0YXRpYyB2b2lkIHJzX2Z3X3NldF9zdXBwX3JhdGVzKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTQxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jOjQxNDp2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmMtNDE1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaD00NDc9aW50IHJzX2Z3X3R4X3Byb3RlY3Rpb24oc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9tdm1fc3RhICptdm1zdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00NDgtXFx0XFx0XFx0Ym9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg6NDQ5OnZvaWQgaXdsX212bV90bGNfdXBkYXRlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00NTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxODo0Nzo0OC4wMjU5NjA5OTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjU1MTA0ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWAgZGlyZWN0b3J5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBhcHByb2FjaCBoZXJlLiBJcyB0aGlzIGFuIEludGVsLXNwZWNpZmljIFBDSWUgZHJpdmVyLCBvciBhcmUgdGhleSBkb2luZyBzb21lIGtpbmQgb2YgZW11bGF0aW9uPyBXaGF0J3MgdGhlaXIgZGVzaWduIHBoaWxvc29waHk/IEkgaGF2ZSB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gU28sIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gbG9jYXRlIGFsbCBpbnN0YW5jZXMgb2YgXCJpd2x3aWZpXCIgd2l0aGluIHRoZSBzb3VyY2UgdHJlZS4gS25vd2luZyB3aGVyZSBpdCdzIHVzZWQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBob3cgdGhlIGNvbXBvbmVudHMgaW50ZXJyZWxhdGUuIEknbGwgbmVlZCB0byBzZWUgaG93IHBlcnZhc2l2ZSBpdCBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczMSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ3OjUwLjY4MTA2ODAwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQ1MDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT0RVTEVfREVWSUNFX1RBQkxFLipwY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MzQ9VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGl3bF9od19jYXJkX2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTU1NC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzo1NTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGl3bF9od19jYXJkX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTU1Ni1FWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX2h3X2NhcmRfaWRzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDc6NTAuNzMyNTIzMzgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODgyMjE5OTU1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBBbHRlcm5hdGl2ZSBpd2x3aWZpIFRyYW5zcG9ydHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gYnJvYWRlbiBvdXIgc2NvcGUgYSBiaXQgd2hlbiBpdCBjb21lcyB0byB0aGUgaXdsd2lmaSBkcml2ZXIuIFdoaWxlIHdl4oCZcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSBjb25zaWRlcmluZyBhbGwgdGhlIHBvdGVudGlhbCBhdmVudWVzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGV4cGxvcmUgdGhlIGxhbmRzY2FwZSBvZiBkaWZmZXJlbnQgdHJhbnNwb3J0cyB0aGF0IG1pZ2h0IGV4aXN0IGZvciB0aGlzIG1vZHVsZS4gSSBtZWFuLCB3ZSd2ZSBnb3QgdGhlIHJlYWwtd29ybGQgaGFyZHdhcmUsIG9mIGNvdXJzZSwgYnV0IGFyZSB0aGVyZSBvdGhlciBpbXBsZW1lbnRhdGlvbnMgd2UgbWlnaHQgbGV2ZXJhZ2UsIGRlYnVnIG9yIGV2ZW4gbGVhcm4gZnJvbS4gQXJlIHRoZXJlIGFueSBkZWRpY2F0ZWQgdGVzdCBmcmFtZXdvcmtzIGxpa2UgYHRlc3RgLCBgc2ltYCwgb3IgYGt1bml0YCB0aGF0IGhhdmUgYmVlbiBidWlsdCBvciBtaWdodCBiZSByZWxldmFudD8gSWRlbnRpZnlpbmcgdGhlIGZ1bGwgc2V0IG9mIHRyYW5zcG9ydHMgd291bGQgYWxsb3cgbWUgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGRyaXZlcidzIGZsZXhpYmlsaXR5IGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLCBhbmQgbWFrZSBzdXJlIHRoYXQgd2UgYXJlIGNvbnNpZGVyaW5nIGFsbCBhbmdsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGRpZmZlcmVudCB0cmFuc3BvcnRzIGlzIGdvaW5nIHRvIGJlIGtleSB0byBhIGNvbXByZWhlbnNpdmUgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxODo0Nzo1OS41NTQ3MjU2NjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJpd2wtYWduLWh3LmhcIixcbiAgICBcIml3bC1jb25maWcuaFwiLFxuICAgIFwiaXdsLWNzci5oXCIsXG4gICAgXCJpd2wtZGJnLXRsdi5jXCIsXG4gICAgXCJpd2wtZGJnLXRsdi5oXCIsXG4gICAgXCJpd2wtZGVidWcuY1wiLFxuICAgIFwiaXdsLWRlYnVnLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS1kYXRhLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS1pby5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaXdsd2lmaS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtbXNnLmhcIixcbiAgICBcIml3bC1kZXZ0cmFjZS11Y29kZS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UuY1wiLFxuICAgIFwiaXdsLWRldnRyYWNlLmhcIixcbiAgICBcIml3bC1kcnYuY1wiLFxuICAgIFwiaXdsLWRydi5oXCIsXG4gICAgXCJpd2wtZmguaFwiLFxuICAgIFwiaXdsLWlvLmNcIixcbiAgICBcIml3bC1pby5oXCIsXG4gICAgXCJpd2wtbW9kcGFyYW1zLmhcIixcbiAgICBcIml3bC1udm0tcGFyc2UuY1wiLFxuICAgIFwiaXdsLW52bS1wYXJzZS5oXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmNcIixcbiAgICBcIml3bC1udm0tdXRpbHMuaFwiLFxuICAgIFwiaXdsLW9wLW1vZGUuaFwiLFxuICAgIFwiaXdsLXBoeS1kYi5jXCIsXG4gICAgXCJpd2wtcGh5LWRiLmhcIixcbiAgICBcIml3bC1wcnBoLmhcIixcbiAgICBcIml3bC1zY2QuaFwiLFxuICAgIFwiaXdsLXRyYW5zLmNcIixcbiAgICBcIml3bC10cmFucy5oXCIsXG4gICAgXCJpd2wtdXRpbHMuY1wiLFxuICAgIFwiaXdsLXV0aWxzLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiY2ZnXCIsXG4gICAgXCJkdm1cIixcbiAgICBcImZ3XCIsXG4gICAgXCJtZWlcIixcbiAgICBcIm1sZFwiLFxuICAgIFwibXZtXCIsXG4gICAgXCJwY2llXCIsXG4gICAgXCJ0ZXN0c1wiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ3OjU5LjU1NDgxNjgzM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgyODU0NTQ4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGBpd2xfbXZtX3RsY191cGRhdGVfbm90aWZgIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IGBpd2xfbXZtX3RsY191cGRhdGVfbm90aWZgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jYC4gVGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgYnkgYSBmaXJtd2FyZSBub3RpZmljYXRpb24gKGBUTENfTU5HX1VQREFURV9OT1RJRmApIHRocm91Z2ggdGhlIFJYIGhhbmRsZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB3aGV0aGVyIHdlIGNhbiBldmVuIGhpdCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IEdDRSBvciBzdGFuZGFyZCBRRU1VLlxuXG5UaGUgaXdsd2lmaSBkcml2ZXIgaXMgdmVuZG9yLXNwZWNpZmljIHRvIEludGVsIFdpLUZpIGNhcmRzLiBJdCBsZXZlcmFnZXMgZWl0aGVyIFBDSWUgb3IgQ05WaSBpbnRlcmZhY2VzLiBUaGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIGZpcm13YXJlIGxvYWRpbmcuIFN0YW5kYXJkIFFFTVUsIGFzIGZhciBhcyBJIGtub3csIGRvZXNuJ3QgZW11bGF0ZSB0aGVzZSBJbnRlbCBpd2x3aWZpIFBDSWUgTklDcy4gTW9zdCBRRU1VIHdpcmVsZXNzIGVtdWxhdGlvbiBsZWFucyB0b3dhcmRzIHRoaW5ncyBsaWtlIG1hYzgwMjExX2h3c2ltLCB2aXJ0aW8sIG9yIFVTQi1lbXVsYXRlZCBkZXZpY2VzLCBub25lIG9mIHdoaWNoIGRpcmVjdGx5IGludm9sdmUgaXdsd2lmaS5cblxuV2FpdCwgaXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG1hYzgwMjExX2h3c2ltIG1pZ2h0IHNvbWVob3cgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXM/IExldCdzIGJlIHN1cmUgYWJvdXQgdGhpcy4gTm8sIHRoYXQncyB3cm9uZy4gYG1hYzgwMjExX2h3c2ltYCBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYCksIGRpc3RpbmN0IGZyb20gdGhlIGl3bHdpZmkgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9gKS4gQW5kLCBgaXdsX212bV90bGNfdXBkYXRlX25vdGlmYCBpcyBzcGVjaWZpY2FsbHkgYW4gaW50ZXJuYWwgZmlybXdhcmUgUlggaGFuZGxlciBmb3IgdGhlIEludGVsIE1WTSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGEgbWFjODAyMTEgdmVuZG9yIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIEludGVsIDcwMDArIHNlcmllcyBjYXJkcy4gSXQncyBoYW5kbGluZyBhIHBhY2tldCBvciBhIG5vdGlmaWNhdGlvbiBmcm9tIHRoZSBmaXJtd2FyZSBydW5uaW5nIG9uIHRoZSBJbnRlbCBOSUMsIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQuXG5cbkFscmlnaHQsIGxldCdzIGJyaW5nIGluIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFdlJ3JlIGxvb2tpbmcgZm9yIGNvZGUgcGF0aHMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIG91ciB0ZXN0aW5nIGVudmlyb25tZW50LiBUaGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGF0IHdlIHNob3VsZCBzZXQgXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgYSBwYXRjaCB0b3VjaGVzOlxuXG4qICAgQ29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0ZWQgaGFyZHdhcmUgKG1hYzgwMjExX2h3c2ltLCB1c2IgZ2FkZ2V0LCBldGMpLlxuKiAgIFZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIChlLmcuLCBtbHhzdywgcWVkLCBhbWRncHUsIGV0Yy4pLlxuXG5CYXNlZCBvbiBteSBhbmFseXNpcywgaXQgc2VlbXMgaGlnaGx5IGxpa2VseSB0aGF0IHRoaXMgZmFsbHMgaW50byB0aGUgXCJpbXBvc3NpYmxlIHRvIHJlYWNoXCIgY2F0ZWdvcnkuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNhbGwgc2l0ZXMgb3IgdGVzdHMgdGhhdCBzb21laG93ICpjb3VsZCogY2FsbCB0aGlzIGZ1bmN0aW9uLCBidXQgbXkgcHJlbGltaW5hcnkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgdW5saWtlbHkgdG8gYmUgd29ydGggZnV6emluZyBpbiBvdXIgdHlwaWNhbCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5MywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MDcuODQwMjg1MjMzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgxNDI1Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYz0zMTc9c3RhdGljIGNvbnN0IHN0cnVjdCBpd2xfcnhfaGFuZGxlcnMgaXdsX212bV9yeF9oYW5kbGVyc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMzIzLVxcdFJYX0hBTkRMRVJfR1JQKERBVEFfUEFUSF9HUk9VUCwgVExDX01OR19VUERBVEVfTk9USUYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM6MzI0OlxcdFxcdCAgICAgICBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYsIFJYX0hBTkRMRVJfU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zMjUtXFx0XFx0ICAgICAgIHN0cnVjdCBpd2xfdGxjX3VwZGF0ZV9ub3RpZiksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jPTM2Nj1zdGF0aWMgdm9pZCByc19md19zZXRfc3VwcF9yYXRlcyhzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYy00MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYzo0MTQ6dm9pZCBpd2xfbXZtX3RsY191cGRhdGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTQxNS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9NDQ3PWludCByc19md190eF9wcm90ZWN0aW9uKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfbXZtX3N0YSAqbXZtc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtNDQ4LVxcdFxcdFxcdGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oOjQ0OTp2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtNDUwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MDkuNDIxNzE5MTA4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ2MDI5NzU3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKippd2x3aWZpIFRlc3QgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBgaXdsd2lmaWAgdGVzdHMgYXJlIGFjdHVhbGx5IGNhbGxpbmcgaW50byB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cy9gLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBxdWVzdGlvbiwgYnV0IHRoZSBpbXBsaWNhdGlvbnMgY291bGQgYmUgc2lnbmlmaWNhbnQgZm9yIG15IHdvcmsuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIHRlc3RpbmcgaXMgY29tcHJlaGVuc2l2ZSBhbmQgaGl0dGluZyB0aGUgY29ycmVjdCBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBJZiB0aGUgdGVzdHMgKmFyZW4ndCogY2hlY2tpbmcgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBpbiB0aGF0IHRlc3QgZGlyZWN0b3J5LCB0aGVuIHRoZXJlIGNvdWxkIGJlIHBvdGVudGlhbCBnYXBzLiBJJ20gaW1hZ2luaW5nIHNvbWUgZGVidWdnaW5nIHNlc3Npb25zIGFuZCBzb21lIGNhcmVmdWwgdHJhY2luZyB0aHJvdWdoIHRoZSBjb2RlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIHRoZSB0ZXN0IHN1aXRlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGV4cGxpY2l0IGNhbGxzIG9yIGlmIHRoZXkgYXJlIGluZGlyZWN0bHkgY2FsbGVkLCBwcm9iYWJseSBieSBsb29raW5nIGZvciBzcGVjaWZpYyBmdW5jdGlvbiBuYW1lcyBvciBtb2R1bGUgbmFtZXMgYmVpbmcgcmVmZXJlbmNlZC4gSSBjYW4ndCBiZSB0b28gaGFzdHksIEknbGwgbmVlZCB0byBkbyBpdCBtZXRob2RpY2FsbHkgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9ucy4gT25jZSBJIGhhdmUgdGhlIGFuc3dlciwgSSBjYW4gZGV0ZXJtaW5lIGlmIGFueSBjaGFuZ2VzIG9yIGFkZGl0aW9ucyBtaWdodCBiZSByZXF1aXJlZCBpbiBvcmRlciB0byBtYWtlIHRoZSB0ZXN0aW5nIGFkZXF1YXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDU1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MTQuMDI0Njk3NDQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRldmluZm8uY1wiLFxuICAgIFwibW9kdWxlLmNcIixcbiAgICBcIm52bV9wYXJzZS5jXCIsXG4gICAgXCJ1dGlscy5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ4OjE0LjAyNDc1MDgwNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDAyMTk1NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIEludGVsIFdpLUZpIEZpcm13YXJlIFVwZGF0ZXMgaW4gYSBWaXJ0dWFsIEVudmlyb25tZW50KipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlc2UgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0c2AgZGlyZWN0b3J5LiBJIHNlZSBgZGV2aW5mby5jYCwgYG1vZHVsZS5jYCwgYG52bV9wYXJzZS5jYCwgYW5kIGB1dGlscy5jYCBhcmUgS1VuaXQgdGVzdHPigJRiYXNpY2FsbHkgY2hlY2tpbmcgdGhlIGJhc2ljcyBvZiBoZWxwZXIgZnVuY3Rpb25zIGFuZCBOVk0gcGFyc2luZywgd2hpY2ggaXMgc3RhbmRhcmQgc3R1ZmYuIE5vdywgYGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZmAgaXMgdGhlIGludGVyZXN0aW5nIHBpZWNlIGhlcmUuIEl0J3MgZXhjbHVzaXZlbHkgdHJpZ2dlcmVkIHdpdGhpbiBgaXdsX212bV9yeF9oYW5kbGVyc2AsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIGRyaXZlciBnZXRzIGEgVExDX01OR19VUERBVEVfTk9USUYgbm90aWZpY2F0aW9uIGZyb20gdGhlIEludGVsIFdpLUZpIGZpcm13YXJlIG9uIGFuIEludGVsIHdpcmVsZXNzIE5JQyBQQ0llIGRldmljZS5cblxuU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggbmVjZXNzaXRhdGVzIGFjdHVhbCBJbnRlbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIGFuZCB0aGUgY29ycmVzcG9uZGluZyBmaXJtd2FyZS4gQ29uc2lkZXJpbmcgdGhpcywgSSdtIGdvaW5nIHRvIHNhZmVseSBzYXkgdGhhdCByZWFjaGluZyB0aGlzIHNwZWNpZmljIGJpdCBvZiBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgeW91ciBldmVyeWRheSBRRU1VIGlzIGltcG9zc2libGUuIE5vdCB3aXRob3V0IHNvbWUgc2VyaW91cyBoYXJkd2FyZSBtYWdpYyFcblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlIG9mIHRoZSBjaGFuZ2VzIGludm9sdmVkLCBJJ2xsIHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmNgIGFyb3VuZCBsaW5lIDQyMy4gQSBxdWljayBjaGVjayBvZiB0aGF0IGFyZWEgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3ODAsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE4OjQ4OjE3LjQyNjk0ODUzMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQxNCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQxNDpcXHR2b2lkIGl3bF9tdm1fdGxjX3VwZGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiA0MTU6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXFxuIDQxNjpcXHR7XFxuIDQxNzpcXHRcXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcXG4gNDE4OlxcdFxcdHN0cnVjdCBpd2xfdGxjX3VwZGF0ZV9ub3RpZiAqbm90aWY7XFxuIDQxOTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhO1xcbiA0MjA6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGE7XFxuIDQyMTpcXHRcXHRzdHJ1Y3QgaXdsX212bV9zdGEgKm12bXN0YTtcXG4gNDIyOlxcdFxcdHN0cnVjdCBpd2xfbXZtX2xpbmtfc3RhICptdm1fbGlua19zdGE7XFxuIDQyMzpcXHRcXHRzdHJ1Y3QgaXdsX2xxX3N0YV9yc19mdyAqbHFfc3RhO1xcbiA0MjQ6XFx0XFx0dTMyIGZsYWdzO1xcbiA0MjU6XFx0XFxuIDQyNjpcXHRcXHRub3RpZiA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbiA0Mjc6XFx0XFx0aWYgKElXTF9GV19DSEVDSyhtdm0sIG5vdGlmLVxcdTAwM2VzdGFfaWQgXFx1MDAzZT0gbXZtLVxcdTAwM2Vmdy1cXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMsXFxuIDQyODpcXHRcXHRcXHRcXHQgXFxcIkludmFsaWQgc3RhIGlkICglZCkgaW4gVExDIG5vdGlmaWNhdGlvblxcXFxuXFxcIixcXG4gNDI5OlxcdFxcdFxcdFxcdCBub3RpZi1cXHUwMDNlc3RhX2lkKSlcXG4gNDMwOlxcdFxcdFxcdHJldHVybjtcXG4gNDMxOlxcdFxcbiA0MzI6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiA0MzM6XFx0XFxuIDQzNDpcXHRcXHRsaW5rX3N0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXFx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVxcdTAwM2VzdGFfaWRdKTtcXG4gNDM1OlxcdFxcdHN0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXFx1MDAzZWZ3X2lkX3RvX21hY19pZFtub3RpZi1cXHUwMDNlc3RhX2lkXSk7XFxuIDQzNjpcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwoc3RhKSB8fCAhbGlua19zdGEpIHtcXG4gNDM3OlxcdFxcdFxcdC8qIGNhbiBoYXBwZW4gaW4gcmVtb3ZlIHN0YXRpb24gZmxvdyB3aGVyZSBtdm0gcmVtb3ZlZCBpbnRlcm5hbGx5XFxuIDQzODpcXHRcXHRcXHQgKiB0aGUgc3RhdGlvbiBiZWZvcmUgcmVtb3ZpbmcgZnJvbSBGV1xcbiA0Mzk6XFx0XFx0XFx0ICovXFxuIDQ0MDpcXHRcXHRcXHRJV0xfREVCVUdfUkFURShtdm0sXFxuIDQ0MTpcXHRcXHRcXHRcXHQgICAgICAgXFxcIkludmFsaWQgbXZtIFJDVSBwb2ludGVyIGZvciBzdGEgaWQgKCVkKSBpbiBUTEMgbm90aWZpY2F0aW9uXFxcXG5cXFwiLFxcbiA0NDI6XFx0XFx0XFx0XFx0ICAgICAgIG5vdGlmLVxcdTAwM2VzdGFfaWQpO1xcbiA0NDM6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ0NDpcXHRcXHR9XFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdFxcdG12bXN0YSA9IGl3bF9tdm1fc3RhX2Zyb21fbWFjODAyMTEoc3RhKTtcXG4gNDQ3OlxcdFxcbiA0NDg6XFx0XFx0ZmxhZ3MgPSBsZTMyX3RvX2NwdShub3RpZi1cXHUwMDNlZmxhZ3MpO1xcbiA0NDk6XFx0XFxuIDQ1MDpcXHRcXHRtdm1fbGlua19zdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtc3RhLVxcdTAwM2VsaW5rW2xpbmtfc3RhLVxcdTAwM2VsaW5rX2lkXSk7XFxuIDQ1MTpcXHRcXHRpZiAoIW12bV9saW5rX3N0YSkge1xcbiA0NTI6XFx0XFx0XFx0SVdMX0RFQlVHX1JBVEUobXZtLFxcbiA0NTM6XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJJbnZhbGlkIG12bXN0YSBSQ1UgcG9pbnRlciBmb3IgbGluayAoJWQpIG9mICBzdGEgaWQgKCVkKSBpbiBUTEMgbm90aWZpY2F0aW9uXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxODo0ODoxNy40MjcwMzg2NjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDEzNDc5Nzg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpd2x3aWZpIEZpcm13YXJlIE5vdGlmaWNhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIGEgY3J1Y2lhbCBib3VuZHMgY2hlY2sgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGd1YXJkaW5nIGFjY2VzcyB0byBgbXZtLVx1MDAzZWZ3X2lkX3RvX2xpbmtfc3RhW25vdGlmLVx1MDAzZXN0YV9pZF1gIGJ5IHZlcmlmeWluZyB0aGF0IGBub3RpZi1cdTAwM2VzdGFfaWRgIGlzIHdpdGhpbiBhIHZhbGlkIHJhbmdl4oCUYG12bS1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLm51bV9zdGF0aW9uc2AuIEdvb2QsIHdlIGRvbid0IHdhbnQgb3V0LW9mLWJvdW5kcyByZWFkcy4gVGhpcyBpcyBpbiB0aGUgY29udGV4dCBvZiBoYW5kbGluZyBmaXJtd2FyZSBub3RpZmljYXRpb25zLCB3aGljaCBtYWtlcyBzZW5zZS5cblxuSG93ZXZlciwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIGl3bHdpZmkgYW5kIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIEkgaGF2ZSBhIHN0cm9uZyBzdXNwaWNpb24gYWJvdXQgaXRzIGZ1enphYmlsaXR5LiBpd2x3aWZpLCBiZWluZyBhbiBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHJlbGllcyBvbiBzcGVjaWZpYyBJbnRlbCBoYXJkd2FyZS4gVGhpcyBwcmVzZW50cyBhIHNpZ25pZmljYW50IGNoYWxsZW5nZSBmb3IgZnV6emluZywgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gVGhlc2UgcGxhdGZvcm1zIGFyZSBpbmNyZWRpYmx5IHVzZWZ1bCwgYnV0IHRoZXkgZG9uJ3QgcHJvdmlkZSB0aGUgc2FtZSBpbnRlcmFjdGlvbiBsZXZlbCB3aXRoIHRoZSBoYXJkd2FyZSB0aGF0IHdlIHdvdWxkIG5lZWQgdG8gdHJpZ2dlciB0aGlzIGNoZWNrLlxuXG5UaGVyZWZvcmUsIGRlc3BpdGUgdGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBwYXRjaCBpbiBpdHMgZnVuY3Rpb24sIEknbSBjb25maWRlbnQgd2Ugc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBXZSBjYW4gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBlbnN1cmUgdGhlIGZ1enppbmcgcGlwZWxpbmUgYWNrbm93bGVkZ2VzIHRoaXMuIEl0IHdvdWxkIGJlIGEgZnV0aWxlIGVmZm9ydCB0byBwcmlvcml0aXplIHRoaXMgZnVuY3Rpb24gb3ZlciBvdGhlcnMgdGhhdCBhcmUgbW9yZSByZWFkaWx5IGFjY2Vzc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwODgsIk91dHB1dFRva2VucyI6MTA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MjEuNTYxODM4ODE4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHN0YXRpb24gSUQgaW4gaXdsX212bV90bGNfdXBkYXRlX25vdGlmKCkgd2l0aGluIHRoZSBJbnRlbCBpd2x3aWZpIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBjb2RlIGhhbmRsZXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tIEludGVsIFdpLUZpIGZpcm13YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBQQ0llL0NOVmkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTg6NDg6MjEuNTYxODYwNDE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowwhsqp[1] Phase: Running StartedAt: 2026-08-31 18:48:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwhsqp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 18:48:32 +0000 UTC FinishedAt: 2026-08-31 18:48:37 +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,}