Name: series-workfloww5mvd Phase: Failed StartedAt: 2026-07-05 00:05:00 +0000 UTC FinishedAt: 2026-07-05 00:34:26 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww5mvd[0] Phase: Succeeded StartedAt: 2026-07-05 00:05:00 +0000 UTC FinishedAt: 2026-07-05 00:34:16 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww5mvd[0].run-triage Phase: Succeeded StartedAt: 2026-07-05 00:05:00 +0000 UTC FinishedAt: 2026-07-05 00:34:16 +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+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQyMzhhY2IwZThlNWJmYTk4OGVhZTg5NWJlMDE0ZWU5YjBiY2E1MmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDAwOjMzOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5pbmRleCA4OTIxNWUxZGRjMmRiMS4uNGIzYTVlYWFkZmI1MGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5AQCAtMjg3OCw4ICYjNDM7Mjg3OCwxMSBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4gXHRlcnIgPSBzdGFydHVwX2dmYXIoZGV2KTtcbi1cdGlmIChlcnIpXG4mIzQzO1x0aWYgKGVycikge1xuJiM0MztcdFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG4mIzQzO1x0XHRnZmFyX2ZyZWVfaXJxKHByaXYpO1xuIFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDIzOGFjYjBlOGU1YmZhOTg4ZWFlODk1YmUwMTRlZTliMGJjYTUyYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDUgMDA6MzM6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYwppbmRleCA4OTIxNWUxZGRjMmRiMS4uNGIzYTVlYWFkZmI1MGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYwpAQCAtMjg3OCw4ICYjNDM7Mjg3OCwxMSBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCXJldHVybiBlcnI7CiAKIAllcnIgPSBzdGFydHVwX2dmYXIoZGV2KTsKLQlpZiAoZXJyKQomIzQzOwlpZiAoZXJyKSB7CiYjNDM7CQlwaHlfZGlzY29ubmVjdChkZXYtJmd0O3BoeWRldik7CiYjNDM7CQlnZmFyX2ZyZWVfaXJxKHByaXYpOwogCQlyZXR1cm4gZXJyOwomIzQzOwl9CiAKIAlyZXR1cm4gZXJyOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODQwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggYWZmZWN0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgc29tZSBlcnJvciBoYW5kbGluZyBpbiBgZ2Zhcl9lbmV0X29wZW5gLCBzcGVjaWZpY2FsbHkgd2hlbiBgc3RhcnR1cF9nZmFyKGRldilgIGZhaWxzLiBUaGV5JiMzOTtyZSBtYWtpbmcgc3VyZSB0byBkaXNjb25uZWN0IHRoZSBQSFkgYW5kIGZyZWUgdGhlIElSUSBpbiB0aGF0IGNhc2Ug4oCTIGdvb2QgcHJhY3RpY2UuCgpOb3csIG15IG1pbmQgZ29lcyB0byB2aXJ0dWFsaXphdGlvbi4gVGhpcyBpcyB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgZHJpdmVyLCB0eXBpY2FsbHkgZm9yIFBvd2VyUEMvRnJlZXNjYWxlIFNvQ3MgbGlrZSBNUEM4NXh4IGFuZCBlNTAwLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIGl0IGVtdWxhdGFibGU/IFFFTVUgaXMgdGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgbG9vay4gQWgsIFFFTVUgaGFzIGFuIGBlNTAwYCBtYWNoaW5lLCBhbmQgdGhhdCBzdXBwb3J0cyBgZ2lhbmZhcmAgKG9yIGVUU0VDLCBhcyBpdCYjMzk7cyBhbHNvIGtub3duKS4gVGhhdCYjMzk7cyBhIHByb21pc2luZyBzdGFydC4KCkJ1dCBhIG5hZ2dpbmcgdGhvdWdodC4uLiBzeXprYWxsZXIsIHdoaWNoIGlzIG9mdGVuIHVzZWQgZm9yIGZ1enppbmcsIHByaW1hcmlseSB0YXJnZXRzIHg4Nl82NCwgYXJtNjQsIHJpc2N2LCBhbmQgdGhlIGxpa2UuIFdlIG5lZWQgdG8gY29uZmlybSBpZiBgR0lBTkZBUmAgaXMgZXZlbiBwcmVzZW50IG9uIHRob3NlIGFyY2hpdGVjdHVyZXMgb3IgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgUG93ZXJQQy1zcGVjaWZpYy4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIEtjb25maWcg4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZSBkZXBlbmRlbmNpZXMgd2lsbCBiZSBkZWZpbmVkLiBUaGF0JiMzOTtsbCB0ZWxsIHVzIGlmIHRoaXMgcGF0Y2ggaXMgcmVsZXZhbnQgdG8gdGhlIHN5c3RlbXMgd2UgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIG9yIGlmIHdlIG5lZWQgdG8gZG8gc29tZSBtb3JlIGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEdJQU5GQVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz04OT1jb25maWcgVUdFVEhfVFhfT05fREVNQU5EXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo5Mzpjb25maWcgR0lBTkZBUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtHaWFuZmFyIEV0aGVybmV0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBGcmVlc2NhbGUgRXRoZXJuZXQgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEZyZWVzY2FsZSBFdGhlcm5ldCBkcml2ZXJzIGluIHRoaXMga2VybmVsLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2AgZGlyZWN0b3J5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gYXJvdW5kIGxpbmUgOTMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIG1lYXQgb2YgdGhlIG1vc3QgaW50ZXJlc3Rpbmcgb3IgaW1wb3J0YW50IG9wdGlvbnMgc3RhcnRzLCBJIHN1c3BlY3QsIG9yIHBvc3NpYmx5IHdoZXJlIGEgc3BlY2lmaWMgZmFtaWx5IG9yIGtleSBzZXR0aW5nIGJlZ2lucy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgZGVmaW5lZCwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyByZWxhdGUgdG8gdGhlIG92ZXJhbGwgRXRoZXJuZXQgZHJpdmVyIGFyY2hpdGVjdHVyZSBvbiBGcmVlc2NhbGUgU29Dcy4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYXJlYXMgdGhhdCBuZWVkIGltbWVkaWF0ZSBhdHRlbnRpb24gb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWxseSBmb3Igb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIGlzc3VlIEkmIzM5O3ZlIGJlZW4gY29uc2lkZXJpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDg1Olx0XHRoZWxwXG4gIDg2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBHaWdhYml0IEV0aGVybmV0IG1vZGUgb2YgdGhlIFFVSUNDIEVuZ2luZSxcbiAgODc6XHRcdCAgd2hpY2ggaXMgYXZhaWxhYmxlIG9uIHNvbWUgRnJlZXNjYWxlIFNPQ3MuXG4gIDg4Olx0XG4gIDg5Olx0Y29uZmlnIFVHRVRIX1RYX09OX0RFTUFORFxuICA5MDpcdFx0Ym9vbCBcJiMzNDtUcmFuc21pdCBvbiBEZW1hbmQgc3VwcG9ydFwmIzM0O1xuICA5MTpcdFx0ZGVwZW5kcyBvbiBVQ0NfR0VUSFxuICA5MjpcdFxuICA5MzpcdGNvbmZpZyBHSUFORkFSXG4gIDk0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHaWFuZmFyIEV0aGVybmV0XCYjMzQ7XG4gIDk1Olx0XHRkZXBlbmRzIG9uIEhBU19ETUFcbiAgOTY6XHRcdHNlbGVjdCBGU0xfUFFfTURJT1xuICA5NzpcdFx0c2VsZWN0IFBIWUxJQlxuICA5ODpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICA5OTpcdFx0c2VsZWN0IENSQzMyXG4gMTAwOlx0XHRoZWxwXG4gMTAxOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBHaWdhYml0IFRTRUMgb24gdGhlIE1QQzgzeHgsIE1QQzg1eHgsXG4gMTAyOlx0XHQgIGFuZCBNUEM4Nnh4IGZhbWlseSBvZiBjaGlwcywgdGhlIGVUU0VDIG9uIExTMTAyMUEgYW5kIHRoZSBGRUNcbiAxMDM6XHRcdCAgb24gdGhlIDg1NDAuXG4gMTA0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgdGFyZ2V0aW5nIEZyZWVzY2FsZSBTb0NzIOKAkyBNUEM4M3h4LCA4NXh4LCA4Nnh4LCBhbmQgdGhlIExTMTAyMUEuIFRoZSBMUzEwMjFBIGlzIEFSTSwgQ29ydGV4LUE3IGJhc2VkLCBzbyB0aGF0IG1lYW5zIHdlICpjb3VsZCogY29tcGlsZSBpdCBmb3IgQVJNIGFyY2hpdGVjdHVyZXMuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIHJlYWxpc3RpY2FsbHkgZnV6eiB0aGlzIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHByb2JhYmx5IG5vdCBlYXNpbHksIHVubGVzcyB3ZSBzcGVjaWZpY2FsbHkgZW11bGF0ZSB0aGUgU29DLiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBBUk0gYm9hcmQgYW5kIFFFTVUgc3VwcG9ydCwgYnV0IGl0JiMzOTtzIG5vdCBhIGdpdmVuLgoKSXMgdGhpcyBldmVuICp3b3J0aCogZnV6emluZz8gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIHBhdGggaW4gYGdmYXJfZW5ldF9vcGVuYC4gYGdmYXJfZW5ldF9vcGVuYCBpcyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjayBmb3IgdGhlIG5ldF9kZXZpY2UuIE1lYW5pbmcgaXQgY2FuIGJlIHRyaWdnZXJlZCB1c2luZyBgaWZjb25maWcgdXBgIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudC4gU2luY2UgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgbXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBoaXR0aW5nIHRoYXQgYG5kb19vcGVuYCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgd291bGQgYmUgdHJpY2t5LgoKV2FpdCwgbGV0JiMzOTtzIGJhY2sgdXAuIFRoZSBpbnN0cnVjdGlvbnMgc2FpZCBzb21ldGhpbmcgYWJvdXQgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OyBMZXQgbWUgcmUtcmVhZCB0aGF0IHBhcnTigKYgQWhhISBUaGUgY3JpdGVyaWEgaW5jbHVkZXMgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBEb2VzIFFFTVUgZW11bGF0ZSBHaWFuZmFyPwoKWWVzLCB0aGVyZSBpcyBgaHcvbmV0L2ZzbF9ldHNlYy9gIGluIFFFTVUsIHdoaWNoIGVtdWxhdGVzIHRoZSBlVFNFQyAoR2lhbmZhcikgZm9yIHRoZSBlNTAwIG1hY2hpbmUgKFBvd2VyUEMpLiBPa2F5LCBidXQgc3l6a2FsbGVyIG1vc3RseSBmb2N1c2VzIG9uIHg4Nl82NCBhbmQgYXJtNjQsIHNvIGlmIHdlIGFyZSBjb25zaWRlcmluZyB0aGUgQVJNIExTMTAyMUEsIGl0IHN0aWxsIG1heSBub3QgYmUgZW11bGF0ZWQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZSBgR0lBTkZBUmAgZnVuY3Rpb25hbGl0eSBpcyBjb21tb25seSBlbmFibGVkIG9yIGNhbiBiZSBlbmFibGVkIG9uIHg4Ni4gSXQgZGVwZW5kcyBvbiBgSEFTX0RNQWAuIEl0ICpkb2VzbiYjMzk7dCogZGVwZW5kIG9uIGBQUENgIG9yIGBBUk1gLiBTbywgbG9naWNhbGx5LCB3ZSBjb3VsZCBjb21waWxlIGl0IG9uIHg4Nl82NCwgcG90ZW50aWFsbHkgd2l0aCBgQ09NUElMRV9URVNUYCBvciBqdXN0IG5vcm1hbGx5IHNpbmNlIHRoZSBkZXBlbmRlbmN5IGlzIGp1c3QgYEhBU19ETUFgLgoKSG93ZXZlciwgaGVyZSYjMzk7cyB0aGUga2lja2VyOiB3aXRob3V0IHRoZSBoYXJkd2FyZSBvciAqZ29vZCogZW11bGF0aW9uLCB0aGUgZHJpdmVyJiMzOTtzIGBwcm9iZWAgZnVuY3Rpb24gd2lsbCBuZXZlciBzdWNjZWVkLCBhbmQgdGhlcmVmb3JlIGBnZmFyX2VuZXRfb3BlbmAgd2lsbCBuZXZlciBnZXQgY2FsbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgaXMgYSBwbGF0Zm9ybSBvciBQQ0kgZHJpdmVyLi4uc28gaG93IGRvZXMgaXQgcmVnaXN0ZXIgaXRzZWxmPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV8uKmRyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNjAzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGdmYXJfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzYxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM6MzYxMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGdmYXJfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgUHJvYmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCYjMzk7cyBjbGVhciBpbW1lZGlhdGVseSB0aGF0IGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IG1lYW5zLCBhdCBpdHMgY29yZSwgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgcHJvYmVkIHZpYSBhIGRldmljZSB0cmVlIG5vZGUgb3IgdGhyb3VnaCBwbGF0Zm9ybSBkZXZpY2UgcmVnaXN0cmF0aW9uLiBUaGUgY3J1eCBvZiB0aGUgbWF0dGVyIGlzIHRoZSBlbnZpcm9ubWVudC4gSSYjMzk7bSB3b3JraW5nIGluIGEgZ2VuZXJpYyB4ODZfNjQgVk0uIEdpdmVuIHRoYXQsIEkga25vdyB0aGVyZSYjMzk7cyAqbm8qIHByZS1jb25maWd1cmVkIHBsYXRmb3JtIGRldmljZSB3YWl0aW5nIGZvciBhIGRyaXZlciB3aXRoIGEgJiMzNDtmc2wsZXRzZWMyJiMzNDsgY29tcGF0aWJsZSBzdHJpbmcsIG9yIHdoYXRldmVyIHRoZSBhY3R1YWwgc3RyaW5nIGlzLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbiBpdCB3b24mIzM5O3QgYmUgdGhlcmUgYnkgZGVmYXVsdCwgc28gSSBuZWVkIHRvIHZlcmlmeSB3aGF0IHRoZSBjb21wYXRpYmxlIHN0cmluZyhzKSBhcmUgdGhhdCBpdCYjMzk7cyBsb29raW5nIGZvciBzbyBJIGNhbiBzZWUgaWYgdGhlcmUgaXMgc29tZXRoaW5nIGVsc2UgaXQgbWlnaHQgbWF0Y2ggd2l0aC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIGNvbXBhdGlibGUgc3RyaW5ncyBhbmQgc2VlIHdoZXJlIHdlIGdvIGZyb20gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBnZmFyX3BtX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTM1ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjM1ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2Zhcl9tYXRjaFtdID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzU5MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MjQKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0JiMzOTtzIG15IG93biBpbnRlcm5hbCBkaWFsb2d1ZToKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEYXRhIFBvaW50IEFjcXVpc2l0aW9uKioKCkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgY2xlYXIuIEkmIzM5O3ZlIGJlZW4gZ2l2ZW4gYSAmIzM0O21hdGNoIHRhYmxlLCYjMzQ7IHdoaWNoIEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgYSBzdHJ1Y3R1cmVkIGRhdGFzZXQgcmVwcmVzZW50aW5nIHNvbWUgZm9ybSBvZiBjb3JyZWxhdGlvbiwgY29tcGFyaXNvbiwgb3IgaW50ZXJhY3Rpb24uIEl0IGNvdWxkIGJlIGFueXRoaW5nIGZyb20gZ2Vub21pYyBhbGlnbm1lbnRzIHRvIG1hY2hpbmUgbGVhcm5pbmcgb3V0cHV0IHRvIHRyYWRlIGRhdGEg4oCTIHRoZSBzcGVjaWZpY3MgYXJlIGlycmVsZXZhbnQgYXQgdGhpcyBzdGFnZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHB1cmVseSBvYnNlcnZhdGlvbmFsOiBJIG5lZWQgdG8gaW5nZXN0IHRoZSBmb3JtYXQsIHN0cnVjdHVyZSwgYW5kIGJhc2ljIHZhcmlhYmxlcyBkZXNjcmliZWQuIExldCYjMzk7cyBnZXQgcmVhZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzU4OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNTg5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2Zhcl9tYXRjaFtdID1cbjM1OTA6XHR7XG4zNTkxOlx0XHR7XG4zNTkyOlx0XHRcdC50eXBlID0gXCYjMzQ7bmV0d29ya1wmIzM0OyxcbjM1OTM6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtnaWFuZmFyXCYjMzQ7LFxuMzU5NDpcdFx0fSxcbjM1OTU6XHRcdHtcbjM1OTY6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtmc2wsZXRzZWMyXCYjMzQ7LFxuMzU5NzpcdFx0fSxcbjM1OTg6XHRcdHt9LFxuMzU5OTpcdH07XG4zNjAwOlx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZ2Zhcl9tYXRjaCk7XG4zNjAxOlx0XG4zNjAyOlx0LyogU3RydWN0dXJlIGZvciBhIGRldmljZSBkcml2ZXIgKi9cbjM2MDM6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZmFyX2RyaXZlciA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgVGFyZ2V0OiBBIEZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBPRiAoT3BlbiBGaXJtd2FyZSkgcGxhdGZvcm0gZHJpdmVyIG5hdHVyZSBvZiBpdCBqdW1wcyBvdXQuIFRoYXQgbWVhbnMgaXQgbmVlZHMgYSBkZXZpY2UgdHJlZSBub2RlIHRvIHByb2JlLCByaWdodD8gT24gYSBzdGFuZGFyZCB4ODZfNjQgUUVNVSBWTSwgbGlrZSBgcTM1YCBvciBgcGNgLCB0aGVyZSYjMzk7cyBubyBkZXZpY2UgdHJlZSwgb3IgYXQgbGVhc3Qgbm90aGluZyBmb3IgKnRoaXMqIGRldmljZS4gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBjbGV2ZXIgdHJpY2tzLCBsaWtlIGBzeXpfZGV2bWVtYCBhbmQgc3VjaCwgdG8gaW5qZWN0IGRldmljZXMsIGJ1dCB0aGF0JiMzOTtzIHR5cGljYWxseSB2ZXJ5IGxpbWl0ZWQgYW5kIG1vcmUgZm9yIHN0dWZmIGxpa2UgUENJLCBVU0IsIG9yIHZHRU0sIHJpZ2h0PyBXYWl0IGEgc2Vjb25kLCB3aGF0IGFib3V0IGBzeXpfZ2VuZXRsaW5rYCBhbmQgdGhvc2UgcHNldWRvLWRldmljZXM/IE5haCwgbm8gYXJiaXRyYXJ5IE9GIHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIGl04oCZcyBydW5uaW5nIG9uIGEgKnNwZWNpZmljKiBib2FyZC4gVGhlbiB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHN5emthbGxlciBldmVuIHJlYWNoIGBnZmFyX2VuZXRfb3BlbmA/CgpIYW5nIG9uLCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQmIzM5O3MgKmltcG9zc2libGUqIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IEdDRSBvciBRRU1VLiBCdXQgaXMgdGhpcyBpbXBvc3NpYmxlPyBJZiBJIGZpcmUgdXAgUUVNVSB3aXRoIGBxZW11LXN5c3RlbS1wcGMgLU0gZTUwMGAsIHRoZSBkZXZpY2UgKmlzKiBwcmVzZW50IGFuZCB0aGUgZHJpdmVyICp3aWxsKiBwcm9iZSEgRG9lcyBzeXprYWxsZXIgZXZlbiAqcnVuKiB0aGF0IHNwZWNpZmljIFFFTVUgc2V0dXA/IEkga25vdyB0aGVyZSYjMzk7cyBhIGBwcGM2NGxlYCB0YXJnZXQsIGJ1dCBgZTUwMGAgaXMgMzItYml0IFBvd2VyUEMsIG9yIG1heWJlIGEgNjQtYml0IGU1NTAwLgoKQWgsIGJ1dCB0aGUgcHJvbXB0IHNheXMgJiMzNDsqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDsgU2luY2UgUUVNVSAqY2FuKiBlbXVsYXRlIHRoaXMgaGFyZHdhcmUsIHRoYXQgZVRTRUMsIGl0JiMzOTtzICp0ZWNobmljYWxseSogcmVhY2hhYmxlLiBCdXQgaXMgaXQgd29ydGggaXQ/IElzIGZ1enppbmcgdGhpcyAqc3BlY2lmaWMqIGVycm9yIHBhdGggd29ydGggdGhlIGVmZm9ydD8KClRoZSBwYXRjaCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZmFyX2VuZXRfb3BlbmAgaWYgYHN0YXJ0dXBfZ2ZhcihkZXYpYCBmYWlscy4gT2theSwgYHN0YXJ0dXBfZ2ZhcmAgZG9lcyBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi4gVG8gaGl0IHRoZSBlcnJvciwgSSBuZWVkIGBzdGFydHVwX2dmYXJgIHRvIGZhaWwuIFJpZ2h0LCBub3cgdG8gbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCB0YWtlcyB0byB0cmlnZ2VyIHRoYXQgZmFpbHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IHN0YXJ0dXBfZ2ZhciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0xMzI5PXN0YXRpYyBpbnQgZ2Zhcl9hbGxvY19za2JfcmVzb3VyY2VzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMTQwOC0vKiBCcmluZyB0aGUgY29udHJvbGxlciB1cCBhbmQgcnVubmluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzoxNDA5OmludCBzdGFydHVwX2dmYXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTE0MTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTc5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MgYXMgSSBhcHByb2FjaCByZWFkaW5nIHRoaXM6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTmF2aWdhdGluZyB0aGUgTGFuZHNjYXBlKioKCkFscmlnaHQsIHRoZSBmaWxlIGlzIGBzdGFydHVwX2dmYXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpdHMgcHVycG9zZS4gR2l2ZW4gdGhlICYjMzQ7c3RhcnR1cCYjMzQ7IHByZWZpeCwgSSYjMzk7bSBleHBlY3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gbmV3IHZlbnR1cmVzLCBwcm9iYWJseSBhIGJ1c2luZXNzIHBsYW4sIGZpbmFuY2lhbCBwcm9qZWN0aW9ucywgb3IgcGVyaGFwcyBzb21lIGNvZGUgcmVsYXRlZCB0byBhIG5ldyBzdGFydHVwIGluaXRpYXRpdmUuIFRoZSAmIzM0O2dmYXImIzM0OyBwYXJ0IGlzIGxlc3MgY2xlYXI7IGl0IGNvdWxkIGJlIGFuIGFjcm9ueW0gZm9yIGEgc3BlY2lmaWMgcHJvamVjdCwgYSB0ZWFtIG5hbWUsIG9yIHNvbWV0aGluZyBtb3JlIGFic3RyYWN0LiBJJiMzOTtsbCBuZWVkIGNvbnRleHQgdG8gaW50ZXJwcmV0IGl0IGNvcnJlY3RseS4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIGRvY3VtZW50YXRpb24sIGNvZGUsIG9yIGRhdGEuIEp1ZGdpbmcgYnkgdGhlIGZvcm1hdCwgSSYjMzk7bSBleHBlY3Rpbmcgc29tZXRoaW5nIGluIGEgdGV4dCBiYXNlZCBmb3JtYXQuIEkgbmVlZCB0byBnZXQgc3RhcnRlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzdHJ1Y3R1cmUgYW5kIGNvbnRlbnQgd2l0aGluLiBCYXNlZCBvbiB0aGF0LCBJIGNhbiBmb3JtIG15IHVuZGVyc3RhbmRpbmcgdG8gZXh0cmFjdCB0aGUga2V5IHBvaW50cy4gSSYjMzk7bSByZWFkeSB0byBwcm9jZWVkLCBJIGNhbiBldmFsdWF0ZSB0aGlzIGVmZmljaWVudGx5LCBwaWVjZSBieSBwaWVjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDA5Olx0aW50IHN0YXJ0dXBfZ2ZhcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbjE0MTA6XHR7XG4xNDExOlx0XHRzdHJ1Y3QgZ2Zhcl9wcml2YXRlICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4xNDEyOlx0XHRpbnQgZXJyO1xuMTQxMzpcdFxuMTQxNDpcdFx0Z2Zhcl9tYWNfcmVzZXQocHJpdik7XG4xNDE1Olx0XG4xNDE2Olx0XHRlcnIgPSBnZmFyX2FsbG9jX3NrYl9yZXNvdXJjZXMobmRldik7XG4xNDE3Olx0XHRpZiAoZXJyKVxuMTQxODpcdFx0XHRyZXR1cm4gZXJyO1xuMTQxOTpcdFxuMTQyMDpcdFx0Z2Zhcl9pbml0X3R4X3J4X2Jhc2UocHJpdik7XG4xNDIxOlx0XG4xNDIyOlx0XHRzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTtcbjE0MjM6XHRcdGNsZWFyX2JpdChHRkFSX0RPV04sIFx1MDAyNnByaXYtXHUwMDNlc3RhdGUpO1xuMTQyNDpcdFx0c21wX21iX19hZnRlcl9hdG9taWMoKTtcbjE0MjU6XHRcbjE0MjY6XHRcdC8qIFN0YXJ0IFJ4L1R4IERNQSBhbmQgZW5hYmxlIHRoZSBpbnRlcnJ1cHRzICovXG4xNDI3Olx0XHRnZmFyX3N0YXJ0KHByaXYpO1xuMTQyODpcdFxuMTQyOTpcdFx0LyogZm9yY2UgbGluayBzdGF0ZSB1cGRhdGUgYWZ0ZXIgbWFjIHJlc2V0ICovXG4xNDMwOlx0XHRwcml2LVx1MDAzZW9sZGxpbmsgPSAwO1xuMTQzMTpcdFx0cHJpdi1cdTAwM2VvbGRzcGVlZCA9IDA7XG4xNDMyOlx0XHRwcml2LVx1MDAzZW9sZGR1cGxleCA9IC0xO1xuMTQzMzpcdFxuMTQzNDpcdFx0cGh5X3N0YXJ0KG5kZXYtXHUwMDNlcGh5ZGV2KTtcbjE0MzU6XHRcbjE0MzY6XHRcdGVuYWJsZV9uYXBpKHByaXYpO1xuMTQzNzpcdFxuMTQzODpcdFx0bmV0aWZfdHhfd2FrZV9hbGxfcXVldWVzKG5kZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODU3CgkJCQkJCQlvdXRwdXQ6IDExOQoJCQkJCQkJdGhvdWdodHM6IDk5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQXNzZXNzbWVudCBmb3IgR2lhbmZhciBEcml2ZXIgRml4KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBzdGFydHVwX2dmYXJgIGNhbiBmYWlsIGR1ZSB0byBtZW1vcnkgYWxsb2NhdGlvbiBpc3N1ZXMsIHdoaWNoIGFyZSwgdGhlb3JldGljYWxseSwgaW5qZWN0YWJsZSBieSBzeXprYWxsZXIuIFRoZSBlcnJvciBwYXRoICpjb3VsZCogYmUgaGl0IGR1cmluZyBwcm9iZSBhbmQgYGlmY29uZmlnIHVwYC4gQnV0IHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzLCBkb2VzIHN5emthbGxlciAqYWN0dWFsbHkqIGZ1enogdGhpcyBkcml2ZXI/ICBJdCBwcmltYXJpbHkgZm9jdXNlcyBvbiB4ODZfNjQsIGFybTY0LCByaXNjdjY0LCBhbmQgczM5MHguIFRoaXMgaXMgYSB2ZXJ5IG5pY2hlIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSAoUG93ZXJQQyBlNTAwKSwgd2hpY2ggaXMgdW5saWtlbHkgdG8gYmUgaW4gdGhlIG1haW4gZnV6emluZyBzdHJlYW0uIEV2ZW4gaWYgaXQgKndlcmUqIHRhcmdldGVkLCBpdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgc28gdGhlcmUmIzM5O3Mgbm8gUENJIG9yIFVTQiBpbnRlcmZhY2UgdG8gdHJpZ2dlciBpdCBkaXJlY3RseS4KCkNhbiBJIGdldCBhcm91bmQgdGhpcyBvbiBhbiB4ODZfNjQgc3lzdGVtPyBOby4gVW5sZXNzIHN5emthbGxlciBoYXMgc29tZSBmYW5jeSB0cmlja3Mgd2l0aCBwbGF0Zm9ybSBkZXZpY2VzIHZpYSBkZXZpY2UgdHJlZSBvdmVybGF5cywgd2hpY2ggaXMgbm90IHR5cGljYWwuCgpOb3csIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLi4uJiMzNDsuIFFFTVUgKmRvZXMqIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBmb3IgZTUwMCwgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBwcmltYXJ5IHRhcmdldCwgYW5kIHRoaXMgaXMganVzdCBhbiBlcnJvciBwYXRoIGZpeC4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBwb3NpdGl2ZSBjYXNlIGZvciBXb3J0aEZ1enppbmc9dHJ1ZS4gSWYgSSBnbyB0aGF0IHJvdXRlLCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gcHJvdmlkZSBGb2N1c1N5bWJvbHMgYW5kIEVuYWJsZUNvbmZpZ3MuCmBFbmFibGVDb25maWdzYCB3b3VsZCBiZSBgR0lBTkZBUmAsIGFuZCBgRm9jdXNTeW1ib2xzYCB3b3VsZCBiZSBgZ2Zhcl9lbmV0X29wZW5gLgpCdXQgaXMgaXQgZXZlbiB3b3J0aCBpdD8gVGhpcyBpcyBhIHRyaXZpYWwgZXJyb3IgcGF0aCBmaXguIEZ1enppbmcgdGhpcyAqc3BlY2lmaWMqIHBhdGggcmVxdWlyZXMgZmF1bHQgaW5qZWN0aW9uIGR1cmluZyBgZ2Zhcl9lbmV0X29wZW5gLCB3aGljaCBpcyBkaWZmaWN1bHQgdG8gc2V0IHVwIGluIHRoZSBmaXJzdCBwbGFjZS4KClllcywgYENPTkZJR19HSUFORkFSYCBpcyBgSEFTX0RNQWAsIHNvIGl0ICpjb3VsZCogYmUgZW5hYmxlZCBvbiB4ODZfNjQsIGJ1dCB0aGUgR2lhbmZhciBkZXZpY2Ugd29uJiMzOTt0IHByb2JlIGluIHRoZSBmaXJzdCBwbGFjZS4KCkRvZXMgc3l6a2FsbGVyIHJ1biBQb3dlclBDIGU1MDAgVk1zPyBObywgYHN5ei1jaWAgZG9lcyBub3QgaGF2ZSBhbiBlNTAwIHRhcmdldC4gV2UgaGF2ZSBgcG93ZXJwY2Agd2hpY2ggaXMgNjQtYml0LgoKVGhlcmVmb3JlLCBwcmFjdGljYWxseSBzcGVha2luZywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAuIEl0IHNlZW1zIHRvIGZhbGwgdW5kZXIgdGhlICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCYjMzQ7IGNhdGVnb3J5LiBUaGUgcHJvbXB0ICphbHNvKiBtZW50aW9ucyBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBCdXQgdGhpcyBpcyBub3Qgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWAuIEl0IGlzIGEgcmVhbCBTb0MgYmxvY2sgdGhhdCBRRU1VIGVtdWxhdGVzIGZvciBhIHNwZWNpZmljIG1hY2hpbmUuCgpJZiB3ZSYjMzk7cmUgb24geDg2XzY0ICh3aGljaCBpcyBtb3N0IGNvbW1vbiB1bmxlc3Mgc3BlY2lmaWVkKSwgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaC4gVGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHRyaWdnZXIgcGxhdGZvcm0gZHJpdmVyIHByb2JlIG9uIHg4Nl82NCB1bmxlc3MgaXQmIzM5O3MgYSBmYWtlIHBsYXRmb3JtIGRldmljZSwgd2hpY2ggZG9lcyBub3QgaGFwcGVuIGZvciBgZ2lhbmZhcmAuCgpTbywgSSYjMzk7bSBnb2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgaXQgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEZyZWVzY2FsZSBHaWFuZmFyKSB0aGF0IGNhbm5vdCBiZSBwcm9iZWQgaW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgeDg2XzY0IEdDRS9RRU1VIFZNcykgd2l0aG91dCBzcGVjaWZpYyBTb0MgZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEZyZWVzY2FsZSBTb0NzIChlLmcuLCBQb3dlclBDIGU1MDAsIExTMTAyMUEpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IGFuZCBjYW5ub3QgYmUgcHJvYmVkIGluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIHg4Nl82NCBHQ0Ugb3Igc3RhbmRhcmQgUUVNVSBWTXMpIHdpdGhvdXQgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MTkuMzU3MzQyNjAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4NzAyNjgzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MTkuMzU3MzQ3NjIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODc2NjIwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MjM4YWNiMGU4ZTViZmE5ODhlYWU4OTViZTAxNGVlOWIwYmNhNTJjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMDA6MzM6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcXG5pbmRleCA4OTIxNWUxZGRjMmRiMS4uNGIzYTVlYWFkZmI1MGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcXG5AQCAtMjg3OCw4ICsyODc4LDExIEBAIHN0YXRpYyBpbnQgZ2Zhcl9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdGVyciA9IHN0YXJ0dXBfZ2ZhcihkZXYpO1xcbi1cXHRpZiAoZXJyKVxcbitcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0XFx0Z2Zhcl9mcmVlX2lycShwcml2KTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzoxOS42NDU2MjQ1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1ODE5ODA1MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0MjM4YWNiMGU4ZTViZmE5ODhlYWU4OTViZTAxNGVlOWIwYmNhNTJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAwMDozMzoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5pbmRleCA4OTIxNWUxZGRjMmRiMS4uNGIzYTVlYWFkZmI1MGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5AQCAtMjg3OCw4ICsyODc4LDExIEBAIHN0YXRpYyBpbnQgZ2Zhcl9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGVyciA9IHN0YXJ0dXBfZ2ZhcihkZXYpO1xuLVx0aWYgKGVycilcbitcdGlmIChlcnIpIHtcbitcdFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG4rXHRcdGdmYXJfZnJlZV9pcnEocHJpdik7XG4gXHRcdHJldHVybiBlcnI7XG4rXHR9XG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjE5LjY0NTYyNTk0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzMjI4MTE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWZmZWN0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBhZGRlZCBzb21lIGVycm9yIGhhbmRsaW5nIGluIGBnZmFyX2VuZXRfb3BlbmAsIHNwZWNpZmljYWxseSB3aGVuIGBzdGFydHVwX2dmYXIoZGV2KWAgZmFpbHMuIFRoZXkncmUgbWFraW5nIHN1cmUgdG8gZGlzY29ubmVjdCB0aGUgUEhZIGFuZCBmcmVlIHRoZSBJUlEgaW4gdGhhdCBjYXNlIOKAkyBnb29kIHByYWN0aWNlLlxuXG5Ob3csIG15IG1pbmQgZ29lcyB0byB2aXJ0dWFsaXphdGlvbi4gVGhpcyBpcyB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgZHJpdmVyLCB0eXBpY2FsbHkgZm9yIFBvd2VyUEMvRnJlZXNjYWxlIFNvQ3MgbGlrZSBNUEM4NXh4IGFuZCBlNTAwLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIGl0IGVtdWxhdGFibGU/IFFFTVUgaXMgdGhlIGZpcnN0IHBsYWNlIEknZCBsb29rLiBBaCwgUUVNVSBoYXMgYW4gYGU1MDBgIG1hY2hpbmUsIGFuZCB0aGF0IHN1cHBvcnRzIGBnaWFuZmFyYCAob3IgZVRTRUMsIGFzIGl0J3MgYWxzbyBrbm93bikuIFRoYXQncyBhIHByb21pc2luZyBzdGFydC5cblxuQnV0IGEgbmFnZ2luZyB0aG91Z2h0Li4uIHN5emthbGxlciwgd2hpY2ggaXMgb2Z0ZW4gdXNlZCBmb3IgZnV6emluZywgcHJpbWFyaWx5IHRhcmdldHMgeDg2XzY0LCBhcm02NCwgcmlzY3YsIGFuZCB0aGUgbGlrZS4gV2UgbmVlZCB0byBjb25maXJtIGlmIGBHSUFORkFSYCBpcyBldmVuIHByZXNlbnQgb24gdGhvc2UgYXJjaGl0ZWN0dXJlcyBvciBpZiBpdCdzIHN0cmljdGx5IFBvd2VyUEMtc3BlY2lmaWMuIExldCdzIGRlbHZlIGludG8gdGhlIEtjb25maWcg4oCTIHRoYXQncyB3aGVyZSB0aGUgYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGRlZmluZWQuIFRoYXQnbGwgdGVsbCB1cyBpZiB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IHRvIHRoZSBzeXN0ZW1zIHdlIGFyZSBwcmltYXJpbHkgZm9jdXNlZCBvbiBvciBpZiB3ZSBuZWVkIHRvIGRvIHNvbWUgbW9yZSBkaWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODQwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MjQuNDc3OTA4NTk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzUwOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBHSUFORkFSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTg5PWNvbmZpZyBVR0VUSF9UWF9PTl9ERU1BTkRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjkzOmNvbmZpZyBHSUFORkFSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIkdpYW5mYXIgRXRoZXJuZXRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjI0LjUzNzY2NDkyNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzUwNTU0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEZyZWVzY2FsZSBFdGhlcm5ldCBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEZyZWVzY2FsZSBFdGhlcm5ldCBkcml2ZXJzIGluIHRoaXMga2VybmVsLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvYCBkaXJlY3RvcnkuIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGFyb3VuZCBsaW5lIDkzIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIG1lYXQgb2YgdGhlIG1vc3QgaW50ZXJlc3Rpbmcgb3IgaW1wb3J0YW50IG9wdGlvbnMgc3RhcnRzLCBJIHN1c3BlY3QsIG9yIHBvc3NpYmx5IHdoZXJlIGEgc3BlY2lmaWMgZmFtaWx5IG9yIGtleSBzZXR0aW5nIGJlZ2lucy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZXNlIG9wdGlvbnMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIEV0aGVybmV0IGRyaXZlciBhcmNoaXRlY3R1cmUgb24gRnJlZXNjYWxlIFNvQ3MuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYXJlYXMgdGhhdCBuZWVkIGltbWVkaWF0ZSBhdHRlbnRpb24gb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWxseSBmb3Igb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIGlzc3VlIEkndmUgYmVlbiBjb25zaWRlcmluZy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MjcuNDcyNzIyNDU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODU6XFx0XFx0aGVscFxcbiAgODY6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2lnYWJpdCBFdGhlcm5ldCBtb2RlIG9mIHRoZSBRVUlDQyBFbmdpbmUsXFxuICA4NzpcXHRcXHQgIHdoaWNoIGlzIGF2YWlsYWJsZSBvbiBzb21lIEZyZWVzY2FsZSBTT0NzLlxcbiAgODg6XFx0XFxuICA4OTpcXHRjb25maWcgVUdFVEhfVFhfT05fREVNQU5EXFxuICA5MDpcXHRcXHRib29sIFxcXCJUcmFuc21pdCBvbiBEZW1hbmQgc3VwcG9ydFxcXCJcXG4gIDkxOlxcdFxcdGRlcGVuZHMgb24gVUNDX0dFVEhcXG4gIDkyOlxcdFxcbiAgOTM6XFx0Y29uZmlnIEdJQU5GQVJcXG4gIDk0OlxcdFxcdHRyaXN0YXRlIFxcXCJHaWFuZmFyIEV0aGVybmV0XFxcIlxcbiAgOTU6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfRE1BXFxuICA5NjpcXHRcXHRzZWxlY3QgRlNMX1BRX01ESU9cXG4gIDk3OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDk4OlxcdFxcdHNlbGVjdCBGSVhFRF9QSFlcXG4gIDk5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxMDA6XFx0XFx0aGVscFxcbiAxMDE6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2lnYWJpdCBUU0VDIG9uIHRoZSBNUEM4M3h4LCBNUEM4NXh4LFxcbiAxMDI6XFx0XFx0ICBhbmQgTVBDODZ4eCBmYW1pbHkgb2YgY2hpcHMsIHRoZSBlVFNFQyBvbiBMUzEwMjFBIGFuZCB0aGUgRkVDXFxuIDEwMzpcXHRcXHQgIG9uIHRoZSA4NTQwLlxcbiAxMDQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjI3LjQ3Mjc4NTQxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzU1MDQ1MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCB0YXJnZXRpbmcgRnJlZXNjYWxlIFNvQ3Mg4oCTIE1QQzgzeHgsIDg1eHgsIDg2eHgsIGFuZCB0aGUgTFMxMDIxQS4gVGhlIExTMTAyMUEgaXMgQVJNLCBDb3J0ZXgtQTcgYmFzZWQsIHNvIHRoYXQgbWVhbnMgd2UgKmNvdWxkKiBjb21waWxlIGl0IGZvciBBUk0gYXJjaGl0ZWN0dXJlcy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgcmVhbGlzdGljYWxseSBmdXp6IHRoaXMgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgcHJvYmFibHkgbm90IGVhc2lseSwgdW5sZXNzIHdlIHNwZWNpZmljYWxseSBlbXVsYXRlIHRoZSBTb0MuIFN5emthbGxlciAqZG9lcyogaGF2ZSBzb21lIEFSTSBib2FyZCBhbmQgUUVNVSBzdXBwb3J0LCBidXQgaXQncyBub3QgYSBnaXZlbi5cblxuSXMgdGhpcyBldmVuICp3b3J0aCogZnV6emluZz8gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIHBhdGggaW4gYGdmYXJfZW5ldF9vcGVuYC4gYGdmYXJfZW5ldF9vcGVuYCBpcyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjayBmb3IgdGhlIG5ldF9kZXZpY2UuIE1lYW5pbmcgaXQgY2FuIGJlIHRyaWdnZXJlZCB1c2luZyBgaWZjb25maWcgdXBgIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudC4gU2luY2UgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgbXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBoaXR0aW5nIHRoYXQgYG5kb19vcGVuYCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgd291bGQgYmUgdHJpY2t5LlxuXG5XYWl0LCBsZXQncyBiYWNrIHVwLiBUaGUgaW5zdHJ1Y3Rpb25zIHNhaWQgc29tZXRoaW5nIGFib3V0IFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIgTGV0IG1lIHJlLXJlYWQgdGhhdCBwYXJ04oCmIEFoYSEgVGhlIGNyaXRlcmlhIGluY2x1ZGVzIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gRG9lcyBRRU1VIGVtdWxhdGUgR2lhbmZhcj9cblxuWWVzLCB0aGVyZSBpcyBgaHcvbmV0L2ZzbF9ldHNlYy9gIGluIFFFTVUsIHdoaWNoIGVtdWxhdGVzIHRoZSBlVFNFQyAoR2lhbmZhcikgZm9yIHRoZSBlNTAwIG1hY2hpbmUgKFBvd2VyUEMpLiBPa2F5LCBidXQgc3l6a2FsbGVyIG1vc3RseSBmb2N1c2VzIG9uIHg4Nl82NCBhbmQgYXJtNjQsIHNvIGlmIHdlIGFyZSBjb25zaWRlcmluZyB0aGUgQVJNIExTMTAyMUEsIGl0IHN0aWxsIG1heSBub3QgYmUgZW11bGF0ZWQuXG5cbkFscmlnaHQsIGxldCdzIHNlZSBpZiB0aGUgYEdJQU5GQVJgIGZ1bmN0aW9uYWxpdHkgaXMgY29tbW9ubHkgZW5hYmxlZCBvciBjYW4gYmUgZW5hYmxlZCBvbiB4ODYuIEl0IGRlcGVuZHMgb24gYEhBU19ETUFgLiBJdCAqZG9lc24ndCogZGVwZW5kIG9uIGBQUENgIG9yIGBBUk1gLiBTbywgbG9naWNhbGx5LCB3ZSBjb3VsZCBjb21waWxlIGl0IG9uIHg4Nl82NCwgcG90ZW50aWFsbHkgd2l0aCBgQ09NUElMRV9URVNUYCBvciBqdXN0IG5vcm1hbGx5IHNpbmNlIHRoZSBkZXBlbmRlbmN5IGlzIGp1c3QgYEhBU19ETUFgLlxuXG5Ib3dldmVyLCBoZXJlJ3MgdGhlIGtpY2tlcjogd2l0aG91dCB0aGUgaGFyZHdhcmUgb3IgKmdvb2QqIGVtdWxhdGlvbiwgdGhlIGRyaXZlcidzIGBwcm9iZWAgZnVuY3Rpb24gd2lsbCBuZXZlciBzdWNjZWVkLCBhbmQgdGhlcmVmb3JlIGBnZmFyX2VuZXRfb3BlbmAgd2lsbCBuZXZlciBnZXQgY2FsbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgaXMgYSBwbGF0Zm9ybSBvciBQQ0kgZHJpdmVyLi4uc28gaG93IGRvZXMgaXQgcmVnaXN0ZXIgaXRzZWxmP1xuXG5cbiIsIklucHV0VG9rZW5zIjozMDY2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MzUuMjQ4MjkxNDQyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MDExOTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV8uKmRyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM9MzYwMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZmFyX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzYxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjM2MTM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihnZmFyX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjM1LjMwNDMwNzU5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5OTg3ODMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlciBQcm9iZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCdzIGNsZWFyIGltbWVkaWF0ZWx5IHRoYXQgaXQncyBhIHBsYXRmb3JtIGRyaXZlci4gVGhhdCBtZWFucywgYXQgaXRzIGNvcmUsIGl0J3MgZGVzaWduZWQgdG8gYmUgcHJvYmVkIHZpYSBhIGRldmljZSB0cmVlIG5vZGUgb3IgdGhyb3VnaCBwbGF0Zm9ybSBkZXZpY2UgcmVnaXN0cmF0aW9uLiBUaGUgY3J1eCBvZiB0aGUgbWF0dGVyIGlzIHRoZSBlbnZpcm9ubWVudC4gSSdtIHdvcmtpbmcgaW4gYSBnZW5lcmljIHg4Nl82NCBWTS4gR2l2ZW4gdGhhdCwgSSBrbm93IHRoZXJlJ3MgKm5vKiBwcmUtY29uZmlndXJlZCBwbGF0Zm9ybSBkZXZpY2Ugd2FpdGluZyBmb3IgYSBkcml2ZXIgd2l0aCBhIFwiZnNsLGV0c2VjMlwiIGNvbXBhdGlibGUgc3RyaW5nLCBvciB3aGF0ZXZlciB0aGUgYWN0dWFsIHN0cmluZyBpcy4gSXQncyBhbG1vc3QgY2VydGFpbiBpdCB3b24ndCBiZSB0aGVyZSBieSBkZWZhdWx0LCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQgdGhlIGNvbXBhdGlibGUgc3RyaW5nKHMpIGFyZSB0aGF0IGl0J3MgbG9va2luZyBmb3Igc28gSSBjYW4gc2VlIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBlbHNlIGl0IG1pZ2h0IG1hdGNoIHdpdGguIExldCdzIGRpZyBpbnRvIHRob3NlIGNvbXBhdGlibGUgc3RyaW5ncyBhbmQgc2VlIHdoZXJlIHdlIGdvIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzozOC41MDQxODc3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxMzMwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2ZfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBnZmFyX3BtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzU4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjM1ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2Zhcl9tYXRjaFtdID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTM1OTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzozOC41NjEzMzA5NTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcwODY3NzAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0J3MgbXkgb3duIGludGVybmFsIGRpYWxvZ3VlOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRGF0YSBQb2ludCBBY3F1aXNpdGlvbioqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgY2xlYXIuIEkndmUgYmVlbiBnaXZlbiBhIFwibWF0Y2ggdGFibGUsXCIgd2hpY2ggSSdtIGFzc3VtaW5nLCBnaXZlbiBteSBleHBlcnRpc2UsIGlzIGEgc3RydWN0dXJlZCBkYXRhc2V0IHJlcHJlc2VudGluZyBzb21lIGZvcm0gb2YgY29ycmVsYXRpb24sIGNvbXBhcmlzb24sIG9yIGludGVyYWN0aW9uLiBJdCBjb3VsZCBiZSBhbnl0aGluZyBmcm9tIGdlbm9taWMgYWxpZ25tZW50cyB0byBtYWNoaW5lIGxlYXJuaW5nIG91dHB1dCB0byB0cmFkZSBkYXRhIOKAkyB0aGUgc3BlY2lmaWNzIGFyZSBpcnJlbGV2YW50IGF0IHRoaXMgc3RhZ2UuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBwdXJlbHkgb2JzZXJ2YXRpb25hbDogSSBuZWVkIHRvIGluZ2VzdCB0aGUgZm9ybWF0LCBzdHJ1Y3R1cmUsIGFuZCBiYXNpYyB2YXJpYWJsZXMgZGVzY3JpYmVkLiBMZXQncyBnZXQgcmVhZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYyNCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6NDEuMjcwMDEwMTI2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1ODksXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1ODk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2Zhcl9tYXRjaFtdID1cXG4zNTkwOlxcdHtcXG4zNTkxOlxcdFxcdHtcXG4zNTkyOlxcdFxcdFxcdC50eXBlID0gXFxcIm5ldHdvcmtcXFwiLFxcbjM1OTM6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwiZ2lhbmZhclxcXCIsXFxuMzU5NDpcXHRcXHR9LFxcbjM1OTU6XFx0XFx0e1xcbjM1OTY6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwiZnNsLGV0c2VjMlxcXCIsXFxuMzU5NzpcXHRcXHR9LFxcbjM1OTg6XFx0XFx0e30sXFxuMzU5OTpcXHR9O1xcbjM2MDA6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZ2Zhcl9tYXRjaCk7XFxuMzYwMTpcXHRcXG4zNjAyOlxcdC8qIFN0cnVjdHVyZSBmb3IgYSBkZXZpY2UgZHJpdmVyICovXFxuMzYwMzpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZmFyX2RyaXZlciA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6NDEuMjcwMTYzNDE2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2ODI2MDAxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFRhcmdldDogQSBGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIE9GIChPcGVuIEZpcm13YXJlKSBwbGF0Zm9ybSBkcml2ZXIgbmF0dXJlIG9mIGl0IGp1bXBzIG91dC4gVGhhdCBtZWFucyBpdCBuZWVkcyBhIGRldmljZSB0cmVlIG5vZGUgdG8gcHJvYmUsIHJpZ2h0PyBPbiBhIHN0YW5kYXJkIHg4Nl82NCBRRU1VIFZNLCBsaWtlIGBxMzVgIG9yIGBwY2AsIHRoZXJlJ3Mgbm8gZGV2aWNlIHRyZWUsIG9yIGF0IGxlYXN0IG5vdGhpbmcgZm9yICp0aGlzKiBkZXZpY2UuIEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgY2xldmVyIHRyaWNrcywgbGlrZSBgc3l6X2Rldm1lbWAgYW5kIHN1Y2gsIHRvIGluamVjdCBkZXZpY2VzLCBidXQgdGhhdCdzIHR5cGljYWxseSB2ZXJ5IGxpbWl0ZWQgYW5kIG1vcmUgZm9yIHN0dWZmIGxpa2UgUENJLCBVU0IsIG9yIHZHRU0sIHJpZ2h0PyBXYWl0IGEgc2Vjb25kLCB3aGF0IGFib3V0IGBzeXpfZ2VuZXRsaW5rYCBhbmQgdGhvc2UgcHNldWRvLWRldmljZXM/IE5haCwgbm8gYXJiaXRyYXJ5IE9GIHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIGl04oCZcyBydW5uaW5nIG9uIGEgKnNwZWNpZmljKiBib2FyZC4gVGhlbiB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHN5emthbGxlciBldmVuIHJlYWNoIGBnZmFyX2VuZXRfb3BlbmA/XG5cbkhhbmcgb24sIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCdzICppbXBvc3NpYmxlKiB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSBHQ0Ugb3IgUUVNVS4gQnV0IGlzIHRoaXMgaW1wb3NzaWJsZT8gSWYgSSBmaXJlIHVwIFFFTVUgd2l0aCBgcWVtdS1zeXN0ZW0tcHBjIC1NIGU1MDBgLCB0aGUgZGV2aWNlICppcyogcHJlc2VudCBhbmQgdGhlIGRyaXZlciAqd2lsbCogcHJvYmUhIERvZXMgc3l6a2FsbGVyIGV2ZW4gKnJ1biogdGhhdCBzcGVjaWZpYyBRRU1VIHNldHVwPyBJIGtub3cgdGhlcmUncyBhIGBwcGM2NGxlYCB0YXJnZXQsIGJ1dCBgZTUwMGAgaXMgMzItYml0IFBvd2VyUEMsIG9yIG1heWJlIGEgNjQtYml0IGU1NTAwLlxuXG5BaCwgYnV0IHRoZSBwcm9tcHQgc2F5cyBcIippbXBvc3NpYmxlKiB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiBTaW5jZSBRRU1VICpjYW4qIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSwgdGhhdCBlVFNFQywgaXQncyAqdGVjaG5pY2FsbHkqIHJlYWNoYWJsZS4gQnV0IGlzIGl0IHdvcnRoIGl0PyBJcyBmdXp6aW5nIHRoaXMgKnNwZWNpZmljKiBlcnJvciBwYXRoIHdvcnRoIHRoZSBlZmZvcnQ/XG5cblRoZSBwYXRjaCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZmFyX2VuZXRfb3BlbmAgaWYgYHN0YXJ0dXBfZ2ZhcihkZXYpYCBmYWlscy4gT2theSwgYHN0YXJ0dXBfZ2ZhcmAgZG9lcyBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi4gVG8gaGl0IHRoZSBlcnJvciwgSSBuZWVkIGBzdGFydHVwX2dmYXJgIHRvIGZhaWwuIFJpZ2h0LCBub3cgdG8gbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCB0YWtlcyB0byB0cmlnZ2VyIHRoYXQgZmFpbHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAwMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjQ4Ljk1Mjc2NTgzNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNDY1NjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBzdGFydHVwX2dmYXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTEzMjk9c3RhdGljIGludCBnZmFyX2FsbG9jX3NrYl9yZXNvdXJjZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTE0MDgtLyogQnJpbmcgdGhlIGNvbnRyb2xsZXIgdXAgYW5kIHJ1bm5pbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjE0MDk6aW50IHN0YXJ0dXBfZ2ZhcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTE0MTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzo0OS4xNzYyMzYwMThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3ODQ5OTYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MgYXMgSSBhcHByb2FjaCByZWFkaW5nIHRoaXM6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCB0aGUgZmlsZSBpcyBgc3RhcnR1cF9nZmFyYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UuIEdpdmVuIHRoZSBcInN0YXJ0dXBcIiBwcmVmaXgsIEknbSBleHBlY3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gbmV3IHZlbnR1cmVzLCBwcm9iYWJseSBhIGJ1c2luZXNzIHBsYW4sIGZpbmFuY2lhbCBwcm9qZWN0aW9ucywgb3IgcGVyaGFwcyBzb21lIGNvZGUgcmVsYXRlZCB0byBhIG5ldyBzdGFydHVwIGluaXRpYXRpdmUuIFRoZSBcImdmYXJcIiBwYXJ0IGlzIGxlc3MgY2xlYXI7IGl0IGNvdWxkIGJlIGFuIGFjcm9ueW0gZm9yIGEgc3BlY2lmaWMgcHJvamVjdCwgYSB0ZWFtIG5hbWUsIG9yIHNvbWV0aGluZyBtb3JlIGFic3RyYWN0LiBJJ2xsIG5lZWQgY29udGV4dCB0byBpbnRlcnByZXQgaXQgY29ycmVjdGx5LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBkb2N1bWVudGF0aW9uLCBjb2RlLCBvciBkYXRhLiBKdWRnaW5nIGJ5IHRoZSBmb3JtYXQsIEknbSBleHBlY3Rpbmcgc29tZXRoaW5nIGluIGEgdGV4dCBiYXNlZCBmb3JtYXQuIEkgbmVlZCB0byBnZXQgc3RhcnRlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzdHJ1Y3R1cmUgYW5kIGNvbnRlbnQgd2l0aGluLiBCYXNlZCBvbiB0aGF0LCBJIGNhbiBmb3JtIG15IHVuZGVyc3RhbmRpbmcgdG8gZXh0cmFjdCB0aGUga2V5IHBvaW50cy4gSSdtIHJlYWR5IHRvIHByb2NlZWQsIEkgY2FuIGV2YWx1YXRlIHRoaXMgZWZmaWNpZW50bHksIHBpZWNlIGJ5IHBpZWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTc5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6NTIuMTU0NzM4MDE2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MDksXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE0MDk6XFx0aW50IHN0YXJ0dXBfZ2ZhcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4xNDEwOlxcdHtcXG4xNDExOlxcdFxcdHN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4xNDEyOlxcdFxcdGludCBlcnI7XFxuMTQxMzpcXHRcXG4xNDE0OlxcdFxcdGdmYXJfbWFjX3Jlc2V0KHByaXYpO1xcbjE0MTU6XFx0XFxuMTQxNjpcXHRcXHRlcnIgPSBnZmFyX2FsbG9jX3NrYl9yZXNvdXJjZXMobmRldik7XFxuMTQxNzpcXHRcXHRpZiAoZXJyKVxcbjE0MTg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xNDE5OlxcdFxcbjE0MjA6XFx0XFx0Z2Zhcl9pbml0X3R4X3J4X2Jhc2UocHJpdik7XFxuMTQyMTpcXHRcXG4xNDIyOlxcdFxcdHNtcF9tYl9fYmVmb3JlX2F0b21pYygpO1xcbjE0MjM6XFx0XFx0Y2xlYXJfYml0KEdGQVJfRE9XTiwgXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlKTtcXG4xNDI0OlxcdFxcdHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7XFxuMTQyNTpcXHRcXG4xNDI2OlxcdFxcdC8qIFN0YXJ0IFJ4L1R4IERNQSBhbmQgZW5hYmxlIHRoZSBpbnRlcnJ1cHRzICovXFxuMTQyNzpcXHRcXHRnZmFyX3N0YXJ0KHByaXYpO1xcbjE0Mjg6XFx0XFxuMTQyOTpcXHRcXHQvKiBmb3JjZSBsaW5rIHN0YXRlIHVwZGF0ZSBhZnRlciBtYWMgcmVzZXQgKi9cXG4xNDMwOlxcdFxcdHByaXYtXFx1MDAzZW9sZGxpbmsgPSAwO1xcbjE0MzE6XFx0XFx0cHJpdi1cXHUwMDNlb2xkc3BlZWQgPSAwO1xcbjE0MzI6XFx0XFx0cHJpdi1cXHUwMDNlb2xkZHVwbGV4ID0gLTE7XFxuMTQzMzpcXHRcXG4xNDM0OlxcdFxcdHBoeV9zdGFydChuZGV2LVxcdTAwM2VwaHlkZXYpO1xcbjE0MzU6XFx0XFxuMTQzNjpcXHRcXHRlbmFibGVfbmFwaShwcml2KTtcXG4xNDM3OlxcdFxcbjE0Mzg6XFx0XFx0bmV0aWZfdHhfd2FrZV9hbGxfcXVldWVzKG5kZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzo1Mi4xNTQ5MDM0MDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNzI2NjMzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQgZm9yIEdpYW5mYXIgRHJpdmVyIEZpeCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHN0YXJ0dXBfZ2ZhcmAgY2FuIGZhaWwgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGlzc3Vlcywgd2hpY2ggYXJlLCB0aGVvcmV0aWNhbGx5LCBpbmplY3RhYmxlIGJ5IHN5emthbGxlci4gVGhlIGVycm9yIHBhdGggKmNvdWxkKiBiZSBoaXQgZHVyaW5nIHByb2JlIGFuZCBgaWZjb25maWcgdXBgLiBCdXQgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXMsIGRvZXMgc3l6a2FsbGVyICphY3R1YWxseSogZnV6eiB0aGlzIGRyaXZlcj8gIEl0IHByaW1hcmlseSBmb2N1c2VzIG9uIHg4Nl82NCwgYXJtNjQsIHJpc2N2NjQsIGFuZCBzMzkweC4gVGhpcyBpcyBhIHZlcnkgbmljaGUgZHJpdmVyIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIChQb3dlclBDIGU1MDApLCB3aGljaCBpcyB1bmxpa2VseSB0byBiZSBpbiB0aGUgbWFpbiBmdXp6aW5nIHN0cmVhbS4gRXZlbiBpZiBpdCAqd2VyZSogdGFyZ2V0ZWQsIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNvIHRoZXJlJ3Mgbm8gUENJIG9yIFVTQiBpbnRlcmZhY2UgdG8gdHJpZ2dlciBpdCBkaXJlY3RseS5cblxuQ2FuIEkgZ2V0IGFyb3VuZCB0aGlzIG9uIGFuIHg4Nl82NCBzeXN0ZW0/IE5vLiBVbmxlc3Mgc3l6a2FsbGVyIGhhcyBzb21lIGZhbmN5IHRyaWNrcyB3aXRoIHBsYXRmb3JtIGRldmljZXMgdmlhIGRldmljZSB0cmVlIG92ZXJsYXlzLCB3aGljaCBpcyBub3QgdHlwaWNhbC5cblxuTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4uLlwiLiBRRU1VICpkb2VzKiBlbXVsYXRlIHRoaXMgaGFyZHdhcmUgZm9yIGU1MDAsIGJ1dCB0aGF0J3Mgbm90IHRoZSBwcmltYXJ5IHRhcmdldCwgYW5kIHRoaXMgaXMganVzdCBhbiBlcnJvciBwYXRoIGZpeC5cblxuTGV0J3MgbG9vayBhdCB0aGUgcG9zaXRpdmUgY2FzZSBmb3IgV29ydGhGdXp6aW5nPXRydWUuIElmIEkgZ28gdGhhdCByb3V0ZSwgSSdtIGdvaW5nIHRvIG5lZWQgdG8gcHJvdmlkZSBGb2N1c1N5bWJvbHMgYW5kIEVuYWJsZUNvbmZpZ3MuXG5gRW5hYmxlQ29uZmlnc2Agd291bGQgYmUgYEdJQU5GQVJgLCBhbmQgYEZvY3VzU3ltYm9sc2Agd291bGQgYmUgYGdmYXJfZW5ldF9vcGVuYC5cbkJ1dCBpcyBpdCBldmVuIHdvcnRoIGl0PyBUaGlzIGlzIGEgdHJpdmlhbCBlcnJvciBwYXRoIGZpeC4gRnV6emluZyB0aGlzICpzcGVjaWZpYyogcGF0aCByZXF1aXJlcyBmYXVsdCBpbmplY3Rpb24gZHVyaW5nIGBnZmFyX2VuZXRfb3BlbmAsIHdoaWNoIGlzIGRpZmZpY3VsdCB0byBzZXQgdXAgaW4gdGhlIGZpcnN0IHBsYWNlLlxuXG5ZZXMsIGBDT05GSUdfR0lBTkZBUmAgaXMgYEhBU19ETUFgLCBzbyBpdCAqY291bGQqIGJlIGVuYWJsZWQgb24geDg2XzY0LCBidXQgdGhlIEdpYW5mYXIgZGV2aWNlIHdvbid0IHByb2JlIGluIHRoZSBmaXJzdCBwbGFjZS5cblxuRG9lcyBzeXprYWxsZXIgcnVuIFBvd2VyUEMgZTUwMCBWTXM/IE5vLCBgc3l6LWNpYCBkb2VzIG5vdCBoYXZlIGFuIGU1MDAgdGFyZ2V0LiBXZSBoYXZlIGBwb3dlcnBjYCB3aGljaCBpcyA2NC1iaXQuXG5cblRoZXJlZm9yZSwgcHJhY3RpY2FsbHkgc3BlYWtpbmcsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwLiBJdCBzZWVtcyB0byBmYWxsIHVuZGVyIHRoZSBcImltcG9zc2libGUgdG8gcmVhY2hcIiBjYXRlZ29yeS4gVGhlIHByb21wdCAqYWxzbyogbWVudGlvbnMgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gQnV0IHRoaXMgaXMgbm90IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gLiBJdCBpcyBhIHJlYWwgU29DIGJsb2NrIHRoYXQgUUVNVSBlbXVsYXRlcyBmb3IgYSBzcGVjaWZpYyBtYWNoaW5lLlxuXG5JZiB3ZSdyZSBvbiB4ODZfNjQgKHdoaWNoIGlzIG1vc3QgY29tbW9uIHVubGVzcyBzcGVjaWZpZWQpLCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2guIFRoZXJlJ3Mgbm8gd2F5IHRvIHRyaWdnZXIgcGxhdGZvcm0gZHJpdmVyIHByb2JlIG9uIHg4Nl82NCB1bmxlc3MgaXQncyBhIGZha2UgcGxhdGZvcm0gZGV2aWNlLCB3aGljaCBkb2VzIG5vdCBoYXBwZW4gZm9yIGBnaWFuZmFyYC5cblxuU28sIEknbSBnb2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgaXQgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEZyZWVzY2FsZSBHaWFuZmFyKSB0aGF0IGNhbm5vdCBiZSBwcm9iZWQgaW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgeDg2XzY0IEdDRS9RRU1VIFZNcykgd2l0aG91dCBzcGVjaWZpYyBTb0MgZW11bGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODU3LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjM0OjA1LjIyNzU2OTMwNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEZyZWVzY2FsZSBTb0NzIChlLmcuLCBQb3dlclBDIGU1MDAsIExTMTAyMUEpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IGFuZCBjYW5ub3QgYmUgcHJvYmVkIGluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIHg4Nl82NCBHQ0Ugb3Igc3RhbmRhcmQgUUVNVSBWTXMpIHdpdGhvdXQgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww5mvd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-05 00:05:00 +0000 UTC FinishedAt: 2026-07-05 00:34:06 +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+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQyMzhhY2IwZThlNWJmYTk4OGVhZTg5NWJlMDE0ZWU5YjBiY2E1MmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDAwOjMzOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5pbmRleCA4OTIxNWUxZGRjMmRiMS4uNGIzYTVlYWFkZmI1MGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5AQCAtMjg3OCw4ICYjNDM7Mjg3OCwxMSBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4gXHRlcnIgPSBzdGFydHVwX2dmYXIoZGV2KTtcbi1cdGlmIChlcnIpXG4mIzQzO1x0aWYgKGVycikge1xuJiM0MztcdFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG4mIzQzO1x0XHRnZmFyX2ZyZWVfaXJxKHByaXYpO1xuIFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDIzOGFjYjBlOGU1YmZhOTg4ZWFlODk1YmUwMTRlZTliMGJjYTUyYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDUgMDA6MzM6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYwppbmRleCA4OTIxNWUxZGRjMmRiMS4uNGIzYTVlYWFkZmI1MGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYwpAQCAtMjg3OCw4ICYjNDM7Mjg3OCwxMSBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCXJldHVybiBlcnI7CiAKIAllcnIgPSBzdGFydHVwX2dmYXIoZGV2KTsKLQlpZiAoZXJyKQomIzQzOwlpZiAoZXJyKSB7CiYjNDM7CQlwaHlfZGlzY29ubmVjdChkZXYtJmd0O3BoeWRldik7CiYjNDM7CQlnZmFyX2ZyZWVfaXJxKHByaXYpOwogCQlyZXR1cm4gZXJyOwomIzQzOwl9CiAKIAlyZXR1cm4gZXJyOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODQwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggYWZmZWN0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgc29tZSBlcnJvciBoYW5kbGluZyBpbiBgZ2Zhcl9lbmV0X29wZW5gLCBzcGVjaWZpY2FsbHkgd2hlbiBgc3RhcnR1cF9nZmFyKGRldilgIGZhaWxzLiBUaGV5JiMzOTtyZSBtYWtpbmcgc3VyZSB0byBkaXNjb25uZWN0IHRoZSBQSFkgYW5kIGZyZWUgdGhlIElSUSBpbiB0aGF0IGNhc2Ug4oCTIGdvb2QgcHJhY3RpY2UuCgpOb3csIG15IG1pbmQgZ29lcyB0byB2aXJ0dWFsaXphdGlvbi4gVGhpcyBpcyB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgZHJpdmVyLCB0eXBpY2FsbHkgZm9yIFBvd2VyUEMvRnJlZXNjYWxlIFNvQ3MgbGlrZSBNUEM4NXh4IGFuZCBlNTAwLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIGl0IGVtdWxhdGFibGU/IFFFTVUgaXMgdGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgbG9vay4gQWgsIFFFTVUgaGFzIGFuIGBlNTAwYCBtYWNoaW5lLCBhbmQgdGhhdCBzdXBwb3J0cyBgZ2lhbmZhcmAgKG9yIGVUU0VDLCBhcyBpdCYjMzk7cyBhbHNvIGtub3duKS4gVGhhdCYjMzk7cyBhIHByb21pc2luZyBzdGFydC4KCkJ1dCBhIG5hZ2dpbmcgdGhvdWdodC4uLiBzeXprYWxsZXIsIHdoaWNoIGlzIG9mdGVuIHVzZWQgZm9yIGZ1enppbmcsIHByaW1hcmlseSB0YXJnZXRzIHg4Nl82NCwgYXJtNjQsIHJpc2N2LCBhbmQgdGhlIGxpa2UuIFdlIG5lZWQgdG8gY29uZmlybSBpZiBgR0lBTkZBUmAgaXMgZXZlbiBwcmVzZW50IG9uIHRob3NlIGFyY2hpdGVjdHVyZXMgb3IgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgUG93ZXJQQy1zcGVjaWZpYy4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIEtjb25maWcg4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZSBkZXBlbmRlbmNpZXMgd2lsbCBiZSBkZWZpbmVkLiBUaGF0JiMzOTtsbCB0ZWxsIHVzIGlmIHRoaXMgcGF0Y2ggaXMgcmVsZXZhbnQgdG8gdGhlIHN5c3RlbXMgd2UgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIG9yIGlmIHdlIG5lZWQgdG8gZG8gc29tZSBtb3JlIGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEdJQU5GQVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz04OT1jb25maWcgVUdFVEhfVFhfT05fREVNQU5EXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo5Mzpjb25maWcgR0lBTkZBUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtHaWFuZmFyIEV0aGVybmV0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBGcmVlc2NhbGUgRXRoZXJuZXQgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEZyZWVzY2FsZSBFdGhlcm5ldCBkcml2ZXJzIGluIHRoaXMga2VybmVsLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2AgZGlyZWN0b3J5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gYXJvdW5kIGxpbmUgOTMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIG1lYXQgb2YgdGhlIG1vc3QgaW50ZXJlc3Rpbmcgb3IgaW1wb3J0YW50IG9wdGlvbnMgc3RhcnRzLCBJIHN1c3BlY3QsIG9yIHBvc3NpYmx5IHdoZXJlIGEgc3BlY2lmaWMgZmFtaWx5IG9yIGtleSBzZXR0aW5nIGJlZ2lucy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgZGVmaW5lZCwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyByZWxhdGUgdG8gdGhlIG92ZXJhbGwgRXRoZXJuZXQgZHJpdmVyIGFyY2hpdGVjdHVyZSBvbiBGcmVlc2NhbGUgU29Dcy4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYXJlYXMgdGhhdCBuZWVkIGltbWVkaWF0ZSBhdHRlbnRpb24gb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWxseSBmb3Igb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIGlzc3VlIEkmIzM5O3ZlIGJlZW4gY29uc2lkZXJpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDg1Olx0XHRoZWxwXG4gIDg2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBHaWdhYml0IEV0aGVybmV0IG1vZGUgb2YgdGhlIFFVSUNDIEVuZ2luZSxcbiAgODc6XHRcdCAgd2hpY2ggaXMgYXZhaWxhYmxlIG9uIHNvbWUgRnJlZXNjYWxlIFNPQ3MuXG4gIDg4Olx0XG4gIDg5Olx0Y29uZmlnIFVHRVRIX1RYX09OX0RFTUFORFxuICA5MDpcdFx0Ym9vbCBcJiMzNDtUcmFuc21pdCBvbiBEZW1hbmQgc3VwcG9ydFwmIzM0O1xuICA5MTpcdFx0ZGVwZW5kcyBvbiBVQ0NfR0VUSFxuICA5MjpcdFxuICA5MzpcdGNvbmZpZyBHSUFORkFSXG4gIDk0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHaWFuZmFyIEV0aGVybmV0XCYjMzQ7XG4gIDk1Olx0XHRkZXBlbmRzIG9uIEhBU19ETUFcbiAgOTY6XHRcdHNlbGVjdCBGU0xfUFFfTURJT1xuICA5NzpcdFx0c2VsZWN0IFBIWUxJQlxuICA5ODpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICA5OTpcdFx0c2VsZWN0IENSQzMyXG4gMTAwOlx0XHRoZWxwXG4gMTAxOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBHaWdhYml0IFRTRUMgb24gdGhlIE1QQzgzeHgsIE1QQzg1eHgsXG4gMTAyOlx0XHQgIGFuZCBNUEM4Nnh4IGZhbWlseSBvZiBjaGlwcywgdGhlIGVUU0VDIG9uIExTMTAyMUEgYW5kIHRoZSBGRUNcbiAxMDM6XHRcdCAgb24gdGhlIDg1NDAuXG4gMTA0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgdGFyZ2V0aW5nIEZyZWVzY2FsZSBTb0NzIOKAkyBNUEM4M3h4LCA4NXh4LCA4Nnh4LCBhbmQgdGhlIExTMTAyMUEuIFRoZSBMUzEwMjFBIGlzIEFSTSwgQ29ydGV4LUE3IGJhc2VkLCBzbyB0aGF0IG1lYW5zIHdlICpjb3VsZCogY29tcGlsZSBpdCBmb3IgQVJNIGFyY2hpdGVjdHVyZXMuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIHJlYWxpc3RpY2FsbHkgZnV6eiB0aGlzIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHByb2JhYmx5IG5vdCBlYXNpbHksIHVubGVzcyB3ZSBzcGVjaWZpY2FsbHkgZW11bGF0ZSB0aGUgU29DLiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBBUk0gYm9hcmQgYW5kIFFFTVUgc3VwcG9ydCwgYnV0IGl0JiMzOTtzIG5vdCBhIGdpdmVuLgoKSXMgdGhpcyBldmVuICp3b3J0aCogZnV6emluZz8gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIHBhdGggaW4gYGdmYXJfZW5ldF9vcGVuYC4gYGdmYXJfZW5ldF9vcGVuYCBpcyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjayBmb3IgdGhlIG5ldF9kZXZpY2UuIE1lYW5pbmcgaXQgY2FuIGJlIHRyaWdnZXJlZCB1c2luZyBgaWZjb25maWcgdXBgIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudC4gU2luY2UgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgbXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBoaXR0aW5nIHRoYXQgYG5kb19vcGVuYCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgd291bGQgYmUgdHJpY2t5LgoKV2FpdCwgbGV0JiMzOTtzIGJhY2sgdXAuIFRoZSBpbnN0cnVjdGlvbnMgc2FpZCBzb21ldGhpbmcgYWJvdXQgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OyBMZXQgbWUgcmUtcmVhZCB0aGF0IHBhcnTigKYgQWhhISBUaGUgY3JpdGVyaWEgaW5jbHVkZXMgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBEb2VzIFFFTVUgZW11bGF0ZSBHaWFuZmFyPwoKWWVzLCB0aGVyZSBpcyBgaHcvbmV0L2ZzbF9ldHNlYy9gIGluIFFFTVUsIHdoaWNoIGVtdWxhdGVzIHRoZSBlVFNFQyAoR2lhbmZhcikgZm9yIHRoZSBlNTAwIG1hY2hpbmUgKFBvd2VyUEMpLiBPa2F5LCBidXQgc3l6a2FsbGVyIG1vc3RseSBmb2N1c2VzIG9uIHg4Nl82NCBhbmQgYXJtNjQsIHNvIGlmIHdlIGFyZSBjb25zaWRlcmluZyB0aGUgQVJNIExTMTAyMUEsIGl0IHN0aWxsIG1heSBub3QgYmUgZW11bGF0ZWQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZSBgR0lBTkZBUmAgZnVuY3Rpb25hbGl0eSBpcyBjb21tb25seSBlbmFibGVkIG9yIGNhbiBiZSBlbmFibGVkIG9uIHg4Ni4gSXQgZGVwZW5kcyBvbiBgSEFTX0RNQWAuIEl0ICpkb2VzbiYjMzk7dCogZGVwZW5kIG9uIGBQUENgIG9yIGBBUk1gLiBTbywgbG9naWNhbGx5LCB3ZSBjb3VsZCBjb21waWxlIGl0IG9uIHg4Nl82NCwgcG90ZW50aWFsbHkgd2l0aCBgQ09NUElMRV9URVNUYCBvciBqdXN0IG5vcm1hbGx5IHNpbmNlIHRoZSBkZXBlbmRlbmN5IGlzIGp1c3QgYEhBU19ETUFgLgoKSG93ZXZlciwgaGVyZSYjMzk7cyB0aGUga2lja2VyOiB3aXRob3V0IHRoZSBoYXJkd2FyZSBvciAqZ29vZCogZW11bGF0aW9uLCB0aGUgZHJpdmVyJiMzOTtzIGBwcm9iZWAgZnVuY3Rpb24gd2lsbCBuZXZlciBzdWNjZWVkLCBhbmQgdGhlcmVmb3JlIGBnZmFyX2VuZXRfb3BlbmAgd2lsbCBuZXZlciBnZXQgY2FsbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgaXMgYSBwbGF0Zm9ybSBvciBQQ0kgZHJpdmVyLi4uc28gaG93IGRvZXMgaXQgcmVnaXN0ZXIgaXRzZWxmPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV8uKmRyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNjAzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGdmYXJfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzYxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM6MzYxMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGdmYXJfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgUHJvYmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCYjMzk7cyBjbGVhciBpbW1lZGlhdGVseSB0aGF0IGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IG1lYW5zLCBhdCBpdHMgY29yZSwgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgcHJvYmVkIHZpYSBhIGRldmljZSB0cmVlIG5vZGUgb3IgdGhyb3VnaCBwbGF0Zm9ybSBkZXZpY2UgcmVnaXN0cmF0aW9uLiBUaGUgY3J1eCBvZiB0aGUgbWF0dGVyIGlzIHRoZSBlbnZpcm9ubWVudC4gSSYjMzk7bSB3b3JraW5nIGluIGEgZ2VuZXJpYyB4ODZfNjQgVk0uIEdpdmVuIHRoYXQsIEkga25vdyB0aGVyZSYjMzk7cyAqbm8qIHByZS1jb25maWd1cmVkIHBsYXRmb3JtIGRldmljZSB3YWl0aW5nIGZvciBhIGRyaXZlciB3aXRoIGEgJiMzNDtmc2wsZXRzZWMyJiMzNDsgY29tcGF0aWJsZSBzdHJpbmcsIG9yIHdoYXRldmVyIHRoZSBhY3R1YWwgc3RyaW5nIGlzLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbiBpdCB3b24mIzM5O3QgYmUgdGhlcmUgYnkgZGVmYXVsdCwgc28gSSBuZWVkIHRvIHZlcmlmeSB3aGF0IHRoZSBjb21wYXRpYmxlIHN0cmluZyhzKSBhcmUgdGhhdCBpdCYjMzk7cyBsb29raW5nIGZvciBzbyBJIGNhbiBzZWUgaWYgdGhlcmUgaXMgc29tZXRoaW5nIGVsc2UgaXQgbWlnaHQgbWF0Y2ggd2l0aC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIGNvbXBhdGlibGUgc3RyaW5ncyBhbmQgc2VlIHdoZXJlIHdlIGdvIGZyb20gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBnZmFyX3BtX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTM1ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjM1ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2Zhcl9tYXRjaFtdID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzU5MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MjQKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0JiMzOTtzIG15IG93biBpbnRlcm5hbCBkaWFsb2d1ZToKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEYXRhIFBvaW50IEFjcXVpc2l0aW9uKioKCkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgY2xlYXIuIEkmIzM5O3ZlIGJlZW4gZ2l2ZW4gYSAmIzM0O21hdGNoIHRhYmxlLCYjMzQ7IHdoaWNoIEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgYSBzdHJ1Y3R1cmVkIGRhdGFzZXQgcmVwcmVzZW50aW5nIHNvbWUgZm9ybSBvZiBjb3JyZWxhdGlvbiwgY29tcGFyaXNvbiwgb3IgaW50ZXJhY3Rpb24uIEl0IGNvdWxkIGJlIGFueXRoaW5nIGZyb20gZ2Vub21pYyBhbGlnbm1lbnRzIHRvIG1hY2hpbmUgbGVhcm5pbmcgb3V0cHV0IHRvIHRyYWRlIGRhdGEg4oCTIHRoZSBzcGVjaWZpY3MgYXJlIGlycmVsZXZhbnQgYXQgdGhpcyBzdGFnZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHB1cmVseSBvYnNlcnZhdGlvbmFsOiBJIG5lZWQgdG8gaW5nZXN0IHRoZSBmb3JtYXQsIHN0cnVjdHVyZSwgYW5kIGJhc2ljIHZhcmlhYmxlcyBkZXNjcmliZWQuIExldCYjMzk7cyBnZXQgcmVhZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzU4OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNTg5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2Zhcl9tYXRjaFtdID1cbjM1OTA6XHR7XG4zNTkxOlx0XHR7XG4zNTkyOlx0XHRcdC50eXBlID0gXCYjMzQ7bmV0d29ya1wmIzM0OyxcbjM1OTM6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtnaWFuZmFyXCYjMzQ7LFxuMzU5NDpcdFx0fSxcbjM1OTU6XHRcdHtcbjM1OTY6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtmc2wsZXRzZWMyXCYjMzQ7LFxuMzU5NzpcdFx0fSxcbjM1OTg6XHRcdHt9LFxuMzU5OTpcdH07XG4zNjAwOlx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZ2Zhcl9tYXRjaCk7XG4zNjAxOlx0XG4zNjAyOlx0LyogU3RydWN0dXJlIGZvciBhIGRldmljZSBkcml2ZXIgKi9cbjM2MDM6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZmFyX2RyaXZlciA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgVGFyZ2V0OiBBIEZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBPRiAoT3BlbiBGaXJtd2FyZSkgcGxhdGZvcm0gZHJpdmVyIG5hdHVyZSBvZiBpdCBqdW1wcyBvdXQuIFRoYXQgbWVhbnMgaXQgbmVlZHMgYSBkZXZpY2UgdHJlZSBub2RlIHRvIHByb2JlLCByaWdodD8gT24gYSBzdGFuZGFyZCB4ODZfNjQgUUVNVSBWTSwgbGlrZSBgcTM1YCBvciBgcGNgLCB0aGVyZSYjMzk7cyBubyBkZXZpY2UgdHJlZSwgb3IgYXQgbGVhc3Qgbm90aGluZyBmb3IgKnRoaXMqIGRldmljZS4gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBjbGV2ZXIgdHJpY2tzLCBsaWtlIGBzeXpfZGV2bWVtYCBhbmQgc3VjaCwgdG8gaW5qZWN0IGRldmljZXMsIGJ1dCB0aGF0JiMzOTtzIHR5cGljYWxseSB2ZXJ5IGxpbWl0ZWQgYW5kIG1vcmUgZm9yIHN0dWZmIGxpa2UgUENJLCBVU0IsIG9yIHZHRU0sIHJpZ2h0PyBXYWl0IGEgc2Vjb25kLCB3aGF0IGFib3V0IGBzeXpfZ2VuZXRsaW5rYCBhbmQgdGhvc2UgcHNldWRvLWRldmljZXM/IE5haCwgbm8gYXJiaXRyYXJ5IE9GIHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIGl04oCZcyBydW5uaW5nIG9uIGEgKnNwZWNpZmljKiBib2FyZC4gVGhlbiB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHN5emthbGxlciBldmVuIHJlYWNoIGBnZmFyX2VuZXRfb3BlbmA/CgpIYW5nIG9uLCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQmIzM5O3MgKmltcG9zc2libGUqIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IEdDRSBvciBRRU1VLiBCdXQgaXMgdGhpcyBpbXBvc3NpYmxlPyBJZiBJIGZpcmUgdXAgUUVNVSB3aXRoIGBxZW11LXN5c3RlbS1wcGMgLU0gZTUwMGAsIHRoZSBkZXZpY2UgKmlzKiBwcmVzZW50IGFuZCB0aGUgZHJpdmVyICp3aWxsKiBwcm9iZSEgRG9lcyBzeXprYWxsZXIgZXZlbiAqcnVuKiB0aGF0IHNwZWNpZmljIFFFTVUgc2V0dXA/IEkga25vdyB0aGVyZSYjMzk7cyBhIGBwcGM2NGxlYCB0YXJnZXQsIGJ1dCBgZTUwMGAgaXMgMzItYml0IFBvd2VyUEMsIG9yIG1heWJlIGEgNjQtYml0IGU1NTAwLgoKQWgsIGJ1dCB0aGUgcHJvbXB0IHNheXMgJiMzNDsqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDsgU2luY2UgUUVNVSAqY2FuKiBlbXVsYXRlIHRoaXMgaGFyZHdhcmUsIHRoYXQgZVRTRUMsIGl0JiMzOTtzICp0ZWNobmljYWxseSogcmVhY2hhYmxlLiBCdXQgaXMgaXQgd29ydGggaXQ/IElzIGZ1enppbmcgdGhpcyAqc3BlY2lmaWMqIGVycm9yIHBhdGggd29ydGggdGhlIGVmZm9ydD8KClRoZSBwYXRjaCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZmFyX2VuZXRfb3BlbmAgaWYgYHN0YXJ0dXBfZ2ZhcihkZXYpYCBmYWlscy4gT2theSwgYHN0YXJ0dXBfZ2ZhcmAgZG9lcyBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi4gVG8gaGl0IHRoZSBlcnJvciwgSSBuZWVkIGBzdGFydHVwX2dmYXJgIHRvIGZhaWwuIFJpZ2h0LCBub3cgdG8gbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCB0YWtlcyB0byB0cmlnZ2VyIHRoYXQgZmFpbHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IHN0YXJ0dXBfZ2ZhciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0xMzI5PXN0YXRpYyBpbnQgZ2Zhcl9hbGxvY19za2JfcmVzb3VyY2VzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMTQwOC0vKiBCcmluZyB0aGUgY29udHJvbGxlciB1cCBhbmQgcnVubmluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzoxNDA5OmludCBzdGFydHVwX2dmYXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTE0MTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTc5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MgYXMgSSBhcHByb2FjaCByZWFkaW5nIHRoaXM6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTmF2aWdhdGluZyB0aGUgTGFuZHNjYXBlKioKCkFscmlnaHQsIHRoZSBmaWxlIGlzIGBzdGFydHVwX2dmYXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpdHMgcHVycG9zZS4gR2l2ZW4gdGhlICYjMzQ7c3RhcnR1cCYjMzQ7IHByZWZpeCwgSSYjMzk7bSBleHBlY3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gbmV3IHZlbnR1cmVzLCBwcm9iYWJseSBhIGJ1c2luZXNzIHBsYW4sIGZpbmFuY2lhbCBwcm9qZWN0aW9ucywgb3IgcGVyaGFwcyBzb21lIGNvZGUgcmVsYXRlZCB0byBhIG5ldyBzdGFydHVwIGluaXRpYXRpdmUuIFRoZSAmIzM0O2dmYXImIzM0OyBwYXJ0IGlzIGxlc3MgY2xlYXI7IGl0IGNvdWxkIGJlIGFuIGFjcm9ueW0gZm9yIGEgc3BlY2lmaWMgcHJvamVjdCwgYSB0ZWFtIG5hbWUsIG9yIHNvbWV0aGluZyBtb3JlIGFic3RyYWN0LiBJJiMzOTtsbCBuZWVkIGNvbnRleHQgdG8gaW50ZXJwcmV0IGl0IGNvcnJlY3RseS4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIGRvY3VtZW50YXRpb24sIGNvZGUsIG9yIGRhdGEuIEp1ZGdpbmcgYnkgdGhlIGZvcm1hdCwgSSYjMzk7bSBleHBlY3Rpbmcgc29tZXRoaW5nIGluIGEgdGV4dCBiYXNlZCBmb3JtYXQuIEkgbmVlZCB0byBnZXQgc3RhcnRlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzdHJ1Y3R1cmUgYW5kIGNvbnRlbnQgd2l0aGluLiBCYXNlZCBvbiB0aGF0LCBJIGNhbiBmb3JtIG15IHVuZGVyc3RhbmRpbmcgdG8gZXh0cmFjdCB0aGUga2V5IHBvaW50cy4gSSYjMzk7bSByZWFkeSB0byBwcm9jZWVkLCBJIGNhbiBldmFsdWF0ZSB0aGlzIGVmZmljaWVudGx5LCBwaWVjZSBieSBwaWVjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDA5Olx0aW50IHN0YXJ0dXBfZ2ZhcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbjE0MTA6XHR7XG4xNDExOlx0XHRzdHJ1Y3QgZ2Zhcl9wcml2YXRlICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4xNDEyOlx0XHRpbnQgZXJyO1xuMTQxMzpcdFxuMTQxNDpcdFx0Z2Zhcl9tYWNfcmVzZXQocHJpdik7XG4xNDE1Olx0XG4xNDE2Olx0XHRlcnIgPSBnZmFyX2FsbG9jX3NrYl9yZXNvdXJjZXMobmRldik7XG4xNDE3Olx0XHRpZiAoZXJyKVxuMTQxODpcdFx0XHRyZXR1cm4gZXJyO1xuMTQxOTpcdFxuMTQyMDpcdFx0Z2Zhcl9pbml0X3R4X3J4X2Jhc2UocHJpdik7XG4xNDIxOlx0XG4xNDIyOlx0XHRzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTtcbjE0MjM6XHRcdGNsZWFyX2JpdChHRkFSX0RPV04sIFx1MDAyNnByaXYtXHUwMDNlc3RhdGUpO1xuMTQyNDpcdFx0c21wX21iX19hZnRlcl9hdG9taWMoKTtcbjE0MjU6XHRcbjE0MjY6XHRcdC8qIFN0YXJ0IFJ4L1R4IERNQSBhbmQgZW5hYmxlIHRoZSBpbnRlcnJ1cHRzICovXG4xNDI3Olx0XHRnZmFyX3N0YXJ0KHByaXYpO1xuMTQyODpcdFxuMTQyOTpcdFx0LyogZm9yY2UgbGluayBzdGF0ZSB1cGRhdGUgYWZ0ZXIgbWFjIHJlc2V0ICovXG4xNDMwOlx0XHRwcml2LVx1MDAzZW9sZGxpbmsgPSAwO1xuMTQzMTpcdFx0cHJpdi1cdTAwM2VvbGRzcGVlZCA9IDA7XG4xNDMyOlx0XHRwcml2LVx1MDAzZW9sZGR1cGxleCA9IC0xO1xuMTQzMzpcdFxuMTQzNDpcdFx0cGh5X3N0YXJ0KG5kZXYtXHUwMDNlcGh5ZGV2KTtcbjE0MzU6XHRcbjE0MzY6XHRcdGVuYWJsZV9uYXBpKHByaXYpO1xuMTQzNzpcdFxuMTQzODpcdFx0bmV0aWZfdHhfd2FrZV9hbGxfcXVldWVzKG5kZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODU3CgkJCQkJCQlvdXRwdXQ6IDExOQoJCQkJCQkJdGhvdWdodHM6IDk5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQXNzZXNzbWVudCBmb3IgR2lhbmZhciBEcml2ZXIgRml4KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBzdGFydHVwX2dmYXJgIGNhbiBmYWlsIGR1ZSB0byBtZW1vcnkgYWxsb2NhdGlvbiBpc3N1ZXMsIHdoaWNoIGFyZSwgdGhlb3JldGljYWxseSwgaW5qZWN0YWJsZSBieSBzeXprYWxsZXIuIFRoZSBlcnJvciBwYXRoICpjb3VsZCogYmUgaGl0IGR1cmluZyBwcm9iZSBhbmQgYGlmY29uZmlnIHVwYC4gQnV0IHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzLCBkb2VzIHN5emthbGxlciAqYWN0dWFsbHkqIGZ1enogdGhpcyBkcml2ZXI/ICBJdCBwcmltYXJpbHkgZm9jdXNlcyBvbiB4ODZfNjQsIGFybTY0LCByaXNjdjY0LCBhbmQgczM5MHguIFRoaXMgaXMgYSB2ZXJ5IG5pY2hlIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSAoUG93ZXJQQyBlNTAwKSwgd2hpY2ggaXMgdW5saWtlbHkgdG8gYmUgaW4gdGhlIG1haW4gZnV6emluZyBzdHJlYW0uIEV2ZW4gaWYgaXQgKndlcmUqIHRhcmdldGVkLCBpdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgc28gdGhlcmUmIzM5O3Mgbm8gUENJIG9yIFVTQiBpbnRlcmZhY2UgdG8gdHJpZ2dlciBpdCBkaXJlY3RseS4KCkNhbiBJIGdldCBhcm91bmQgdGhpcyBvbiBhbiB4ODZfNjQgc3lzdGVtPyBOby4gVW5sZXNzIHN5emthbGxlciBoYXMgc29tZSBmYW5jeSB0cmlja3Mgd2l0aCBwbGF0Zm9ybSBkZXZpY2VzIHZpYSBkZXZpY2UgdHJlZSBvdmVybGF5cywgd2hpY2ggaXMgbm90IHR5cGljYWwuCgpOb3csIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLi4uJiMzNDsuIFFFTVUgKmRvZXMqIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBmb3IgZTUwMCwgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBwcmltYXJ5IHRhcmdldCwgYW5kIHRoaXMgaXMganVzdCBhbiBlcnJvciBwYXRoIGZpeC4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBwb3NpdGl2ZSBjYXNlIGZvciBXb3J0aEZ1enppbmc9dHJ1ZS4gSWYgSSBnbyB0aGF0IHJvdXRlLCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gcHJvdmlkZSBGb2N1c1N5bWJvbHMgYW5kIEVuYWJsZUNvbmZpZ3MuCmBFbmFibGVDb25maWdzYCB3b3VsZCBiZSBgR0lBTkZBUmAsIGFuZCBgRm9jdXNTeW1ib2xzYCB3b3VsZCBiZSBgZ2Zhcl9lbmV0X29wZW5gLgpCdXQgaXMgaXQgZXZlbiB3b3J0aCBpdD8gVGhpcyBpcyBhIHRyaXZpYWwgZXJyb3IgcGF0aCBmaXguIEZ1enppbmcgdGhpcyAqc3BlY2lmaWMqIHBhdGggcmVxdWlyZXMgZmF1bHQgaW5qZWN0aW9uIGR1cmluZyBgZ2Zhcl9lbmV0X29wZW5gLCB3aGljaCBpcyBkaWZmaWN1bHQgdG8gc2V0IHVwIGluIHRoZSBmaXJzdCBwbGFjZS4KClllcywgYENPTkZJR19HSUFORkFSYCBpcyBgSEFTX0RNQWAsIHNvIGl0ICpjb3VsZCogYmUgZW5hYmxlZCBvbiB4ODZfNjQsIGJ1dCB0aGUgR2lhbmZhciBkZXZpY2Ugd29uJiMzOTt0IHByb2JlIGluIHRoZSBmaXJzdCBwbGFjZS4KCkRvZXMgc3l6a2FsbGVyIHJ1biBQb3dlclBDIGU1MDAgVk1zPyBObywgYHN5ei1jaWAgZG9lcyBub3QgaGF2ZSBhbiBlNTAwIHRhcmdldC4gV2UgaGF2ZSBgcG93ZXJwY2Agd2hpY2ggaXMgNjQtYml0LgoKVGhlcmVmb3JlLCBwcmFjdGljYWxseSBzcGVha2luZywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAuIEl0IHNlZW1zIHRvIGZhbGwgdW5kZXIgdGhlICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCYjMzQ7IGNhdGVnb3J5LiBUaGUgcHJvbXB0ICphbHNvKiBtZW50aW9ucyBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBCdXQgdGhpcyBpcyBub3Qgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWAuIEl0IGlzIGEgcmVhbCBTb0MgYmxvY2sgdGhhdCBRRU1VIGVtdWxhdGVzIGZvciBhIHNwZWNpZmljIG1hY2hpbmUuCgpJZiB3ZSYjMzk7cmUgb24geDg2XzY0ICh3aGljaCBpcyBtb3N0IGNvbW1vbiB1bmxlc3Mgc3BlY2lmaWVkKSwgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaC4gVGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHRyaWdnZXIgcGxhdGZvcm0gZHJpdmVyIHByb2JlIG9uIHg4Nl82NCB1bmxlc3MgaXQmIzM5O3MgYSBmYWtlIHBsYXRmb3JtIGRldmljZSwgd2hpY2ggZG9lcyBub3QgaGFwcGVuIGZvciBgZ2lhbmZhcmAuCgpTbywgSSYjMzk7bSBnb2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgaXQgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEZyZWVzY2FsZSBHaWFuZmFyKSB0aGF0IGNhbm5vdCBiZSBwcm9iZWQgaW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgeDg2XzY0IEdDRS9RRU1VIFZNcykgd2l0aG91dCBzcGVjaWZpYyBTb0MgZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEZyZWVzY2FsZSBTb0NzIChlLmcuLCBQb3dlclBDIGU1MDAsIExTMTAyMUEpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IGFuZCBjYW5ub3QgYmUgcHJvYmVkIGluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIHg4Nl82NCBHQ0Ugb3Igc3RhbmRhcmQgUUVNVSBWTXMpIHdpdGhvdXQgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MTkuMzU3MzQyNjAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4NzAyNjgzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MTkuMzU3MzQ3NjIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODc2NjIwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MjM4YWNiMGU4ZTViZmE5ODhlYWU4OTViZTAxNGVlOWIwYmNhNTJjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMDA6MzM6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcXG5pbmRleCA4OTIxNWUxZGRjMmRiMS4uNGIzYTVlYWFkZmI1MGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcXG5AQCAtMjg3OCw4ICsyODc4LDExIEBAIHN0YXRpYyBpbnQgZ2Zhcl9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdGVyciA9IHN0YXJ0dXBfZ2ZhcihkZXYpO1xcbi1cXHRpZiAoZXJyKVxcbitcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0XFx0Z2Zhcl9mcmVlX2lycShwcml2KTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzoxOS42NDU2MjQ1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1ODE5ODA1MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0MjM4YWNiMGU4ZTViZmE5ODhlYWU4OTViZTAxNGVlOWIwYmNhNTJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAwMDozMzoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5pbmRleCA4OTIxNWUxZGRjMmRiMS4uNGIzYTVlYWFkZmI1MGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5AQCAtMjg3OCw4ICsyODc4LDExIEBAIHN0YXRpYyBpbnQgZ2Zhcl9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGVyciA9IHN0YXJ0dXBfZ2ZhcihkZXYpO1xuLVx0aWYgKGVycilcbitcdGlmIChlcnIpIHtcbitcdFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG4rXHRcdGdmYXJfZnJlZV9pcnEocHJpdik7XG4gXHRcdHJldHVybiBlcnI7XG4rXHR9XG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjE5LjY0NTYyNTk0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzMjI4MTE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWZmZWN0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBhZGRlZCBzb21lIGVycm9yIGhhbmRsaW5nIGluIGBnZmFyX2VuZXRfb3BlbmAsIHNwZWNpZmljYWxseSB3aGVuIGBzdGFydHVwX2dmYXIoZGV2KWAgZmFpbHMuIFRoZXkncmUgbWFraW5nIHN1cmUgdG8gZGlzY29ubmVjdCB0aGUgUEhZIGFuZCBmcmVlIHRoZSBJUlEgaW4gdGhhdCBjYXNlIOKAkyBnb29kIHByYWN0aWNlLlxuXG5Ob3csIG15IG1pbmQgZ29lcyB0byB2aXJ0dWFsaXphdGlvbi4gVGhpcyBpcyB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgZHJpdmVyLCB0eXBpY2FsbHkgZm9yIFBvd2VyUEMvRnJlZXNjYWxlIFNvQ3MgbGlrZSBNUEM4NXh4IGFuZCBlNTAwLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIGl0IGVtdWxhdGFibGU/IFFFTVUgaXMgdGhlIGZpcnN0IHBsYWNlIEknZCBsb29rLiBBaCwgUUVNVSBoYXMgYW4gYGU1MDBgIG1hY2hpbmUsIGFuZCB0aGF0IHN1cHBvcnRzIGBnaWFuZmFyYCAob3IgZVRTRUMsIGFzIGl0J3MgYWxzbyBrbm93bikuIFRoYXQncyBhIHByb21pc2luZyBzdGFydC5cblxuQnV0IGEgbmFnZ2luZyB0aG91Z2h0Li4uIHN5emthbGxlciwgd2hpY2ggaXMgb2Z0ZW4gdXNlZCBmb3IgZnV6emluZywgcHJpbWFyaWx5IHRhcmdldHMgeDg2XzY0LCBhcm02NCwgcmlzY3YsIGFuZCB0aGUgbGlrZS4gV2UgbmVlZCB0byBjb25maXJtIGlmIGBHSUFORkFSYCBpcyBldmVuIHByZXNlbnQgb24gdGhvc2UgYXJjaGl0ZWN0dXJlcyBvciBpZiBpdCdzIHN0cmljdGx5IFBvd2VyUEMtc3BlY2lmaWMuIExldCdzIGRlbHZlIGludG8gdGhlIEtjb25maWcg4oCTIHRoYXQncyB3aGVyZSB0aGUgYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGRlZmluZWQuIFRoYXQnbGwgdGVsbCB1cyBpZiB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IHRvIHRoZSBzeXN0ZW1zIHdlIGFyZSBwcmltYXJpbHkgZm9jdXNlZCBvbiBvciBpZiB3ZSBuZWVkIHRvIGRvIHNvbWUgbW9yZSBkaWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODQwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MjQuNDc3OTA4NTk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzUwOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBHSUFORkFSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTg5PWNvbmZpZyBVR0VUSF9UWF9PTl9ERU1BTkRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjkzOmNvbmZpZyBHSUFORkFSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIkdpYW5mYXIgRXRoZXJuZXRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjI0LjUzNzY2NDkyNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzUwNTU0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEZyZWVzY2FsZSBFdGhlcm5ldCBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEZyZWVzY2FsZSBFdGhlcm5ldCBkcml2ZXJzIGluIHRoaXMga2VybmVsLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvYCBkaXJlY3RvcnkuIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGFyb3VuZCBsaW5lIDkzIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIG1lYXQgb2YgdGhlIG1vc3QgaW50ZXJlc3Rpbmcgb3IgaW1wb3J0YW50IG9wdGlvbnMgc3RhcnRzLCBJIHN1c3BlY3QsIG9yIHBvc3NpYmx5IHdoZXJlIGEgc3BlY2lmaWMgZmFtaWx5IG9yIGtleSBzZXR0aW5nIGJlZ2lucy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZXNlIG9wdGlvbnMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIEV0aGVybmV0IGRyaXZlciBhcmNoaXRlY3R1cmUgb24gRnJlZXNjYWxlIFNvQ3MuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYXJlYXMgdGhhdCBuZWVkIGltbWVkaWF0ZSBhdHRlbnRpb24gb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWxseSBmb3Igb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIGlzc3VlIEkndmUgYmVlbiBjb25zaWRlcmluZy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MjcuNDcyNzIyNDU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODU6XFx0XFx0aGVscFxcbiAgODY6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2lnYWJpdCBFdGhlcm5ldCBtb2RlIG9mIHRoZSBRVUlDQyBFbmdpbmUsXFxuICA4NzpcXHRcXHQgIHdoaWNoIGlzIGF2YWlsYWJsZSBvbiBzb21lIEZyZWVzY2FsZSBTT0NzLlxcbiAgODg6XFx0XFxuICA4OTpcXHRjb25maWcgVUdFVEhfVFhfT05fREVNQU5EXFxuICA5MDpcXHRcXHRib29sIFxcXCJUcmFuc21pdCBvbiBEZW1hbmQgc3VwcG9ydFxcXCJcXG4gIDkxOlxcdFxcdGRlcGVuZHMgb24gVUNDX0dFVEhcXG4gIDkyOlxcdFxcbiAgOTM6XFx0Y29uZmlnIEdJQU5GQVJcXG4gIDk0OlxcdFxcdHRyaXN0YXRlIFxcXCJHaWFuZmFyIEV0aGVybmV0XFxcIlxcbiAgOTU6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfRE1BXFxuICA5NjpcXHRcXHRzZWxlY3QgRlNMX1BRX01ESU9cXG4gIDk3OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDk4OlxcdFxcdHNlbGVjdCBGSVhFRF9QSFlcXG4gIDk5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxMDA6XFx0XFx0aGVscFxcbiAxMDE6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2lnYWJpdCBUU0VDIG9uIHRoZSBNUEM4M3h4LCBNUEM4NXh4LFxcbiAxMDI6XFx0XFx0ICBhbmQgTVBDODZ4eCBmYW1pbHkgb2YgY2hpcHMsIHRoZSBlVFNFQyBvbiBMUzEwMjFBIGFuZCB0aGUgRkVDXFxuIDEwMzpcXHRcXHQgIG9uIHRoZSA4NTQwLlxcbiAxMDQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjI3LjQ3Mjc4NTQxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzU1MDQ1MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCB0YXJnZXRpbmcgRnJlZXNjYWxlIFNvQ3Mg4oCTIE1QQzgzeHgsIDg1eHgsIDg2eHgsIGFuZCB0aGUgTFMxMDIxQS4gVGhlIExTMTAyMUEgaXMgQVJNLCBDb3J0ZXgtQTcgYmFzZWQsIHNvIHRoYXQgbWVhbnMgd2UgKmNvdWxkKiBjb21waWxlIGl0IGZvciBBUk0gYXJjaGl0ZWN0dXJlcy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgcmVhbGlzdGljYWxseSBmdXp6IHRoaXMgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgcHJvYmFibHkgbm90IGVhc2lseSwgdW5sZXNzIHdlIHNwZWNpZmljYWxseSBlbXVsYXRlIHRoZSBTb0MuIFN5emthbGxlciAqZG9lcyogaGF2ZSBzb21lIEFSTSBib2FyZCBhbmQgUUVNVSBzdXBwb3J0LCBidXQgaXQncyBub3QgYSBnaXZlbi5cblxuSXMgdGhpcyBldmVuICp3b3J0aCogZnV6emluZz8gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIHBhdGggaW4gYGdmYXJfZW5ldF9vcGVuYC4gYGdmYXJfZW5ldF9vcGVuYCBpcyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjayBmb3IgdGhlIG5ldF9kZXZpY2UuIE1lYW5pbmcgaXQgY2FuIGJlIHRyaWdnZXJlZCB1c2luZyBgaWZjb25maWcgdXBgIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudC4gU2luY2UgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgbXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBoaXR0aW5nIHRoYXQgYG5kb19vcGVuYCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgd291bGQgYmUgdHJpY2t5LlxuXG5XYWl0LCBsZXQncyBiYWNrIHVwLiBUaGUgaW5zdHJ1Y3Rpb25zIHNhaWQgc29tZXRoaW5nIGFib3V0IFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIgTGV0IG1lIHJlLXJlYWQgdGhhdCBwYXJ04oCmIEFoYSEgVGhlIGNyaXRlcmlhIGluY2x1ZGVzIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gRG9lcyBRRU1VIGVtdWxhdGUgR2lhbmZhcj9cblxuWWVzLCB0aGVyZSBpcyBgaHcvbmV0L2ZzbF9ldHNlYy9gIGluIFFFTVUsIHdoaWNoIGVtdWxhdGVzIHRoZSBlVFNFQyAoR2lhbmZhcikgZm9yIHRoZSBlNTAwIG1hY2hpbmUgKFBvd2VyUEMpLiBPa2F5LCBidXQgc3l6a2FsbGVyIG1vc3RseSBmb2N1c2VzIG9uIHg4Nl82NCBhbmQgYXJtNjQsIHNvIGlmIHdlIGFyZSBjb25zaWRlcmluZyB0aGUgQVJNIExTMTAyMUEsIGl0IHN0aWxsIG1heSBub3QgYmUgZW11bGF0ZWQuXG5cbkFscmlnaHQsIGxldCdzIHNlZSBpZiB0aGUgYEdJQU5GQVJgIGZ1bmN0aW9uYWxpdHkgaXMgY29tbW9ubHkgZW5hYmxlZCBvciBjYW4gYmUgZW5hYmxlZCBvbiB4ODYuIEl0IGRlcGVuZHMgb24gYEhBU19ETUFgLiBJdCAqZG9lc24ndCogZGVwZW5kIG9uIGBQUENgIG9yIGBBUk1gLiBTbywgbG9naWNhbGx5LCB3ZSBjb3VsZCBjb21waWxlIGl0IG9uIHg4Nl82NCwgcG90ZW50aWFsbHkgd2l0aCBgQ09NUElMRV9URVNUYCBvciBqdXN0IG5vcm1hbGx5IHNpbmNlIHRoZSBkZXBlbmRlbmN5IGlzIGp1c3QgYEhBU19ETUFgLlxuXG5Ib3dldmVyLCBoZXJlJ3MgdGhlIGtpY2tlcjogd2l0aG91dCB0aGUgaGFyZHdhcmUgb3IgKmdvb2QqIGVtdWxhdGlvbiwgdGhlIGRyaXZlcidzIGBwcm9iZWAgZnVuY3Rpb24gd2lsbCBuZXZlciBzdWNjZWVkLCBhbmQgdGhlcmVmb3JlIGBnZmFyX2VuZXRfb3BlbmAgd2lsbCBuZXZlciBnZXQgY2FsbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgaXMgYSBwbGF0Zm9ybSBvciBQQ0kgZHJpdmVyLi4uc28gaG93IGRvZXMgaXQgcmVnaXN0ZXIgaXRzZWxmP1xuXG5cbiIsIklucHV0VG9rZW5zIjozMDY2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6MzUuMjQ4MjkxNDQyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MDExOTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV8uKmRyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM9MzYwMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZmFyX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzYxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjM2MTM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihnZmFyX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjM1LjMwNDMwNzU5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5OTg3ODMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlciBQcm9iZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCdzIGNsZWFyIGltbWVkaWF0ZWx5IHRoYXQgaXQncyBhIHBsYXRmb3JtIGRyaXZlci4gVGhhdCBtZWFucywgYXQgaXRzIGNvcmUsIGl0J3MgZGVzaWduZWQgdG8gYmUgcHJvYmVkIHZpYSBhIGRldmljZSB0cmVlIG5vZGUgb3IgdGhyb3VnaCBwbGF0Zm9ybSBkZXZpY2UgcmVnaXN0cmF0aW9uLiBUaGUgY3J1eCBvZiB0aGUgbWF0dGVyIGlzIHRoZSBlbnZpcm9ubWVudC4gSSdtIHdvcmtpbmcgaW4gYSBnZW5lcmljIHg4Nl82NCBWTS4gR2l2ZW4gdGhhdCwgSSBrbm93IHRoZXJlJ3MgKm5vKiBwcmUtY29uZmlndXJlZCBwbGF0Zm9ybSBkZXZpY2Ugd2FpdGluZyBmb3IgYSBkcml2ZXIgd2l0aCBhIFwiZnNsLGV0c2VjMlwiIGNvbXBhdGlibGUgc3RyaW5nLCBvciB3aGF0ZXZlciB0aGUgYWN0dWFsIHN0cmluZyBpcy4gSXQncyBhbG1vc3QgY2VydGFpbiBpdCB3b24ndCBiZSB0aGVyZSBieSBkZWZhdWx0LCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQgdGhlIGNvbXBhdGlibGUgc3RyaW5nKHMpIGFyZSB0aGF0IGl0J3MgbG9va2luZyBmb3Igc28gSSBjYW4gc2VlIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBlbHNlIGl0IG1pZ2h0IG1hdGNoIHdpdGguIExldCdzIGRpZyBpbnRvIHRob3NlIGNvbXBhdGlibGUgc3RyaW5ncyBhbmQgc2VlIHdoZXJlIHdlIGdvIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzozOC41MDQxODc3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxMzMwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2ZfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBnZmFyX3BtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzU4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjM1ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2Zhcl9tYXRjaFtdID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTM1OTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzozOC41NjEzMzA5NTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcwODY3NzAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0J3MgbXkgb3duIGludGVybmFsIGRpYWxvZ3VlOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRGF0YSBQb2ludCBBY3F1aXNpdGlvbioqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgY2xlYXIuIEkndmUgYmVlbiBnaXZlbiBhIFwibWF0Y2ggdGFibGUsXCIgd2hpY2ggSSdtIGFzc3VtaW5nLCBnaXZlbiBteSBleHBlcnRpc2UsIGlzIGEgc3RydWN0dXJlZCBkYXRhc2V0IHJlcHJlc2VudGluZyBzb21lIGZvcm0gb2YgY29ycmVsYXRpb24sIGNvbXBhcmlzb24sIG9yIGludGVyYWN0aW9uLiBJdCBjb3VsZCBiZSBhbnl0aGluZyBmcm9tIGdlbm9taWMgYWxpZ25tZW50cyB0byBtYWNoaW5lIGxlYXJuaW5nIG91dHB1dCB0byB0cmFkZSBkYXRhIOKAkyB0aGUgc3BlY2lmaWNzIGFyZSBpcnJlbGV2YW50IGF0IHRoaXMgc3RhZ2UuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBwdXJlbHkgb2JzZXJ2YXRpb25hbDogSSBuZWVkIHRvIGluZ2VzdCB0aGUgZm9ybWF0LCBzdHJ1Y3R1cmUsIGFuZCBiYXNpYyB2YXJpYWJsZXMgZGVzY3JpYmVkLiBMZXQncyBnZXQgcmVhZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYyNCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6NDEuMjcwMDEwMTI2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1ODksXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1ODk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2Zhcl9tYXRjaFtdID1cXG4zNTkwOlxcdHtcXG4zNTkxOlxcdFxcdHtcXG4zNTkyOlxcdFxcdFxcdC50eXBlID0gXFxcIm5ldHdvcmtcXFwiLFxcbjM1OTM6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwiZ2lhbmZhclxcXCIsXFxuMzU5NDpcXHRcXHR9LFxcbjM1OTU6XFx0XFx0e1xcbjM1OTY6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwiZnNsLGV0c2VjMlxcXCIsXFxuMzU5NzpcXHRcXHR9LFxcbjM1OTg6XFx0XFx0e30sXFxuMzU5OTpcXHR9O1xcbjM2MDA6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZ2Zhcl9tYXRjaCk7XFxuMzYwMTpcXHRcXG4zNjAyOlxcdC8qIFN0cnVjdHVyZSBmb3IgYSBkZXZpY2UgZHJpdmVyICovXFxuMzYwMzpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZmFyX2RyaXZlciA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6NDEuMjcwMTYzNDE2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2ODI2MDAxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFRhcmdldDogQSBGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIE9GIChPcGVuIEZpcm13YXJlKSBwbGF0Zm9ybSBkcml2ZXIgbmF0dXJlIG9mIGl0IGp1bXBzIG91dC4gVGhhdCBtZWFucyBpdCBuZWVkcyBhIGRldmljZSB0cmVlIG5vZGUgdG8gcHJvYmUsIHJpZ2h0PyBPbiBhIHN0YW5kYXJkIHg4Nl82NCBRRU1VIFZNLCBsaWtlIGBxMzVgIG9yIGBwY2AsIHRoZXJlJ3Mgbm8gZGV2aWNlIHRyZWUsIG9yIGF0IGxlYXN0IG5vdGhpbmcgZm9yICp0aGlzKiBkZXZpY2UuIEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgY2xldmVyIHRyaWNrcywgbGlrZSBgc3l6X2Rldm1lbWAgYW5kIHN1Y2gsIHRvIGluamVjdCBkZXZpY2VzLCBidXQgdGhhdCdzIHR5cGljYWxseSB2ZXJ5IGxpbWl0ZWQgYW5kIG1vcmUgZm9yIHN0dWZmIGxpa2UgUENJLCBVU0IsIG9yIHZHRU0sIHJpZ2h0PyBXYWl0IGEgc2Vjb25kLCB3aGF0IGFib3V0IGBzeXpfZ2VuZXRsaW5rYCBhbmQgdGhvc2UgcHNldWRvLWRldmljZXM/IE5haCwgbm8gYXJiaXRyYXJ5IE9GIHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIGl04oCZcyBydW5uaW5nIG9uIGEgKnNwZWNpZmljKiBib2FyZC4gVGhlbiB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHN5emthbGxlciBldmVuIHJlYWNoIGBnZmFyX2VuZXRfb3BlbmA/XG5cbkhhbmcgb24sIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCdzICppbXBvc3NpYmxlKiB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSBHQ0Ugb3IgUUVNVS4gQnV0IGlzIHRoaXMgaW1wb3NzaWJsZT8gSWYgSSBmaXJlIHVwIFFFTVUgd2l0aCBgcWVtdS1zeXN0ZW0tcHBjIC1NIGU1MDBgLCB0aGUgZGV2aWNlICppcyogcHJlc2VudCBhbmQgdGhlIGRyaXZlciAqd2lsbCogcHJvYmUhIERvZXMgc3l6a2FsbGVyIGV2ZW4gKnJ1biogdGhhdCBzcGVjaWZpYyBRRU1VIHNldHVwPyBJIGtub3cgdGhlcmUncyBhIGBwcGM2NGxlYCB0YXJnZXQsIGJ1dCBgZTUwMGAgaXMgMzItYml0IFBvd2VyUEMsIG9yIG1heWJlIGEgNjQtYml0IGU1NTAwLlxuXG5BaCwgYnV0IHRoZSBwcm9tcHQgc2F5cyBcIippbXBvc3NpYmxlKiB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiBTaW5jZSBRRU1VICpjYW4qIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSwgdGhhdCBlVFNFQywgaXQncyAqdGVjaG5pY2FsbHkqIHJlYWNoYWJsZS4gQnV0IGlzIGl0IHdvcnRoIGl0PyBJcyBmdXp6aW5nIHRoaXMgKnNwZWNpZmljKiBlcnJvciBwYXRoIHdvcnRoIHRoZSBlZmZvcnQ/XG5cblRoZSBwYXRjaCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZmFyX2VuZXRfb3BlbmAgaWYgYHN0YXJ0dXBfZ2ZhcihkZXYpYCBmYWlscy4gT2theSwgYHN0YXJ0dXBfZ2ZhcmAgZG9lcyBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi4gVG8gaGl0IHRoZSBlcnJvciwgSSBuZWVkIGBzdGFydHVwX2dmYXJgIHRvIGZhaWwuIFJpZ2h0LCBub3cgdG8gbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCB0YWtlcyB0byB0cmlnZ2VyIHRoYXQgZmFpbHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAwMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjMzOjQ4Ljk1Mjc2NTgzNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNDY1NjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBzdGFydHVwX2dmYXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTEzMjk9c3RhdGljIGludCBnZmFyX2FsbG9jX3NrYl9yZXNvdXJjZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTE0MDgtLyogQnJpbmcgdGhlIGNvbnRyb2xsZXIgdXAgYW5kIHJ1bm5pbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjE0MDk6aW50IHN0YXJ0dXBfZ2ZhcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTE0MTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzo0OS4xNzYyMzYwMThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3ODQ5OTYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MgYXMgSSBhcHByb2FjaCByZWFkaW5nIHRoaXM6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCB0aGUgZmlsZSBpcyBgc3RhcnR1cF9nZmFyYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UuIEdpdmVuIHRoZSBcInN0YXJ0dXBcIiBwcmVmaXgsIEknbSBleHBlY3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gbmV3IHZlbnR1cmVzLCBwcm9iYWJseSBhIGJ1c2luZXNzIHBsYW4sIGZpbmFuY2lhbCBwcm9qZWN0aW9ucywgb3IgcGVyaGFwcyBzb21lIGNvZGUgcmVsYXRlZCB0byBhIG5ldyBzdGFydHVwIGluaXRpYXRpdmUuIFRoZSBcImdmYXJcIiBwYXJ0IGlzIGxlc3MgY2xlYXI7IGl0IGNvdWxkIGJlIGFuIGFjcm9ueW0gZm9yIGEgc3BlY2lmaWMgcHJvamVjdCwgYSB0ZWFtIG5hbWUsIG9yIHNvbWV0aGluZyBtb3JlIGFic3RyYWN0LiBJJ2xsIG5lZWQgY29udGV4dCB0byBpbnRlcnByZXQgaXQgY29ycmVjdGx5LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBkb2N1bWVudGF0aW9uLCBjb2RlLCBvciBkYXRhLiBKdWRnaW5nIGJ5IHRoZSBmb3JtYXQsIEknbSBleHBlY3Rpbmcgc29tZXRoaW5nIGluIGEgdGV4dCBiYXNlZCBmb3JtYXQuIEkgbmVlZCB0byBnZXQgc3RhcnRlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzdHJ1Y3R1cmUgYW5kIGNvbnRlbnQgd2l0aGluLiBCYXNlZCBvbiB0aGF0LCBJIGNhbiBmb3JtIG15IHVuZGVyc3RhbmRpbmcgdG8gZXh0cmFjdCB0aGUga2V5IHBvaW50cy4gSSdtIHJlYWR5IHRvIHByb2NlZWQsIEkgY2FuIGV2YWx1YXRlIHRoaXMgZWZmaWNpZW50bHksIHBpZWNlIGJ5IHBpZWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTc5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDA6MzM6NTIuMTU0NzM4MDE2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MDksXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE0MDk6XFx0aW50IHN0YXJ0dXBfZ2ZhcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4xNDEwOlxcdHtcXG4xNDExOlxcdFxcdHN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4xNDEyOlxcdFxcdGludCBlcnI7XFxuMTQxMzpcXHRcXG4xNDE0OlxcdFxcdGdmYXJfbWFjX3Jlc2V0KHByaXYpO1xcbjE0MTU6XFx0XFxuMTQxNjpcXHRcXHRlcnIgPSBnZmFyX2FsbG9jX3NrYl9yZXNvdXJjZXMobmRldik7XFxuMTQxNzpcXHRcXHRpZiAoZXJyKVxcbjE0MTg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xNDE5OlxcdFxcbjE0MjA6XFx0XFx0Z2Zhcl9pbml0X3R4X3J4X2Jhc2UocHJpdik7XFxuMTQyMTpcXHRcXG4xNDIyOlxcdFxcdHNtcF9tYl9fYmVmb3JlX2F0b21pYygpO1xcbjE0MjM6XFx0XFx0Y2xlYXJfYml0KEdGQVJfRE9XTiwgXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlKTtcXG4xNDI0OlxcdFxcdHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7XFxuMTQyNTpcXHRcXG4xNDI2OlxcdFxcdC8qIFN0YXJ0IFJ4L1R4IERNQSBhbmQgZW5hYmxlIHRoZSBpbnRlcnJ1cHRzICovXFxuMTQyNzpcXHRcXHRnZmFyX3N0YXJ0KHByaXYpO1xcbjE0Mjg6XFx0XFxuMTQyOTpcXHRcXHQvKiBmb3JjZSBsaW5rIHN0YXRlIHVwZGF0ZSBhZnRlciBtYWMgcmVzZXQgKi9cXG4xNDMwOlxcdFxcdHByaXYtXFx1MDAzZW9sZGxpbmsgPSAwO1xcbjE0MzE6XFx0XFx0cHJpdi1cXHUwMDNlb2xkc3BlZWQgPSAwO1xcbjE0MzI6XFx0XFx0cHJpdi1cXHUwMDNlb2xkZHVwbGV4ID0gLTE7XFxuMTQzMzpcXHRcXG4xNDM0OlxcdFxcdHBoeV9zdGFydChuZGV2LVxcdTAwM2VwaHlkZXYpO1xcbjE0MzU6XFx0XFxuMTQzNjpcXHRcXHRlbmFibGVfbmFwaShwcml2KTtcXG4xNDM3OlxcdFxcbjE0Mzg6XFx0XFx0bmV0aWZfdHhfd2FrZV9hbGxfcXVldWVzKG5kZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMDozMzo1Mi4xNTQ5MDM0MDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNzI2NjMzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQgZm9yIEdpYW5mYXIgRHJpdmVyIEZpeCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHN0YXJ0dXBfZ2ZhcmAgY2FuIGZhaWwgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGlzc3Vlcywgd2hpY2ggYXJlLCB0aGVvcmV0aWNhbGx5LCBpbmplY3RhYmxlIGJ5IHN5emthbGxlci4gVGhlIGVycm9yIHBhdGggKmNvdWxkKiBiZSBoaXQgZHVyaW5nIHByb2JlIGFuZCBgaWZjb25maWcgdXBgLiBCdXQgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXMsIGRvZXMgc3l6a2FsbGVyICphY3R1YWxseSogZnV6eiB0aGlzIGRyaXZlcj8gIEl0IHByaW1hcmlseSBmb2N1c2VzIG9uIHg4Nl82NCwgYXJtNjQsIHJpc2N2NjQsIGFuZCBzMzkweC4gVGhpcyBpcyBhIHZlcnkgbmljaGUgZHJpdmVyIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIChQb3dlclBDIGU1MDApLCB3aGljaCBpcyB1bmxpa2VseSB0byBiZSBpbiB0aGUgbWFpbiBmdXp6aW5nIHN0cmVhbS4gRXZlbiBpZiBpdCAqd2VyZSogdGFyZ2V0ZWQsIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNvIHRoZXJlJ3Mgbm8gUENJIG9yIFVTQiBpbnRlcmZhY2UgdG8gdHJpZ2dlciBpdCBkaXJlY3RseS5cblxuQ2FuIEkgZ2V0IGFyb3VuZCB0aGlzIG9uIGFuIHg4Nl82NCBzeXN0ZW0/IE5vLiBVbmxlc3Mgc3l6a2FsbGVyIGhhcyBzb21lIGZhbmN5IHRyaWNrcyB3aXRoIHBsYXRmb3JtIGRldmljZXMgdmlhIGRldmljZSB0cmVlIG92ZXJsYXlzLCB3aGljaCBpcyBub3QgdHlwaWNhbC5cblxuTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4uLlwiLiBRRU1VICpkb2VzKiBlbXVsYXRlIHRoaXMgaGFyZHdhcmUgZm9yIGU1MDAsIGJ1dCB0aGF0J3Mgbm90IHRoZSBwcmltYXJ5IHRhcmdldCwgYW5kIHRoaXMgaXMganVzdCBhbiBlcnJvciBwYXRoIGZpeC5cblxuTGV0J3MgbG9vayBhdCB0aGUgcG9zaXRpdmUgY2FzZSBmb3IgV29ydGhGdXp6aW5nPXRydWUuIElmIEkgZ28gdGhhdCByb3V0ZSwgSSdtIGdvaW5nIHRvIG5lZWQgdG8gcHJvdmlkZSBGb2N1c1N5bWJvbHMgYW5kIEVuYWJsZUNvbmZpZ3MuXG5gRW5hYmxlQ29uZmlnc2Agd291bGQgYmUgYEdJQU5GQVJgLCBhbmQgYEZvY3VzU3ltYm9sc2Agd291bGQgYmUgYGdmYXJfZW5ldF9vcGVuYC5cbkJ1dCBpcyBpdCBldmVuIHdvcnRoIGl0PyBUaGlzIGlzIGEgdHJpdmlhbCBlcnJvciBwYXRoIGZpeC4gRnV6emluZyB0aGlzICpzcGVjaWZpYyogcGF0aCByZXF1aXJlcyBmYXVsdCBpbmplY3Rpb24gZHVyaW5nIGBnZmFyX2VuZXRfb3BlbmAsIHdoaWNoIGlzIGRpZmZpY3VsdCB0byBzZXQgdXAgaW4gdGhlIGZpcnN0IHBsYWNlLlxuXG5ZZXMsIGBDT05GSUdfR0lBTkZBUmAgaXMgYEhBU19ETUFgLCBzbyBpdCAqY291bGQqIGJlIGVuYWJsZWQgb24geDg2XzY0LCBidXQgdGhlIEdpYW5mYXIgZGV2aWNlIHdvbid0IHByb2JlIGluIHRoZSBmaXJzdCBwbGFjZS5cblxuRG9lcyBzeXprYWxsZXIgcnVuIFBvd2VyUEMgZTUwMCBWTXM/IE5vLCBgc3l6LWNpYCBkb2VzIG5vdCBoYXZlIGFuIGU1MDAgdGFyZ2V0LiBXZSBoYXZlIGBwb3dlcnBjYCB3aGljaCBpcyA2NC1iaXQuXG5cblRoZXJlZm9yZSwgcHJhY3RpY2FsbHkgc3BlYWtpbmcsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwLiBJdCBzZWVtcyB0byBmYWxsIHVuZGVyIHRoZSBcImltcG9zc2libGUgdG8gcmVhY2hcIiBjYXRlZ29yeS4gVGhlIHByb21wdCAqYWxzbyogbWVudGlvbnMgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gQnV0IHRoaXMgaXMgbm90IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gLiBJdCBpcyBhIHJlYWwgU29DIGJsb2NrIHRoYXQgUUVNVSBlbXVsYXRlcyBmb3IgYSBzcGVjaWZpYyBtYWNoaW5lLlxuXG5JZiB3ZSdyZSBvbiB4ODZfNjQgKHdoaWNoIGlzIG1vc3QgY29tbW9uIHVubGVzcyBzcGVjaWZpZWQpLCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2guIFRoZXJlJ3Mgbm8gd2F5IHRvIHRyaWdnZXIgcGxhdGZvcm0gZHJpdmVyIHByb2JlIG9uIHg4Nl82NCB1bmxlc3MgaXQncyBhIGZha2UgcGxhdGZvcm0gZGV2aWNlLCB3aGljaCBkb2VzIG5vdCBoYXBwZW4gZm9yIGBnaWFuZmFyYC5cblxuU28sIEknbSBnb2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgaXQgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEZyZWVzY2FsZSBHaWFuZmFyKSB0aGF0IGNhbm5vdCBiZSBwcm9iZWQgaW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgeDg2XzY0IEdDRS9RRU1VIFZNcykgd2l0aG91dCBzcGVjaWZpYyBTb0MgZW11bGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODU3LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDAwOjM0OjA1LjIyNzU2OTMwNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBGcmVlc2NhbGUgU29DcyAoZS5nLiwgUG93ZXJQQyBlNTAwLCBMUzEwMjFBKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBhbmQgY2Fubm90IGJlIHByb2JlZCBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSB4ODZfNjQgR0NFIG9yIHN0YW5kYXJkIFFFTVUgVk1zKSB3aXRob3V0IHNwZWNpZmljIFNvQyBlbXVsYXRpb24sIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEZyZWVzY2FsZSBTb0NzIChlLmcuLCBQb3dlclBDIGU1MDAsIExTMTAyMUEpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IGFuZCBjYW5ub3QgYmUgcHJvYmVkIGluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIHg4Nl82NCBHQ0Ugb3Igc3RhbmRhcmQgUUVNVSBWTXMpIHdpdGhvdXQgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww5mvd[1] Phase: Running StartedAt: 2026-07-05 00:34:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww5mvd[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-05 00:34:16 +0000 UTC FinishedAt: 2026-07-05 00:34:22 +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,}