Name: series-workflow56zlc Phase: Failed StartedAt: 2026-07-16 06:56:52 +0000 UTC FinishedAt: 2026-07-16 07:29:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow56zlc[0] Phase: Succeeded StartedAt: 2026-07-16 06:56:52 +0000 UTC FinishedAt: 2026-07-16 07:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow56zlc[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 06:56:52 +0000 UTC FinishedAt: 2026-07-16 07:29:42 +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+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2YzVjZmY4ZmU2OWE5Y2EzYTBjMGQxYjYyZGEyYWQzN2I4YWZiZGVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMDc6Mjg6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jIGIvZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jXG5pbmRleCBhZDBkNWZiYmJjYTg0OC4uOGE2ZGRjMDBiOGUwNzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1xuQEAgLTMwNjcsMjQgJiM0MzszMDY3LDI4IEBAIHN0YXRpYyBpbnQgbWx4NV92ZHBhX2NoYW5nZV9tYXAoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LFxuIFx0XHR0ZWFyZG93bl92cV9yZXNvdXJjZXMobmRldik7XG4gXHR9XG4gXG4tXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xuLVxuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG12ZGV2LVx1MDAzZW1heF92cXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRuZGV2LVx1MDAzZXZxc1tpXS5tb2RpZmllZF9maWVsZHMgfD0gTUxYNV9WSVJUUV9NT0RJRllfTUFTS19WSVJUSU9fUV9NS0VZIHxcbiBcdFx0XHRcdFx0XHRNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWTtcbiBcbiBcdGlmICghKG12ZGV2LVx1MDAzZXN0YXR1cyBcdTAwMjYgVklSVElPX0NPTkZJR19TX0RSSVZFUl9PSykgfHwgbXZkZXYtXHUwMDNlc3VzcGVuZGVkKVxuLVx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdGdvdG8gZG9uZTtcbiBcbiBcdGlmICh0ZWFyZG93bikge1xuIFx0XHRyZXN0b3JlX2NoYW5uZWxzX2luZm8obmRldik7XG4gXHRcdGVyciA9IHNldHVwX3ZxX3Jlc291cmNlcyhuZGV2LCB0cnVlKTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0XHRnb3RvIG91dF9lcnI7XG4gXHR9XG4gXG4gXHRyZXN1bWVfdnFzKG5kZXYsIDAsIG5kZXYtXHUwMDNlY3VyX251bV92cXMpO1xuJiM0MztcdGdvdG8gZG9uZTtcbiBcbiYjNDM7b3V0X2VycjpcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7ZG9uZTpcbiYjNDM7XHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZjNWNmZjhmZTY5YTljYTNhMGMwZDFiNjJkYTJhZDM3YjhhZmJkZWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAwNzoyODo1NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyBiL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYwppbmRleCBhZDBkNWZiYmJjYTg0OC4uOGE2ZGRjMDBiOGUwNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMKQEAgLTMwNjcsMjQgJiM0MzszMDY3LDI4IEBAIHN0YXRpYyBpbnQgbWx4NV92ZHBhX2NoYW5nZV9tYXAoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LAogCQl0ZWFyZG93bl92cV9yZXNvdXJjZXMobmRldik7CiAJfQogCi0JbWx4NV92ZHBhX3VwZGF0ZV9tcihtdmRldiwgbmV3X21yLCBhc2lkKTsKLQogCWZvciAoaW50IGkgPSAwOyBpICZsdDsgbXZkZXYtJmd0O21heF92cXM7IGkmIzQzOyYjNDM7KQogCQluZGV2LSZndDt2cXNbaV0ubW9kaWZpZWRfZmllbGRzIHw9IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfVklSVElPX1FfTUtFWSB8CiAJCQkJCQlNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWTsKIAogCWlmICghKG12ZGV2LSZndDtzdGF0dXMgJmFtcDsgVklSVElPX0NPTkZJR19TX0RSSVZFUl9PSykgfHwgbXZkZXYtJmd0O3N1c3BlbmRlZCkKLQkJcmV0dXJuIDA7CiYjNDM7CQlnb3RvIGRvbmU7CiAKIAlpZiAodGVhcmRvd24pIHsKIAkJcmVzdG9yZV9jaGFubmVsc19pbmZvKG5kZXYpOwogCQllcnIgPSBzZXR1cF92cV9yZXNvdXJjZXMobmRldiwgdHJ1ZSk7CiAJCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOwomIzQzOwkJCWdvdG8gb3V0X2VycjsKIAl9CiAKIAlyZXN1bWVfdnFzKG5kZXYsIDAsIG5kZXYtJmd0O2N1cl9udW1fdnFzKTsKJiM0MzsJZ290byBkb25lOwogCiYjNDM7b3V0X2VycjoKJiM0MzsJcmV0dXJuIGVycjsKJiM0MzsKJiM0Mztkb25lOgomIzQzOwltbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAzMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRnVuY3Rpb25hbCBDaGFuZ2UgaW4gdGhlIG1seDUgdmRwYSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0d2Vha2VkIHRoZSBgbWx4NV92ZHBhX2NoYW5nZV9tYXBgIGZ1bmN0aW9uIGluIGBkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNgLiBJdCYjMzk7cyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGNoYW5nZTogdGhlIGNhbGwgdG8gYG1seDVfdmRwYV91cGRhdGVfbXJgIGlzIG5vdyBhdCB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiwgcmlnaHQgYmVmb3JlIHRoZSByZXR1cm4uICBJdCBsb29rcyBsaWtlIGlmIGBzZXR1cF92cV9yZXNvdXJjZXMobmRldiwgdHJ1ZSlgIGZhaWxzLCB0aGUgY29kZSBub3cgYmFpbHMgb3V0IHdpdGhvdXQgY2FsbGluZyBgbWx4NV92ZHBhX3VwZGF0ZV9tcmAuICBGdW5jdGlvbmFsbHksIHRoaXMgaXMgZGVmaW5pdGVseSBhIGNoYW5nZSBhbmQgbmVlZHMgY2FyZWZ1bCBleGFtaW5hdGlvbi4KCk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IHJlYWNoYWJpbGl0eS4gVGhpcyBpcyBNZWxsYW5veCwgbWx4NSwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIuIEdlbmVyYWxseSwgd2UgZG9uJiMzOTt0IHNlZSB0aGVzZSB0aGluZ3MgdHJpZ2dlcmVkIGVhc2lseSBpbiBwdXJlbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBlbXVsYXRvciBvciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZ2VuZXJpYyBzdWJzeXN0ZW0uIE5vdywgSSByZW1lbWJlciB0aGF0IHZkcGEgaGFzIGEgc2ltdWxhdG9yIChgdmRwYV9zaW1gKSwgYnV0IEkmIzM5O20gcHJldHR5IHN1cmUgdGhlIG1seDUgdmRwYSBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgYWN0dWFsIG1seDUgaGFyZHdhcmUgb3IgYSAqc3BlY2lmaWMqIGVtdWxhdG9yIGZvciBpdCB0byB3b3JrLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGhvdyBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgYG1seDVfdmRwYV9jaGFuZ2VfbWFwYCBjb2RlIHBhdGg/CgpJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGlmIGBtbHg1X3ZkcGFfY2hhbmdlX21hcGAgaXMgcmVhY2hhYmxlLiBBaCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG1seDVfdmRwYV9zZXRfbWFwYC4gT2theSwgdGhhdCBnaXZlcyBtZSBhIGhhbmRsZS4gQnV0IHN0aWxsLCB0aGUgYmlnIGh1cmRsZSBpcywgY2FuIHdlIHRyaWdnZXIgKnRoYXQqIHdpdGhvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmU/IFBDSSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBsaWtlIG1seDUsIHVzdWFsbHkgZmFpbCB0byBwcm9iZSBpZiB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IHByZXNlbnQuICBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgZXZlbiBhIFBDSSBkcml2ZXIgYW5kIGlmIGl0IGhhcyBhbnkgZmFsbGJhY2tzLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGV4YW1pbmUgYGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY2AgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X3ZkcGFfY2hhbmdlX21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzAyOD1zdGF0aWMgdm9pZCByZXN0b3JlX2NoYW5uZWxzX2luZm8oc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMwNTItXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzA1MzpzdGF0aWMgaW50IG1seDVfdmRwYV9jaGFuZ2VfbWFwKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDU0LVx0XHRcdFx0c3RydWN0IG1seDVfdmRwYV9tciAqbmV3X21yLFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMzQ4PXN0YXRpYyBpbnQgc2V0X21hcF9kYXRhKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldiwgc3RydWN0IHZob3N0X2lvdGxiICppb3RsYixcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzM3MS1cdH0gZWxzZSB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzM3MjpcdFx0ZXJyID0gbWx4NV92ZHBhX2NoYW5nZV9tYXAobXZkZXYsIG5ld19tciwgYXNpZCk7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzM3My1cdFx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNZWxsYW5veCBEcml2ZXI6IEEgUHJlbGltaW5hcnkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNZWxsYW5veCBkcml2ZXIuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCAmIzM0O0NhbiB0aGlzIGJlIGZ1enplZD8mIzM0OyBNeSBleHBlcmllbmNlIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBtbHg1YCBzdWdnZXN0cyB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIHRyaWNreS4gVHlwaWNhbGx5LCB5b3UgbmVlZCB0aGUgYWN0dWFsIGhhcmR3YXJlIHRvIG1lYW5pbmdmdWxseSBmdXp6IHRoZXNlLCB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZW11bGF0b3IgYXZhaWxhYmxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGVyZSBhbiBgbWx4NWAgZW11bGF0b3Igb3V0IHRoZXJlPyYjMzQ7IFF1aWNrbHkgc2Nhbm5pbmcgbXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIGxhbmRzY2FwZSwgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBsaWtlIHRoYXQgaW4gdGhlIGtlcm5lbCB0cmVlIGl0c2VsZi4gVGltZSB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGZvciBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgb2ZmZXIgc29tZSBraW5kIG9mIHZpcnR1YWwgaW50ZXJmYWNlIG9yIHRlc3RpbmcgaG9va3MuIE1heWJlIHNvbWV0aGluZyBsaWtlIGBDT05GSUdfTUxYNV9WRFBBX05FVGAgb3Igc2ltaWxhci4gTGV0JiMzOTtzIHNlZSB3aGF0IHR1cm5zIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1MWDVfVkRQQV9ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvbWx4NS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTg0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqKk5hdmlnYXRpbmcgdGhlIFZEUEEgYW5kIE1lbGxhbm94IEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgb2J2aW91cyBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIEdpdmVuIHRoZSBtZW50aW9uIG9mIFZEUEEsIG15IGJyYWluIGF1dG9tYXRpY2FsbHkganVtcHMgdG8gdGhlIGxpa2VseSBsb2NhdGlvbnM6IEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIGdlbmVyYWwgVkRQQSBkaXJlY3RvcnksIHNvIGBkcml2ZXJzL3ZkcGEvS2NvbmZpZ2AgaXMgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2suIElmIEkgZG9uJiMzOTt0IGZpbmQgd2hhdCBJIG5lZWQgdGhlcmUsIEkga25vdyBNZWxsYW5veCBpcyBhIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiwgc28gSSYjMzk7bGwgcGl2b3QgdG8gdGhlIE1lbGxhbm94LXNwZWNpZmljIFZEUEEgZGlyZWN0b3J5IG5leHQsIGNoZWNraW5nIGBkcml2ZXJzL3ZkcGEvbWx4NS9LY29uZmlnYC4gQW5kLCB5b3Uga25vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYmVjYXVzZSBNZWxsYW5veCBpcyBhbHNvIGFuIGV0aGVybmV0IGRyaXZlciB2ZW5kb3IsIGl0IGNvdWxkIHZlcnkgd2VsbCBiZSB0aGF0IHRoZSBvcHRpb25zIEkgYW0gbG9va2luZyBmb3IgY2FuIGJlIGZvdW5kIGJ5IGFsc28gY2hlY2tpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnYC4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRob3NlIGZpbGVzIGNsb3NlbHk7IEkgYW50aWNpcGF0ZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHJlbGV2YW50IGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGZvciBWRFBBIGFuZCBNZWxsYW5veCBoYXJkd2FyZS4gSSBleHBlY3QgdG8gYmUgYWJsZSB0byBuYXZpZ2F0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBmaW5kIHRoZSBvbmUgSSBuZWVkIGJhc2VkIG9uIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUxYNV9WRFBBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZHBhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvS2NvbmZpZz00ND1jb25maWcgSUZDVkZcbi0tXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy01Mi1cbmRyaXZlcnMvdmRwYS9LY29uZmlnOjUzOmNvbmZpZyBNTFg1X1ZEUEFcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTU0LVx0Ym9vbFxuLS1cbmRyaXZlcnMvdmRwYS9LY29uZmlnLTYwLVxuZHJpdmVycy92ZHBhL0tjb25maWc6NjE6Y29uZmlnIE1MWDVfVkRQQV9ORVRcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7dkRQQSBkcml2ZXIgZm9yIENvbm5lY3RYIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvdmRwYS9LY29uZmlnOjYzOlx0c2VsZWN0IE1MWDVfVkRQQVxuZHJpdmVycy92ZHBhL0tjb25maWctNjQtXHRzZWxlY3QgVkhPU1RfUklOR1xuLS1cbmRyaXZlcnMvdmRwYS9LY29uZmlnLTcxLVxuZHJpdmVycy92ZHBhL0tjb25maWc6NzI6Y29uZmlnIE1MWDVfVkRQQV9TVEVFUklOR19ERUJVR1xuZHJpdmVycy92ZHBhL0tjb25maWctNzMtXHRib29sIFwmIzM0O2V4cG9zZSBzdGVlcmluZyBjb3VudGVycyBvbiBkZWJ1Z2ZzXCYjMzQ7XG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzo3NDpcdHNlbGVjdCBNTFg1X1ZEUEFcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTc1LVx0aGVscFxuLS1cbmRyaXZlcnMvdmRwYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19JRkNWRikgICAgJiM0Mzs9IGlmY3ZmL1xuZHJpdmVycy92ZHBhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01MWDVfVkRQQSkgJiM0Mzs9IG1seDUvXG5kcml2ZXJzL3ZkcGEvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfVlBfVkRQQSkgICAgJiM0Mzs9IHZpcnRpb19wY2kvXG4tLVxuZHJpdmVycy92ZHBhL21seDUvTWFrZWZpbGU9MT1zdWJkaXItY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjdHJlZSkvZHJpdmVycy92ZHBhL21seDUvY29yZVxuZHJpdmVycy92ZHBhL21seDUvTWFrZWZpbGUtMi1cbmRyaXZlcnMvdmRwYS9tbHg1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01MWDVfVkRQQV9ORVQpICYjNDM7PSBtbHg1X3ZkcGEub1xuZHJpdmVycy92ZHBhL21seDUvTWFrZWZpbGU6NDptbHg1X3ZkcGEtJChDT05GSUdfTUxYNV9WRFBBX05FVCkgJiM0Mzs9IG5ldC9tbHg1X3ZuZXQubyBjb3JlL3Jlc291cmNlcy5vIGNvcmUvbXIubyBuZXQvZGVidWcub1xuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmgtMy1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg6NDojaWZuZGVmIF9fTUxYNV9WRFBBX0hfX1xuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo1OiNkZWZpbmUgX19NTFg1X1ZEUEFfSF9fXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTYtXG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaD03NT1lbnVtIHtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg6NzY6XHRNTFg1X1ZEUEFfREFUQVZRX0dST1VQLFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo3NzpcdE1MWDVfVkRQQV9DVlFfR1JPVVAsXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjc4Olx0TUxYNV9WRFBBX0RBVEFWUV9ERVNDX0dST1VQLFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo3OTpcdE1MWDVfVkRQQV9OVU1WUV9HUk9VUFNcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmgtODAtfTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oPTgyPWVudW0ge1xuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo4MzpcdE1MWDVfVkRQQV9OVU1fQVMgPSAyXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTg0LX07XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaD04Nj1zdHJ1Y3QgbWx4NV92ZHBhX21yX3Jlc291cmNlcyB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjg3Olx0c3RydWN0IG1seDVfdmRwYV9tciAqbXJbTUxYNV9WRFBBX05VTV9BU107XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjg4Olx0dW5zaWduZWQgaW50IGdyb3VwMmFzaWRbTUxYNV9WRFBBX05VTVZRX0dST1VQU107XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTg5LVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg9MTY2PWludCBtbHg1X3ZkcGFfZXhlY19hc3luY19jbWRzKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTE4Ni1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg6MTg3OiNlbmRpZiAvKiBfX01MWDVfVkRQQV9IX18gKi9cbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9MTI4PXN0YXRpYyB1NjQgbWFwbGVuKHN0cnVjdCB2aG9zdF9pb3RsYl9tYXAgKm1hcCwgc3RydWN0IG1seDVfdmRwYV9kaXJlY3RfbXIgKm1yKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xMzItXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MTMzOiNkZWZpbmUgTUxYNV9WRFBBX0lOVkFMSURfU1RBUlRfQUREUiAoKHU2NCktMSlcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzoxMzQ6I2RlZmluZSBNTFg1X1ZEUEFfSU5WQUxJRF9MRU4gKCh1NjQpLTEpXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTM1LVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTEzNj1zdGF0aWMgdTY0IGluZGlyX3N0YXJ0X2FkZHIoc3RydWN0IG1seDVfdmRwYV9tciAqbWtleSlcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTQxLVx0aWYgKCFzKVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjE0MjpcdFx0cmV0dXJuIE1MWDVfVkRQQV9JTlZBTElEX1NUQVJUX0FERFI7XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTQzLVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz0xNDc9c3RhdGljIHU2NCBpbmRpcl9sZW4oc3RydWN0IG1seDVfdmRwYV9tciAqbWtleSlcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTUzLVx0aWYgKCFzKVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjE1NDpcdFx0cmV0dXJuIE1MWDVfVkRQQV9JTlZBTElEX0xFTjtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xNTUtXG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTIwND1zdGF0aWMgaW50IGtsbV9ieXRlX3NpemUoaW50IG5rbG1zKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0yMDgtXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MjA5OiNkZWZpbmUgTUxYNV9WRFBBX01UVF9BTElHTiAxNlxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTIxMC1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz0yMTE9c3RhdGljIGludCBjcmVhdGVfZGlyZWN0X2tleXMoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LCBzdHJ1Y3QgbWx4NV92ZHBhX21yICptcilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMjI1LVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjIyNjpcdFx0bXR0bGVuID0gcm91bmR1cChNTFg1X1NUX1NaX0JZVEVTKG10dCkgKiBkbXItXHUwMDNlbnNnLCBNTFg1X1ZEUEFfTVRUX0FMSUdOKTtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0yMjctXHRcdG10dGNvdW50ID0gbXR0bGVuIC8gc2l6ZW9mKGNtZF9tZW0tXHUwMDNlbXR0WzBdKTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9MzI2PXN0YXRpYyBpbnQgY3JlYXRlX2luZGlyZWN0X2tleShzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm1yKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0zMzYtXHRsZW4gPSBpbmRpcl9sZW4obXIpO1xuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjMzNzpcdGlmIChzdGFydCA9PSBNTFg1X1ZEUEFfSU5WQUxJRF9TVEFSVF9BRERSIHx8IGxlbiA9PSBNTFg1X1ZEUEFfSU5WQUxJRF9MRU4pXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMzM4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9NjQyPXN0YXRpYyB2b2lkIF9tbHg1X3ZkcGFfZGVzdHJveV9tcihzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm1yKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy02NjItICovXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6NjYzOiNkZWZpbmUgTUxYNV9WRFBBX01SX0dDX1RSSUdHRVJfTVMgMjAwMFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTY2NC1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz02NjU9c3RhdGljIHZvaWQgbWx4NV92ZHBhX21yX2djX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy02NzYtXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhtcmVzLVx1MDAzZXdxX2djLCBcdTAwMjZtcmVzLVx1MDAzZWdjX2R3b3JrX2VudCxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzo2Nzc6XHRcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKE1MWDVfVkRQQV9NUl9HQ19UUklHR0VSX01TKSk7XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtNjc4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTY5MD1zdGF0aWMgdm9pZCBfbWx4NV92ZHBhX3B1dF9tcihzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTcwMC1cdFx0cXVldWVfZGVsYXllZF93b3JrKG1yZXMtXHUwMDNld3FfZ2MsIFx1MDAyNm1yZXMtXHUwMDNlZ2NfZHdvcmtfZW50LFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjcwMTpcdFx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoTUxYNV9WRFBBX01SX0dDX1RSSUdHRVJfTVMpKTtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy03MDItXHR9XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTc2MT12b2lkIG1seDVfdmRwYV9jbGVhbl9tcnMoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2KVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy03NjUtXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6NzY2Olx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIE1MWDVfVkRQQV9OVU1fQVM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTc2Ny1cdFx0bWx4NV92ZHBhX3VwZGF0ZV9tcihtdmRldiwgTlVMTCwgaSk7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTg0MD1pbnQgbWx4NV92ZHBhX3VwZGF0ZV9jdnFfaW90bGIoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy04NDUtXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6ODQ2Olx0aWYgKG12ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfQ1ZRX0dST1VQXSAhPSBhc2lkKVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTg0Ny1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTg3Mj1pbnQgbWx4NV92ZHBhX3Jlc2V0X21yKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldiwgdW5zaWduZWQgaW50IGFzaWQpXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtODczLXtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzo4NzQ6XHRpZiAoYXNpZCBcdTAwM2U9IE1MWDVfVkRQQV9OVU1fQVMpXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtODc1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvZGVidWcuYz00Nj12b2lkIG1seDVfdmRwYV9hZGRfcnhfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvZGVidWcuYy01MS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9kZWJ1Zy5jOjUyOiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvZGVidWcuYy01My1zdGF0aWMgaW50IHBhY2tldHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTI5Nz1zdGF0aWMgdm9pZCBkZXN0cm95X3RpcyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzAxLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMwMjojZGVmaW5lIE1MWDVfVkRQQV9DUUVfU0laRSA2NFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMwMzojZGVmaW5lIE1MWDVfVkRQQV9MT0dfQ1FFX1NJWkUgaWxvZzIoTUxYNV9WRFBBX0NRRV9TSVpFKVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMwNC1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMDU9c3RhdGljIGludCBjcV9mcmFnX2J1Zl9hbGxvYyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldiwgc3RydWN0IG1seDVfdmRwYV9jcV9idWYgKmJ1ZiwgaW50IG5lbnQpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMwNy1cdHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpmcmFnX2J1ZiA9IFx1MDAyNmJ1Zi1cdTAwM2VmcmFnX2J1ZjtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMDg6XHR1OCBsb2dfd3Ffc3RyaWRlID0gTUxYNV9WRFBBX0xPR19DUUVfU0laRTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMDk6XHR1OCBsb2dfd3Ffc3ogPSBNTFg1X1ZEUEFfTE9HX0NRRV9TSVpFO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxMC1cdGludCBlcnI7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzExLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMxMjpcdGVyciA9IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShuZGV2LVx1MDAzZW12ZGV2Lm1kZXYsIG5lbnQgKiBNTFg1X1ZEUEFfQ1FFX1NJWkUsIGZyYWdfYnVmLFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxMy1cdFx0XHRcdCAgICAgICBuZGV2LVx1MDAzZW12ZGV2Lm1kZXYtXHUwMDNlcHJpdi5udW1hX25vZGUpO1xuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMTgtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzE5Olx0YnVmLVx1MDAzZWNxZV9zaXplID0gTUxYNV9WRFBBX0NRRV9TSVpFO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMyMC1cdGJ1Zi1cdTAwM2VuZW50ID0gbmVudDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9ODc2PXN0YXRpYyBpbnQgY3JlYXRlX3ZpcnRxdWV1ZShzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQxLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjk0MjpcdFx0dnFfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0dST1VQXV07XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQzLVx0XHRpZiAodnFfbXIpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTk0NS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo5NDY6XHRcdHZxX2Rlc2NfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NDctXHRcdGlmICh2cV9kZXNjX21yIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NTMtXHRcdCAqL1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjk1NDpcdFx0dnFfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0dST1VQXV07XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTU1LVx0XHRpZiAodnFfbXIpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTk1Ny1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo5NTg6XHRcdHZxX2Rlc2NfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NTktXHRcdGlmICh2cV9kZXNjX21yKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0xMzA0PXN0YXRpYyB2b2lkIGZpbGxfbW9kaWZ5X3ZpcnRxdWV1ZV9jbWQoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzNTQtXHRpZiAobXZxLVx1MDAzZW1vZGlmaWVkX2ZpZWxkcyBcdTAwMjYgTUxYNV9WSVJUUV9NT0RJRllfTUFTS19WSVJUSU9fUV9NS0VZKSB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTM1NTpcdFx0dnFfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0dST1VQXV07XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM1Ni1cbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM2My1cdGlmIChtdnEtXHUwMDNlbW9kaWZpZWRfZmllbGRzIFx1MDAyNiBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWSkge1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjEzNjQ6XHRcdGRlc2NfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzY1LVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0xMzc1PXN0YXRpYyB2b2lkIG1vZGlmeV92aXJ0cXVldWVfZW5kKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzgxLVx0aWYgKG12cS1cdTAwM2Vtb2RpZmllZF9maWVsZHMgXHUwMDI2IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfVklSVElPX1FfTUtFWSkge1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjEzODI6XHRcdHVuc2lnbmVkIGludCBhc2lkID0gbXZkZXYtXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfR1JPVVBdO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzODMtXHRcdHN0cnVjdCBtbHg1X3ZkcGFfbXIgKnZxX21yID0gbXZkZXYtXHUwMDNlbXJlcy5tclthc2lkXTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM5MC1cdGlmIChtdnEtXHUwMDNlbW9kaWZpZWRfZmllbGRzIFx1MDAyNiBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWSkge1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjEzOTE6XHRcdHVuc2lnbmVkIGludCBhc2lkID0gbXZkZXYtXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfREVTQ19HUk9VUF07XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM5Mi1cdFx0c3RydWN0IG1seDVfdmRwYV9tciAqZGVzY19tciA9IG12ZGV2LVx1MDAzZW1yZXMubXJbYXNpZF07XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTE0NTY9c3RhdGljIHZvaWQgYWxsb2NfdmVjdG9yKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xNDY2LVx0XHRpZiAoIWVudC1cdTAwM2V1c2VkKSB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTQ2NzpcdFx0XHRzbnByaW50ZihlbnQtXHUwMDNlbmFtZSwgTUxYNV9WRFBBX0lSUV9OQU1FX0xFTiwgXCYjMzQ7JXMtdnEtJWRcJiMzNDssXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTQ2OC1cdFx0XHRcdCBkZXZfbmFtZShcdTAwMjZuZGV2LVx1MDAzZW12ZGV2LnZkZXYuZGV2KSwgbXZxLVx1MDAzZWluZGV4KTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MTg1OD1zdGF0aWMgdm9pZCBkZXN0cm95X3RpcihzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTg2Ni1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxODY3OiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTg2OC0gICAgICAgI2RlZmluZSBOVU1fREVTVFMgMlxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0xODczPXN0YXRpYyBpbnQgYWRkX3N0ZWVyaW5nX2NvdW50ZXJzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xODc3LXtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxODc4OiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTg3OS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTE5MDM9c3RhdGljIHZvaWQgcmVtb3ZlX3N0ZWVyaW5nX2NvdW50ZXJzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xOTA1LXtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxOTA2OiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTkwNy1cdG1seDVfZmNfZGVzdHJveShuZGV2LVx1MDAzZW12ZGV2Lm1kZXYsIG5vZGUtXHUwMDNlbWNhc3RfY291bnRlci5jb3VudGVyKTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MTkxMj1zdGF0aWMgaW50IG1seDVfdmRwYV9hZGRfbWFjX3ZsYW5fcnVsZXMoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsIHU4ICptYWMsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NTEtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTk1MjojaWYgZGVmaW5lZChDT05GSUdfTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHKVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NTMtXHRkZXN0c1sxXS5jb3VudGVyID0gbm9kZS1cdTAwM2V1Y2FzdF9jb3VudGVyLmNvdW50ZXI7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NjAtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTk2MTojaWYgZGVmaW5lZChDT05GSUdfTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHKVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NjItXHRkZXN0c1sxXS5jb3VudGVyID0gbm9kZS1cdTAwM2VtY2FzdF9jb3VudGVyLmNvdW50ZXI7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTI2NTI9c3RhdGljIHUzMiBtbHg1X3ZkcGFfZ2V0X3ZxX2dyb3VwKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRldiwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjY1Ni1cdGlmIChpc19jdHJsX3ZxX2lkeChtdmRldiwgaWR4KSlcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyNjU3Olx0XHRyZXR1cm4gTUxYNV9WRFBBX0NWUV9HUk9VUDtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0yNjU4LVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjI2NTk6XHRyZXR1cm4gTUxYNV9WRFBBX0RBVEFWUV9HUk9VUDtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0yNjYwLX1cbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MjY2Mj1zdGF0aWMgdTMyIG1seDVfdmRwYV9nZXRfdnFfZGVzY19ncm91cChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYsIHUxNiBpZHgpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NjYtXHRpZiAoaXNfY3RybF92cV9pZHgobXZkZXYsIGlkeCkpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MjY2NzpcdFx0cmV0dXJuIE1MWDVfVkRQQV9DVlFfR1JPVVA7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjY2OC1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyNjY5Olx0cmV0dXJuIE1MWDVfVkRQQV9EQVRBVlFfREVTQ19HUk9VUDtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0yNjcwLX1cbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9Mjk1Mj1zdGF0aWMgdm9pZCBtbHg1X3ZkcGFfc2V0X2NvbmZpZ19jYihzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYsIHN0cnVjdCB2ZHBhX2NhbGxiYWNrICpjYilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjk1OS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyOTYwOiNkZWZpbmUgTUxYNV9WRFBBX01BWF9WUV9FTlRSSUVTIDI1NlxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjEtc3RhdGljIHUxNiBtbHg1X3ZkcGFfZ2V0X3ZxX251bV9tYXgoc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjIte1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjI5NjM6XHRyZXR1cm4gTUxYNV9WRFBBX01BWF9WUV9FTlRSSUVTO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjQtfVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMjQ1PXN0YXRpYyB2b2lkIGluaXRfZ3JvdXBfdG9fYXNpZF9tYXAoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2KVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMjQ5LVx0LyogZGVmYXVsdCBtYXBwaW5nIGFsbCBncm91cHMgYXJlIG1hcHBlZCB0byBhc2lkIDAgKi9cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMjUwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUxYNV9WRFBBX05VTVZRX0dST1VQUzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzI1MS1cdFx0bXZkZXYtXHUwMDNlbXJlcy5ncm91cDJhc2lkW2ldID0gMDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzM0OD1zdGF0aWMgaW50IHNldF9tYXBfZGF0YShzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCB2aG9zdF9pb3RsYiAqaW90bGIsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMzNTMtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzM1NDpcdGlmIChhc2lkIFx1MDAzZT0gTUxYNV9WRFBBX05VTV9BUylcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMzU1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzY1Mj1zdGF0aWMgaW50IG1seDVfc2V0X2dyb3VwX2FzaWQoc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2LCB1MzIgZ3JvdXAsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM2NjAtXHRtdXRleF9sb2NrKFx1MDAyNm12ZGV2LVx1MDAzZW1yZXMubG9jayk7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzY2MTpcdGlmIChncm91cCA9PSBNTFg1X1ZEUEFfQ1ZRX0dST1VQIFx1MDAyNlx1MDAyNiBtdmRldi1cdTAwM2VtcmVzLm1yW2FzaWRdKVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM2NjItXHRcdGVyciA9IG1seDVfdmRwYV91cGRhdGVfY3ZxX2lvdGxiKG12ZGV2LCBtdmRldi1cdTAwM2VtcmVzLm1yW2FzaWRdLVx1MDAzZWlvdGxiLCBhc2lkKTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzgwNT1zdGF0aWMgdm9pZCBhbGxvY2F0ZV9pcnFzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zODIzLVx0XHRlbnQgPSBuZGV2LVx1MDAzZWlycXAuZW50cmllcyAmIzQzOyBpO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM4MjQ6XHRcdHNucHJpbnRmKGVudC1cdTAwM2VuYW1lLCBNTFg1X1ZEUEFfSVJRX05BTUVfTEVOLCBcJiMzNDslcy12cS0lZFwmIzM0OyxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zODI1LVx0XHRcdCBkZXZfbmFtZShcdTAwMjZuZGV2LVx1MDAzZW12ZGV2LnZkZXYuZGV2KSwgaSk7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTM4MzQ9c3RhdGljIGludCBtbHg1X3ZkcGFfZGV2X2FkZChzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zODk1LVx0bmRldiA9IHZkcGFfYWxsb2NfZGV2aWNlKHN0cnVjdCBtbHg1X3ZkcGFfbmV0LCBtdmRldi52ZGV2LCBtZGV2LVx1MDAzZWRldmljZSwgXHUwMDI2bWd0ZGV2LVx1MDAzZXZkcGFfb3BzLFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM4OTY6XHRcdFx0XHQgTlVMTCwgTUxYNV9WRFBBX05VTVZRX0dST1VQUywgTUxYNV9WRFBBX05VTV9BUywgbmFtZSwgZmFsc2UpO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4OTctXHRpZiAoSVNfRVJSKG5kZXYpKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaD0yND1zdGF0aWMgaW5saW5lIHUxNiBrZXkydmlkKHU2NCBrZXkpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oLTI4LVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oOjI5OiNkZWZpbmUgTUxYNV9WRFBBX0lSUV9OQU1FX0xFTiAzMlxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oLTMwLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oPTMxPXN0cnVjdCBtbHg1X3ZkcGFfaXJxX3Bvb2xfZW50cnkge1xuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC0zMy1cdGJvb2wgdXNlZDtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaDozNDpcdGNoYXIgbmFtZVtNTFg1X1ZEUEFfSVJRX05BTUVfTEVOXTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC0zNS1cdHZvaWQgKmRldl9pZDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg9ODY9c3RydWN0IG1hY3ZsYW5fbm9kZSB7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oLTkyLVx0Ym9vbCB0YWdnZWQ7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg6OTM6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC05NC1cdHN0cnVjdCBkZW50cnkgKmRlbnQ7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oPTEwNT12b2lkIG1seDVfdmRwYV9yZW1vdmVfdGlybihzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldik7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg6MTA2OiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtMTA3LXZvaWQgbWx4NV92ZHBhX2FkZF9yeF9jb3VudGVycyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg5NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNTFg1X1ZEUEFfTkVUIERyaXZlcjogQSBWaXJ0dWFsaXphdGlvbiBDaGFsbGVuZ2UqKgoKT2theSwgc28gdGhlIHRhc2sgaXMgdG8gZmlndXJlIG91dCBpZiBJIGNhbiBlZmZlY3RpdmVseSBmdXp6IHRoZSBgTUxYNV9WRFBBX05FVGAgZHJpdmVyLiBUaGlzIGlzIGludGVyZXN0aW5nLCBnaXZlbiBteSBiYWNrZ3JvdW5kLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIEkgZXZlbiB0b3VjaCB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7IE15IGd1dCByZWFjdGlvbiBpcyB0aGF0IGBNTFg1YCBkcml2ZXJzIGFyZSB1c3VhbGx5IHRpZ2h0bHkgY291cGxlZCB3aXRoIE1lbGxhbm94IGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIHNldHVwLgoKVGhlbiBJIHJlbWVtYmVyIFN5emthbGxlci4gSXQgaGFzIHRoaXMgcmVwdXRhdGlvbiBmb3IgYmVpbmcgY2xldmVyIGFib3V0IGluaXRpYWxpemluZyBkcml2ZXJzLiBCdXQgdGhhdCYjMzk7cyBvbmx5IGVmZmVjdGl2ZSBpZiBpdCAqY2FuKiBpbml0aWFsaXplIHRoZW0uIElmIHRoaXMgZHJpdmVyIGRlbWFuZHMgYSByZWFsIFBDSSBkZXZpY2UsIEkmIzM5O20gc3R1Y2suIEl0IHdvbiYjMzk7dCBiZSByZWFjaGFibGUuCgpTbywgdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlciBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gU3l6a2FsbGVyIG9yIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi4gQW55IHRyaWNrcyB0byBmb29sIHRoZSBzeXN0ZW0gaW50byB0aGlua2luZyBpdCBoYXMgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZS4gSG1tLi4uIG5vdGhpbmcganVtcHMgb3V0LgoKV2FpdCBhIG1pbnV0ZSwgSSBzZWUgc29tZXRoaW5nLiBUaGUgZXhpc3RlbmNlIG9mIGEgYHN5ei1jbHVzdGVyYCBhdXRob3IgaW4gdGhlIHBhdGNoIGhpc3RvcnkgaW5kaWNhdGVzIGVpdGhlciBTeXprYWxsZXIgc3VjY2Vzc2Z1bGx5IGZvdW5kIGEgYnVnIG9yIHNvbWVvbmUgc3VibWl0dGVkIGEgcGF0Y2ggdG8gaGF2ZSBpdCBldmFsdWF0ZWQgaW4gc3l6a2FsbGVyLgoKUmlnaHQsIHRoZW4gSSBzZWUgdGhlIHByb21wdDogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhhdCYjMzk7cyB3aGF0IEkgYW0gdHJ5aW5nIHRvIGRldGVybWluZSBpZiB0aGlzIGFwcGxpZXMuCgpPa2F5LCBsZXQmIzM5O3Mgc3RlcCBiYWNrLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jYC4gQ2xlYXJseSwgdGhpcyBpcyBhIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcywgd2hpY2ggaXMgYSBiaXQgb2YgYSBjbHVlLiBCdXQgZG9lcyBpdCBtZWFuIGl0IGlzIHVucmVhY2hhYmxlLCBvciBjYW4gdGhlIGRyaXZlciBiZSB1c2VkIGluIHZpcnR1YWxpemF0aW9uLgoKTm93IGl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUuIFRpbWUgdG8gc3RhcnQgd2l0aCB0aGUgcHJvYmUgZnVuY3Rpb24gaW4gYG1seDVfdm5ldC5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfdmRwYV9kZXZfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zODA1PXN0YXRpYyB2b2lkIGFsbG9jYXRlX2lycXMoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4MzMtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzgzNDpzdGF0aWMgaW50IG1seDVfdmRwYV9kZXZfYWRkKHN0cnVjdCB2ZHBhX21nbXRfZGV2ICp2X21kZXYsIGNvbnN0IGNoYXIgKm5hbWUsXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzgzNS1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCB2ZHBhX2Rldl9zZXRfY29uZmlnICphZGRfY29uZmlnKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz00MDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmRwYV9tZ210ZGV2X29wcyBtZGV2X29wcyA9IHtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo0MDkxOlx0LmRldl9hZGQgPSBtbHg1X3ZkcGFfZGV2X2FkZCxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy00MDkyLVx0LmRldl9kZWwgPSBtbHg1X3ZkcGFfZGV2X2RlbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MTgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHByb2Nlc3MsIHRoaW5raW5nIHRocm91Z2ggaXQgYXMgYW4gZXhwZXJ0OgoKKipVbmRlcnN0YW5kaW5nIHRoZSBtbHg1IHZEUEEgRGV2aWNlIEFkZGl0aW9uKioKCkFscmlnaHQsIHNvIGBtbHg1X3ZkcGFfZGV2X2FkZGAuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgSSYjMzk7bSBpbnN0YW50bHkgdGhpbmtpbmcgYWJvdXQgaXRzIHBsYWNlIGluIHRoZSBsaWZlY3ljbGUgb2YgdGhpcyB2RFBBIHNldHVwLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGNhbGxlZCB2aWEgYHZkcGFfbWdtdGRldl9vcHNgIGlzIHRoZSBmaXJzdCBrZXkgaW5kaWNhdG9yLiBJJiMzOTttIGltbWVkaWF0ZWx5IHBpY3R1cmluZyB0aGUgdkRQQSBtYW5hZ2VtZW50IGxheWVyLCB0aGUgY29yZSBmcmFtZXdvcmsuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB0aGUgYnJpZGdlLCB0aGUgd2F5IHdlJiMzOTtyZSBhY3R1YWxseSBjcmVhdGluZyBhbmQgZW5hYmxpbmcgYSB2RFBBIGRldmljZSB1c2luZyB0aGUgbWx4NSBoYXJkd2FyZS4gSSBjYW4gaW5mZXIgZnJvbSB0aGF0LCB0aGF0IGB2ZHBhX21nbXRkZXZfb3BzYCBpcyB0aGUgbWVjaGFuaXNtIGJ5IHdoaWNoIHRoZSB2RFBBIGNvcmUgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBgbWx4NWAgaW1wbGVtZW50YXRpb24uCgpUaGVuLCB0aGUgc2Vjb25kIHBpZWNlLiBgbWx4NV92ZHBhX25ldF9wcm9iZWAgaXMgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZSBtYW5hZ2VtZW50IGRldmljZS4gVGhpcyBpcyB0aGUgaW5pdGlhbCBzdGVwLCB0aGUgJiMzNDtkaXNjb3ZlcnkmIzM0OyBwaGFzZSBpZiB5b3Ugd2lsbC4gVGhlIGBuZXRfcHJvYmVgIHN1Z2dlc3RzIGl0JiMzOTtzIGxpa2VseSBjYWxsZWQgZHVyaW5nIHRoZSBuZXR3b3JrIGludGVyZmFjZSBzZXR1cCBvciBwZXJoYXBzIGR1cmluZyBhIGhvdHBsdWcgZXZlbnQuIFRoaXMgcmVnaXN0cmF0aW9uIGlzIHRoZSBwcmVjdXJzb3IgdG8gYG1seDVfdmRwYV9kZXZfYWRkYC4gV2UgYXJlIGdldHRpbmcgdGhlICYjMzQ7ZGV2aWNlJiMzNDsgcmVnaXN0ZXJlZCwgYW5kIHRoZW4gd2hlbiB0aGF0IGRldmljZSB3YW50cyB0byBjb21lIHVwLCB0aGUgYG1seDVfdmRwYV9kZXZfYWRkYCB3aWxsIGJlIGNhbGxlZC4gSXQmIzM5O3MgdGhlICYjMzQ7ZGV2aWNlIGJlaW5nIG9ubGluZSYjMzQ7IGtpbmQgb2Ygb3BlcmF0aW9uLgoKU28sIGluIGVzc2VuY2UsIEkgc2VlIHRoaXMgYXM6IDEpIGBtbHg1X3ZkcGFfbmV0X3Byb2JlYCBpZGVudGlmaWVzIGFuZCByZWdpc3RlcnMgdGhlIHVuZGVybHlpbmcgbWx4NSBoYXJkd2FyZSBhcyBhIHBvdGVudGlhbCB2RFBBIG1hbmFnZW1lbnQgZGV2aWNlLiAyKSBMYXRlciwgd2hlbiBhIHZEUEEgZGV2aWNlIG5lZWRzIHRvIGJlIGFjdGl2ZWx5IHVzZWQgKGUuZy4gYSBWTSBjb25uZWN0cyB0byBpdCksIHRoZSBtYW5hZ2VtZW50IGZyYW1ld29yayB1c2VzIGl0cyBgdmRwYV9tZ210ZGV2X29wc2AgdG8gY2FsbCBgbWx4NV92ZHBhX2Rldl9hZGRgLCB3aGljaCBwcmVzdW1hYmx5IGFsbG9jYXRlcyB0aGUgcmVzb3VyY2VzLCBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgcXVldWVzLCBhbmQgbGlua3MgdGhlIHZEUEEgZnJvbnRlbmQgd2l0aCB0aGUgbWx4NSBiYWNrZW5kLCBtYWtpbmcgdGhlIGRldmljZSBvcGVyYXRpb25hbC4gSXQmIzM5O3MgYSBjbGVhbiBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zOiBkaXNjb3ZlcnkgYW5kIGluaXRpYWwgc2V0dXAgKHByb2JlKSB2cy4gYWN0dWFsIGRldmljZSBhY3RpdmF0aW9uLiBJdCYjMzk7cyBhIHdlbGwtc3RydWN0dXJlZCBhcHByb2FjaCwgYW5kIEkgY2FuIHN0YXJ0IHRvIHZpc3VhbGl6ZSB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIHZEUEEgY29yZSwgdGhlIG1hbmFnZW1lbnQgaW50ZXJmYWNlLCBhbmQgdGhlIG1seDUgaGFyZHdhcmUuIEkmIzM5O2Qgd2FudCB0byBkaWcgaW50byBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkLCBob3cgdGhlIHF1ZXVlcyBhcmUgZXN0YWJsaXNoZWQsIGFuZCBob3cgdGhlIGRhdGEgZmxvdyBpcyBvcmNoZXN0cmF0ZWQsIGJ1dCBhdCB0aGlzIGhpZ2ggbGV2ZWwsIHRoYXQgbWFrZXMgY29tcGxldGUgc2Vuc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV92ZHBhX25ldF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTYwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhvc2Ugc2VhcmNoIHRlcm1zOgoKKipEZWx2aW5nIGludG8gRGV2aWNlIERyaXZlciBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4gVGhlIGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBvcGVyYXRpb25zLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGVpdGhlciBsb29raW5nIGZvciBgbWRldl9vcHNgIG9yIGBwcm9iZWAuIEJvdGggb2YgdGhlc2UgYXJlIGNydWNpYWwgZW50cnkgcG9pbnRzLCByaWdodD8gYG1kZXZfb3BzYCBnaXZlcyBtZSBhIGdvb2QgY2hhbmNlIG9mIGZpbmRpbmcgdGhlIG1ldGhvZHMgaW1wbGVtZW50ZWQgZm9yIHRoZSBzcGVjaWZpYyBkZXZpY2UsIHRoZSBoYW5kbGVycyBpZiB5b3Ugd2lsbCwgbGlrZSByZWFkLCB3cml0ZSwgaW9jdGwsIHRoZSB3aG9sZSBzaGViYW5nLiBJdCB3aWxsIGJlIHRoZSAmIzM0O2dsdWUmIzM0OyB0aGF0IGhvb2tzIG1lIGludG8gdGhlIGhhcmR3YXJlIGNhbGxzLgoKT24gdGhlIG90aGVyIGhhbmQsIGBwcm9iZWAgaXMgd2hlcmUgdGhlIGRldmljZSBpcyBhY3R1YWxseSBpbml0aWFsaXplZCBhbmQgaWRlbnRpZmllZCwgdGhlIGZpcnN0IHN0ZXBzIGEgZHJpdmVyIHRha2VzLiBJdCYjMzk7cyBvZnRlbiB0aGUgc3RhcnQgb2YgZmlndXJpbmcgb3V0IHdoYXQga2luZCBvZiBoYXJkd2FyZSBJIGFtIGRlYWxpbmcgd2l0aCwgd2hhdCByZXNvdXJjZXMgaXQgbmVlZHMsIGFuZCBob3cgdG8gY29ubmVjdCB0byBpdCBpbiB0aGUgc3lzdGVtLiBHZXR0aW5nIHRoZSBwcm9iZSBmdW5jdGlvbiByaWdodCBpcyBjcml0aWNhbCBmb3IgdGhlIGtlcm5lbCB0byBzZWUgdGhlIGRldmljZS4gCgpEZXBlbmRpbmcgb24gd2hhdCBJIGFtIHRyeWluZyB0byB1bmRlcnN0YW5kLCBlaXRoZXIgb25lIGNvdWxkIGJlIHRoZSBrZXkgdG8gdW5sb2NraW5nIHRoZSBteXN0ZXJpZXMgb2YgdGhpcyBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgcmVzdWx0cyBicmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRldl9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTQwNTc9c3RhdGljIGludCBtbHg1X3ZkcGFfc2V0X2F0dHIoc3RydWN0IHZkcGFfbWdtdF9kZXYgKnZfbWRldiwgc3RydWN0IHZkcGFfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTQwODktXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6NDA5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfbWdtdGRldl9vcHMgbWRldl9vcHMgPSB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDA5MS1cdC5kZXZfYWRkID0gbWx4NV92ZHBhX2Rldl9hZGQsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTQxMDE9c3RhdGljIGludCBtbHg1dl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDExMy1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo0MTE0Olx0bWd0ZGV2LVx1MDAzZW1ndGRldi5vcHMgPSBcdTAwMjZtZGV2X29wcztcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy00MTE1LVx0bWd0ZGV2LVx1MDAzZW1ndGRldi5kZXZpY2UgPSBtZGV2LVx1MDAzZWRldmljZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxODcKCQkJCQkJCW91dHB1dDogMTI0CgkJCQkJCQl0aG91Z2h0czogNDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBtbHg1dl9wcm9iZWAgUGF0aCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBgbWx4NXZfcHJvYmVgLCBhbiBhdXhpbGlhcnkgZGV2aWNlIHByb2JlLiBUaGlzIGlzIGNyZWF0ZWQgYnkgdGhlIGBtbHg1YCBjb3JlIGRyaXZlciwgd2hpY2ggcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlYC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhlIGBtbHg1YCBjb3JlIGRyaXZlciAqcmVxdWlyZXMqIGEgZ2VudWluZSBQQ0kgZGV2aWNlLiBUaGVyZSYjMzk7cyBubyB1cHN0cmVhbSBrZXJuZWwgZW11bGF0aW9uIGZvciBgbWx4NWAuIFRoYXQgbWVhbnMgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGggaXMgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgdW5sZXNzIHdlJiMzOTtyZSBkb2luZyBQQ0kgcGFzc3Rocm91Z2ggb2YgYSByZWFsIE1lbGxhbm94IGRldmljZS4KClNpbmNlIHN5emthbGxlciBydW5zIGluIFFFTVUvR0NFLCBhbmQgaXQmIzM5O3Mgbm90IGdvaW5nIHRvIGhhdmUgYSByZWFsIE1lbGxhbm94IGNhcmQsIHRoZSBgbWx4NXZfcHJvYmVgIGZ1bmN0aW9uIHdvbiYjMzk7dCBiZSB0cmlnZ2VyZWQsIGFuZCB0aGVyZWZvcmUgdGhlIGBtbHg1X3ZkcGFfY2hhbmdlX21hcGAgZnVuY3Rpb24sIHRoYXQgdGhlIG9yaWdpbmFsIGNvZGUgaXMgZGVhbGluZyB3aXRoLCBpcyB1bnJlYWNoYWJsZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBydWxlIG91dCBhbnkgc29mdHdhcmUgZXF1aXZhbGVudHMuIElzIHRoZXJlIGEgYG5ldGRldnNpbWAtc3R5bGUgZW11bGF0aW9uIGZvciBgbWx4NWA/IE5vLiBPa2F5LCB3aGF0IGFib3V0IGB2ZHBhX3NpbWA/IENvdWxkIHRoYXQgYmUgYSB0cmlnZ2VyPyBObywgYmVjYXVzZSBgdmRwYV9zaW1gIGlzIGEgc2VwYXJhdGUgZHJpdmVyLCBgZHJpdmVycy92ZHBhL3ZkcGFfc2ltL2AsIGFuZCBpdCBkb2VzbiYjMzk7dCBldmVuIHRvdWNoIGBtbHg1X3ZuZXQuY2AuIFNvIGBtbHg1X3ZuZXQuY2AgaXMgZXhjbHVzaXZlbHkgdGllZCB0byBNZWxsYW5veCBoYXJkd2FyZS4KCkFscmlnaHQsIG5vdyBsZXQmIzM5O3MgY29uZmlybSB0aGUgYFdvcnRoRnV6emluZ2AgZGVjaXNpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgcmlnaHQgY2FsbC4gVGhlIGd1aWRlbGluZXMgc2F5LCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IFRoYXQgYXBwbGllcyBwZXJmZWN0bHkgaGVyZS4gTWVsbGFub3ggaGFyZHdhcmUgZHJpdmVycyBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuCgpTbywgaGVyZSYjMzk7cyBteSByZWFzb25pbmcsIGFuZCB0aGlzIGlzIHdoYXQgSSYjMzk7bSBnb2luZyB0byBkb2N1bWVudDogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDUgdkRQQSBkcml2ZXIgKGBkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNgKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lbGxhbm94IENvbm5lY3RYIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsIG9yIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkgdXNlZCBieSBzeXprYWxsZXIuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDsKClRoZXJlZm9yZSwgSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyODo1Ni4yMTM0NzE4MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTUyNzA5NTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDUgdkRQQSBkcml2ZXIgKGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWxsYW5veCBDb25uZWN0WCBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIG1seDUgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjg6NTYuMjEzNDc4MzU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI3NDg0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2YzVjZmY4ZmU2OWE5Y2EzYTBjMGQxYjYyZGEyYWQzN2I4YWZiZGVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDA3OjI4OjU0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyBiL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1xcbmluZGV4IGFkMGQ1ZmJiYmNhODQ4Li44YTZkZGMwMGI4ZTA3OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcXG4rKysgYi9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcXG5AQCAtMzA2NywyNCArMzA2NywyOCBAQCBzdGF0aWMgaW50IG1seDVfdmRwYV9jaGFuZ2VfbWFwKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcXG4gXFx0XFx0dGVhcmRvd25fdnFfcmVzb3VyY2VzKG5kZXYpO1xcbiBcXHR9XFxuIFxcbi1cXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xcbi1cXG4gXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBtdmRldi1cXHUwMDNlbWF4X3ZxczsgaSsrKVxcbiBcXHRcXHRuZGV2LVxcdTAwM2V2cXNbaV0ubW9kaWZpZWRfZmllbGRzIHw9IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfVklSVElPX1FfTUtFWSB8XFxuIFxcdFxcdFxcdFxcdFxcdFxcdE1MWDVfVklSVFFfTU9ESUZZX01BU0tfREVTQ19HUk9VUF9NS0VZO1xcbiBcXG4gXFx0aWYgKCEobXZkZXYtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IFZJUlRJT19DT05GSUdfU19EUklWRVJfT0spIHx8IG12ZGV2LVxcdTAwM2VzdXNwZW5kZWQpXFxuLVxcdFxcdHJldHVybiAwO1xcbitcXHRcXHRnb3RvIGRvbmU7XFxuIFxcbiBcXHRpZiAodGVhcmRvd24pIHtcXG4gXFx0XFx0cmVzdG9yZV9jaGFubmVsc19pbmZvKG5kZXYpO1xcbiBcXHRcXHRlcnIgPSBzZXR1cF92cV9yZXNvdXJjZXMobmRldiwgdHJ1ZSk7XFxuIFxcdFxcdGlmIChlcnIpXFxuLVxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4gXFx0fVxcbiBcXG4gXFx0cmVzdW1lX3ZxcyhuZGV2LCAwLCBuZGV2LVxcdTAwM2VjdXJfbnVtX3Zxcyk7XFxuK1xcdGdvdG8gZG9uZTtcXG4gXFxuK291dF9lcnI6XFxuK1xcdHJldHVybiBlcnI7XFxuK1xcbitkb25lOlxcbitcXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjg6NTYuNzY2OTk5NTY2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk3MzU2MDk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDUgdkRQQSBkcml2ZXIgKGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWxsYW5veCBDb25uZWN0WCBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIG1seDUgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YzVjZmY4ZmU2OWE5Y2EzYTBjMGQxYjYyZGEyYWQzN2I4YWZiZGVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMDc6Mjg6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMgYi9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcbmluZGV4IGFkMGQ1ZmJiYmNhODQ4Li44YTZkZGMwMGI4ZTA3OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1xuKysrIGIvZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jXG5AQCAtMzA2NywyNCArMzA2NywyOCBAQCBzdGF0aWMgaW50IG1seDVfdmRwYV9jaGFuZ2VfbWFwKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcbiBcdFx0dGVhcmRvd25fdnFfcmVzb3VyY2VzKG5kZXYpO1xuIFx0fVxuIFxuLVx0bWx4NV92ZHBhX3VwZGF0ZV9tcihtdmRldiwgbmV3X21yLCBhc2lkKTtcbi1cbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBtdmRldi1cdTAwM2VtYXhfdnFzOyBpKyspXG4gXHRcdG5kZXYtXHUwMDNldnFzW2ldLm1vZGlmaWVkX2ZpZWxkcyB8PSBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX1ZJUlRJT19RX01LRVkgfFxuIFx0XHRcdFx0XHRcdE1MWDVfVklSVFFfTU9ESUZZX01BU0tfREVTQ19HUk9VUF9NS0VZO1xuIFxuIFx0aWYgKCEobXZkZXYtXHUwMDNlc3RhdHVzIFx1MDAyNiBWSVJUSU9fQ09ORklHX1NfRFJJVkVSX09LKSB8fCBtdmRldi1cdTAwM2VzdXNwZW5kZWQpXG4tXHRcdHJldHVybiAwO1xuK1x0XHRnb3RvIGRvbmU7XG4gXG4gXHRpZiAodGVhcmRvd24pIHtcbiBcdFx0cmVzdG9yZV9jaGFubmVsc19pbmZvKG5kZXYpO1xuIFx0XHRlcnIgPSBzZXR1cF92cV9yZXNvdXJjZXMobmRldiwgdHJ1ZSk7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0XHRnb3RvIG91dF9lcnI7XG4gXHR9XG4gXG4gXHRyZXN1bWVfdnFzKG5kZXYsIDAsIG5kZXYtXHUwMDNlY3VyX251bV92cXMpO1xuK1x0Z290byBkb25lO1xuIFxuK291dF9lcnI6XG4rXHRyZXR1cm4gZXJyO1xuK1xuK2RvbmU6XG4rXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjg6NTYuNzY3MDAxMzE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc0NTc0MzA3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGdW5jdGlvbmFsIENoYW5nZSBpbiB0aGUgbWx4NSB2ZHBhIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHR3ZWFrZWQgdGhlIGBtbHg1X3ZkcGFfY2hhbmdlX21hcGAgZnVuY3Rpb24gaW4gYGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY2AuIEl0J3MgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2U6IHRoZSBjYWxsIHRvIGBtbHg1X3ZkcGFfdXBkYXRlX21yYCBpcyBub3cgYXQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24sIHJpZ2h0IGJlZm9yZSB0aGUgcmV0dXJuLiAgSXQgbG9va3MgbGlrZSBpZiBgc2V0dXBfdnFfcmVzb3VyY2VzKG5kZXYsIHRydWUpYCBmYWlscywgdGhlIGNvZGUgbm93IGJhaWxzIG91dCB3aXRob3V0IGNhbGxpbmcgYG1seDVfdmRwYV91cGRhdGVfbXJgLiAgRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGRlZmluaXRlbHkgYSBjaGFuZ2UgYW5kIG5lZWRzIGNhcmVmdWwgZXhhbWluYXRpb24uXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IHJlYWNoYWJpbGl0eS4gVGhpcyBpcyBNZWxsYW5veCwgbWx4NSwgd2hpY2ggbWVhbnMgaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlci4gR2VuZXJhbGx5LCB3ZSBkb24ndCBzZWUgdGhlc2UgdGhpbmdzIHRyaWdnZXJlZCBlYXNpbHkgaW4gcHVyZWx5IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRvciBvciB3ZSdyZSBkZWFsaW5nIHdpdGggYSBnZW5lcmljIHN1YnN5c3RlbS4gTm93LCBJIHJlbWVtYmVyIHRoYXQgdmRwYSBoYXMgYSBzaW11bGF0b3IgKGB2ZHBhX3NpbWApLCBidXQgSSdtIHByZXR0eSBzdXJlIHRoZSBtbHg1IHZkcGEgc3BlY2lmaWNhbGx5IHJlcXVpcmVzIGFjdHVhbCBtbHg1IGhhcmR3YXJlIG9yIGEgKnNwZWNpZmljKiBlbXVsYXRvciBmb3IgaXQgdG8gd29yay4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBob3cgY2FuIHdlIGFjdHVhbGx5IGhpdCB0aGlzIGBtbHg1X3ZkcGFfY2hhbmdlX21hcGAgY29kZSBwYXRoP1xuXG5JJ2xsIHF1aWNrbHkgY2hlY2sgaWYgYG1seDVfdmRwYV9jaGFuZ2VfbWFwYCBpcyByZWFjaGFibGUuIEFoLCBpdCdzIGNhbGxlZCBmcm9tIGBtbHg1X3ZkcGFfc2V0X21hcGAuIE9rYXksIHRoYXQgZ2l2ZXMgbWUgYSBoYW5kbGUuIEJ1dCBzdGlsbCwgdGhlIGJpZyBodXJkbGUgaXMsIGNhbiB3ZSB0cmlnZ2VyICp0aGF0KiB3aXRob3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlPyBQQ0kgZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSBtbHg1LCB1c3VhbGx5IGZhaWwgdG8gcHJvYmUgaWYgdGhlIGhhcmR3YXJlIGlzbid0IHByZXNlbnQuICBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBldmVuIGEgUENJIGRyaXZlciBhbmQgaWYgaXQgaGFzIGFueSBmYWxsYmFja3MuIEknbGwgbmVlZCB0byBnbyBiYWNrIGFuZCBleGFtaW5lIGBkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOTowMy41MTI3NDY1MDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4MTAzNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV92ZHBhX2NoYW5nZV9tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMDI4PXN0YXRpYyB2b2lkIHJlc3RvcmVfY2hhbm5lbHNfaW5mbyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldilcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDUyLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMDUzOnN0YXRpYyBpbnQgbWx4NV92ZHBhX2NoYW5nZV9tYXAoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LFxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDU0LVxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm5ld19tcixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMzQ4PXN0YXRpYyBpbnQgc2V0X21hcF9kYXRhKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldiwgc3RydWN0IHZob3N0X2lvdGxiICppb3RsYixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMzcxLVxcdH0gZWxzZSB7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMzNzI6XFx0XFx0ZXJyID0gbWx4NV92ZHBhX2NoYW5nZV9tYXAobXZkZXYsIG5ld19tciwgYXNpZCk7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMzNzMtXFx0XFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOTowMy41NzM1NjczNzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYzNTMwNzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1lbGxhbm94IERyaXZlcjogQSBQcmVsaW1pbmFyeSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBNZWxsYW5veCBkcml2ZXIuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBcIkNhbiB0aGlzIGJlIGZ1enplZD9cIiBNeSBleHBlcmllbmNlIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBtbHg1YCBzdWdnZXN0cyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgdHJpY2t5LiBUeXBpY2FsbHksIHlvdSBuZWVkIHRoZSBhY3R1YWwgaGFyZHdhcmUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhlc2UsIHVubGVzcyB0aGVyZSdzIGFuIGVtdWxhdG9yIGF2YWlsYWJsZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSXMgdGhlcmUgYW4gYG1seDVgIGVtdWxhdG9yIG91dCB0aGVyZT9cIiBRdWlja2x5IHNjYW5uaW5nIG15IG1lbnRhbCBtYXAgb2YgdGhlIGtlcm5lbCBsYW5kc2NhcGUsIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBsaWtlIHRoYXQgaW4gdGhlIGtlcm5lbCB0cmVlIGl0c2VsZi4gVGltZSB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBvZmZlciBzb21lIGtpbmQgb2YgdmlydHVhbCBpbnRlcmZhY2Ugb3IgdGVzdGluZyBob29rcy4gTWF5YmUgc29tZXRoaW5nIGxpa2UgYENPTkZJR19NTFg1X1ZEUEFfTkVUYCBvciBzaW1pbGFyLiBMZXQncyBzZWUgd2hhdCB0dXJucyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI1NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDA3OjI5OjA3LjAzNzEwMDk0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDA2MzAwOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1MWDVfVkRQQV9ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZHBhL21seDUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjk6MDcuMDk3MTczMzgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5ODU4MjkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFZEUEEgYW5kIE1lbGxhbm94IEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG9idmlvdXMgZmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzLiBHaXZlbiB0aGUgbWVudGlvbiBvZiBWRFBBLCBteSBicmFpbiBhdXRvbWF0aWNhbGx5IGp1bXBzIHRvIHRoZSBsaWtlbHkgbG9jYXRpb25zOiBJJ2xsIHN0YXJ0IHdpdGggdGhlIGdlbmVyYWwgVkRQQSBkaXJlY3RvcnksIHNvIGBkcml2ZXJzL3ZkcGEvS2NvbmZpZ2AgaXMgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2suIElmIEkgZG9uJ3QgZmluZCB3aGF0IEkgbmVlZCB0aGVyZSwgSSBrbm93IE1lbGxhbm94IGlzIGEgY29tbW9uIGltcGxlbWVudGF0aW9uLCBzbyBJJ2xsIHBpdm90IHRvIHRoZSBNZWxsYW5veC1zcGVjaWZpYyBWRFBBIGRpcmVjdG9yeSBuZXh0LCBjaGVja2luZyBgZHJpdmVycy92ZHBhL21seDUvS2NvbmZpZ2AuIEFuZCwgeW91IGtub3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGJlY2F1c2UgTWVsbGFub3ggaXMgYWxzbyBhbiBldGhlcm5ldCBkcml2ZXIgdmVuZG9yLCBpdCBjb3VsZCB2ZXJ5IHdlbGwgYmUgdGhhdCB0aGUgb3B0aW9ucyBJIGFtIGxvb2tpbmcgZm9yIGNhbiBiZSBmb3VuZCBieSBhbHNvIGNoZWNraW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZ2AuIEknbGwgbmVlZCB0byBleGFtaW5lIHRob3NlIGZpbGVzIGNsb3NlbHk7IEkgYW50aWNpcGF0ZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHJlbGV2YW50IGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGZvciBWRFBBIGFuZCBNZWxsYW5veCBoYXJkd2FyZS4gSSBleHBlY3QgdG8gYmUgYWJsZSB0byBuYXZpZ2F0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBmaW5kIHRoZSBvbmUgSSBuZWVkIGJhc2VkIG9uIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOToxMS4wOTU3NTg2MzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwODU2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUxYNV9WRFBBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmRwYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZHBhL0tjb25maWc9NDQ9Y29uZmlnIElGQ1ZGXFxuLS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy01Mi1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzo1Mzpjb25maWcgTUxYNV9WRFBBXFxuZHJpdmVycy92ZHBhL0tjb25maWctNTQtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy92ZHBhL0tjb25maWctNjAtXFxuZHJpdmVycy92ZHBhL0tjb25maWc6NjE6Y29uZmlnIE1MWDVfVkRQQV9ORVRcXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwidkRQQSBkcml2ZXIgZm9yIENvbm5lY3RYIGRldmljZXNcXFwiXFxuZHJpdmVycy92ZHBhL0tjb25maWc6NjM6XFx0c2VsZWN0IE1MWDVfVkRQQVxcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTY0LVxcdHNlbGVjdCBWSE9TVF9SSU5HXFxuLS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy03MS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzo3Mjpjb25maWcgTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHXFxuZHJpdmVycy92ZHBhL0tjb25maWctNzMtXFx0Ym9vbCBcXFwiZXhwb3NlIHN0ZWVyaW5nIGNvdW50ZXJzIG9uIGRlYnVnZnNcXFwiXFxuZHJpdmVycy92ZHBhL0tjb25maWc6NzQ6XFx0c2VsZWN0IE1MWDVfVkRQQVxcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTc1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmRwYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19JRkNWRikgICAgKz0gaWZjdmYvXFxuZHJpdmVycy92ZHBhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01MWDVfVkRQQSkgKz0gbWx4NS9cXG5kcml2ZXJzL3ZkcGEvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfVlBfVkRQQSkgICAgKz0gdmlydGlvX3BjaS9cXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L01ha2VmaWxlPTE9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjdHJlZSkvZHJpdmVycy92ZHBhL21seDUvY29yZVxcbmRyaXZlcnMvdmRwYS9tbHg1L01ha2VmaWxlLTItXFxuZHJpdmVycy92ZHBhL21seDUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTUxYNV9WRFBBX05FVCkgKz0gbWx4NV92ZHBhLm9cXG5kcml2ZXJzL3ZkcGEvbWx4NS9NYWtlZmlsZTo0Om1seDVfdmRwYS0kKENPTkZJR19NTFg1X1ZEUEFfTkVUKSArPSBuZXQvbWx4NV92bmV0Lm8gY29yZS9yZXNvdXJjZXMubyBjb3JlL21yLm8gbmV0L2RlYnVnLm9cXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmgtMy1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjQ6I2lmbmRlZiBfX01MWDVfVkRQQV9IX19cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjU6I2RlZmluZSBfX01MWDVfVkRQQV9IX19cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTYtXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oPTc1PWVudW0ge1xcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg6NzY6XFx0TUxYNV9WRFBBX0RBVEFWUV9HUk9VUCxcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjc3OlxcdE1MWDVfVkRQQV9DVlFfR1JPVVAsXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo3ODpcXHRNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVAsXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo3OTpcXHRNTFg1X1ZEUEFfTlVNVlFfR1JPVVBTXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaC04MC19O1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaD04Mj1lbnVtIHtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjgzOlxcdE1MWDVfVkRQQV9OVU1fQVMgPSAyXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaC04NC19O1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaD04Nj1zdHJ1Y3QgbWx4NV92ZHBhX21yX3Jlc291cmNlcyB7XFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo4NzpcXHRzdHJ1Y3QgbWx4NV92ZHBhX21yICptcltNTFg1X1ZEUEFfTlVNX0FTXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjg4OlxcdHVuc2lnbmVkIGludCBncm91cDJhc2lkW01MWDVfVkRQQV9OVU1WUV9HUk9VUFNdO1xcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmgtODktXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oPTE2Nj1pbnQgbWx4NV92ZHBhX2V4ZWNfYXN5bmNfY21kcyhzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTE4Ni1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjE4NzojZW5kaWYgLyogX19NTFg1X1ZEUEFfSF9fICovXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9MTI4PXN0YXRpYyB1NjQgbWFwbGVuKHN0cnVjdCB2aG9zdF9pb3RsYl9tYXAgKm1hcCwgc3RydWN0IG1seDVfdmRwYV9kaXJlY3RfbXIgKm1yKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTEzMi1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MTMzOiNkZWZpbmUgTUxYNV9WRFBBX0lOVkFMSURfU1RBUlRfQUREUiAoKHU2NCktMSlcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MTM0OiNkZWZpbmUgTUxYNV9WRFBBX0lOVkFMSURfTEVOICgodTY0KS0xKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xMzUtXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTEzNj1zdGF0aWMgdTY0IGluZGlyX3N0YXJ0X2FkZHIoc3RydWN0IG1seDVfdmRwYV9tciAqbWtleSlcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xNDEtXFx0aWYgKCFzKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzoxNDI6XFx0XFx0cmV0dXJuIE1MWDVfVkRQQV9JTlZBTElEX1NUQVJUX0FERFI7XFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTE0My1cXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz0xNDc9c3RhdGljIHU2NCBpbmRpcl9sZW4oc3RydWN0IG1seDVfdmRwYV9tciAqbWtleSlcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xNTMtXFx0aWYgKCFzKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzoxNTQ6XFx0XFx0cmV0dXJuIE1MWDVfVkRQQV9JTlZBTElEX0xFTjtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTU1LVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTIwND1zdGF0aWMgaW50IGtsbV9ieXRlX3NpemUoaW50IG5rbG1zKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTIwOC1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MjA5OiNkZWZpbmUgTUxYNV9WRFBBX01UVF9BTElHTiAxNlxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0yMTAtXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTIxMT1zdGF0aWMgaW50IGNyZWF0ZV9kaXJlY3Rfa2V5cyhzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm1yKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTIyNS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MjI2OlxcdFxcdG10dGxlbiA9IHJvdW5kdXAoTUxYNV9TVF9TWl9CWVRFUyhtdHQpICogZG1yLVxcdTAwM2Vuc2csIE1MWDVfVkRQQV9NVFRfQUxJR04pO1xcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0yMjctXFx0XFx0bXR0Y291bnQgPSBtdHRsZW4gLyBzaXplb2YoY21kX21lbS1cXHUwMDNlbXR0WzBdKTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz0zMjY9c3RhdGljIGludCBjcmVhdGVfaW5kaXJlY3Rfa2V5KHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldiwgc3RydWN0IG1seDVfdmRwYV9tciAqbXIpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMzM2LVxcdGxlbiA9IGluZGlyX2xlbihtcik7XFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjMzNzpcXHRpZiAoc3RhcnQgPT0gTUxYNV9WRFBBX0lOVkFMSURfU1RBUlRfQUREUiB8fCBsZW4gPT0gTUxYNV9WRFBBX0lOVkFMSURfTEVOKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0zMzgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9NjQyPXN0YXRpYyB2b2lkIF9tbHg1X3ZkcGFfZGVzdHJveV9tcihzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm1yKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTY2Mi0gKi9cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6NjYzOiNkZWZpbmUgTUxYNV9WRFBBX01SX0dDX1RSSUdHRVJfTVMgMjAwMFxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy02NjQtXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTY2NT1zdGF0aWMgdm9pZCBtbHg1X3ZkcGFfbXJfZ2NfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtNjc2LVxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhtcmVzLVxcdTAwM2V3cV9nYywgXFx1MDAyNm1yZXMtXFx1MDAzZWdjX2R3b3JrX2VudCxcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6Njc3OlxcdFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoTUxYNV9WRFBBX01SX0dDX1RSSUdHRVJfTVMpKTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtNjc4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz02OTA9c3RhdGljIHZvaWQgX21seDVfdmRwYV9wdXRfbXIoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTcwMC1cXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsobXJlcy1cXHUwMDNld3FfZ2MsIFxcdTAwMjZtcmVzLVxcdTAwM2VnY19kd29ya19lbnQsXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjcwMTpcXHRcXHRcXHRcXHQgICBtc2Vjc190b19qaWZmaWVzKE1MWDVfVkRQQV9NUl9HQ19UUklHR0VSX01TKSk7XFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTcwMi1cXHR9XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9NzYxPXZvaWQgbWx4NV92ZHBhX2NsZWFuX21ycyhzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtNzY1LVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzo3NjY6XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBNTFg1X1ZEUEFfTlVNX0FTOyBpKyspXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTc2Ny1cXHRcXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBOVUxMLCBpKTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz04NDA9aW50IG1seDVfdmRwYV91cGRhdGVfY3ZxX2lvdGxiKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy04NDUtXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjg0NjpcXHRpZiAobXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfQ1ZRX0dST1VQXSAhPSBhc2lkKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy04NDctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9ODcyPWludCBtbHg1X3ZkcGFfcmVzZXRfbXIoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LCB1bnNpZ25lZCBpbnQgYXNpZClcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtODczLXtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6ODc0OlxcdGlmIChhc2lkIFxcdTAwM2U9IE1MWDVfVkRQQV9OVU1fQVMpXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTg3NS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9kZWJ1Zy5jPTQ2PXZvaWQgbWx4NV92ZHBhX2FkZF9yeF9mbG93X3RhYmxlKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L2RlYnVnLmMtNTEtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L2RlYnVnLmM6NTI6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvZGVidWcuYy01My1zdGF0aWMgaW50IHBhY2tldHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9Mjk3PXN0YXRpYyB2b2lkIGRlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMwMS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzAyOiNkZWZpbmUgTUxYNV9WRFBBX0NRRV9TSVpFIDY0XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMwMzojZGVmaW5lIE1MWDVfVkRQQV9MT0dfQ1FFX1NJWkUgaWxvZzIoTUxYNV9WRFBBX0NRRV9TSVpFKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDQtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTMwNT1zdGF0aWMgaW50IGNxX2ZyYWdfYnVmX2FsbG9jKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LCBzdHJ1Y3QgbWx4NV92ZHBhX2NxX2J1ZiAqYnVmLCBpbnQgbmVudClcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDctXFx0c3RydWN0IG1seDVfZnJhZ19idWYgKmZyYWdfYnVmID0gXFx1MDAyNmJ1Zi1cXHUwMDNlZnJhZ19idWY7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMwODpcXHR1OCBsb2dfd3Ffc3RyaWRlID0gTUxYNV9WRFBBX0xPR19DUUVfU0laRTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzA5OlxcdHU4IGxvZ193cV9zeiA9IE1MWDVfVkRQQV9MT0dfQ1FFX1NJWkU7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxMC1cXHRpbnQgZXJyO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMTEtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMxMjpcXHRlcnIgPSBtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUobmRldi1cXHUwMDNlbXZkZXYubWRldiwgbmVudCAqIE1MWDVfVkRQQV9DUUVfU0laRSwgZnJhZ19idWYsXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxMy1cXHRcXHRcXHRcXHQgICAgICAgbmRldi1cXHUwMDNlbXZkZXYubWRldi1cXHUwMDNlcHJpdi5udW1hX25vZGUpO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxOC1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzE5OlxcdGJ1Zi1cXHUwMDNlY3FlX3NpemUgPSBNTFg1X1ZEUEFfQ1FFX1NJWkU7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMyMC1cXHRidWYtXFx1MDAzZW5lbnQgPSBuZW50O1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTg3Nj1zdGF0aWMgaW50IGNyZWF0ZV92aXJ0cXVldWUoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQxLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo5NDI6XFx0XFx0dnFfbXIgPSBtdmRldi1cXHUwMDNlbXJlcy5tclttdmRldi1cXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfR1JPVVBdXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQzLVxcdFxcdGlmICh2cV9tcilcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NDUtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjk0NjpcXHRcXHR2cV9kZXNjX21yID0gbXZkZXYtXFx1MDAzZW1yZXMubXJbbXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQ3LVxcdFxcdGlmICh2cV9kZXNjX21yIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTUzLVxcdFxcdCAqL1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo5NTQ6XFx0XFx0dnFfbXIgPSBtdmRldi1cXHUwMDNlbXJlcy5tclttdmRldi1cXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfR1JPVVBdXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTU1LVxcdFxcdGlmICh2cV9tcilcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NTctXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjk1ODpcXHRcXHR2cV9kZXNjX21yID0gbXZkZXYtXFx1MDAzZW1yZXMubXJbbXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTU5LVxcdFxcdGlmICh2cV9kZXNjX21yKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTEzMDQ9c3RhdGljIHZvaWQgZmlsbF9tb2RpZnlfdmlydHF1ZXVlX2NtZChzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzU0LVxcdGlmIChtdnEtXFx1MDAzZW1vZGlmaWVkX2ZpZWxkcyBcXHUwMDI2IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfVklSVElPX1FfTUtFWSkge1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxMzU1OlxcdFxcdHZxX21yID0gbXZkZXYtXFx1MDAzZW1yZXMubXJbbXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0dST1VQXV07XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzNTYtXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM2My1cXHRpZiAobXZxLVxcdTAwM2Vtb2RpZmllZF9maWVsZHMgXFx1MDAyNiBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWSkge1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxMzY0OlxcdFxcdGRlc2NfbXIgPSBtdmRldi1cXHUwMDNlbXJlcy5tclttdmRldi1cXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfREVTQ19HUk9VUF1dO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzY1LVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTEzNzU9c3RhdGljIHZvaWQgbW9kaWZ5X3ZpcnRxdWV1ZV9lbmQoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM4MS1cXHRpZiAobXZxLVxcdTAwM2Vtb2RpZmllZF9maWVsZHMgXFx1MDAyNiBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX1ZJUlRJT19RX01LRVkpIHtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTM4MjpcXHRcXHR1bnNpZ25lZCBpbnQgYXNpZCA9IG12ZGV2LVxcdTAwM2VtcmVzLmdyb3VwMmFzaWRbTUxYNV9WRFBBX0RBVEFWUV9HUk9VUF07XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzODMtXFx0XFx0c3RydWN0IG1seDVfdmRwYV9tciAqdnFfbXIgPSBtdmRldi1cXHUwMDNlbXJlcy5tclthc2lkXTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzkwLVxcdGlmIChtdnEtXFx1MDAzZW1vZGlmaWVkX2ZpZWxkcyBcXHUwMDI2IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfREVTQ19HUk9VUF9NS0VZKSB7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjEzOTE6XFx0XFx0dW5zaWduZWQgaW50IGFzaWQgPSBtdmRldi1cXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfREVTQ19HUk9VUF07XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzOTItXFx0XFx0c3RydWN0IG1seDVfdmRwYV9tciAqZGVzY19tciA9IG12ZGV2LVxcdTAwM2VtcmVzLm1yW2FzaWRdO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTE0NTY9c3RhdGljIHZvaWQgYWxsb2NfdmVjdG9yKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE0NjYtXFx0XFx0aWYgKCFlbnQtXFx1MDAzZXVzZWQpIHtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTQ2NzpcXHRcXHRcXHRzbnByaW50ZihlbnQtXFx1MDAzZW5hbWUsIE1MWDVfVkRQQV9JUlFfTkFNRV9MRU4sIFxcXCIlcy12cS0lZFxcXCIsXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE0NjgtXFx0XFx0XFx0XFx0IGRldl9uYW1lKFxcdTAwMjZuZGV2LVxcdTAwM2VtdmRldi52ZGV2LmRldiksIG12cS1cXHUwMDNlaW5kZXgpO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTE4NTg9c3RhdGljIHZvaWQgZGVzdHJveV90aXIoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTg2Ni1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTg2NzojaWYgZGVmaW5lZChDT05GSUdfTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xODY4LSAgICAgICAjZGVmaW5lIE5VTV9ERVNUUyAyXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MTg3Mz1zdGF0aWMgaW50IGFkZF9zdGVlcmluZ19jb3VudGVycyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xODc3LXtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTg3ODojaWYgZGVmaW5lZChDT05GSUdfTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xODc5LVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MTkwMz1zdGF0aWMgdm9pZCByZW1vdmVfc3RlZXJpbmdfY291bnRlcnMoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTkwNS17XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjE5MDY6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTkwNy1cXHRtbHg1X2ZjX2Rlc3Ryb3kobmRldi1cXHUwMDNlbXZkZXYubWRldiwgbm9kZS1cXHUwMDNlbWNhc3RfY291bnRlci5jb3VudGVyKTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0xOTEyPXN0YXRpYyBpbnQgbWx4NV92ZHBhX2FkZF9tYWNfdmxhbl9ydWxlcyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldiwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xOTUxLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxOTUyOiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NTMtXFx0ZGVzdHNbMV0uY291bnRlciA9IG5vZGUtXFx1MDAzZXVjYXN0X2NvdW50ZXIuY291bnRlcjtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xOTYwLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxOTYxOiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NjItXFx0ZGVzdHNbMV0uY291bnRlciA9IG5vZGUtXFx1MDAzZW1jYXN0X2NvdW50ZXIuY291bnRlcjtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0yNjUyPXN0YXRpYyB1MzIgbWx4NV92ZHBhX2dldF92cV9ncm91cChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYsIHUxNiBpZHgpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjY1Ni1cXHRpZiAoaXNfY3RybF92cV9pZHgobXZkZXYsIGlkeCkpXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjI2NTc6XFx0XFx0cmV0dXJuIE1MWDVfVkRQQV9DVlFfR1JPVVA7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NTgtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjI2NTk6XFx0cmV0dXJuIE1MWDVfVkRQQV9EQVRBVlFfR1JPVVA7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NjAtfVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTI2NjI9c3RhdGljIHUzMiBtbHg1X3ZkcGFfZ2V0X3ZxX2Rlc2NfZ3JvdXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2LCB1MTYgaWR4KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NjYtXFx0aWYgKGlzX2N0cmxfdnFfaWR4KG12ZGV2LCBpZHgpKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyNjY3OlxcdFxcdHJldHVybiBNTFg1X1ZEUEFfQ1ZRX0dST1VQO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0yNjY4LVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyNjY5OlxcdHJldHVybiBNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVA7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NzAtfVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTI5NTI9c3RhdGljIHZvaWQgbWx4NV92ZHBhX3NldF9jb25maWdfY2Ioc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2LCBzdHJ1Y3QgdmRwYV9jYWxsYmFjayAqY2IpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjk1OS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6Mjk2MDojZGVmaW5lIE1MWDVfVkRQQV9NQVhfVlFfRU5UUklFUyAyNTZcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjk2MS1zdGF0aWMgdTE2IG1seDVfdmRwYV9nZXRfdnFfbnVtX21heChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjIte1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyOTYzOlxcdHJldHVybiBNTFg1X1ZEUEFfTUFYX1ZRX0VOVFJJRVM7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjQtfVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTMyNDU9c3RhdGljIHZvaWQgaW5pdF9ncm91cF90b19hc2lkX21hcChzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzI0OS1cXHQvKiBkZWZhdWx0IG1hcHBpbmcgYWxsIGdyb3VwcyBhcmUgbWFwcGVkIHRvIGFzaWQgMCAqL1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMjUwOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNTFg1X1ZEUEFfTlVNVlFfR1JPVVBTOyBpKyspXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMyNTEtXFx0XFx0bXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtpXSA9IDA7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzM0OD1zdGF0aWMgaW50IHNldF9tYXBfZGF0YShzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCB2aG9zdF9pb3RsYiAqaW90bGIsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzM1My1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzM1NDpcXHRpZiAoYXNpZCBcXHUwMDNlPSBNTFg1X1ZEUEFfTlVNX0FTKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMzU1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTM2NTI9c3RhdGljIGludCBtbHg1X3NldF9ncm91cF9hc2lkKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRldiwgdTMyIGdyb3VwLFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM2NjAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2bXZkZXYtXFx1MDAzZW1yZXMubG9jayk7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM2NjE6XFx0aWYgKGdyb3VwID09IE1MWDVfVkRQQV9DVlFfR1JPVVAgXFx1MDAyNlxcdTAwMjYgbXZkZXYtXFx1MDAzZW1yZXMubXJbYXNpZF0pXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM2NjItXFx0XFx0ZXJyID0gbWx4NV92ZHBhX3VwZGF0ZV9jdnFfaW90bGIobXZkZXYsIG12ZGV2LVxcdTAwM2VtcmVzLm1yW2FzaWRdLVxcdTAwM2Vpb3RsYiwgYXNpZCk7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzgwNT1zdGF0aWMgdm9pZCBhbGxvY2F0ZV9pcnFzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4MjMtXFx0XFx0ZW50ID0gbmRldi1cXHUwMDNlaXJxcC5lbnRyaWVzICsgaTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzgyNDpcXHRcXHRzbnByaW50ZihlbnQtXFx1MDAzZW5hbWUsIE1MWDVfVkRQQV9JUlFfTkFNRV9MRU4sIFxcXCIlcy12cS0lZFxcXCIsXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4MjUtXFx0XFx0XFx0IGRldl9uYW1lKFxcdTAwMjZuZGV2LVxcdTAwM2VtdmRldi52ZGV2LmRldiksIGkpO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTM4MzQ9c3RhdGljIGludCBtbHg1X3ZkcGFfZGV2X2FkZChzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4OTUtXFx0bmRldiA9IHZkcGFfYWxsb2NfZGV2aWNlKHN0cnVjdCBtbHg1X3ZkcGFfbmV0LCBtdmRldi52ZGV2LCBtZGV2LVxcdTAwM2VkZXZpY2UsIFxcdTAwMjZtZ3RkZXYtXFx1MDAzZXZkcGFfb3BzLFxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozODk2OlxcdFxcdFxcdFxcdCBOVUxMLCBNTFg1X1ZEUEFfTlVNVlFfR1JPVVBTLCBNTFg1X1ZEUEFfTlVNX0FTLCBuYW1lLCBmYWxzZSk7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4OTctXFx0aWYgKElTX0VSUihuZGV2KSlcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaD0yND1zdGF0aWMgaW5saW5lIHUxNiBrZXkydmlkKHU2NCBrZXkpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtMjgtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oOjI5OiNkZWZpbmUgTUxYNV9WRFBBX0lSUV9OQU1FX0xFTiAzMlxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC0zMC1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg9MzE9c3RydWN0IG1seDVfdmRwYV9pcnFfcG9vbF9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtMzMtXFx0Ym9vbCB1c2VkO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaDozNDpcXHRjaGFyIG5hbWVbTUxYNV9WRFBBX0lSUV9OQU1FX0xFTl07XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oLTM1LVxcdHZvaWQgKmRldl9pZDtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaD04Nj1zdHJ1Y3QgbWFjdmxhbl9ub2RlIHtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC05Mi1cXHRib29sIHRhZ2dlZDtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg6OTM6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtOTQtXFx0c3RydWN0IGRlbnRyeSAqZGVudDtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaD0xMDU9dm9pZCBtbHg1X3ZkcGFfcmVtb3ZlX3Rpcm4oc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYpO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaDoxMDY6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtMTA3LXZvaWQgbWx4NV92ZHBhX2FkZF9yeF9jb3VudGVycyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjk6MTEuMTUzODUwNjg2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQzOTAzOTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNTFg1X1ZEUEFfTkVUIERyaXZlcjogQSBWaXJ0dWFsaXphdGlvbiBDaGFsbGVuZ2UqKlxuXG5Pa2F5LCBzbyB0aGUgdGFzayBpcyB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGVmZmVjdGl2ZWx5IGZ1enogdGhlIGBNTFg1X1ZEUEFfTkVUYCBkcml2ZXIuIFRoaXMgaXMgaW50ZXJlc3RpbmcsIGdpdmVuIG15IGJhY2tncm91bmQuIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJDYW4gSSBldmVuIHRvdWNoIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCIgTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQgYE1MWDVgIGRyaXZlcnMgYXJlIHVzdWFsbHkgdGlnaHRseSBjb3VwbGVkIHdpdGggTWVsbGFub3ggaGFyZHdhcmUuIFRoYXQncyB0aGUgdHlwaWNhbCBzZXR1cC5cblxuVGhlbiBJIHJlbWVtYmVyIFN5emthbGxlci4gSXQgaGFzIHRoaXMgcmVwdXRhdGlvbiBmb3IgYmVpbmcgY2xldmVyIGFib3V0IGluaXRpYWxpemluZyBkcml2ZXJzLiBCdXQgdGhhdCdzIG9ubHkgZWZmZWN0aXZlIGlmIGl0ICpjYW4qIGluaXRpYWxpemUgdGhlbS4gSWYgdGhpcyBkcml2ZXIgZGVtYW5kcyBhIHJlYWwgUENJIGRldmljZSwgSSdtIHN0dWNrLiBJdCB3b24ndCBiZSByZWFjaGFibGUuXG5cblNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgc29mdHdhcmUgZW11bGF0aW9uIGluIFN5emthbGxlciBvciB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuIEFueSB0cmlja3MgdG8gZm9vbCB0aGUgc3lzdGVtIGludG8gdGhpbmtpbmcgaXQgaGFzIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUuIEhtbS4uLiBub3RoaW5nIGp1bXBzIG91dC5cblxuV2FpdCBhIG1pbnV0ZSwgSSBzZWUgc29tZXRoaW5nLiBUaGUgZXhpc3RlbmNlIG9mIGEgYHN5ei1jbHVzdGVyYCBhdXRob3IgaW4gdGhlIHBhdGNoIGhpc3RvcnkgaW5kaWNhdGVzIGVpdGhlciBTeXprYWxsZXIgc3VjY2Vzc2Z1bGx5IGZvdW5kIGEgYnVnIG9yIHNvbWVvbmUgc3VibWl0dGVkIGEgcGF0Y2ggdG8gaGF2ZSBpdCBldmFsdWF0ZWQgaW4gc3l6a2FsbGVyLlxuXG5SaWdodCwgdGhlbiBJIHNlZSB0aGUgcHJvbXB0OiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGF0J3Mgd2hhdCBJIGFtIHRyeWluZyB0byBkZXRlcm1pbmUgaWYgdGhpcyBhcHBsaWVzLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2suIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY2AuIENsZWFybHksIHRoaXMgaXMgYSBkcml2ZXIgZm9yIE1lbGxhbm94IENvbm5lY3RYIGRldmljZXMsIHdoaWNoIGlzIGEgYml0IG9mIGEgY2x1ZS4gQnV0IGRvZXMgaXQgbWVhbiBpdCBpcyB1bnJlYWNoYWJsZSwgb3IgY2FuIHRoZSBkcml2ZXIgYmUgdXNlZCBpbiB2aXJ0dWFsaXphdGlvbi5cblxuTm93IGl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZS4gVGltZSB0byBzdGFydCB3aXRoIHRoZSBwcm9iZSBmdW5jdGlvbiBpbiBgbWx4NV92bmV0LmNgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg5NSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOToxOC41OTI4OTM4MzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDgwODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfdmRwYV9kZXZfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzgwNT1zdGF0aWMgdm9pZCBhbGxvY2F0ZV9pcnFzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4MzMtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM4MzQ6c3RhdGljIGludCBtbHg1X3ZkcGFfZGV2X2FkZChzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBjb25zdCBjaGFyICpuYW1lLFxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zODM1LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHZkcGFfZGV2X3NldF9jb25maWcgKmFkZF9jb25maWcpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9NDA5MD1zdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfbWdtdGRldl9vcHMgbWRldl9vcHMgPSB7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjQwOTE6XFx0LmRldl9hZGQgPSBtbHg1X3ZkcGFfZGV2X2FkZCxcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDA5Mi1cXHQuZGV2X2RlbCA9IG1seDVfdmRwYV9kZXZfZGVsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOToxOC42NTAzODIxM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ0OTY2ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBwcm9jZXNzLCB0aGlua2luZyB0aHJvdWdoIGl0IGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBtbHg1IHZEUEEgRGV2aWNlIEFkZGl0aW9uKipcblxuQWxyaWdodCwgc28gYG1seDVfdmRwYV9kZXZfYWRkYC4gVGhpcyBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGFuZCBJJ20gaW5zdGFudGx5IHRoaW5raW5nIGFib3V0IGl0cyBwbGFjZSBpbiB0aGUgbGlmZWN5Y2xlIG9mIHRoaXMgdkRQQSBzZXR1cC4gVGhlIGZhY3QgdGhhdCBpdCdzIGNhbGxlZCB2aWEgYHZkcGFfbWdtdGRldl9vcHNgIGlzIHRoZSBmaXJzdCBrZXkgaW5kaWNhdG9yLiBJJ20gaW1tZWRpYXRlbHkgcGljdHVyaW5nIHRoZSB2RFBBIG1hbmFnZW1lbnQgbGF5ZXIsIHRoZSBjb3JlIGZyYW1ld29yay4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHRoZSBicmlkZ2UsIHRoZSB3YXkgd2UncmUgYWN0dWFsbHkgY3JlYXRpbmcgYW5kIGVuYWJsaW5nIGEgdkRQQSBkZXZpY2UgdXNpbmcgdGhlIG1seDUgaGFyZHdhcmUuIEkgY2FuIGluZmVyIGZyb20gdGhhdCwgdGhhdCBgdmRwYV9tZ210ZGV2X29wc2AgaXMgdGhlIG1lY2hhbmlzbSBieSB3aGljaCB0aGUgdkRQQSBjb3JlIGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgaW4gdGhpcyBjYXNlLCB0aGUgYG1seDVgIGltcGxlbWVudGF0aW9uLlxuXG5UaGVuLCB0aGUgc2Vjb25kIHBpZWNlLiBgbWx4NV92ZHBhX25ldF9wcm9iZWAgaXMgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZSBtYW5hZ2VtZW50IGRldmljZS4gVGhpcyBpcyB0aGUgaW5pdGlhbCBzdGVwLCB0aGUgXCJkaXNjb3ZlcnlcIiBwaGFzZSBpZiB5b3Ugd2lsbC4gVGhlIGBuZXRfcHJvYmVgIHN1Z2dlc3RzIGl0J3MgbGlrZWx5IGNhbGxlZCBkdXJpbmcgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIHNldHVwIG9yIHBlcmhhcHMgZHVyaW5nIGEgaG90cGx1ZyBldmVudC4gVGhpcyByZWdpc3RyYXRpb24gaXMgdGhlIHByZWN1cnNvciB0byBgbWx4NV92ZHBhX2Rldl9hZGRgLiBXZSBhcmUgZ2V0dGluZyB0aGUgXCJkZXZpY2VcIiByZWdpc3RlcmVkLCBhbmQgdGhlbiB3aGVuIHRoYXQgZGV2aWNlIHdhbnRzIHRvIGNvbWUgdXAsIHRoZSBgbWx4NV92ZHBhX2Rldl9hZGRgIHdpbGwgYmUgY2FsbGVkLiBJdCdzIHRoZSBcImRldmljZSBiZWluZyBvbmxpbmVcIiBraW5kIG9mIG9wZXJhdGlvbi5cblxuU28sIGluIGVzc2VuY2UsIEkgc2VlIHRoaXMgYXM6IDEpIGBtbHg1X3ZkcGFfbmV0X3Byb2JlYCBpZGVudGlmaWVzIGFuZCByZWdpc3RlcnMgdGhlIHVuZGVybHlpbmcgbWx4NSBoYXJkd2FyZSBhcyBhIHBvdGVudGlhbCB2RFBBIG1hbmFnZW1lbnQgZGV2aWNlLiAyKSBMYXRlciwgd2hlbiBhIHZEUEEgZGV2aWNlIG5lZWRzIHRvIGJlIGFjdGl2ZWx5IHVzZWQgKGUuZy4gYSBWTSBjb25uZWN0cyB0byBpdCksIHRoZSBtYW5hZ2VtZW50IGZyYW1ld29yayB1c2VzIGl0cyBgdmRwYV9tZ210ZGV2X29wc2AgdG8gY2FsbCBgbWx4NV92ZHBhX2Rldl9hZGRgLCB3aGljaCBwcmVzdW1hYmx5IGFsbG9jYXRlcyB0aGUgcmVzb3VyY2VzLCBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgcXVldWVzLCBhbmQgbGlua3MgdGhlIHZEUEEgZnJvbnRlbmQgd2l0aCB0aGUgbWx4NSBiYWNrZW5kLCBtYWtpbmcgdGhlIGRldmljZSBvcGVyYXRpb25hbC4gSXQncyBhIGNsZWFuIHNlcGFyYXRpb24gb2YgY29uY2VybnM6IGRpc2NvdmVyeSBhbmQgaW5pdGlhbCBzZXR1cCAocHJvYmUpIHZzLiBhY3R1YWwgZGV2aWNlIGFjdGl2YXRpb24uIEl0J3MgYSB3ZWxsLXN0cnVjdHVyZWQgYXBwcm9hY2gsIGFuZCBJIGNhbiBzdGFydCB0byB2aXN1YWxpemUgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSB2RFBBIGNvcmUsIHRoZSBtYW5hZ2VtZW50IGludGVyZmFjZSwgYW5kIHRoZSBtbHg1IGhhcmR3YXJlLiBJJ2Qgd2FudCB0byBkaWcgaW50byBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkLCBob3cgdGhlIHF1ZXVlcyBhcmUgZXN0YWJsaXNoZWQsIGFuZCBob3cgdGhlIGRhdGEgZmxvdyBpcyBvcmNoZXN0cmF0ZWQsIGJ1dCBhdCB0aGlzIGhpZ2ggbGV2ZWwsIHRoYXQgbWFrZXMgY29tcGxldGUgc2Vuc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTE4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjk6MjMuMzk1MzUzMzIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTIzMTM0OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV92ZHBhX25ldF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDA3OjI5OjIzLjQ1NDU5NDc1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODQwMTQ4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBzZWFyY2ggdGVybXM6XG5cbioqRGVsdmluZyBpbnRvIERldmljZSBEcml2ZXIgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiBoZXJlLiBUaGUgZmlyc3QgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIG9wZXJhdGlvbnMuIEknbSB0aGlua2luZyBhYm91dCBlaXRoZXIgbG9va2luZyBmb3IgYG1kZXZfb3BzYCBvciBgcHJvYmVgLiBCb3RoIG9mIHRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cywgcmlnaHQ/IGBtZGV2X29wc2AgZ2l2ZXMgbWUgYSBnb29kIGNoYW5jZSBvZiBmaW5kaW5nIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGZvciB0aGUgc3BlY2lmaWMgZGV2aWNlLCB0aGUgaGFuZGxlcnMgaWYgeW91IHdpbGwsIGxpa2UgcmVhZCwgd3JpdGUsIGlvY3RsLCB0aGUgd2hvbGUgc2hlYmFuZy4gSXQgd2lsbCBiZSB0aGUgXCJnbHVlXCIgdGhhdCBob29rcyBtZSBpbnRvIHRoZSBoYXJkd2FyZSBjYWxscy5cblxuT24gdGhlIG90aGVyIGhhbmQsIGBwcm9iZWAgaXMgd2hlcmUgdGhlIGRldmljZSBpcyBhY3R1YWxseSBpbml0aWFsaXplZCBhbmQgaWRlbnRpZmllZCwgdGhlIGZpcnN0IHN0ZXBzIGEgZHJpdmVyIHRha2VzLiBJdCdzIG9mdGVuIHRoZSBzdGFydCBvZiBmaWd1cmluZyBvdXQgd2hhdCBraW5kIG9mIGhhcmR3YXJlIEkgYW0gZGVhbGluZyB3aXRoLCB3aGF0IHJlc291cmNlcyBpdCBuZWVkcywgYW5kIGhvdyB0byBjb25uZWN0IHRvIGl0IGluIHRoZSBzeXN0ZW0uIEdldHRpbmcgdGhlIHByb2JlIGZ1bmN0aW9uIHJpZ2h0IGlzIGNyaXRpY2FsIGZvciB0aGUga2VybmVsIHRvIHNlZSB0aGUgZGV2aWNlLiBcblxuRGVwZW5kaW5nIG9uIHdoYXQgSSBhbSB0cnlpbmcgdG8gdW5kZXJzdGFuZCwgZWl0aGVyIG9uZSBjb3VsZCBiZSB0aGUga2V5IHRvIHVubG9ja2luZyB0aGUgbXlzdGVyaWVzIG9mIHRoaXMgZHJpdmVyLiBMZXQncyBzZWUgd2hhdCB0aGUgcmVzdWx0cyBicmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NjAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOToyNy4xMzg2MTI0NTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjkyNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kZXZfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9NDA1Nz1zdGF0aWMgaW50IG1seDVfdmRwYV9zZXRfYXR0cihzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBzdHJ1Y3QgdmRwYV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy00MDg5LVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo0MDkwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdmRwYV9tZ210ZGV2X29wcyBtZGV2X29wcyA9IHtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDA5MS1cXHQuZGV2X2FkZCA9IG1seDVfdmRwYV9kZXZfYWRkLFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTQxMDE9c3RhdGljIGludCBtbHg1dl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy00MTEzLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo0MTE0OlxcdG1ndGRldi1cXHUwMDNlbWd0ZGV2Lm9wcyA9IFxcdTAwMjZtZGV2X29wcztcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDExNS1cXHRtZ3RkZXYtXFx1MDAzZW1ndGRldi5kZXZpY2UgPSBtZGV2LVxcdTAwM2VkZXZpY2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDA3OjI5OjI3LjE5NjMxMjIzMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTQ0MjE0MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBtbHg1dl9wcm9iZWAgUGF0aCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBgbWx4NXZfcHJvYmVgLCBhbiBhdXhpbGlhcnkgZGV2aWNlIHByb2JlLiBUaGlzIGlzIGNyZWF0ZWQgYnkgdGhlIGBtbHg1YCBjb3JlIGRyaXZlciwgd2hpY2ggcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlYC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhlIGBtbHg1YCBjb3JlIGRyaXZlciAqcmVxdWlyZXMqIGEgZ2VudWluZSBQQ0kgZGV2aWNlLiBUaGVyZSdzIG5vIHVwc3RyZWFtIGtlcm5lbCBlbXVsYXRpb24gZm9yIGBtbHg1YC4gVGhhdCBtZWFucyB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCBpcyBmdW5kYW1lbnRhbGx5IGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB1bmxlc3Mgd2UncmUgZG9pbmcgUENJIHBhc3N0aHJvdWdoIG9mIGEgcmVhbCBNZWxsYW5veCBkZXZpY2UuXG5cblNpbmNlIHN5emthbGxlciBydW5zIGluIFFFTVUvR0NFLCBhbmQgaXQncyBub3QgZ29pbmcgdG8gaGF2ZSBhIHJlYWwgTWVsbGFub3ggY2FyZCwgdGhlIGBtbHg1dl9wcm9iZWAgZnVuY3Rpb24gd29uJ3QgYmUgdHJpZ2dlcmVkLCBhbmQgdGhlcmVmb3JlIHRoZSBgbWx4NV92ZHBhX2NoYW5nZV9tYXBgIGZ1bmN0aW9uLCB0aGF0IHRoZSBvcmlnaW5hbCBjb2RlIGlzIGRlYWxpbmcgd2l0aCwgaXMgdW5yZWFjaGFibGUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBydWxlIG91dCBhbnkgc29mdHdhcmUgZXF1aXZhbGVudHMuIElzIHRoZXJlIGEgYG5ldGRldnNpbWAtc3R5bGUgZW11bGF0aW9uIGZvciBgbWx4NWA/IE5vLiBPa2F5LCB3aGF0IGFib3V0IGB2ZHBhX3NpbWA/IENvdWxkIHRoYXQgYmUgYSB0cmlnZ2VyPyBObywgYmVjYXVzZSBgdmRwYV9zaW1gIGlzIGEgc2VwYXJhdGUgZHJpdmVyLCBgZHJpdmVycy92ZHBhL3ZkcGFfc2ltL2AsIGFuZCBpdCBkb2Vzbid0IGV2ZW4gdG91Y2ggYG1seDVfdm5ldC5jYC4gU28gYG1seDVfdm5ldC5jYCBpcyBleGNsdXNpdmVseSB0aWVkIHRvIE1lbGxhbm94IGhhcmR3YXJlLlxuXG5BbHJpZ2h0LCBub3cgbGV0J3MgY29uZmlybSB0aGUgYFdvcnRoRnV6emluZ2AgZGVjaXNpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgcmlnaHQgY2FsbC4gVGhlIGd1aWRlbGluZXMgc2F5LCBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFRoYXQgYXBwbGllcyBwZXJmZWN0bHkgaGVyZS4gTWVsbGFub3ggaGFyZHdhcmUgZHJpdmVycyBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuXG5cblNvLCBoZXJlJ3MgbXkgcmVhc29uaW5nLCBhbmQgdGhpcyBpcyB3aGF0IEknbSBnb2luZyB0byBkb2N1bWVudDogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDUgdkRQQSBkcml2ZXIgKGBkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNgKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lbGxhbm94IENvbm5lY3RYIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsIG9yIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkgdXNlZCBieSBzeXprYWxsZXIuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUuXCJcblxuVGhlcmVmb3JlLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxODcsIk91dHB1dFRva2VucyI6MTI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDA3OjI5OjM1Ljc0MDUyOTA3NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow56zlc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 06:56:52 +0000 UTC FinishedAt: 2026-07-16 07:29:37 +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+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2YzVjZmY4ZmU2OWE5Y2EzYTBjMGQxYjYyZGEyYWQzN2I4YWZiZGVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMDc6Mjg6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jIGIvZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jXG5pbmRleCBhZDBkNWZiYmJjYTg0OC4uOGE2ZGRjMDBiOGUwNzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1xuQEAgLTMwNjcsMjQgJiM0MzszMDY3LDI4IEBAIHN0YXRpYyBpbnQgbWx4NV92ZHBhX2NoYW5nZV9tYXAoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LFxuIFx0XHR0ZWFyZG93bl92cV9yZXNvdXJjZXMobmRldik7XG4gXHR9XG4gXG4tXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xuLVxuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG12ZGV2LVx1MDAzZW1heF92cXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRuZGV2LVx1MDAzZXZxc1tpXS5tb2RpZmllZF9maWVsZHMgfD0gTUxYNV9WSVJUUV9NT0RJRllfTUFTS19WSVJUSU9fUV9NS0VZIHxcbiBcdFx0XHRcdFx0XHRNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWTtcbiBcbiBcdGlmICghKG12ZGV2LVx1MDAzZXN0YXR1cyBcdTAwMjYgVklSVElPX0NPTkZJR19TX0RSSVZFUl9PSykgfHwgbXZkZXYtXHUwMDNlc3VzcGVuZGVkKVxuLVx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdGdvdG8gZG9uZTtcbiBcbiBcdGlmICh0ZWFyZG93bikge1xuIFx0XHRyZXN0b3JlX2NoYW5uZWxzX2luZm8obmRldik7XG4gXHRcdGVyciA9IHNldHVwX3ZxX3Jlc291cmNlcyhuZGV2LCB0cnVlKTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0XHRnb3RvIG91dF9lcnI7XG4gXHR9XG4gXG4gXHRyZXN1bWVfdnFzKG5kZXYsIDAsIG5kZXYtXHUwMDNlY3VyX251bV92cXMpO1xuJiM0MztcdGdvdG8gZG9uZTtcbiBcbiYjNDM7b3V0X2VycjpcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7ZG9uZTpcbiYjNDM7XHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZjNWNmZjhmZTY5YTljYTNhMGMwZDFiNjJkYTJhZDM3YjhhZmJkZWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAwNzoyODo1NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyBiL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYwppbmRleCBhZDBkNWZiYmJjYTg0OC4uOGE2ZGRjMDBiOGUwNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMKQEAgLTMwNjcsMjQgJiM0MzszMDY3LDI4IEBAIHN0YXRpYyBpbnQgbWx4NV92ZHBhX2NoYW5nZV9tYXAoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LAogCQl0ZWFyZG93bl92cV9yZXNvdXJjZXMobmRldik7CiAJfQogCi0JbWx4NV92ZHBhX3VwZGF0ZV9tcihtdmRldiwgbmV3X21yLCBhc2lkKTsKLQogCWZvciAoaW50IGkgPSAwOyBpICZsdDsgbXZkZXYtJmd0O21heF92cXM7IGkmIzQzOyYjNDM7KQogCQluZGV2LSZndDt2cXNbaV0ubW9kaWZpZWRfZmllbGRzIHw9IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfVklSVElPX1FfTUtFWSB8CiAJCQkJCQlNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWTsKIAogCWlmICghKG12ZGV2LSZndDtzdGF0dXMgJmFtcDsgVklSVElPX0NPTkZJR19TX0RSSVZFUl9PSykgfHwgbXZkZXYtJmd0O3N1c3BlbmRlZCkKLQkJcmV0dXJuIDA7CiYjNDM7CQlnb3RvIGRvbmU7CiAKIAlpZiAodGVhcmRvd24pIHsKIAkJcmVzdG9yZV9jaGFubmVsc19pbmZvKG5kZXYpOwogCQllcnIgPSBzZXR1cF92cV9yZXNvdXJjZXMobmRldiwgdHJ1ZSk7CiAJCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOwomIzQzOwkJCWdvdG8gb3V0X2VycjsKIAl9CiAKIAlyZXN1bWVfdnFzKG5kZXYsIDAsIG5kZXYtJmd0O2N1cl9udW1fdnFzKTsKJiM0MzsJZ290byBkb25lOwogCiYjNDM7b3V0X2VycjoKJiM0MzsJcmV0dXJuIGVycjsKJiM0MzsKJiM0Mztkb25lOgomIzQzOwltbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAzMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRnVuY3Rpb25hbCBDaGFuZ2UgaW4gdGhlIG1seDUgdmRwYSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0d2Vha2VkIHRoZSBgbWx4NV92ZHBhX2NoYW5nZV9tYXBgIGZ1bmN0aW9uIGluIGBkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNgLiBJdCYjMzk7cyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGNoYW5nZTogdGhlIGNhbGwgdG8gYG1seDVfdmRwYV91cGRhdGVfbXJgIGlzIG5vdyBhdCB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiwgcmlnaHQgYmVmb3JlIHRoZSByZXR1cm4uICBJdCBsb29rcyBsaWtlIGlmIGBzZXR1cF92cV9yZXNvdXJjZXMobmRldiwgdHJ1ZSlgIGZhaWxzLCB0aGUgY29kZSBub3cgYmFpbHMgb3V0IHdpdGhvdXQgY2FsbGluZyBgbWx4NV92ZHBhX3VwZGF0ZV9tcmAuICBGdW5jdGlvbmFsbHksIHRoaXMgaXMgZGVmaW5pdGVseSBhIGNoYW5nZSBhbmQgbmVlZHMgY2FyZWZ1bCBleGFtaW5hdGlvbi4KCk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IHJlYWNoYWJpbGl0eS4gVGhpcyBpcyBNZWxsYW5veCwgbWx4NSwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIuIEdlbmVyYWxseSwgd2UgZG9uJiMzOTt0IHNlZSB0aGVzZSB0aGluZ3MgdHJpZ2dlcmVkIGVhc2lseSBpbiBwdXJlbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBlbXVsYXRvciBvciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZ2VuZXJpYyBzdWJzeXN0ZW0uIE5vdywgSSByZW1lbWJlciB0aGF0IHZkcGEgaGFzIGEgc2ltdWxhdG9yIChgdmRwYV9zaW1gKSwgYnV0IEkmIzM5O20gcHJldHR5IHN1cmUgdGhlIG1seDUgdmRwYSBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgYWN0dWFsIG1seDUgaGFyZHdhcmUgb3IgYSAqc3BlY2lmaWMqIGVtdWxhdG9yIGZvciBpdCB0byB3b3JrLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGhvdyBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgYG1seDVfdmRwYV9jaGFuZ2VfbWFwYCBjb2RlIHBhdGg/CgpJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGlmIGBtbHg1X3ZkcGFfY2hhbmdlX21hcGAgaXMgcmVhY2hhYmxlLiBBaCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG1seDVfdmRwYV9zZXRfbWFwYC4gT2theSwgdGhhdCBnaXZlcyBtZSBhIGhhbmRsZS4gQnV0IHN0aWxsLCB0aGUgYmlnIGh1cmRsZSBpcywgY2FuIHdlIHRyaWdnZXIgKnRoYXQqIHdpdGhvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmU/IFBDSSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBsaWtlIG1seDUsIHVzdWFsbHkgZmFpbCB0byBwcm9iZSBpZiB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IHByZXNlbnQuICBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgZXZlbiBhIFBDSSBkcml2ZXIgYW5kIGlmIGl0IGhhcyBhbnkgZmFsbGJhY2tzLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGV4YW1pbmUgYGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY2AgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X3ZkcGFfY2hhbmdlX21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzAyOD1zdGF0aWMgdm9pZCByZXN0b3JlX2NoYW5uZWxzX2luZm8oc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMwNTItXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzA1MzpzdGF0aWMgaW50IG1seDVfdmRwYV9jaGFuZ2VfbWFwKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDU0LVx0XHRcdFx0c3RydWN0IG1seDVfdmRwYV9tciAqbmV3X21yLFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMzQ4PXN0YXRpYyBpbnQgc2V0X21hcF9kYXRhKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldiwgc3RydWN0IHZob3N0X2lvdGxiICppb3RsYixcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzM3MS1cdH0gZWxzZSB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzM3MjpcdFx0ZXJyID0gbWx4NV92ZHBhX2NoYW5nZV9tYXAobXZkZXYsIG5ld19tciwgYXNpZCk7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzM3My1cdFx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNZWxsYW5veCBEcml2ZXI6IEEgUHJlbGltaW5hcnkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNZWxsYW5veCBkcml2ZXIuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCAmIzM0O0NhbiB0aGlzIGJlIGZ1enplZD8mIzM0OyBNeSBleHBlcmllbmNlIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBtbHg1YCBzdWdnZXN0cyB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIHRyaWNreS4gVHlwaWNhbGx5LCB5b3UgbmVlZCB0aGUgYWN0dWFsIGhhcmR3YXJlIHRvIG1lYW5pbmdmdWxseSBmdXp6IHRoZXNlLCB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZW11bGF0b3IgYXZhaWxhYmxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGVyZSBhbiBgbWx4NWAgZW11bGF0b3Igb3V0IHRoZXJlPyYjMzQ7IFF1aWNrbHkgc2Nhbm5pbmcgbXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIGxhbmRzY2FwZSwgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBsaWtlIHRoYXQgaW4gdGhlIGtlcm5lbCB0cmVlIGl0c2VsZi4gVGltZSB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGZvciBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgb2ZmZXIgc29tZSBraW5kIG9mIHZpcnR1YWwgaW50ZXJmYWNlIG9yIHRlc3RpbmcgaG9va3MuIE1heWJlIHNvbWV0aGluZyBsaWtlIGBDT05GSUdfTUxYNV9WRFBBX05FVGAgb3Igc2ltaWxhci4gTGV0JiMzOTtzIHNlZSB3aGF0IHR1cm5zIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1MWDVfVkRQQV9ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvbWx4NS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTg0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqKk5hdmlnYXRpbmcgdGhlIFZEUEEgYW5kIE1lbGxhbm94IEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgb2J2aW91cyBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIEdpdmVuIHRoZSBtZW50aW9uIG9mIFZEUEEsIG15IGJyYWluIGF1dG9tYXRpY2FsbHkganVtcHMgdG8gdGhlIGxpa2VseSBsb2NhdGlvbnM6IEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIGdlbmVyYWwgVkRQQSBkaXJlY3RvcnksIHNvIGBkcml2ZXJzL3ZkcGEvS2NvbmZpZ2AgaXMgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2suIElmIEkgZG9uJiMzOTt0IGZpbmQgd2hhdCBJIG5lZWQgdGhlcmUsIEkga25vdyBNZWxsYW5veCBpcyBhIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiwgc28gSSYjMzk7bGwgcGl2b3QgdG8gdGhlIE1lbGxhbm94LXNwZWNpZmljIFZEUEEgZGlyZWN0b3J5IG5leHQsIGNoZWNraW5nIGBkcml2ZXJzL3ZkcGEvbWx4NS9LY29uZmlnYC4gQW5kLCB5b3Uga25vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYmVjYXVzZSBNZWxsYW5veCBpcyBhbHNvIGFuIGV0aGVybmV0IGRyaXZlciB2ZW5kb3IsIGl0IGNvdWxkIHZlcnkgd2VsbCBiZSB0aGF0IHRoZSBvcHRpb25zIEkgYW0gbG9va2luZyBmb3IgY2FuIGJlIGZvdW5kIGJ5IGFsc28gY2hlY2tpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnYC4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRob3NlIGZpbGVzIGNsb3NlbHk7IEkgYW50aWNpcGF0ZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHJlbGV2YW50IGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGZvciBWRFBBIGFuZCBNZWxsYW5veCBoYXJkd2FyZS4gSSBleHBlY3QgdG8gYmUgYWJsZSB0byBuYXZpZ2F0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBmaW5kIHRoZSBvbmUgSSBuZWVkIGJhc2VkIG9uIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUxYNV9WRFBBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZHBhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvS2NvbmZpZz00ND1jb25maWcgSUZDVkZcbi0tXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy01Mi1cbmRyaXZlcnMvdmRwYS9LY29uZmlnOjUzOmNvbmZpZyBNTFg1X1ZEUEFcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTU0LVx0Ym9vbFxuLS1cbmRyaXZlcnMvdmRwYS9LY29uZmlnLTYwLVxuZHJpdmVycy92ZHBhL0tjb25maWc6NjE6Y29uZmlnIE1MWDVfVkRQQV9ORVRcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7dkRQQSBkcml2ZXIgZm9yIENvbm5lY3RYIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvdmRwYS9LY29uZmlnOjYzOlx0c2VsZWN0IE1MWDVfVkRQQVxuZHJpdmVycy92ZHBhL0tjb25maWctNjQtXHRzZWxlY3QgVkhPU1RfUklOR1xuLS1cbmRyaXZlcnMvdmRwYS9LY29uZmlnLTcxLVxuZHJpdmVycy92ZHBhL0tjb25maWc6NzI6Y29uZmlnIE1MWDVfVkRQQV9TVEVFUklOR19ERUJVR1xuZHJpdmVycy92ZHBhL0tjb25maWctNzMtXHRib29sIFwmIzM0O2V4cG9zZSBzdGVlcmluZyBjb3VudGVycyBvbiBkZWJ1Z2ZzXCYjMzQ7XG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzo3NDpcdHNlbGVjdCBNTFg1X1ZEUEFcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTc1LVx0aGVscFxuLS1cbmRyaXZlcnMvdmRwYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19JRkNWRikgICAgJiM0Mzs9IGlmY3ZmL1xuZHJpdmVycy92ZHBhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01MWDVfVkRQQSkgJiM0Mzs9IG1seDUvXG5kcml2ZXJzL3ZkcGEvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfVlBfVkRQQSkgICAgJiM0Mzs9IHZpcnRpb19wY2kvXG4tLVxuZHJpdmVycy92ZHBhL21seDUvTWFrZWZpbGU9MT1zdWJkaXItY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjdHJlZSkvZHJpdmVycy92ZHBhL21seDUvY29yZVxuZHJpdmVycy92ZHBhL21seDUvTWFrZWZpbGUtMi1cbmRyaXZlcnMvdmRwYS9tbHg1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01MWDVfVkRQQV9ORVQpICYjNDM7PSBtbHg1X3ZkcGEub1xuZHJpdmVycy92ZHBhL21seDUvTWFrZWZpbGU6NDptbHg1X3ZkcGEtJChDT05GSUdfTUxYNV9WRFBBX05FVCkgJiM0Mzs9IG5ldC9tbHg1X3ZuZXQubyBjb3JlL3Jlc291cmNlcy5vIGNvcmUvbXIubyBuZXQvZGVidWcub1xuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmgtMy1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg6NDojaWZuZGVmIF9fTUxYNV9WRFBBX0hfX1xuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo1OiNkZWZpbmUgX19NTFg1X1ZEUEFfSF9fXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTYtXG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaD03NT1lbnVtIHtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg6NzY6XHRNTFg1X1ZEUEFfREFUQVZRX0dST1VQLFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo3NzpcdE1MWDVfVkRQQV9DVlFfR1JPVVAsXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjc4Olx0TUxYNV9WRFBBX0RBVEFWUV9ERVNDX0dST1VQLFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo3OTpcdE1MWDVfVkRQQV9OVU1WUV9HUk9VUFNcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmgtODAtfTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oPTgyPWVudW0ge1xuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo4MzpcdE1MWDVfVkRQQV9OVU1fQVMgPSAyXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTg0LX07XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaD04Nj1zdHJ1Y3QgbWx4NV92ZHBhX21yX3Jlc291cmNlcyB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjg3Olx0c3RydWN0IG1seDVfdmRwYV9tciAqbXJbTUxYNV9WRFBBX05VTV9BU107XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjg4Olx0dW5zaWduZWQgaW50IGdyb3VwMmFzaWRbTUxYNV9WRFBBX05VTVZRX0dST1VQU107XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTg5LVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg9MTY2PWludCBtbHg1X3ZkcGFfZXhlY19hc3luY19jbWRzKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTE4Ni1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg6MTg3OiNlbmRpZiAvKiBfX01MWDVfVkRQQV9IX18gKi9cbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9MTI4PXN0YXRpYyB1NjQgbWFwbGVuKHN0cnVjdCB2aG9zdF9pb3RsYl9tYXAgKm1hcCwgc3RydWN0IG1seDVfdmRwYV9kaXJlY3RfbXIgKm1yKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xMzItXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MTMzOiNkZWZpbmUgTUxYNV9WRFBBX0lOVkFMSURfU1RBUlRfQUREUiAoKHU2NCktMSlcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzoxMzQ6I2RlZmluZSBNTFg1X1ZEUEFfSU5WQUxJRF9MRU4gKCh1NjQpLTEpXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTM1LVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTEzNj1zdGF0aWMgdTY0IGluZGlyX3N0YXJ0X2FkZHIoc3RydWN0IG1seDVfdmRwYV9tciAqbWtleSlcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTQxLVx0aWYgKCFzKVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjE0MjpcdFx0cmV0dXJuIE1MWDVfVkRQQV9JTlZBTElEX1NUQVJUX0FERFI7XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTQzLVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz0xNDc9c3RhdGljIHU2NCBpbmRpcl9sZW4oc3RydWN0IG1seDVfdmRwYV9tciAqbWtleSlcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTUzLVx0aWYgKCFzKVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjE1NDpcdFx0cmV0dXJuIE1MWDVfVkRQQV9JTlZBTElEX0xFTjtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xNTUtXG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTIwND1zdGF0aWMgaW50IGtsbV9ieXRlX3NpemUoaW50IG5rbG1zKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0yMDgtXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MjA5OiNkZWZpbmUgTUxYNV9WRFBBX01UVF9BTElHTiAxNlxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTIxMC1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz0yMTE9c3RhdGljIGludCBjcmVhdGVfZGlyZWN0X2tleXMoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LCBzdHJ1Y3QgbWx4NV92ZHBhX21yICptcilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMjI1LVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjIyNjpcdFx0bXR0bGVuID0gcm91bmR1cChNTFg1X1NUX1NaX0JZVEVTKG10dCkgKiBkbXItXHUwMDNlbnNnLCBNTFg1X1ZEUEFfTVRUX0FMSUdOKTtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0yMjctXHRcdG10dGNvdW50ID0gbXR0bGVuIC8gc2l6ZW9mKGNtZF9tZW0tXHUwMDNlbXR0WzBdKTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9MzI2PXN0YXRpYyBpbnQgY3JlYXRlX2luZGlyZWN0X2tleShzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm1yKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0zMzYtXHRsZW4gPSBpbmRpcl9sZW4obXIpO1xuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjMzNzpcdGlmIChzdGFydCA9PSBNTFg1X1ZEUEFfSU5WQUxJRF9TVEFSVF9BRERSIHx8IGxlbiA9PSBNTFg1X1ZEUEFfSU5WQUxJRF9MRU4pXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMzM4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9NjQyPXN0YXRpYyB2b2lkIF9tbHg1X3ZkcGFfZGVzdHJveV9tcihzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm1yKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy02NjItICovXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6NjYzOiNkZWZpbmUgTUxYNV9WRFBBX01SX0dDX1RSSUdHRVJfTVMgMjAwMFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTY2NC1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz02NjU9c3RhdGljIHZvaWQgbWx4NV92ZHBhX21yX2djX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy02NzYtXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhtcmVzLVx1MDAzZXdxX2djLCBcdTAwMjZtcmVzLVx1MDAzZWdjX2R3b3JrX2VudCxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzo2Nzc6XHRcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKE1MWDVfVkRQQV9NUl9HQ19UUklHR0VSX01TKSk7XG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtNjc4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTY5MD1zdGF0aWMgdm9pZCBfbWx4NV92ZHBhX3B1dF9tcihzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTcwMC1cdFx0cXVldWVfZGVsYXllZF93b3JrKG1yZXMtXHUwMDNld3FfZ2MsIFx1MDAyNm1yZXMtXHUwMDNlZ2NfZHdvcmtfZW50LFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjcwMTpcdFx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoTUxYNV9WRFBBX01SX0dDX1RSSUdHRVJfTVMpKTtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy03MDItXHR9XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTc2MT12b2lkIG1seDVfdmRwYV9jbGVhbl9tcnMoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2KVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy03NjUtXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6NzY2Olx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIE1MWDVfVkRQQV9OVU1fQVM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTc2Ny1cdFx0bWx4NV92ZHBhX3VwZGF0ZV9tcihtdmRldiwgTlVMTCwgaSk7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTg0MD1pbnQgbWx4NV92ZHBhX3VwZGF0ZV9jdnFfaW90bGIoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy04NDUtXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6ODQ2Olx0aWYgKG12ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfQ1ZRX0dST1VQXSAhPSBhc2lkKVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTg0Ny1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTg3Mj1pbnQgbWx4NV92ZHBhX3Jlc2V0X21yKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldiwgdW5zaWduZWQgaW50IGFzaWQpXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtODczLXtcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzo4NzQ6XHRpZiAoYXNpZCBcdTAwM2U9IE1MWDVfVkRQQV9OVU1fQVMpXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtODc1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvZGVidWcuYz00Nj12b2lkIG1seDVfdmRwYV9hZGRfcnhfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvZGVidWcuYy01MS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9kZWJ1Zy5jOjUyOiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvZGVidWcuYy01My1zdGF0aWMgaW50IHBhY2tldHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTI5Nz1zdGF0aWMgdm9pZCBkZXN0cm95X3RpcyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzAxLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMwMjojZGVmaW5lIE1MWDVfVkRQQV9DUUVfU0laRSA2NFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMwMzojZGVmaW5lIE1MWDVfVkRQQV9MT0dfQ1FFX1NJWkUgaWxvZzIoTUxYNV9WRFBBX0NRRV9TSVpFKVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMwNC1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMDU9c3RhdGljIGludCBjcV9mcmFnX2J1Zl9hbGxvYyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldiwgc3RydWN0IG1seDVfdmRwYV9jcV9idWYgKmJ1ZiwgaW50IG5lbnQpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMwNy1cdHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpmcmFnX2J1ZiA9IFx1MDAyNmJ1Zi1cdTAwM2VmcmFnX2J1ZjtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMDg6XHR1OCBsb2dfd3Ffc3RyaWRlID0gTUxYNV9WRFBBX0xPR19DUUVfU0laRTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMDk6XHR1OCBsb2dfd3Ffc3ogPSBNTFg1X1ZEUEFfTE9HX0NRRV9TSVpFO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxMC1cdGludCBlcnI7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzExLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMxMjpcdGVyciA9IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShuZGV2LVx1MDAzZW12ZGV2Lm1kZXYsIG5lbnQgKiBNTFg1X1ZEUEFfQ1FFX1NJWkUsIGZyYWdfYnVmLFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxMy1cdFx0XHRcdCAgICAgICBuZGV2LVx1MDAzZW12ZGV2Lm1kZXYtXHUwMDNlcHJpdi5udW1hX25vZGUpO1xuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMTgtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzE5Olx0YnVmLVx1MDAzZWNxZV9zaXplID0gTUxYNV9WRFBBX0NRRV9TSVpFO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMyMC1cdGJ1Zi1cdTAwM2VuZW50ID0gbmVudDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9ODc2PXN0YXRpYyBpbnQgY3JlYXRlX3ZpcnRxdWV1ZShzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQxLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjk0MjpcdFx0dnFfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0dST1VQXV07XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQzLVx0XHRpZiAodnFfbXIpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTk0NS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo5NDY6XHRcdHZxX2Rlc2NfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NDctXHRcdGlmICh2cV9kZXNjX21yIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NTMtXHRcdCAqL1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjk1NDpcdFx0dnFfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0dST1VQXV07XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTU1LVx0XHRpZiAodnFfbXIpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTk1Ny1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo5NTg6XHRcdHZxX2Rlc2NfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NTktXHRcdGlmICh2cV9kZXNjX21yKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0xMzA0PXN0YXRpYyB2b2lkIGZpbGxfbW9kaWZ5X3ZpcnRxdWV1ZV9jbWQoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzNTQtXHRpZiAobXZxLVx1MDAzZW1vZGlmaWVkX2ZpZWxkcyBcdTAwMjYgTUxYNV9WSVJUUV9NT0RJRllfTUFTS19WSVJUSU9fUV9NS0VZKSB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTM1NTpcdFx0dnFfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0dST1VQXV07XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM1Ni1cbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM2My1cdGlmIChtdnEtXHUwMDNlbW9kaWZpZWRfZmllbGRzIFx1MDAyNiBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWSkge1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjEzNjQ6XHRcdGRlc2NfbXIgPSBtdmRldi1cdTAwM2VtcmVzLm1yW212ZGV2LVx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzY1LVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0xMzc1PXN0YXRpYyB2b2lkIG1vZGlmeV92aXJ0cXVldWVfZW5kKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzgxLVx0aWYgKG12cS1cdTAwM2Vtb2RpZmllZF9maWVsZHMgXHUwMDI2IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfVklSVElPX1FfTUtFWSkge1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjEzODI6XHRcdHVuc2lnbmVkIGludCBhc2lkID0gbXZkZXYtXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfR1JPVVBdO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzODMtXHRcdHN0cnVjdCBtbHg1X3ZkcGFfbXIgKnZxX21yID0gbXZkZXYtXHUwMDNlbXJlcy5tclthc2lkXTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM5MC1cdGlmIChtdnEtXHUwMDNlbW9kaWZpZWRfZmllbGRzIFx1MDAyNiBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWSkge1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjEzOTE6XHRcdHVuc2lnbmVkIGludCBhc2lkID0gbXZkZXYtXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfREVTQ19HUk9VUF07XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM5Mi1cdFx0c3RydWN0IG1seDVfdmRwYV9tciAqZGVzY19tciA9IG12ZGV2LVx1MDAzZW1yZXMubXJbYXNpZF07XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTE0NTY9c3RhdGljIHZvaWQgYWxsb2NfdmVjdG9yKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xNDY2LVx0XHRpZiAoIWVudC1cdTAwM2V1c2VkKSB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTQ2NzpcdFx0XHRzbnByaW50ZihlbnQtXHUwMDNlbmFtZSwgTUxYNV9WRFBBX0lSUV9OQU1FX0xFTiwgXCYjMzQ7JXMtdnEtJWRcJiMzNDssXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTQ2OC1cdFx0XHRcdCBkZXZfbmFtZShcdTAwMjZuZGV2LVx1MDAzZW12ZGV2LnZkZXYuZGV2KSwgbXZxLVx1MDAzZWluZGV4KTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MTg1OD1zdGF0aWMgdm9pZCBkZXN0cm95X3RpcihzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTg2Ni1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxODY3OiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTg2OC0gICAgICAgI2RlZmluZSBOVU1fREVTVFMgMlxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0xODczPXN0YXRpYyBpbnQgYWRkX3N0ZWVyaW5nX2NvdW50ZXJzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xODc3LXtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxODc4OiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTg3OS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTE5MDM9c3RhdGljIHZvaWQgcmVtb3ZlX3N0ZWVyaW5nX2NvdW50ZXJzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xOTA1LXtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxOTA2OiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTkwNy1cdG1seDVfZmNfZGVzdHJveShuZGV2LVx1MDAzZW12ZGV2Lm1kZXYsIG5vZGUtXHUwMDNlbWNhc3RfY291bnRlci5jb3VudGVyKTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MTkxMj1zdGF0aWMgaW50IG1seDVfdmRwYV9hZGRfbWFjX3ZsYW5fcnVsZXMoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsIHU4ICptYWMsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NTEtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTk1MjojaWYgZGVmaW5lZChDT05GSUdfTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHKVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NTMtXHRkZXN0c1sxXS5jb3VudGVyID0gbm9kZS1cdTAwM2V1Y2FzdF9jb3VudGVyLmNvdW50ZXI7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NjAtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTk2MTojaWYgZGVmaW5lZChDT05GSUdfTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHKVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NjItXHRkZXN0c1sxXS5jb3VudGVyID0gbm9kZS1cdTAwM2VtY2FzdF9jb3VudGVyLmNvdW50ZXI7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTI2NTI9c3RhdGljIHUzMiBtbHg1X3ZkcGFfZ2V0X3ZxX2dyb3VwKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRldiwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjY1Ni1cdGlmIChpc19jdHJsX3ZxX2lkeChtdmRldiwgaWR4KSlcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyNjU3Olx0XHRyZXR1cm4gTUxYNV9WRFBBX0NWUV9HUk9VUDtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0yNjU4LVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjI2NTk6XHRyZXR1cm4gTUxYNV9WRFBBX0RBVEFWUV9HUk9VUDtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0yNjYwLX1cbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MjY2Mj1zdGF0aWMgdTMyIG1seDVfdmRwYV9nZXRfdnFfZGVzY19ncm91cChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYsIHUxNiBpZHgpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NjYtXHRpZiAoaXNfY3RybF92cV9pZHgobXZkZXYsIGlkeCkpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MjY2NzpcdFx0cmV0dXJuIE1MWDVfVkRQQV9DVlFfR1JPVVA7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjY2OC1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyNjY5Olx0cmV0dXJuIE1MWDVfVkRQQV9EQVRBVlFfREVTQ19HUk9VUDtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0yNjcwLX1cbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9Mjk1Mj1zdGF0aWMgdm9pZCBtbHg1X3ZkcGFfc2V0X2NvbmZpZ19jYihzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYsIHN0cnVjdCB2ZHBhX2NhbGxiYWNrICpjYilcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjk1OS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyOTYwOiNkZWZpbmUgTUxYNV9WRFBBX01BWF9WUV9FTlRSSUVTIDI1NlxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjEtc3RhdGljIHUxNiBtbHg1X3ZkcGFfZ2V0X3ZxX251bV9tYXgoc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjIte1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjI5NjM6XHRyZXR1cm4gTUxYNV9WRFBBX01BWF9WUV9FTlRSSUVTO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjQtfVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMjQ1PXN0YXRpYyB2b2lkIGluaXRfZ3JvdXBfdG9fYXNpZF9tYXAoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2KVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMjQ5LVx0LyogZGVmYXVsdCBtYXBwaW5nIGFsbCBncm91cHMgYXJlIG1hcHBlZCB0byBhc2lkIDAgKi9cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMjUwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUxYNV9WRFBBX05VTVZRX0dST1VQUzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzI1MS1cdFx0bXZkZXYtXHUwMDNlbXJlcy5ncm91cDJhc2lkW2ldID0gMDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzM0OD1zdGF0aWMgaW50IHNldF9tYXBfZGF0YShzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCB2aG9zdF9pb3RsYiAqaW90bGIsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMzNTMtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzM1NDpcdGlmIChhc2lkIFx1MDAzZT0gTUxYNV9WRFBBX05VTV9BUylcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMzU1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzY1Mj1zdGF0aWMgaW50IG1seDVfc2V0X2dyb3VwX2FzaWQoc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2LCB1MzIgZ3JvdXAsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM2NjAtXHRtdXRleF9sb2NrKFx1MDAyNm12ZGV2LVx1MDAzZW1yZXMubG9jayk7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzY2MTpcdGlmIChncm91cCA9PSBNTFg1X1ZEUEFfQ1ZRX0dST1VQIFx1MDAyNlx1MDAyNiBtdmRldi1cdTAwM2VtcmVzLm1yW2FzaWRdKVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM2NjItXHRcdGVyciA9IG1seDVfdmRwYV91cGRhdGVfY3ZxX2lvdGxiKG12ZGV2LCBtdmRldi1cdTAwM2VtcmVzLm1yW2FzaWRdLVx1MDAzZWlvdGxiLCBhc2lkKTtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzgwNT1zdGF0aWMgdm9pZCBhbGxvY2F0ZV9pcnFzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zODIzLVx0XHRlbnQgPSBuZGV2LVx1MDAzZWlycXAuZW50cmllcyAmIzQzOyBpO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM4MjQ6XHRcdHNucHJpbnRmKGVudC1cdTAwM2VuYW1lLCBNTFg1X1ZEUEFfSVJRX05BTUVfTEVOLCBcJiMzNDslcy12cS0lZFwmIzM0OyxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zODI1LVx0XHRcdCBkZXZfbmFtZShcdTAwMjZuZGV2LVx1MDAzZW12ZGV2LnZkZXYuZGV2KSwgaSk7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTM4MzQ9c3RhdGljIGludCBtbHg1X3ZkcGFfZGV2X2FkZChzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zODk1LVx0bmRldiA9IHZkcGFfYWxsb2NfZGV2aWNlKHN0cnVjdCBtbHg1X3ZkcGFfbmV0LCBtdmRldi52ZGV2LCBtZGV2LVx1MDAzZWRldmljZSwgXHUwMDI2bWd0ZGV2LVx1MDAzZXZkcGFfb3BzLFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM4OTY6XHRcdFx0XHQgTlVMTCwgTUxYNV9WRFBBX05VTVZRX0dST1VQUywgTUxYNV9WRFBBX05VTV9BUywgbmFtZSwgZmFsc2UpO1xuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4OTctXHRpZiAoSVNfRVJSKG5kZXYpKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaD0yND1zdGF0aWMgaW5saW5lIHUxNiBrZXkydmlkKHU2NCBrZXkpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oLTI4LVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oOjI5OiNkZWZpbmUgTUxYNV9WRFBBX0lSUV9OQU1FX0xFTiAzMlxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oLTMwLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oPTMxPXN0cnVjdCBtbHg1X3ZkcGFfaXJxX3Bvb2xfZW50cnkge1xuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC0zMy1cdGJvb2wgdXNlZDtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaDozNDpcdGNoYXIgbmFtZVtNTFg1X1ZEUEFfSVJRX05BTUVfTEVOXTtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC0zNS1cdHZvaWQgKmRldl9pZDtcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg9ODY9c3RydWN0IG1hY3ZsYW5fbm9kZSB7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oLTkyLVx0Ym9vbCB0YWdnZWQ7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg6OTM6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC05NC1cdHN0cnVjdCBkZW50cnkgKmRlbnQ7XG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oPTEwNT12b2lkIG1seDVfdmRwYV9yZW1vdmVfdGlybihzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldik7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg6MTA2OiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtMTA3LXZvaWQgbWx4NV92ZHBhX2FkZF9yeF9jb3VudGVycyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg5NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNTFg1X1ZEUEFfTkVUIERyaXZlcjogQSBWaXJ0dWFsaXphdGlvbiBDaGFsbGVuZ2UqKgoKT2theSwgc28gdGhlIHRhc2sgaXMgdG8gZmlndXJlIG91dCBpZiBJIGNhbiBlZmZlY3RpdmVseSBmdXp6IHRoZSBgTUxYNV9WRFBBX05FVGAgZHJpdmVyLiBUaGlzIGlzIGludGVyZXN0aW5nLCBnaXZlbiBteSBiYWNrZ3JvdW5kLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIEkgZXZlbiB0b3VjaCB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7IE15IGd1dCByZWFjdGlvbiBpcyB0aGF0IGBNTFg1YCBkcml2ZXJzIGFyZSB1c3VhbGx5IHRpZ2h0bHkgY291cGxlZCB3aXRoIE1lbGxhbm94IGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIHNldHVwLgoKVGhlbiBJIHJlbWVtYmVyIFN5emthbGxlci4gSXQgaGFzIHRoaXMgcmVwdXRhdGlvbiBmb3IgYmVpbmcgY2xldmVyIGFib3V0IGluaXRpYWxpemluZyBkcml2ZXJzLiBCdXQgdGhhdCYjMzk7cyBvbmx5IGVmZmVjdGl2ZSBpZiBpdCAqY2FuKiBpbml0aWFsaXplIHRoZW0uIElmIHRoaXMgZHJpdmVyIGRlbWFuZHMgYSByZWFsIFBDSSBkZXZpY2UsIEkmIzM5O20gc3R1Y2suIEl0IHdvbiYjMzk7dCBiZSByZWFjaGFibGUuCgpTbywgdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlciBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gU3l6a2FsbGVyIG9yIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi4gQW55IHRyaWNrcyB0byBmb29sIHRoZSBzeXN0ZW0gaW50byB0aGlua2luZyBpdCBoYXMgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZS4gSG1tLi4uIG5vdGhpbmcganVtcHMgb3V0LgoKV2FpdCBhIG1pbnV0ZSwgSSBzZWUgc29tZXRoaW5nLiBUaGUgZXhpc3RlbmNlIG9mIGEgYHN5ei1jbHVzdGVyYCBhdXRob3IgaW4gdGhlIHBhdGNoIGhpc3RvcnkgaW5kaWNhdGVzIGVpdGhlciBTeXprYWxsZXIgc3VjY2Vzc2Z1bGx5IGZvdW5kIGEgYnVnIG9yIHNvbWVvbmUgc3VibWl0dGVkIGEgcGF0Y2ggdG8gaGF2ZSBpdCBldmFsdWF0ZWQgaW4gc3l6a2FsbGVyLgoKUmlnaHQsIHRoZW4gSSBzZWUgdGhlIHByb21wdDogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhhdCYjMzk7cyB3aGF0IEkgYW0gdHJ5aW5nIHRvIGRldGVybWluZSBpZiB0aGlzIGFwcGxpZXMuCgpPa2F5LCBsZXQmIzM5O3Mgc3RlcCBiYWNrLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jYC4gQ2xlYXJseSwgdGhpcyBpcyBhIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcywgd2hpY2ggaXMgYSBiaXQgb2YgYSBjbHVlLiBCdXQgZG9lcyBpdCBtZWFuIGl0IGlzIHVucmVhY2hhYmxlLCBvciBjYW4gdGhlIGRyaXZlciBiZSB1c2VkIGluIHZpcnR1YWxpemF0aW9uLgoKTm93IGl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUuIFRpbWUgdG8gc3RhcnQgd2l0aCB0aGUgcHJvYmUgZnVuY3Rpb24gaW4gYG1seDVfdm5ldC5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfdmRwYV9kZXZfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zODA1PXN0YXRpYyB2b2lkIGFsbG9jYXRlX2lycXMoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYpXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4MzMtXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzgzNDpzdGF0aWMgaW50IG1seDVfdmRwYV9kZXZfYWRkKHN0cnVjdCB2ZHBhX21nbXRfZGV2ICp2X21kZXYsIGNvbnN0IGNoYXIgKm5hbWUsXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzgzNS1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCB2ZHBhX2Rldl9zZXRfY29uZmlnICphZGRfY29uZmlnKVxuLS1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz00MDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmRwYV9tZ210ZGV2X29wcyBtZGV2X29wcyA9IHtcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo0MDkxOlx0LmRldl9hZGQgPSBtbHg1X3ZkcGFfZGV2X2FkZCxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy00MDkyLVx0LmRldl9kZWwgPSBtbHg1X3ZkcGFfZGV2X2RlbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MTgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHByb2Nlc3MsIHRoaW5raW5nIHRocm91Z2ggaXQgYXMgYW4gZXhwZXJ0OgoKKipVbmRlcnN0YW5kaW5nIHRoZSBtbHg1IHZEUEEgRGV2aWNlIEFkZGl0aW9uKioKCkFscmlnaHQsIHNvIGBtbHg1X3ZkcGFfZGV2X2FkZGAuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgSSYjMzk7bSBpbnN0YW50bHkgdGhpbmtpbmcgYWJvdXQgaXRzIHBsYWNlIGluIHRoZSBsaWZlY3ljbGUgb2YgdGhpcyB2RFBBIHNldHVwLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGNhbGxlZCB2aWEgYHZkcGFfbWdtdGRldl9vcHNgIGlzIHRoZSBmaXJzdCBrZXkgaW5kaWNhdG9yLiBJJiMzOTttIGltbWVkaWF0ZWx5IHBpY3R1cmluZyB0aGUgdkRQQSBtYW5hZ2VtZW50IGxheWVyLCB0aGUgY29yZSBmcmFtZXdvcmsuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB0aGUgYnJpZGdlLCB0aGUgd2F5IHdlJiMzOTtyZSBhY3R1YWxseSBjcmVhdGluZyBhbmQgZW5hYmxpbmcgYSB2RFBBIGRldmljZSB1c2luZyB0aGUgbWx4NSBoYXJkd2FyZS4gSSBjYW4gaW5mZXIgZnJvbSB0aGF0LCB0aGF0IGB2ZHBhX21nbXRkZXZfb3BzYCBpcyB0aGUgbWVjaGFuaXNtIGJ5IHdoaWNoIHRoZSB2RFBBIGNvcmUgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBgbWx4NWAgaW1wbGVtZW50YXRpb24uCgpUaGVuLCB0aGUgc2Vjb25kIHBpZWNlLiBgbWx4NV92ZHBhX25ldF9wcm9iZWAgaXMgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZSBtYW5hZ2VtZW50IGRldmljZS4gVGhpcyBpcyB0aGUgaW5pdGlhbCBzdGVwLCB0aGUgJiMzNDtkaXNjb3ZlcnkmIzM0OyBwaGFzZSBpZiB5b3Ugd2lsbC4gVGhlIGBuZXRfcHJvYmVgIHN1Z2dlc3RzIGl0JiMzOTtzIGxpa2VseSBjYWxsZWQgZHVyaW5nIHRoZSBuZXR3b3JrIGludGVyZmFjZSBzZXR1cCBvciBwZXJoYXBzIGR1cmluZyBhIGhvdHBsdWcgZXZlbnQuIFRoaXMgcmVnaXN0cmF0aW9uIGlzIHRoZSBwcmVjdXJzb3IgdG8gYG1seDVfdmRwYV9kZXZfYWRkYC4gV2UgYXJlIGdldHRpbmcgdGhlICYjMzQ7ZGV2aWNlJiMzNDsgcmVnaXN0ZXJlZCwgYW5kIHRoZW4gd2hlbiB0aGF0IGRldmljZSB3YW50cyB0byBjb21lIHVwLCB0aGUgYG1seDVfdmRwYV9kZXZfYWRkYCB3aWxsIGJlIGNhbGxlZC4gSXQmIzM5O3MgdGhlICYjMzQ7ZGV2aWNlIGJlaW5nIG9ubGluZSYjMzQ7IGtpbmQgb2Ygb3BlcmF0aW9uLgoKU28sIGluIGVzc2VuY2UsIEkgc2VlIHRoaXMgYXM6IDEpIGBtbHg1X3ZkcGFfbmV0X3Byb2JlYCBpZGVudGlmaWVzIGFuZCByZWdpc3RlcnMgdGhlIHVuZGVybHlpbmcgbWx4NSBoYXJkd2FyZSBhcyBhIHBvdGVudGlhbCB2RFBBIG1hbmFnZW1lbnQgZGV2aWNlLiAyKSBMYXRlciwgd2hlbiBhIHZEUEEgZGV2aWNlIG5lZWRzIHRvIGJlIGFjdGl2ZWx5IHVzZWQgKGUuZy4gYSBWTSBjb25uZWN0cyB0byBpdCksIHRoZSBtYW5hZ2VtZW50IGZyYW1ld29yayB1c2VzIGl0cyBgdmRwYV9tZ210ZGV2X29wc2AgdG8gY2FsbCBgbWx4NV92ZHBhX2Rldl9hZGRgLCB3aGljaCBwcmVzdW1hYmx5IGFsbG9jYXRlcyB0aGUgcmVzb3VyY2VzLCBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgcXVldWVzLCBhbmQgbGlua3MgdGhlIHZEUEEgZnJvbnRlbmQgd2l0aCB0aGUgbWx4NSBiYWNrZW5kLCBtYWtpbmcgdGhlIGRldmljZSBvcGVyYXRpb25hbC4gSXQmIzM5O3MgYSBjbGVhbiBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zOiBkaXNjb3ZlcnkgYW5kIGluaXRpYWwgc2V0dXAgKHByb2JlKSB2cy4gYWN0dWFsIGRldmljZSBhY3RpdmF0aW9uLiBJdCYjMzk7cyBhIHdlbGwtc3RydWN0dXJlZCBhcHByb2FjaCwgYW5kIEkgY2FuIHN0YXJ0IHRvIHZpc3VhbGl6ZSB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIHZEUEEgY29yZSwgdGhlIG1hbmFnZW1lbnQgaW50ZXJmYWNlLCBhbmQgdGhlIG1seDUgaGFyZHdhcmUuIEkmIzM5O2Qgd2FudCB0byBkaWcgaW50byBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkLCBob3cgdGhlIHF1ZXVlcyBhcmUgZXN0YWJsaXNoZWQsIGFuZCBob3cgdGhlIGRhdGEgZmxvdyBpcyBvcmNoZXN0cmF0ZWQsIGJ1dCBhdCB0aGlzIGhpZ2ggbGV2ZWwsIHRoYXQgbWFrZXMgY29tcGxldGUgc2Vuc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV92ZHBhX25ldF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDA3OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTYwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhvc2Ugc2VhcmNoIHRlcm1zOgoKKipEZWx2aW5nIGludG8gRGV2aWNlIERyaXZlciBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4gVGhlIGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBvcGVyYXRpb25zLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGVpdGhlciBsb29raW5nIGZvciBgbWRldl9vcHNgIG9yIGBwcm9iZWAuIEJvdGggb2YgdGhlc2UgYXJlIGNydWNpYWwgZW50cnkgcG9pbnRzLCByaWdodD8gYG1kZXZfb3BzYCBnaXZlcyBtZSBhIGdvb2QgY2hhbmNlIG9mIGZpbmRpbmcgdGhlIG1ldGhvZHMgaW1wbGVtZW50ZWQgZm9yIHRoZSBzcGVjaWZpYyBkZXZpY2UsIHRoZSBoYW5kbGVycyBpZiB5b3Ugd2lsbCwgbGlrZSByZWFkLCB3cml0ZSwgaW9jdGwsIHRoZSB3aG9sZSBzaGViYW5nLiBJdCB3aWxsIGJlIHRoZSAmIzM0O2dsdWUmIzM0OyB0aGF0IGhvb2tzIG1lIGludG8gdGhlIGhhcmR3YXJlIGNhbGxzLgoKT24gdGhlIG90aGVyIGhhbmQsIGBwcm9iZWAgaXMgd2hlcmUgdGhlIGRldmljZSBpcyBhY3R1YWxseSBpbml0aWFsaXplZCBhbmQgaWRlbnRpZmllZCwgdGhlIGZpcnN0IHN0ZXBzIGEgZHJpdmVyIHRha2VzLiBJdCYjMzk7cyBvZnRlbiB0aGUgc3RhcnQgb2YgZmlndXJpbmcgb3V0IHdoYXQga2luZCBvZiBoYXJkd2FyZSBJIGFtIGRlYWxpbmcgd2l0aCwgd2hhdCByZXNvdXJjZXMgaXQgbmVlZHMsIGFuZCBob3cgdG8gY29ubmVjdCB0byBpdCBpbiB0aGUgc3lzdGVtLiBHZXR0aW5nIHRoZSBwcm9iZSBmdW5jdGlvbiByaWdodCBpcyBjcml0aWNhbCBmb3IgdGhlIGtlcm5lbCB0byBzZWUgdGhlIGRldmljZS4gCgpEZXBlbmRpbmcgb24gd2hhdCBJIGFtIHRyeWluZyB0byB1bmRlcnN0YW5kLCBlaXRoZXIgb25lIGNvdWxkIGJlIHRoZSBrZXkgdG8gdW5sb2NraW5nIHRoZSBteXN0ZXJpZXMgb2YgdGhpcyBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgcmVzdWx0cyBicmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRldl9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTQwNTc9c3RhdGljIGludCBtbHg1X3ZkcGFfc2V0X2F0dHIoc3RydWN0IHZkcGFfbWdtdF9kZXYgKnZfbWRldiwgc3RydWN0IHZkcGFfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTQwODktXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6NDA5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfbWdtdGRldl9vcHMgbWRldl9vcHMgPSB7XG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDA5MS1cdC5kZXZfYWRkID0gbWx4NV92ZHBhX2Rldl9hZGQsXG4tLVxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTQxMDE9c3RhdGljIGludCBtbHg1dl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDExMy1cbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo0MTE0Olx0bWd0ZGV2LVx1MDAzZW1ndGRldi5vcHMgPSBcdTAwMjZtZGV2X29wcztcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy00MTE1LVx0bWd0ZGV2LVx1MDAzZW1ndGRldi5kZXZpY2UgPSBtZGV2LVx1MDAzZWRldmljZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxODcKCQkJCQkJCW91dHB1dDogMTI0CgkJCQkJCQl0aG91Z2h0czogNDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBtbHg1dl9wcm9iZWAgUGF0aCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBgbWx4NXZfcHJvYmVgLCBhbiBhdXhpbGlhcnkgZGV2aWNlIHByb2JlLiBUaGlzIGlzIGNyZWF0ZWQgYnkgdGhlIGBtbHg1YCBjb3JlIGRyaXZlciwgd2hpY2ggcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlYC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhlIGBtbHg1YCBjb3JlIGRyaXZlciAqcmVxdWlyZXMqIGEgZ2VudWluZSBQQ0kgZGV2aWNlLiBUaGVyZSYjMzk7cyBubyB1cHN0cmVhbSBrZXJuZWwgZW11bGF0aW9uIGZvciBgbWx4NWAuIFRoYXQgbWVhbnMgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGggaXMgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgdW5sZXNzIHdlJiMzOTtyZSBkb2luZyBQQ0kgcGFzc3Rocm91Z2ggb2YgYSByZWFsIE1lbGxhbm94IGRldmljZS4KClNpbmNlIHN5emthbGxlciBydW5zIGluIFFFTVUvR0NFLCBhbmQgaXQmIzM5O3Mgbm90IGdvaW5nIHRvIGhhdmUgYSByZWFsIE1lbGxhbm94IGNhcmQsIHRoZSBgbWx4NXZfcHJvYmVgIGZ1bmN0aW9uIHdvbiYjMzk7dCBiZSB0cmlnZ2VyZWQsIGFuZCB0aGVyZWZvcmUgdGhlIGBtbHg1X3ZkcGFfY2hhbmdlX21hcGAgZnVuY3Rpb24sIHRoYXQgdGhlIG9yaWdpbmFsIGNvZGUgaXMgZGVhbGluZyB3aXRoLCBpcyB1bnJlYWNoYWJsZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBydWxlIG91dCBhbnkgc29mdHdhcmUgZXF1aXZhbGVudHMuIElzIHRoZXJlIGEgYG5ldGRldnNpbWAtc3R5bGUgZW11bGF0aW9uIGZvciBgbWx4NWA/IE5vLiBPa2F5LCB3aGF0IGFib3V0IGB2ZHBhX3NpbWA/IENvdWxkIHRoYXQgYmUgYSB0cmlnZ2VyPyBObywgYmVjYXVzZSBgdmRwYV9zaW1gIGlzIGEgc2VwYXJhdGUgZHJpdmVyLCBgZHJpdmVycy92ZHBhL3ZkcGFfc2ltL2AsIGFuZCBpdCBkb2VzbiYjMzk7dCBldmVuIHRvdWNoIGBtbHg1X3ZuZXQuY2AuIFNvIGBtbHg1X3ZuZXQuY2AgaXMgZXhjbHVzaXZlbHkgdGllZCB0byBNZWxsYW5veCBoYXJkd2FyZS4KCkFscmlnaHQsIG5vdyBsZXQmIzM5O3MgY29uZmlybSB0aGUgYFdvcnRoRnV6emluZ2AgZGVjaXNpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgcmlnaHQgY2FsbC4gVGhlIGd1aWRlbGluZXMgc2F5LCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IFRoYXQgYXBwbGllcyBwZXJmZWN0bHkgaGVyZS4gTWVsbGFub3ggaGFyZHdhcmUgZHJpdmVycyBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuCgpTbywgaGVyZSYjMzk7cyBteSByZWFzb25pbmcsIGFuZCB0aGlzIGlzIHdoYXQgSSYjMzk7bSBnb2luZyB0byBkb2N1bWVudDogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDUgdkRQQSBkcml2ZXIgKGBkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNgKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lbGxhbm94IENvbm5lY3RYIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsIG9yIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkgdXNlZCBieSBzeXprYWxsZXIuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDsKClRoZXJlZm9yZSwgSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyODo1Ni4yMTM0NzE4MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTUyNzA5NTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDUgdkRQQSBkcml2ZXIgKGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWxsYW5veCBDb25uZWN0WCBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIG1seDUgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjg6NTYuMjEzNDc4MzU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI3NDg0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2YzVjZmY4ZmU2OWE5Y2EzYTBjMGQxYjYyZGEyYWQzN2I4YWZiZGVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDA3OjI4OjU0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyBiL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1xcbmluZGV4IGFkMGQ1ZmJiYmNhODQ4Li44YTZkZGMwMGI4ZTA3OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcXG4rKysgYi9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcXG5AQCAtMzA2NywyNCArMzA2NywyOCBAQCBzdGF0aWMgaW50IG1seDVfdmRwYV9jaGFuZ2VfbWFwKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcXG4gXFx0XFx0dGVhcmRvd25fdnFfcmVzb3VyY2VzKG5kZXYpO1xcbiBcXHR9XFxuIFxcbi1cXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xcbi1cXG4gXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBtdmRldi1cXHUwMDNlbWF4X3ZxczsgaSsrKVxcbiBcXHRcXHRuZGV2LVxcdTAwM2V2cXNbaV0ubW9kaWZpZWRfZmllbGRzIHw9IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfVklSVElPX1FfTUtFWSB8XFxuIFxcdFxcdFxcdFxcdFxcdFxcdE1MWDVfVklSVFFfTU9ESUZZX01BU0tfREVTQ19HUk9VUF9NS0VZO1xcbiBcXG4gXFx0aWYgKCEobXZkZXYtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IFZJUlRJT19DT05GSUdfU19EUklWRVJfT0spIHx8IG12ZGV2LVxcdTAwM2VzdXNwZW5kZWQpXFxuLVxcdFxcdHJldHVybiAwO1xcbitcXHRcXHRnb3RvIGRvbmU7XFxuIFxcbiBcXHRpZiAodGVhcmRvd24pIHtcXG4gXFx0XFx0cmVzdG9yZV9jaGFubmVsc19pbmZvKG5kZXYpO1xcbiBcXHRcXHRlcnIgPSBzZXR1cF92cV9yZXNvdXJjZXMobmRldiwgdHJ1ZSk7XFxuIFxcdFxcdGlmIChlcnIpXFxuLVxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4gXFx0fVxcbiBcXG4gXFx0cmVzdW1lX3ZxcyhuZGV2LCAwLCBuZGV2LVxcdTAwM2VjdXJfbnVtX3Zxcyk7XFxuK1xcdGdvdG8gZG9uZTtcXG4gXFxuK291dF9lcnI6XFxuK1xcdHJldHVybiBlcnI7XFxuK1xcbitkb25lOlxcbitcXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjg6NTYuNzY2OTk5NTY2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk3MzU2MDk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDUgdkRQQSBkcml2ZXIgKGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWxsYW5veCBDb25uZWN0WCBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIG1seDUgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YzVjZmY4ZmU2OWE5Y2EzYTBjMGQxYjYyZGEyYWQzN2I4YWZiZGVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMDc6Mjg6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMgYi9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcbmluZGV4IGFkMGQ1ZmJiYmNhODQ4Li44YTZkZGMwMGI4ZTA3OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1xuKysrIGIvZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jXG5AQCAtMzA2NywyNCArMzA2NywyOCBAQCBzdGF0aWMgaW50IG1seDVfdmRwYV9jaGFuZ2VfbWFwKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcbiBcdFx0dGVhcmRvd25fdnFfcmVzb3VyY2VzKG5kZXYpO1xuIFx0fVxuIFxuLVx0bWx4NV92ZHBhX3VwZGF0ZV9tcihtdmRldiwgbmV3X21yLCBhc2lkKTtcbi1cbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBtdmRldi1cdTAwM2VtYXhfdnFzOyBpKyspXG4gXHRcdG5kZXYtXHUwMDNldnFzW2ldLm1vZGlmaWVkX2ZpZWxkcyB8PSBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX1ZJUlRJT19RX01LRVkgfFxuIFx0XHRcdFx0XHRcdE1MWDVfVklSVFFfTU9ESUZZX01BU0tfREVTQ19HUk9VUF9NS0VZO1xuIFxuIFx0aWYgKCEobXZkZXYtXHUwMDNlc3RhdHVzIFx1MDAyNiBWSVJUSU9fQ09ORklHX1NfRFJJVkVSX09LKSB8fCBtdmRldi1cdTAwM2VzdXNwZW5kZWQpXG4tXHRcdHJldHVybiAwO1xuK1x0XHRnb3RvIGRvbmU7XG4gXG4gXHRpZiAodGVhcmRvd24pIHtcbiBcdFx0cmVzdG9yZV9jaGFubmVsc19pbmZvKG5kZXYpO1xuIFx0XHRlcnIgPSBzZXR1cF92cV9yZXNvdXJjZXMobmRldiwgdHJ1ZSk7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0XHRnb3RvIG91dF9lcnI7XG4gXHR9XG4gXG4gXHRyZXN1bWVfdnFzKG5kZXYsIDAsIG5kZXYtXHUwMDNlY3VyX251bV92cXMpO1xuK1x0Z290byBkb25lO1xuIFxuK291dF9lcnI6XG4rXHRyZXR1cm4gZXJyO1xuK1xuK2RvbmU6XG4rXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBuZXdfbXIsIGFzaWQpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjg6NTYuNzY3MDAxMzE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc0NTc0MzA3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGdW5jdGlvbmFsIENoYW5nZSBpbiB0aGUgbWx4NSB2ZHBhIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHR3ZWFrZWQgdGhlIGBtbHg1X3ZkcGFfY2hhbmdlX21hcGAgZnVuY3Rpb24gaW4gYGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY2AuIEl0J3MgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2U6IHRoZSBjYWxsIHRvIGBtbHg1X3ZkcGFfdXBkYXRlX21yYCBpcyBub3cgYXQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24sIHJpZ2h0IGJlZm9yZSB0aGUgcmV0dXJuLiAgSXQgbG9va3MgbGlrZSBpZiBgc2V0dXBfdnFfcmVzb3VyY2VzKG5kZXYsIHRydWUpYCBmYWlscywgdGhlIGNvZGUgbm93IGJhaWxzIG91dCB3aXRob3V0IGNhbGxpbmcgYG1seDVfdmRwYV91cGRhdGVfbXJgLiAgRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGRlZmluaXRlbHkgYSBjaGFuZ2UgYW5kIG5lZWRzIGNhcmVmdWwgZXhhbWluYXRpb24uXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IHJlYWNoYWJpbGl0eS4gVGhpcyBpcyBNZWxsYW5veCwgbWx4NSwgd2hpY2ggbWVhbnMgaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlci4gR2VuZXJhbGx5LCB3ZSBkb24ndCBzZWUgdGhlc2UgdGhpbmdzIHRyaWdnZXJlZCBlYXNpbHkgaW4gcHVyZWx5IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRvciBvciB3ZSdyZSBkZWFsaW5nIHdpdGggYSBnZW5lcmljIHN1YnN5c3RlbS4gTm93LCBJIHJlbWVtYmVyIHRoYXQgdmRwYSBoYXMgYSBzaW11bGF0b3IgKGB2ZHBhX3NpbWApLCBidXQgSSdtIHByZXR0eSBzdXJlIHRoZSBtbHg1IHZkcGEgc3BlY2lmaWNhbGx5IHJlcXVpcmVzIGFjdHVhbCBtbHg1IGhhcmR3YXJlIG9yIGEgKnNwZWNpZmljKiBlbXVsYXRvciBmb3IgaXQgdG8gd29yay4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBob3cgY2FuIHdlIGFjdHVhbGx5IGhpdCB0aGlzIGBtbHg1X3ZkcGFfY2hhbmdlX21hcGAgY29kZSBwYXRoP1xuXG5JJ2xsIHF1aWNrbHkgY2hlY2sgaWYgYG1seDVfdmRwYV9jaGFuZ2VfbWFwYCBpcyByZWFjaGFibGUuIEFoLCBpdCdzIGNhbGxlZCBmcm9tIGBtbHg1X3ZkcGFfc2V0X21hcGAuIE9rYXksIHRoYXQgZ2l2ZXMgbWUgYSBoYW5kbGUuIEJ1dCBzdGlsbCwgdGhlIGJpZyBodXJkbGUgaXMsIGNhbiB3ZSB0cmlnZ2VyICp0aGF0KiB3aXRob3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlPyBQQ0kgZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSBtbHg1LCB1c3VhbGx5IGZhaWwgdG8gcHJvYmUgaWYgdGhlIGhhcmR3YXJlIGlzbid0IHByZXNlbnQuICBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBldmVuIGEgUENJIGRyaXZlciBhbmQgaWYgaXQgaGFzIGFueSBmYWxsYmFja3MuIEknbGwgbmVlZCB0byBnbyBiYWNrIGFuZCBleGFtaW5lIGBkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOTowMy41MTI3NDY1MDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4MTAzNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV92ZHBhX2NoYW5nZV9tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMDI4PXN0YXRpYyB2b2lkIHJlc3RvcmVfY2hhbm5lbHNfaW5mbyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldilcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDUyLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMDUzOnN0YXRpYyBpbnQgbWx4NV92ZHBhX2NoYW5nZV9tYXAoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LFxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDU0LVxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm5ld19tcixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0zMzQ4PXN0YXRpYyBpbnQgc2V0X21hcF9kYXRhKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldiwgc3RydWN0IHZob3N0X2lvdGxiICppb3RsYixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMzcxLVxcdH0gZWxzZSB7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMzNzI6XFx0XFx0ZXJyID0gbWx4NV92ZHBhX2NoYW5nZV9tYXAobXZkZXYsIG5ld19tciwgYXNpZCk7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMzNzMtXFx0XFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOTowMy41NzM1NjczNzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYzNTMwNzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1lbGxhbm94IERyaXZlcjogQSBQcmVsaW1pbmFyeSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBNZWxsYW5veCBkcml2ZXIuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBcIkNhbiB0aGlzIGJlIGZ1enplZD9cIiBNeSBleHBlcmllbmNlIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBtbHg1YCBzdWdnZXN0cyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgdHJpY2t5LiBUeXBpY2FsbHksIHlvdSBuZWVkIHRoZSBhY3R1YWwgaGFyZHdhcmUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhlc2UsIHVubGVzcyB0aGVyZSdzIGFuIGVtdWxhdG9yIGF2YWlsYWJsZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSXMgdGhlcmUgYW4gYG1seDVgIGVtdWxhdG9yIG91dCB0aGVyZT9cIiBRdWlja2x5IHNjYW5uaW5nIG15IG1lbnRhbCBtYXAgb2YgdGhlIGtlcm5lbCBsYW5kc2NhcGUsIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBsaWtlIHRoYXQgaW4gdGhlIGtlcm5lbCB0cmVlIGl0c2VsZi4gVGltZSB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBvZmZlciBzb21lIGtpbmQgb2YgdmlydHVhbCBpbnRlcmZhY2Ugb3IgdGVzdGluZyBob29rcy4gTWF5YmUgc29tZXRoaW5nIGxpa2UgYENPTkZJR19NTFg1X1ZEUEFfTkVUYCBvciBzaW1pbGFyLiBMZXQncyBzZWUgd2hhdCB0dXJucyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI1NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDA3OjI5OjA3LjAzNzEwMDk0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDA2MzAwOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1MWDVfVkRQQV9ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZHBhL21seDUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjk6MDcuMDk3MTczMzgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5ODU4MjkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFZEUEEgYW5kIE1lbGxhbm94IEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG9idmlvdXMgZmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzLiBHaXZlbiB0aGUgbWVudGlvbiBvZiBWRFBBLCBteSBicmFpbiBhdXRvbWF0aWNhbGx5IGp1bXBzIHRvIHRoZSBsaWtlbHkgbG9jYXRpb25zOiBJJ2xsIHN0YXJ0IHdpdGggdGhlIGdlbmVyYWwgVkRQQSBkaXJlY3RvcnksIHNvIGBkcml2ZXJzL3ZkcGEvS2NvbmZpZ2AgaXMgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2suIElmIEkgZG9uJ3QgZmluZCB3aGF0IEkgbmVlZCB0aGVyZSwgSSBrbm93IE1lbGxhbm94IGlzIGEgY29tbW9uIGltcGxlbWVudGF0aW9uLCBzbyBJJ2xsIHBpdm90IHRvIHRoZSBNZWxsYW5veC1zcGVjaWZpYyBWRFBBIGRpcmVjdG9yeSBuZXh0LCBjaGVja2luZyBgZHJpdmVycy92ZHBhL21seDUvS2NvbmZpZ2AuIEFuZCwgeW91IGtub3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGJlY2F1c2UgTWVsbGFub3ggaXMgYWxzbyBhbiBldGhlcm5ldCBkcml2ZXIgdmVuZG9yLCBpdCBjb3VsZCB2ZXJ5IHdlbGwgYmUgdGhhdCB0aGUgb3B0aW9ucyBJIGFtIGxvb2tpbmcgZm9yIGNhbiBiZSBmb3VuZCBieSBhbHNvIGNoZWNraW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZ2AuIEknbGwgbmVlZCB0byBleGFtaW5lIHRob3NlIGZpbGVzIGNsb3NlbHk7IEkgYW50aWNpcGF0ZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHJlbGV2YW50IGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGZvciBWRFBBIGFuZCBNZWxsYW5veCBoYXJkd2FyZS4gSSBleHBlY3QgdG8gYmUgYWJsZSB0byBuYXZpZ2F0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBmaW5kIHRoZSBvbmUgSSBuZWVkIGJhc2VkIG9uIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOToxMS4wOTU3NTg2MzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwODU2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUxYNV9WRFBBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmRwYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZHBhL0tjb25maWc9NDQ9Y29uZmlnIElGQ1ZGXFxuLS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy01Mi1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzo1Mzpjb25maWcgTUxYNV9WRFBBXFxuZHJpdmVycy92ZHBhL0tjb25maWctNTQtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy92ZHBhL0tjb25maWctNjAtXFxuZHJpdmVycy92ZHBhL0tjb25maWc6NjE6Y29uZmlnIE1MWDVfVkRQQV9ORVRcXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwidkRQQSBkcml2ZXIgZm9yIENvbm5lY3RYIGRldmljZXNcXFwiXFxuZHJpdmVycy92ZHBhL0tjb25maWc6NjM6XFx0c2VsZWN0IE1MWDVfVkRQQVxcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTY0LVxcdHNlbGVjdCBWSE9TVF9SSU5HXFxuLS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy03MS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzo3Mjpjb25maWcgTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHXFxuZHJpdmVycy92ZHBhL0tjb25maWctNzMtXFx0Ym9vbCBcXFwiZXhwb3NlIHN0ZWVyaW5nIGNvdW50ZXJzIG9uIGRlYnVnZnNcXFwiXFxuZHJpdmVycy92ZHBhL0tjb25maWc6NzQ6XFx0c2VsZWN0IE1MWDVfVkRQQVxcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTc1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmRwYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19JRkNWRikgICAgKz0gaWZjdmYvXFxuZHJpdmVycy92ZHBhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01MWDVfVkRQQSkgKz0gbWx4NS9cXG5kcml2ZXJzL3ZkcGEvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfVlBfVkRQQSkgICAgKz0gdmlydGlvX3BjaS9cXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L01ha2VmaWxlPTE9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjdHJlZSkvZHJpdmVycy92ZHBhL21seDUvY29yZVxcbmRyaXZlcnMvdmRwYS9tbHg1L01ha2VmaWxlLTItXFxuZHJpdmVycy92ZHBhL21seDUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTUxYNV9WRFBBX05FVCkgKz0gbWx4NV92ZHBhLm9cXG5kcml2ZXJzL3ZkcGEvbWx4NS9NYWtlZmlsZTo0Om1seDVfdmRwYS0kKENPTkZJR19NTFg1X1ZEUEFfTkVUKSArPSBuZXQvbWx4NV92bmV0Lm8gY29yZS9yZXNvdXJjZXMubyBjb3JlL21yLm8gbmV0L2RlYnVnLm9cXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmgtMy1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjQ6I2lmbmRlZiBfX01MWDVfVkRQQV9IX19cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjU6I2RlZmluZSBfX01MWDVfVkRQQV9IX19cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTYtXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oPTc1PWVudW0ge1xcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmg6NzY6XFx0TUxYNV9WRFBBX0RBVEFWUV9HUk9VUCxcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjc3OlxcdE1MWDVfVkRQQV9DVlFfR1JPVVAsXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo3ODpcXHRNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVAsXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo3OTpcXHRNTFg1X1ZEUEFfTlVNVlFfR1JPVVBTXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaC04MC19O1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaD04Mj1lbnVtIHtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjgzOlxcdE1MWDVfVkRQQV9OVU1fQVMgPSAyXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaC04NC19O1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaD04Nj1zdHJ1Y3QgbWx4NV92ZHBhX21yX3Jlc291cmNlcyB7XFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tbHg1X3ZkcGEuaDo4NzpcXHRzdHJ1Y3QgbWx4NV92ZHBhX21yICptcltNTFg1X1ZEUEFfTlVNX0FTXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjg4OlxcdHVuc2lnbmVkIGludCBncm91cDJhc2lkW01MWDVfVkRQQV9OVU1WUV9HUk9VUFNdO1xcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbWx4NV92ZHBhLmgtODktXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oPTE2Nj1pbnQgbWx4NV92ZHBhX2V4ZWNfYXN5bmNfY21kcyhzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oLTE4Ni1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21seDVfdmRwYS5oOjE4NzojZW5kaWYgLyogX19NTFg1X1ZEUEFfSF9fICovXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9MTI4PXN0YXRpYyB1NjQgbWFwbGVuKHN0cnVjdCB2aG9zdF9pb3RsYl9tYXAgKm1hcCwgc3RydWN0IG1seDVfdmRwYV9kaXJlY3RfbXIgKm1yKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTEzMi1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MTMzOiNkZWZpbmUgTUxYNV9WRFBBX0lOVkFMSURfU1RBUlRfQUREUiAoKHU2NCktMSlcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MTM0OiNkZWZpbmUgTUxYNV9WRFBBX0lOVkFMSURfTEVOICgodTY0KS0xKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xMzUtXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTEzNj1zdGF0aWMgdTY0IGluZGlyX3N0YXJ0X2FkZHIoc3RydWN0IG1seDVfdmRwYV9tciAqbWtleSlcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xNDEtXFx0aWYgKCFzKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzoxNDI6XFx0XFx0cmV0dXJuIE1MWDVfVkRQQV9JTlZBTElEX1NUQVJUX0FERFI7XFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTE0My1cXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz0xNDc9c3RhdGljIHU2NCBpbmRpcl9sZW4oc3RydWN0IG1seDVfdmRwYV9tciAqbWtleSlcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0xNTMtXFx0aWYgKCFzKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzoxNTQ6XFx0XFx0cmV0dXJuIE1MWDVfVkRQQV9JTlZBTElEX0xFTjtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMTU1LVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTIwND1zdGF0aWMgaW50IGtsbV9ieXRlX3NpemUoaW50IG5rbG1zKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTIwOC1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MjA5OiNkZWZpbmUgTUxYNV9WRFBBX01UVF9BTElHTiAxNlxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0yMTAtXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTIxMT1zdGF0aWMgaW50IGNyZWF0ZV9kaXJlY3Rfa2V5cyhzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm1yKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTIyNS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6MjI2OlxcdFxcdG10dGxlbiA9IHJvdW5kdXAoTUxYNV9TVF9TWl9CWVRFUyhtdHQpICogZG1yLVxcdTAwM2Vuc2csIE1MWDVfVkRQQV9NVFRfQUxJR04pO1xcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0yMjctXFx0XFx0bXR0Y291bnQgPSBtdHRsZW4gLyBzaXplb2YoY21kX21lbS1cXHUwMDNlbXR0WzBdKTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz0zMjY9c3RhdGljIGludCBjcmVhdGVfaW5kaXJlY3Rfa2V5KHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldiwgc3RydWN0IG1seDVfdmRwYV9tciAqbXIpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtMzM2LVxcdGxlbiA9IGluZGlyX2xlbihtcik7XFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjMzNzpcXHRpZiAoc3RhcnQgPT0gTUxYNV9WRFBBX0lOVkFMSURfU1RBUlRfQUREUiB8fCBsZW4gPT0gTUxYNV9WRFBBX0lOVkFMSURfTEVOKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy0zMzgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9NjQyPXN0YXRpYyB2b2lkIF9tbHg1X3ZkcGFfZGVzdHJveV9tcihzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCBtbHg1X3ZkcGFfbXIgKm1yKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTY2Mi0gKi9cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6NjYzOiNkZWZpbmUgTUxYNV9WRFBBX01SX0dDX1RSSUdHRVJfTVMgMjAwMFxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy02NjQtXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jPTY2NT1zdGF0aWMgdm9pZCBtbHg1X3ZkcGFfbXJfZ2NfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtNjc2LVxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhtcmVzLVxcdTAwM2V3cV9nYywgXFx1MDAyNm1yZXMtXFx1MDAzZWdjX2R3b3JrX2VudCxcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6Njc3OlxcdFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoTUxYNV9WRFBBX01SX0dDX1RSSUdHRVJfTVMpKTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtNjc4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz02OTA9c3RhdGljIHZvaWQgX21seDVfdmRwYV9wdXRfbXIoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTcwMC1cXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsobXJlcy1cXHUwMDNld3FfZ2MsIFxcdTAwMjZtcmVzLVxcdTAwM2VnY19kd29ya19lbnQsXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjcwMTpcXHRcXHRcXHRcXHQgICBtc2Vjc190b19qaWZmaWVzKE1MWDVfVkRQQV9NUl9HQ19UUklHR0VSX01TKSk7XFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTcwMi1cXHR9XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9NzYxPXZvaWQgbWx4NV92ZHBhX2NsZWFuX21ycyhzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtNzY1LVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYzo3NjY6XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBNTFg1X1ZEUEFfTlVNX0FTOyBpKyspXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTc2Ny1cXHRcXHRtbHg1X3ZkcGFfdXBkYXRlX21yKG12ZGV2LCBOVUxMLCBpKTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYz04NDA9aW50IG1seDVfdmRwYV91cGRhdGVfY3ZxX2lvdGxiKHN0cnVjdCBtbHg1X3ZkcGFfZGV2ICptdmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy04NDUtXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jOjg0NjpcXHRpZiAobXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfQ1ZRX0dST1VQXSAhPSBhc2lkKVxcbmRyaXZlcnMvdmRwYS9tbHg1L2NvcmUvbXIuYy04NDctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM9ODcyPWludCBtbHg1X3ZkcGFfcmVzZXRfbXIoc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2LCB1bnNpZ25lZCBpbnQgYXNpZClcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmMtODczLXtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9jb3JlL21yLmM6ODc0OlxcdGlmIChhc2lkIFxcdTAwM2U9IE1MWDVfVkRQQV9OVU1fQVMpXFxuZHJpdmVycy92ZHBhL21seDUvY29yZS9tci5jLTg3NS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9kZWJ1Zy5jPTQ2PXZvaWQgbWx4NV92ZHBhX2FkZF9yeF9mbG93X3RhYmxlKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L2RlYnVnLmMtNTEtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L2RlYnVnLmM6NTI6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvZGVidWcuYy01My1zdGF0aWMgaW50IHBhY2tldHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9Mjk3PXN0YXRpYyB2b2lkIGRlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMwMS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzAyOiNkZWZpbmUgTUxYNV9WRFBBX0NRRV9TSVpFIDY0XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMwMzojZGVmaW5lIE1MWDVfVkRQQV9MT0dfQ1FFX1NJWkUgaWxvZzIoTUxYNV9WRFBBX0NRRV9TSVpFKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDQtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTMwNT1zdGF0aWMgaW50IGNxX2ZyYWdfYnVmX2FsbG9jKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LCBzdHJ1Y3QgbWx4NV92ZHBhX2NxX2J1ZiAqYnVmLCBpbnQgbmVudClcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMDctXFx0c3RydWN0IG1seDVfZnJhZ19idWYgKmZyYWdfYnVmID0gXFx1MDAyNmJ1Zi1cXHUwMDNlZnJhZ19idWY7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMwODpcXHR1OCBsb2dfd3Ffc3RyaWRlID0gTUxYNV9WRFBBX0xPR19DUUVfU0laRTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzA5OlxcdHU4IGxvZ193cV9zeiA9IE1MWDVfVkRQQV9MT0dfQ1FFX1NJWkU7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxMC1cXHRpbnQgZXJyO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMTEtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjMxMjpcXHRlcnIgPSBtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUobmRldi1cXHUwMDNlbXZkZXYubWRldiwgbmVudCAqIE1MWDVfVkRQQV9DUUVfU0laRSwgZnJhZ19idWYsXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxMy1cXHRcXHRcXHRcXHQgICAgICAgbmRldi1cXHUwMDNlbXZkZXYubWRldi1cXHUwMDNlcHJpdi5udW1hX25vZGUpO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMxOC1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzE5OlxcdGJ1Zi1cXHUwMDNlY3FlX3NpemUgPSBNTFg1X1ZEUEFfQ1FFX1NJWkU7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMyMC1cXHRidWYtXFx1MDAzZW5lbnQgPSBuZW50O1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTg3Nj1zdGF0aWMgaW50IGNyZWF0ZV92aXJ0cXVldWUoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQxLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo5NDI6XFx0XFx0dnFfbXIgPSBtdmRldi1cXHUwMDNlbXJlcy5tclttdmRldi1cXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfR1JPVVBdXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQzLVxcdFxcdGlmICh2cV9tcilcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NDUtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjk0NjpcXHRcXHR2cV9kZXNjX21yID0gbXZkZXYtXFx1MDAzZW1yZXMubXJbbXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTQ3LVxcdFxcdGlmICh2cV9kZXNjX21yIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTUzLVxcdFxcdCAqL1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo5NTQ6XFx0XFx0dnFfbXIgPSBtdmRldi1cXHUwMDNlbXJlcy5tclttdmRldi1cXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfR1JPVVBdXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTU1LVxcdFxcdGlmICh2cV9tcilcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy05NTctXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjk1ODpcXHRcXHR2cV9kZXNjX21yID0gbXZkZXYtXFx1MDAzZW1yZXMubXJbbXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVBdXTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtOTU5LVxcdFxcdGlmICh2cV9kZXNjX21yKVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTEzMDQ9c3RhdGljIHZvaWQgZmlsbF9tb2RpZnlfdmlydHF1ZXVlX2NtZChzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzU0LVxcdGlmIChtdnEtXFx1MDAzZW1vZGlmaWVkX2ZpZWxkcyBcXHUwMDI2IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfVklSVElPX1FfTUtFWSkge1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxMzU1OlxcdFxcdHZxX21yID0gbXZkZXYtXFx1MDAzZW1yZXMubXJbbXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtNTFg1X1ZEUEFfREFUQVZRX0dST1VQXV07XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzNTYtXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM2My1cXHRpZiAobXZxLVxcdTAwM2Vtb2RpZmllZF9maWVsZHMgXFx1MDAyNiBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX0RFU0NfR1JPVVBfTUtFWSkge1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxMzY0OlxcdFxcdGRlc2NfbXIgPSBtdmRldi1cXHUwMDNlbXJlcy5tclttdmRldi1cXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfREVTQ19HUk9VUF1dO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzY1LVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTEzNzU9c3RhdGljIHZvaWQgbW9kaWZ5X3ZpcnRxdWV1ZV9lbmQoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTM4MS1cXHRpZiAobXZxLVxcdTAwM2Vtb2RpZmllZF9maWVsZHMgXFx1MDAyNiBNTFg1X1ZJUlRRX01PRElGWV9NQVNLX1ZJUlRJT19RX01LRVkpIHtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTM4MjpcXHRcXHR1bnNpZ25lZCBpbnQgYXNpZCA9IG12ZGV2LVxcdTAwM2VtcmVzLmdyb3VwMmFzaWRbTUxYNV9WRFBBX0RBVEFWUV9HUk9VUF07XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzODMtXFx0XFx0c3RydWN0IG1seDVfdmRwYV9tciAqdnFfbXIgPSBtdmRldi1cXHUwMDNlbXJlcy5tclthc2lkXTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xMzkwLVxcdGlmIChtdnEtXFx1MDAzZW1vZGlmaWVkX2ZpZWxkcyBcXHUwMDI2IE1MWDVfVklSVFFfTU9ESUZZX01BU0tfREVTQ19HUk9VUF9NS0VZKSB7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjEzOTE6XFx0XFx0dW5zaWduZWQgaW50IGFzaWQgPSBtdmRldi1cXHUwMDNlbXJlcy5ncm91cDJhc2lkW01MWDVfVkRQQV9EQVRBVlFfREVTQ19HUk9VUF07XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTEzOTItXFx0XFx0c3RydWN0IG1seDVfdmRwYV9tciAqZGVzY19tciA9IG12ZGV2LVxcdTAwM2VtcmVzLm1yW2FzaWRdO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTE0NTY9c3RhdGljIHZvaWQgYWxsb2NfdmVjdG9yKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2LFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE0NjYtXFx0XFx0aWYgKCFlbnQtXFx1MDAzZXVzZWQpIHtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTQ2NzpcXHRcXHRcXHRzbnByaW50ZihlbnQtXFx1MDAzZW5hbWUsIE1MWDVfVkRQQV9JUlFfTkFNRV9MRU4sIFxcXCIlcy12cS0lZFxcXCIsXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE0NjgtXFx0XFx0XFx0XFx0IGRldl9uYW1lKFxcdTAwMjZuZGV2LVxcdTAwM2VtdmRldi52ZGV2LmRldiksIG12cS1cXHUwMDNlaW5kZXgpO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTE4NTg9c3RhdGljIHZvaWQgZGVzdHJveV90aXIoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTg2Ni1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTg2NzojaWYgZGVmaW5lZChDT05GSUdfTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xODY4LSAgICAgICAjZGVmaW5lIE5VTV9ERVNUUyAyXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MTg3Mz1zdGF0aWMgaW50IGFkZF9zdGVlcmluZ19jb3VudGVycyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xODc3LXtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MTg3ODojaWYgZGVmaW5lZChDT05GSUdfTUxYNV9WRFBBX1NURUVSSU5HX0RFQlVHKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xODc5LVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MTkwMz1zdGF0aWMgdm9pZCByZW1vdmVfc3RlZXJpbmdfY291bnRlcnMoc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTkwNS17XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjE5MDY6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMTkwNy1cXHRtbHg1X2ZjX2Rlc3Ryb3kobmRldi1cXHUwMDNlbXZkZXYubWRldiwgbm9kZS1cXHUwMDNlbWNhc3RfY291bnRlci5jb3VudGVyKTtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0xOTEyPXN0YXRpYyBpbnQgbWx4NV92ZHBhX2FkZF9tYWNfdmxhbl9ydWxlcyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldiwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xOTUxLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxOTUyOiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NTMtXFx0ZGVzdHNbMV0uY291bnRlciA9IG5vZGUtXFx1MDAzZXVjYXN0X2NvdW50ZXIuY291bnRlcjtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0xOTYwLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoxOTYxOiNpZiBkZWZpbmVkKENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJTkdfREVCVUcpXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTE5NjItXFx0ZGVzdHNbMV0uY291bnRlciA9IG5vZGUtXFx1MDAzZW1jYXN0X2NvdW50ZXIuY291bnRlcjtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYz0yNjUyPXN0YXRpYyB1MzIgbWx4NV92ZHBhX2dldF92cV9ncm91cChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYsIHUxNiBpZHgpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjY1Ni1cXHRpZiAoaXNfY3RybF92cV9pZHgobXZkZXYsIGlkeCkpXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjI2NTc6XFx0XFx0cmV0dXJuIE1MWDVfVkRQQV9DVlFfR1JPVVA7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NTgtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjI2NTk6XFx0cmV0dXJuIE1MWDVfVkRQQV9EQVRBVlFfR1JPVVA7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NjAtfVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTI2NjI9c3RhdGljIHUzMiBtbHg1X3ZkcGFfZ2V0X3ZxX2Rlc2NfZ3JvdXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2LCB1MTYgaWR4KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NjYtXFx0aWYgKGlzX2N0cmxfdnFfaWR4KG12ZGV2LCBpZHgpKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyNjY3OlxcdFxcdHJldHVybiBNTFg1X1ZEUEFfQ1ZRX0dST1VQO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0yNjY4LVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyNjY5OlxcdHJldHVybiBNTFg1X1ZEUEFfREFUQVZRX0RFU0NfR1JPVVA7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI2NzAtfVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTI5NTI9c3RhdGljIHZvaWQgbWx4NV92ZHBhX3NldF9jb25maWdfY2Ioc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2LCBzdHJ1Y3QgdmRwYV9jYWxsYmFjayAqY2IpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjk1OS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6Mjk2MDojZGVmaW5lIE1MWDVfVkRQQV9NQVhfVlFfRU5UUklFUyAyNTZcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMjk2MS1zdGF0aWMgdTE2IG1seDVfdmRwYV9nZXRfdnFfbnVtX21heChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjIte1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzoyOTYzOlxcdHJldHVybiBNTFg1X1ZEUEFfTUFYX1ZRX0VOVFJJRVM7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTI5NjQtfVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTMyNDU9c3RhdGljIHZvaWQgaW5pdF9ncm91cF90b19hc2lkX21hcChzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzI0OS1cXHQvKiBkZWZhdWx0IG1hcHBpbmcgYWxsIGdyb3VwcyBhcmUgbWFwcGVkIHRvIGFzaWQgMCAqL1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozMjUwOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNTFg1X1ZEUEFfTlVNVlFfR1JPVVBTOyBpKyspXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTMyNTEtXFx0XFx0bXZkZXYtXFx1MDAzZW1yZXMuZ3JvdXAyYXNpZFtpXSA9IDA7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzM0OD1zdGF0aWMgaW50IHNldF9tYXBfZGF0YShzdHJ1Y3QgbWx4NV92ZHBhX2RldiAqbXZkZXYsIHN0cnVjdCB2aG9zdF9pb3RsYiAqaW90bGIsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtMzM1My1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzM1NDpcXHRpZiAoYXNpZCBcXHUwMDNlPSBNTFg1X1ZEUEFfTlVNX0FTKVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zMzU1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTM2NTI9c3RhdGljIGludCBtbHg1X3NldF9ncm91cF9hc2lkKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRldiwgdTMyIGdyb3VwLFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM2NjAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2bXZkZXYtXFx1MDAzZW1yZXMubG9jayk7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM2NjE6XFx0aWYgKGdyb3VwID09IE1MWDVfVkRQQV9DVlFfR1JPVVAgXFx1MDAyNlxcdTAwMjYgbXZkZXYtXFx1MDAzZW1yZXMubXJbYXNpZF0pXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM2NjItXFx0XFx0ZXJyID0gbWx4NV92ZHBhX3VwZGF0ZV9jdnFfaW90bGIobXZkZXYsIG12ZGV2LVxcdTAwM2VtcmVzLm1yW2FzaWRdLVxcdTAwM2Vpb3RsYiwgYXNpZCk7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzgwNT1zdGF0aWMgdm9pZCBhbGxvY2F0ZV9pcnFzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4MjMtXFx0XFx0ZW50ID0gbmRldi1cXHUwMDNlaXJxcC5lbnRyaWVzICsgaTtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM6MzgyNDpcXHRcXHRzbnByaW50ZihlbnQtXFx1MDAzZW5hbWUsIE1MWDVfVkRQQV9JUlFfTkFNRV9MRU4sIFxcXCIlcy12cS0lZFxcXCIsXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4MjUtXFx0XFx0XFx0IGRldl9uYW1lKFxcdTAwMjZuZGV2LVxcdTAwM2VtdmRldi52ZGV2LmRldiksIGkpO1xcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTM4MzQ9c3RhdGljIGludCBtbHg1X3ZkcGFfZGV2X2FkZChzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4OTUtXFx0bmRldiA9IHZkcGFfYWxsb2NfZGV2aWNlKHN0cnVjdCBtbHg1X3ZkcGFfbmV0LCBtdmRldi52ZGV2LCBtZGV2LVxcdTAwM2VkZXZpY2UsIFxcdTAwMjZtZ3RkZXYtXFx1MDAzZXZkcGFfb3BzLFxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzozODk2OlxcdFxcdFxcdFxcdCBOVUxMLCBNTFg1X1ZEUEFfTlVNVlFfR1JPVVBTLCBNTFg1X1ZEUEFfTlVNX0FTLCBuYW1lLCBmYWxzZSk7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4OTctXFx0aWYgKElTX0VSUihuZGV2KSlcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaD0yND1zdGF0aWMgaW5saW5lIHUxNiBrZXkydmlkKHU2NCBrZXkpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtMjgtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oOjI5OiNkZWZpbmUgTUxYNV9WRFBBX0lSUV9OQU1FX0xFTiAzMlxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC0zMC1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg9MzE9c3RydWN0IG1seDVfdmRwYV9pcnFfcG9vbF9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtMzMtXFx0Ym9vbCB1c2VkO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaDozNDpcXHRjaGFyIG5hbWVbTUxYNV9WRFBBX0lSUV9OQU1FX0xFTl07XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5oLTM1LVxcdHZvaWQgKmRldl9pZDtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaD04Nj1zdHJ1Y3QgbWFjdmxhbl9ub2RlIHtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaC05Mi1cXHRib29sIHRhZ2dlZDtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0Lmg6OTM6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtOTQtXFx0c3RydWN0IGRlbnRyeSAqZGVudDtcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaD0xMDU9dm9pZCBtbHg1X3ZkcGFfcmVtb3ZlX3Rpcm4oc3RydWN0IG1seDVfdmRwYV9uZXQgKm5kZXYpO1xcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuaDoxMDY6I2lmIGRlZmluZWQoQ09ORklHX01MWDVfVkRQQV9TVEVFUklOR19ERUJVRylcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmgtMTA3LXZvaWQgbWx4NV92ZHBhX2FkZF9yeF9jb3VudGVycyhzdHJ1Y3QgbWx4NV92ZHBhX25ldCAqbmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjk6MTEuMTUzODUwNjg2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQzOTAzOTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNTFg1X1ZEUEFfTkVUIERyaXZlcjogQSBWaXJ0dWFsaXphdGlvbiBDaGFsbGVuZ2UqKlxuXG5Pa2F5LCBzbyB0aGUgdGFzayBpcyB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGVmZmVjdGl2ZWx5IGZ1enogdGhlIGBNTFg1X1ZEUEFfTkVUYCBkcml2ZXIuIFRoaXMgaXMgaW50ZXJlc3RpbmcsIGdpdmVuIG15IGJhY2tncm91bmQuIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJDYW4gSSBldmVuIHRvdWNoIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCIgTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQgYE1MWDVgIGRyaXZlcnMgYXJlIHVzdWFsbHkgdGlnaHRseSBjb3VwbGVkIHdpdGggTWVsbGFub3ggaGFyZHdhcmUuIFRoYXQncyB0aGUgdHlwaWNhbCBzZXR1cC5cblxuVGhlbiBJIHJlbWVtYmVyIFN5emthbGxlci4gSXQgaGFzIHRoaXMgcmVwdXRhdGlvbiBmb3IgYmVpbmcgY2xldmVyIGFib3V0IGluaXRpYWxpemluZyBkcml2ZXJzLiBCdXQgdGhhdCdzIG9ubHkgZWZmZWN0aXZlIGlmIGl0ICpjYW4qIGluaXRpYWxpemUgdGhlbS4gSWYgdGhpcyBkcml2ZXIgZGVtYW5kcyBhIHJlYWwgUENJIGRldmljZSwgSSdtIHN0dWNrLiBJdCB3b24ndCBiZSByZWFjaGFibGUuXG5cblNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgc29mdHdhcmUgZW11bGF0aW9uIGluIFN5emthbGxlciBvciB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuIEFueSB0cmlja3MgdG8gZm9vbCB0aGUgc3lzdGVtIGludG8gdGhpbmtpbmcgaXQgaGFzIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUuIEhtbS4uLiBub3RoaW5nIGp1bXBzIG91dC5cblxuV2FpdCBhIG1pbnV0ZSwgSSBzZWUgc29tZXRoaW5nLiBUaGUgZXhpc3RlbmNlIG9mIGEgYHN5ei1jbHVzdGVyYCBhdXRob3IgaW4gdGhlIHBhdGNoIGhpc3RvcnkgaW5kaWNhdGVzIGVpdGhlciBTeXprYWxsZXIgc3VjY2Vzc2Z1bGx5IGZvdW5kIGEgYnVnIG9yIHNvbWVvbmUgc3VibWl0dGVkIGEgcGF0Y2ggdG8gaGF2ZSBpdCBldmFsdWF0ZWQgaW4gc3l6a2FsbGVyLlxuXG5SaWdodCwgdGhlbiBJIHNlZSB0aGUgcHJvbXB0OiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGF0J3Mgd2hhdCBJIGFtIHRyeWluZyB0byBkZXRlcm1pbmUgaWYgdGhpcyBhcHBsaWVzLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2suIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYGRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY2AuIENsZWFybHksIHRoaXMgaXMgYSBkcml2ZXIgZm9yIE1lbGxhbm94IENvbm5lY3RYIGRldmljZXMsIHdoaWNoIGlzIGEgYml0IG9mIGEgY2x1ZS4gQnV0IGRvZXMgaXQgbWVhbiBpdCBpcyB1bnJlYWNoYWJsZSwgb3IgY2FuIHRoZSBkcml2ZXIgYmUgdXNlZCBpbiB2aXJ0dWFsaXphdGlvbi5cblxuTm93IGl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZS4gVGltZSB0byBzdGFydCB3aXRoIHRoZSBwcm9iZSBmdW5jdGlvbiBpbiBgbWx4NV92bmV0LmNgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg5NSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOToxOC41OTI4OTM4MzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDgwODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfdmRwYV9kZXZfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9MzgwNT1zdGF0aWMgdm9pZCBhbGxvY2F0ZV9pcnFzKHN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jLTM4MzMtXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjM4MzQ6c3RhdGljIGludCBtbHg1X3ZkcGFfZGV2X2FkZChzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBjb25zdCBjaGFyICpuYW1lLFxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy0zODM1LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHZkcGFfZGV2X3NldF9jb25maWcgKmFkZF9jb25maWcpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9NDA5MD1zdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfbWdtdGRldl9vcHMgbWRldl9vcHMgPSB7XFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jOjQwOTE6XFx0LmRldl9hZGQgPSBtbHg1X3ZkcGFfZGV2X2FkZCxcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDA5Mi1cXHQuZGV2X2RlbCA9IG1seDVfdmRwYV9kZXZfZGVsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOToxOC42NTAzODIxM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ0OTY2ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBwcm9jZXNzLCB0aGlua2luZyB0aHJvdWdoIGl0IGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBtbHg1IHZEUEEgRGV2aWNlIEFkZGl0aW9uKipcblxuQWxyaWdodCwgc28gYG1seDVfdmRwYV9kZXZfYWRkYC4gVGhpcyBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGFuZCBJJ20gaW5zdGFudGx5IHRoaW5raW5nIGFib3V0IGl0cyBwbGFjZSBpbiB0aGUgbGlmZWN5Y2xlIG9mIHRoaXMgdkRQQSBzZXR1cC4gVGhlIGZhY3QgdGhhdCBpdCdzIGNhbGxlZCB2aWEgYHZkcGFfbWdtdGRldl9vcHNgIGlzIHRoZSBmaXJzdCBrZXkgaW5kaWNhdG9yLiBJJ20gaW1tZWRpYXRlbHkgcGljdHVyaW5nIHRoZSB2RFBBIG1hbmFnZW1lbnQgbGF5ZXIsIHRoZSBjb3JlIGZyYW1ld29yay4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHRoZSBicmlkZ2UsIHRoZSB3YXkgd2UncmUgYWN0dWFsbHkgY3JlYXRpbmcgYW5kIGVuYWJsaW5nIGEgdkRQQSBkZXZpY2UgdXNpbmcgdGhlIG1seDUgaGFyZHdhcmUuIEkgY2FuIGluZmVyIGZyb20gdGhhdCwgdGhhdCBgdmRwYV9tZ210ZGV2X29wc2AgaXMgdGhlIG1lY2hhbmlzbSBieSB3aGljaCB0aGUgdkRQQSBjb3JlIGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgaW4gdGhpcyBjYXNlLCB0aGUgYG1seDVgIGltcGxlbWVudGF0aW9uLlxuXG5UaGVuLCB0aGUgc2Vjb25kIHBpZWNlLiBgbWx4NV92ZHBhX25ldF9wcm9iZWAgaXMgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZSBtYW5hZ2VtZW50IGRldmljZS4gVGhpcyBpcyB0aGUgaW5pdGlhbCBzdGVwLCB0aGUgXCJkaXNjb3ZlcnlcIiBwaGFzZSBpZiB5b3Ugd2lsbC4gVGhlIGBuZXRfcHJvYmVgIHN1Z2dlc3RzIGl0J3MgbGlrZWx5IGNhbGxlZCBkdXJpbmcgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIHNldHVwIG9yIHBlcmhhcHMgZHVyaW5nIGEgaG90cGx1ZyBldmVudC4gVGhpcyByZWdpc3RyYXRpb24gaXMgdGhlIHByZWN1cnNvciB0byBgbWx4NV92ZHBhX2Rldl9hZGRgLiBXZSBhcmUgZ2V0dGluZyB0aGUgXCJkZXZpY2VcIiByZWdpc3RlcmVkLCBhbmQgdGhlbiB3aGVuIHRoYXQgZGV2aWNlIHdhbnRzIHRvIGNvbWUgdXAsIHRoZSBgbWx4NV92ZHBhX2Rldl9hZGRgIHdpbGwgYmUgY2FsbGVkLiBJdCdzIHRoZSBcImRldmljZSBiZWluZyBvbmxpbmVcIiBraW5kIG9mIG9wZXJhdGlvbi5cblxuU28sIGluIGVzc2VuY2UsIEkgc2VlIHRoaXMgYXM6IDEpIGBtbHg1X3ZkcGFfbmV0X3Byb2JlYCBpZGVudGlmaWVzIGFuZCByZWdpc3RlcnMgdGhlIHVuZGVybHlpbmcgbWx4NSBoYXJkd2FyZSBhcyBhIHBvdGVudGlhbCB2RFBBIG1hbmFnZW1lbnQgZGV2aWNlLiAyKSBMYXRlciwgd2hlbiBhIHZEUEEgZGV2aWNlIG5lZWRzIHRvIGJlIGFjdGl2ZWx5IHVzZWQgKGUuZy4gYSBWTSBjb25uZWN0cyB0byBpdCksIHRoZSBtYW5hZ2VtZW50IGZyYW1ld29yayB1c2VzIGl0cyBgdmRwYV9tZ210ZGV2X29wc2AgdG8gY2FsbCBgbWx4NV92ZHBhX2Rldl9hZGRgLCB3aGljaCBwcmVzdW1hYmx5IGFsbG9jYXRlcyB0aGUgcmVzb3VyY2VzLCBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgcXVldWVzLCBhbmQgbGlua3MgdGhlIHZEUEEgZnJvbnRlbmQgd2l0aCB0aGUgbWx4NSBiYWNrZW5kLCBtYWtpbmcgdGhlIGRldmljZSBvcGVyYXRpb25hbC4gSXQncyBhIGNsZWFuIHNlcGFyYXRpb24gb2YgY29uY2VybnM6IGRpc2NvdmVyeSBhbmQgaW5pdGlhbCBzZXR1cCAocHJvYmUpIHZzLiBhY3R1YWwgZGV2aWNlIGFjdGl2YXRpb24uIEl0J3MgYSB3ZWxsLXN0cnVjdHVyZWQgYXBwcm9hY2gsIGFuZCBJIGNhbiBzdGFydCB0byB2aXN1YWxpemUgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSB2RFBBIGNvcmUsIHRoZSBtYW5hZ2VtZW50IGludGVyZmFjZSwgYW5kIHRoZSBtbHg1IGhhcmR3YXJlLiBJJ2Qgd2FudCB0byBkaWcgaW50byBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkLCBob3cgdGhlIHF1ZXVlcyBhcmUgZXN0YWJsaXNoZWQsIGFuZCBob3cgdGhlIGRhdGEgZmxvdyBpcyBvcmNoZXN0cmF0ZWQsIGJ1dCBhdCB0aGlzIGhpZ2ggbGV2ZWwsIHRoYXQgbWFrZXMgY29tcGxldGUgc2Vuc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTE4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDc6Mjk6MjMuMzk1MzUzMzIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTIzMTM0OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV92ZHBhX25ldF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDA3OjI5OjIzLjQ1NDU5NDc1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODQwMTQ4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBzZWFyY2ggdGVybXM6XG5cbioqRGVsdmluZyBpbnRvIERldmljZSBEcml2ZXIgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiBoZXJlLiBUaGUgZmlyc3QgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIG9wZXJhdGlvbnMuIEknbSB0aGlua2luZyBhYm91dCBlaXRoZXIgbG9va2luZyBmb3IgYG1kZXZfb3BzYCBvciBgcHJvYmVgLiBCb3RoIG9mIHRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cywgcmlnaHQ/IGBtZGV2X29wc2AgZ2l2ZXMgbWUgYSBnb29kIGNoYW5jZSBvZiBmaW5kaW5nIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGZvciB0aGUgc3BlY2lmaWMgZGV2aWNlLCB0aGUgaGFuZGxlcnMgaWYgeW91IHdpbGwsIGxpa2UgcmVhZCwgd3JpdGUsIGlvY3RsLCB0aGUgd2hvbGUgc2hlYmFuZy4gSXQgd2lsbCBiZSB0aGUgXCJnbHVlXCIgdGhhdCBob29rcyBtZSBpbnRvIHRoZSBoYXJkd2FyZSBjYWxscy5cblxuT24gdGhlIG90aGVyIGhhbmQsIGBwcm9iZWAgaXMgd2hlcmUgdGhlIGRldmljZSBpcyBhY3R1YWxseSBpbml0aWFsaXplZCBhbmQgaWRlbnRpZmllZCwgdGhlIGZpcnN0IHN0ZXBzIGEgZHJpdmVyIHRha2VzLiBJdCdzIG9mdGVuIHRoZSBzdGFydCBvZiBmaWd1cmluZyBvdXQgd2hhdCBraW5kIG9mIGhhcmR3YXJlIEkgYW0gZGVhbGluZyB3aXRoLCB3aGF0IHJlc291cmNlcyBpdCBuZWVkcywgYW5kIGhvdyB0byBjb25uZWN0IHRvIGl0IGluIHRoZSBzeXN0ZW0uIEdldHRpbmcgdGhlIHByb2JlIGZ1bmN0aW9uIHJpZ2h0IGlzIGNyaXRpY2FsIGZvciB0aGUga2VybmVsIHRvIHNlZSB0aGUgZGV2aWNlLiBcblxuRGVwZW5kaW5nIG9uIHdoYXQgSSBhbSB0cnlpbmcgdG8gdW5kZXJzdGFuZCwgZWl0aGVyIG9uZSBjb3VsZCBiZSB0aGUga2V5IHRvIHVubG9ja2luZyB0aGUgbXlzdGVyaWVzIG9mIHRoaXMgZHJpdmVyLiBMZXQncyBzZWUgd2hhdCB0aGUgcmVzdWx0cyBicmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NjAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwNzoyOToyNy4xMzg2MTI0NTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjkyNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kZXZfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmM9NDA1Nz1zdGF0aWMgaW50IG1seDVfdmRwYV9zZXRfYXR0cihzdHJ1Y3QgdmRwYV9tZ210X2RldiAqdl9tZGV2LCBzdHJ1Y3QgdmRwYV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy00MDg5LVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo0MDkwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdmRwYV9tZ210ZGV2X29wcyBtZGV2X29wcyA9IHtcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDA5MS1cXHQuZGV2X2FkZCA9IG1seDVfdmRwYV9kZXZfYWRkLFxcbi0tXFxuZHJpdmVycy92ZHBhL21seDUvbmV0L21seDVfdm5ldC5jPTQxMDE9c3RhdGljIGludCBtbHg1dl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYy00MTEzLVxcbmRyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYzo0MTE0OlxcdG1ndGRldi1cXHUwMDNlbWd0ZGV2Lm9wcyA9IFxcdTAwMjZtZGV2X29wcztcXG5kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMtNDExNS1cXHRtZ3RkZXYtXFx1MDAzZW1ndGRldi5kZXZpY2UgPSBtZGV2LVxcdTAwM2VkZXZpY2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDA3OjI5OjI3LjE5NjMxMjIzMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTQ0MjE0MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBtbHg1dl9wcm9iZWAgUGF0aCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBgbWx4NXZfcHJvYmVgLCBhbiBhdXhpbGlhcnkgZGV2aWNlIHByb2JlLiBUaGlzIGlzIGNyZWF0ZWQgYnkgdGhlIGBtbHg1YCBjb3JlIGRyaXZlciwgd2hpY2ggcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlYC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhlIGBtbHg1YCBjb3JlIGRyaXZlciAqcmVxdWlyZXMqIGEgZ2VudWluZSBQQ0kgZGV2aWNlLiBUaGVyZSdzIG5vIHVwc3RyZWFtIGtlcm5lbCBlbXVsYXRpb24gZm9yIGBtbHg1YC4gVGhhdCBtZWFucyB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCBpcyBmdW5kYW1lbnRhbGx5IGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB1bmxlc3Mgd2UncmUgZG9pbmcgUENJIHBhc3N0aHJvdWdoIG9mIGEgcmVhbCBNZWxsYW5veCBkZXZpY2UuXG5cblNpbmNlIHN5emthbGxlciBydW5zIGluIFFFTVUvR0NFLCBhbmQgaXQncyBub3QgZ29pbmcgdG8gaGF2ZSBhIHJlYWwgTWVsbGFub3ggY2FyZCwgdGhlIGBtbHg1dl9wcm9iZWAgZnVuY3Rpb24gd29uJ3QgYmUgdHJpZ2dlcmVkLCBhbmQgdGhlcmVmb3JlIHRoZSBgbWx4NV92ZHBhX2NoYW5nZV9tYXBgIGZ1bmN0aW9uLCB0aGF0IHRoZSBvcmlnaW5hbCBjb2RlIGlzIGRlYWxpbmcgd2l0aCwgaXMgdW5yZWFjaGFibGUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBydWxlIG91dCBhbnkgc29mdHdhcmUgZXF1aXZhbGVudHMuIElzIHRoZXJlIGEgYG5ldGRldnNpbWAtc3R5bGUgZW11bGF0aW9uIGZvciBgbWx4NWA/IE5vLiBPa2F5LCB3aGF0IGFib3V0IGB2ZHBhX3NpbWA/IENvdWxkIHRoYXQgYmUgYSB0cmlnZ2VyPyBObywgYmVjYXVzZSBgdmRwYV9zaW1gIGlzIGEgc2VwYXJhdGUgZHJpdmVyLCBgZHJpdmVycy92ZHBhL3ZkcGFfc2ltL2AsIGFuZCBpdCBkb2Vzbid0IGV2ZW4gdG91Y2ggYG1seDVfdm5ldC5jYC4gU28gYG1seDVfdm5ldC5jYCBpcyBleGNsdXNpdmVseSB0aWVkIHRvIE1lbGxhbm94IGhhcmR3YXJlLlxuXG5BbHJpZ2h0LCBub3cgbGV0J3MgY29uZmlybSB0aGUgYFdvcnRoRnV6emluZ2AgZGVjaXNpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgcmlnaHQgY2FsbC4gVGhlIGd1aWRlbGluZXMgc2F5LCBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFRoYXQgYXBwbGllcyBwZXJmZWN0bHkgaGVyZS4gTWVsbGFub3ggaGFyZHdhcmUgZHJpdmVycyBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuXG5cblNvLCBoZXJlJ3MgbXkgcmVhc29uaW5nLCBhbmQgdGhpcyBpcyB3aGF0IEknbSBnb2luZyB0byBkb2N1bWVudDogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDUgdkRQQSBkcml2ZXIgKGBkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmNgKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lbGxhbm94IENvbm5lY3RYIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsIG9yIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkgdXNlZCBieSBzeXprYWxsZXIuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUuXCJcblxuVGhlcmVmb3JlLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxODcsIk91dHB1dFRva2VucyI6MTI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDA3OjI5OjM1Ljc0MDUyOTA3NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtbHg1IHZEUEEgZHJpdmVyIChkcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdFggZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow56zlc[1] Phase: Running StartedAt: 2026-07-16 07:29:42 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow56zlc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-16 07:29:42 +0000 UTC FinishedAt: 2026-07-16 07:29:48 +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,}