Name: series-workflow826v4 Phase: Failed StartedAt: 2026-07-13 11:15:27 +0000 UTC FinishedAt: 2026-07-13 11:46:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow826v4[0] Phase: Succeeded StartedAt: 2026-07-13 11:15:27 +0000 UTC FinishedAt: 2026-07-13 11:46:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow826v4[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 11:15:27 +0000 UTC FinishedAt: 2026-07-13 11:46:13 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIDEwR2JFICh0eGdiZSkgUENJIGRyaXZlci4gVGhpcyBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGZvciBpdCBpbiB0aGUga2VybmVsLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggKGV0aHRvb2wgY2FsbGJhY2spIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxY2VmODhkNTI0Mzg4NTE3NzQyYjc5MGRhYjhiNTFkYjlmMDc4YmFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTE6NDU6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmNcbmluZGV4IGFmZmVhMWEzNjRlZmQ0Li4yNmQwY2ZjNThlZTJjZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmNcbkBAIC05NiwxMSAmIzQzOzk2LDEzIEBAIGludCB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYoc3RydWN0IHd4ICp3eCxcbiBcdGR3b3JkX2xlbiA9IHJvdW5kX3VwKGxlbmd0aCwgNCkgXHUwMDNlXHUwMDNlIDI7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkd29yZF9sZW47IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1MzIgY29weV9sZW4gPSBtaW5fdCh1MzIsIDQsIGxlbmd0aCAtIGkgKiA0KTtcbiYjNDM7XG4gXHRcdHZhbHVlID0gcmQzMmEod3gsIFdYX0ZXMlNXX01CT1gsIGkgJiM0Mzsgb2Zmc2V0KTtcbiBcdFx0bGUzMl90b19jcHVzKFx1MDAyNnZhbHVlKTtcbiBcbi1cdFx0bWVtY3B5KGRhdGEsIFx1MDAyNnZhbHVlLCA0KTtcbi1cdFx0ZGF0YSAmIzQzOz0gNDtcbiYjNDM7XHRcdG1lbWNweShkYXRhLCBcdTAwMjZ2YWx1ZSwgY29weV9sZW4pO1xuJiM0MztcdFx0ZGF0YSAmIzQzOz0gY29weV9sZW47XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAxMEdiRSAodHhnYmUpIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQgaW4gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIChldGh0b29sIGNhbGxiYWNrKSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxY2VmODhkNTI0Mzg4NTE3NzQyYjc5MGRhYjhiNTFkYjlmMDc4YmFkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMTE6NDU6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYwppbmRleCBhZmZlYTFhMzY0ZWZkNC4uMjZkMGNmYzU4ZWUyY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYwpAQCAtOTYsMTEgJiM0Mzs5NiwxMyBAQCBpbnQgdHhnYmVfcmVhZF9lZXByb21faG9zdGlmKHN0cnVjdCB3eCAqd3gsCiAJZHdvcmRfbGVuID0gcm91bmRfdXAobGVuZ3RoLCA0KSAmZ3Q7Jmd0OyAyOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGR3b3JkX2xlbjsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXUzMiBjb3B5X2xlbiA9IG1pbl90KHUzMiwgNCwgbGVuZ3RoIC0gaSAqIDQpOwomIzQzOwogCQl2YWx1ZSA9IHJkMzJhKHd4LCBXWF9GVzJTV19NQk9YLCBpICYjNDM7IG9mZnNldCk7CiAJCWxlMzJfdG9fY3B1cygmYW1wO3ZhbHVlKTsKIAotCQltZW1jcHkoZGF0YSwgJmFtcDt2YWx1ZSwgNCk7Ci0JCWRhdGEgJiM0Mzs9IDQ7CiYjNDM7CQltZW1jcHkoZGF0YSwgJmFtcDt2YWx1ZSwgY29weV9sZW4pOwomIzQzOwkJZGF0YSAmIzQzOz0gY29weV9sZW47CiAJfQogCiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE5ldHdvcmsgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWZgIHdpdGhpbiB0aGUgYHR4Z2JlX2FtbC5jYCBkcml2ZXIuIFNlZW1zIGxpa2UgaXQmIzM5O3MgYSBmaXggZm9yIGEgYnVmZmVyIG92ZXJmbG93LCB3aGljaCBpcyBhbHdheXMgc29tZXRoaW5nIHRvIHBheSBhdHRlbnRpb24gdG8sIGVzcGVjaWFsbHkgaW4gbmV0d29yayBkcml2ZXJzLiBJdCBsb29rcyBsaWtlIHRoZSBpc3N1ZSBzdGVtcyBmcm9tIGFuIGluY29ycmVjdCBgY29weV9sZW5gIHZhbHVlIGJlaW5nIHVzZWQgd2hlbiByZWFkaW5nIGZyb20gdGhlIEVFUFJPTSB0aHJvdWdoIHRoZSBob3N0IGludGVyZmFjZSwgcmF0aGVyIHRoYW4gYWx3YXlzIDQgYnl0ZXMuIFRoaXMgZHJpdmVyJiMzOTtzIHNwZWNpZmljIHRvIHRoZSBXYW5neHVuIDEwIEdpZ2FiaXQgRXRoZXJuZXQgQ29udHJvbGxlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgcmVhY2hhYmlsaXR5LgoKRmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgZXZlbiBiZSB0cmlnZ2VyZWQgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nPyBXYW5neHVuIDEwR2JFIGlzIGEgUENJIGRldmljZSwgc28gSSYjMzk7bSBpbW1lZGlhdGVseSBza2VwdGljYWwgYWJvdXQgZGlyZWN0IFFFTVUgZW11bGF0aW9uLiBQcm9iYWJseSBub3QuIEJ1dCB0aGVuIEkmIzM5O20gdGhpbmtpbmcsIGNvdWxkIHRoaXMgYmUgcmVhY2hhYmxlIHZpYSBzb21lIG1vcmUgZ2VuZXJpYyBQQ0kgZnV6emluZyBhdHRlbXB0cz8gTGV0JiMzOTtzIG5vdCBkaXNtaXNzIHRoYXQgb3B0aW9uIHJpZ2h0IGF3YXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiYjMzk7cyB1c2FnZSBiZXR0ZXIuIFRpbWUgdG8gZGlnIGludG8gd2hlcmUgYHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZmAgaXMgYWN0dWFsbHkgY2FsbGVkLiBHb3R0YSBzZWUgaG93IG1hbnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyB0aGVyZSBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHhnYmVfcmVhZF9lZXByb21faG9zdGlmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz02MD1pbnQgdHhnYmVfdGVzdF9ob3N0aWYoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo3NjppbnQgdHhnYmVfcmVhZF9lZXByb21faG9zdGlmKHN0cnVjdCB3eCAqd3gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc3LVx0XHRcdCAgICAgc3RydWN0IHR4Z2JlX2hpY19pMmNfcmVhZCAqYnVmZmVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmg9OT1pbnQgdHhnYmVfdGVzdF9ob3N0aWYoc3RydWN0IHd4ICp3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5oOjEwOmludCB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYoc3RydWN0IHd4ICp3eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmgtMTEtXHRcdFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9ldGh0b29sLmM9NTI5PXR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYy01NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYzo1NDY6XHRlcnIgPSB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYod3gsIFx1MDAyNmJ1ZmZlciwgcGFnZV9kYXRhLVx1MDAzZWxlbmd0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jLTU0Ny1cdFx0XHRcdCAgICAgICBwYWdlX2RhdGEtXHUwMDNlZGF0YSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxNQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGV0aHRvb2wgQ2FsbGJhY2s6IENhbiBXZSBUZXN0IFdpdGhvdXQgUmVhbCBIYXJkd2FyZT8qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2VgIGZ1bmN0aW9uLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgdHhnYmVfZXRodG9vbC5jYCwgc28gaXQmIzM5O3MgYW4gZXRodG9vbCBjYWxsYmFjay4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMsIGNhbiBJIHJlYWNoIHRoaXMgY29kZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50PyBJZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCwgdGhlbiB0aGVvcmV0aWNhbGx5LCBpZiBJIGNhbiBpbnN0YW50aWF0ZSB0aGUgYG5ldF9kZXZpY2VgLCBJIG1pZ2h0IGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIGNhbGxiYWNrLiBCdXQgb2YgY291cnNlLCB0aGUgZHJpdmVyIGlzIFBDSSwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgdGhlIHN0aWNraW5nIHBvaW50LiBUaGUgZHJpdmVyIHdvbiYjMzk7dCBwcm9iZSB3aXRob3V0IHRoZSBoYXJkd2FyZS4KClRoZW4gSSByZWNhbGxlZCB0aGF0IHN5emthbGxlciBoYXMgdlBDSSBhbmQvb3IgY2FuIGluamVjdCBQQ0kgY29uZmlnIHNwYWNlIGZvciBmdXp6aW5nLiBJIGNhbiAqbWF5YmUqIHVzZSB0aGF0Li4uIHN5emthbGxlciBoYXMgYSBwcmltaXRpdmUgbGlrZSBgc3l6X3BjaV9kZXZpY2VgLCByaWdodD8gQnV0IGV2ZW4gd2l0aCB0aGF0LCBpdCYjMzk7cyBuZXZlciBzaW1wbGUuIFBDSSBkcml2ZXJzIGFsbW9zdCBhbHdheXMgcmVxdWlyZSBzcGVjaWZpYyB2ZW5kb3IvZGV2aWNlIElEcyBhbmQgbWFwcGVkIE1NSU8gcmVnaW9ucyB0byBldmVuIHN0YXJ0IHByb2JpbmcuIEl0JiMzOTtzIGEgYml0IG9mIGEgcGFpbiB0byBzZXQgdGhhdCB1cC4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhhdCwgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBzY2FuIGZvciBhIFdhbmd4dW4gc3BlY2lmaWMgY29uZmlnIGluIHRoZSBkcml2ZXIuIE1heWJlLCBqdXN0IG1heWJlLCB0aGVyZSYjMzk7cyBzb21lIHNwZWNpYWwgaGFuZGxpbmcgdGhhdCBsZXRzIG1lIGdldCBmdXJ0aGVyIHdpdGhvdXQgaGF2aW5nIHRvIGNyZWF0ZSBhIHdob2xlIG5ldyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUWEdCRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgQ2hlY2sgaW4gdGhlIFdhbmd4dW4gRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cywgYW5kIGZvbGxvd2luZyBiZXN0IHByYWN0aWNlcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIGNoZWNrLiBNeSBpbnR1aXRpb24gc2F5cyB0aGVyZSBtaWdodCBiZSBzb21lIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vYCBkaXJlY3RvcnkuIEkmIzM5O2xsIG5lZWQgdG8gb3BlbiB0aGF0IGZpbGUgYW5kIHF1aWNrbHkgc2NhbiBpdC4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IHBlcnRhaW4gdG8gbXkgY3VycmVudCBwcm9ibGVtIHNwYWNlLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gRG9lcyB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGhhbmRsZSBteSB1c2UgY2FzZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGZsYWdzIG9yIG9wdGlvbnMgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUsIHNvIEkgY2FuIHRlc3QgdGhpcyB0aGVvcnk/IEhvcGVmdWxseSwgaXQgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBJIGNhbiBwcm9jZWVkLiBJZiB0aGVyZSBhcmUgbmV3IHNldHRpbmdzIHRvIGNvbnNpZGVyLCBJJiMzOTtsbCBuZWVkIHRvIGFuYWx5emUgdGhlbSBpbiBkZXB0aCwgYnV0IGxldCYjMzk7cyB0YWtlIHRoaXMgb25lIHN0ZXAgYXQgYSB0aW1lLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwOyBiZXR0ZXIgdG8gZW5zdXJlIEkmIzM5O20gcmVzcGVjdGluZyB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRYR0JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTI4PWNvbmZpZyBOR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjQzOmNvbmZpZyBUWEdCRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjgtXHR0cmlzdGF0ZSBcJiMzNDtXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50IGZvciBXYW5neHVuIDEwR2JFIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIFdhbmd4dW4gMTBHYkUgZHJpdmVyIGJlIGVmZmVjdGl2ZWx5IGZ1enplZD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkga25vdyBzeXprYWxsZXIgKmhhcyogc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0IOKAkyBJIHJlY2FsbCBzZWVpbmcgaXQgd2l0aCBkcml2ZXJzIGxpa2UgZTEwMDBlIOKAkyBidXQgaXQmIzM5O3MgdHlwaWNhbGx5IGxpbWl0ZWQgaW4gaXRzIHNjb3BlLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBpbnN0cnVjdHMgbWUgdG8gcmV0dXJuICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgdGhlIHBhdGNoJiMzOTtzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoYXQmIzM5O3MgdGhlIGNydXggb2YgaXQuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyAxMEdiRSBkZXZpY2UsIFdhbmd4dW4sIGlzIGVtdWxhdGVkIGJ5IFFFTVUuIE5vcGUsIGl0JiMzOTtzIG5vdC4gRnVydGhlciwgY2FuIGl0IGJlIHJlYWNoZWQgdmlhIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGluIHRoZSB3YXkgdGhhdCBzeXprYWxsZXIgaGFuZGxlcyBVU0Igd2l0aCBgdmhjaWAsIHdpZmkgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBDQU4gd2l0aCBgdmNhbmAsIG9yIGlucHV0IHdpdGggYHVpbnB1dGA/IE5vLCBpdCYjMzk7cyBub3QgbGlrZSB0aGF0LiBTeXprYWxsZXImIzM5O3MgYXBwcm9hY2ggZm9yIFBDSSBpbnZvbHZlcyBhICp2aXJ0dWFsKiBQQ0kgZGV2aWNlLiBJcyBpdCB2aWEgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlYCBvciBgc3l6X2t2bV9zZXR1cF9jcHVgIG9yIHBlcmhhcHMgYSBnZW5ldGxpbmsgc2V0dXAgd2l0aCBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYD8gTm8sIG5vLCBhbmQgbm8uIERvZXMgc3l6a2FsbGVyIGhhdmUgYW4gZWZmZWN0aXZlLCBnZW5lcmljIFBDSSBlbXVsYXRvciB0aGF0IGNvdWxkIHRyaWNrIGEgZHJpdmVyIGxpa2UgdGhpcyBpbnRvIHRoaW5raW5nIHRoZSBkZXZpY2UgaXMgcHJlc2VudCBhbmQgZnVuY3Rpb25hbCBlbm91Z2ggdG8gcmVhY2ggdGhvc2UgZXRodG9vbCBjYWxsYmFja3MsIHdoaWNoIGlzIGEga2V5IHBhcnQgb2YgaG93IGl0JiMzOTtzIHRlc3RlZD8gTm90IHVubGVzcyBpdCYjMzk7cyBleHBsaWNpdGx5IHN1cHBvcnRlZCBieSBhIFFFTVUgZGV2aWNlIG9yIGEgc3BlY2lmaWMga2VybmVsIG1vZHVsZSBsaWtlIGB2ZmlvYD8gQnV0IEkgbmVlZCB0byBiZSBjYXJlZnVsOyB2ZmlvIGlzIGZvciB1c2Vyc3BhY2UuCgpXYWl0LCBoYXMgc3l6a2FsbGVyIGFkZGVkIGFueXRoaW5nIHJlY2VudGx5IGFyb3VuZCBQQ0kgZnV6emluZyBpbnZvbHZpbmcgYHZmaW9gIG9yIHNpbWlsYXI/IE5vLCBJIGRvbiYjMzk7dCB0aGluayBzby4gVGhlIGV4aXN0aW5nIG1lY2hhbmlzbSBpcyBzdGlsbCBgc3l6X3BjaV9kZXZpY2VgLCB3aGljaCBoYXMgaXRzIGxpbWl0YXRpb25zLiBTbywgY2FuIHN5emthbGxlciBmdXp6IFBDSSBkcml2ZXJzPyBZZXMsIGJ1dCBvbmx5IGlmIHRoZSBkZXZpY2UgaXMgbG9hZGVkIGFuZCBwcmVzZW50LiBUaGUgY3JpdGljYWwgaXNzdWUgaGVyZSBpcyB0aGF0IHdpdGhvdXQgcHJvcGVyIFFFTVUgZW11bGF0aW9uIG9mIHRoaXMgV2FuZ3h1biBkZXZpY2UsIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiBpcyBuZXZlciBnb2luZyB0byBzdWNjZWVkLiBJZiBgcHJvYmVgIGZhaWxzLCB0aGUgYG5ldF9kZXZpY2VgIHdvbiYjMzk7dCBiZSByZWdpc3RlcmVkLCB3aGljaCBpcyBlc3NlbnRpYWwgdG8gcmVhY2ggZXRodG9vbCBjYWxsYmFja3MuIFRodXMsIG15IG5leHQgc3RlcCBpcyB0byB0ZXN0IHRoZSBhYmlsaXR5IG9mIGB0eGdiZWAgdG8gYmUgcHJvYmVkIHdpdGhvdXQgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4Z2JlX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdHhnYmVfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NzAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo2NzE6ICogdHhnYmVfcHJvYmUgLSBEZXZpY2UgSW5pdGlhbGl6YXRpb24gUm91dGluZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjcyLSAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY3Ni0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6Njc3OiAqIHR4Z2JlX3Byb2JlIGluaXRpYWxpemVzIGFuIGFkYXB0ZXIgaWRlbnRpZmllZCBieSBhIHBjaV9kZXYgc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjc4LSAqIFRoZSBPUyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJpbmcgb2YgdGhlIHd4IHByaXZhdGUgc3RydWN0dXJlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY4MC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo2ODE6c3RhdGljIGludCB0eGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY4Mi1cdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIF9fYWx3YXlzX3VudXNlZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTk2NT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdHhnYmVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTk2Ny1cdC5pZF90YWJsZSA9IHR4Z2JlX3BjaV90YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo5Njg6XHQucHJvYmUgICAgPSB0eGdiZV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTk2OS1cdC5yZW1vdmUgICA9IHR4Z2JlX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3NQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBUYXJnZXRpbmcgYHR4Z2JlX3Byb2JlYCoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBpbXB1bHNlIGhlcmUgaXMgdG8gZGVsdmUgaW50byBgdHhnYmVfcHJvYmVgLiBUaGF0IGxpa2VseSBtZWFucyBJJiMzOTttIHRyb3VibGVzaG9vdGluZywgZGVidWdnaW5nLCBvciBhbmFseXppbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEludGVsIFg1NTAvWDU2MCAxMCBHaWdhYml0IEV0aGVybmV0IGRyaXZlci4gVGhlIG5hbWUgaXRzZWxmIHNjcmVhbXMgb3V0IHRoYXQgdGhpcyBpcyB3aGVyZSB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIHByb2Jpbmcgb2YgdGhlIGhhcmR3YXJlLCBoYXBwZW5zLiBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGF0IGZ1bmN0aW9uIGFzIGEga2V5IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZGV2aWNlIGlzIGZvdW5kIGFuZCBpbml0aWFsaXplZCwgb3Igd2hhdCBjb3VsZCBiZSBnb2luZyB3cm9uZyBkdXJpbmcgdGhhdCBwcm9jZXNzLiBEZXBlbmRpbmcgb24gdGhlIGNvbnRleHQgSSBhbSB3b3JraW5nIHdpdGhpbiwgbGlrZSBhIGtlcm5lbCBvciBkcml2ZXIgdXBkYXRlLCB0aGUgcHJvYmUgaXMgb2Z0ZW4gYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGluIGRlYnVnZ2luZyBuZXR3b3JrIGVycm9ycy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjb250ZXh0IEkmIzM5O20gd29ya2luZyB3aXRoIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjgxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjgxOlx0c3RhdGljIGludCB0eGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiA2ODI6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIF9fYWx3YXlzX3VudXNlZCAqZW50KVxuIDY4MzpcdHtcbiA2ODQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gNjg1Olx0XHRpbnQgZXJyLCBleHBlY3RlZF9ndHM7XG4gNjg2Olx0XHRzdHJ1Y3Qgd3ggKnd4ID0gTlVMTDtcbiA2ODc6XHRcdHN0cnVjdCB0eGdiZSAqdHhnYmU7XG4gNjg4Olx0XG4gNjg5Olx0XHR1MTYgZWVwcm9tX3ZlcmggPSAwLCBlZXByb21fdmVybCA9IDAsIG9mZnNldCA9IDA7XG4gNjkwOlx0XHR1MTYgZWVwcm9tX2NmZ19ibGtoID0gMCwgZWVwcm9tX2NmZ19ibGtsID0gMDtcbiA2OTE6XHRcdHUxNiBidWlsZCA9IDAsIG1ham9yID0gMCwgcGF0Y2ggPSAwO1xuIDY5MjpcdFx0dTMyIGV0cmFja19pZCA9IDA7XG4gNjkzOlx0XG4gNjk0Olx0XHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldik7XG4gNjk1Olx0XHRpZiAoZXJyKVxuIDY5NjpcdFx0XHRyZXR1cm4gZXJyO1xuIDY5NzpcdFxuIDY5ODpcdFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDY0KSk7XG4gNjk5Olx0XHRpZiAoZXJyKSB7XG4gNzAwOlx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gNzAxOlx0XHRcdFx0XCYjMzQ7Tm8gdXNhYmxlIERNQSBjb25maWd1cmF0aW9uLCBhYm9ydGluZ1xcblwmIzM0Oyk7XG4gNzAyOlx0XHRcdGdvdG8gZXJyX3BjaV9kaXNhYmxlX2RldjtcbiA3MDM6XHRcdH1cbiA3MDQ6XHRcbiA3MDU6XHRcdGVyciA9IHBjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMocGRldixcbiA3MDY6XHRcdFx0XHRcdFx0ICAgcGNpX3NlbGVjdF9iYXJzKHBkZXYsIElPUkVTT1VSQ0VfTUVNKSxcbiA3MDc6XHRcdFx0XHRcdFx0ICAgdHhnYmVfZHJpdmVyX25hbWUpO1xuIDcwODpcdFx0aWYgKGVycikge1xuIDcwOTpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuIDcxMDpcdFx0XHRcdFwmIzM0O3BjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMgZmFpbGVkIDB4JXhcXG5cJiMzNDssIGVycik7XG4gNzExOlx0XHRcdGdvdG8gZXJyX3BjaV9kaXNhYmxlX2RldjtcbiA3MTI6XHRcdH1cbiA3MTM6XHRcbiA3MTQ6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDcxNTpcdFxuIDcxNjpcdFx0bmV0ZGV2ID0gZGV2bV9hbGxvY19ldGhlcmRldl9tcXMoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gNzE3Olx0XHRcdFx0XHRcdCBzaXplb2Yoc3RydWN0IHd4KSxcbiA3MTg6XHRcdFx0XHRcdFx0IFRYR0JFX01BWF9UWF9RVUVVRVMsXG4gNzE5Olx0XHRcdFx0XHRcdCBUWEdCRV9NQVhfUlhfUVVFVUVTKTtcbiA3MjA6XHRcdGlmICghbmV0ZGV2KSB7XG4gNzIxOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gNzIyOlx0XHRcdGdvdG8gZXJyX3BjaV9yZWxlYXNlX3JlZ2lvbnM7XG4gNzIzOlx0XHR9XG4gNzI0Olx0XG4gNzI1Olx0XHRTRVRfTkVUREVWX0RFVihuZXRkZXYsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA3MjY6XHRcbiA3Mjc6XHRcdHd4ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiA3Mjg6XHRcdHd4LVx1MDAzZW5ldGRldiA9IG5ldGRldjtcbiA3Mjk6XHRcdHd4LVx1MDAzZXBkZXYgPSBwZGV2O1xuIDczMDpcdFxuIDczMTpcdFx0d3gtXHUwMDNlbXNnX2VuYWJsZSA9ICgxIFx1MDAzY1x1MDAzYyBERUZBVUxUX0RFQlVHX0xFVkVMX1NISUZUKSAtIDE7XG4gNzMyOlx0XG4gNzMzOlx0XHR3eC1cdTAwM2Vod19hZGRyID0gZGV2bV9pb3JlbWFwKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuIDczNDpcdFx0XHRcdFx0ICAgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLFxuIDczNTpcdFx0XHRcdFx0ICAgcGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSk7XG4gNzM2Olx0XHRpZiAoIXd4LVx1MDAzZWh3X2FkZHIpIHtcbiA3Mzc6XHRcdFx0ZXJyID0gLUVJTztcbiA3Mzg6XHRcdFx0Z290byBlcnJfcGNpX3JlbGVhc2VfcmVnaW9ucztcbiA3Mzk6XHRcdH1cbiA3NDA6XHRcbiA3NDE6XHRcdC8qIFRoZSBzYXBwaGlyZSBzdXBwb3J0cyB1cCB0byA2MyBWRnMgcGVyIHBmLCBidXQgcGh5c2ljYWxcbiA3NDI6XHRcdCAqIGZ1bmN0aW9uIGFsc28gbmVlZCBvbmUgcG9vbCBmb3IgYmFzaWMgbmV0d29ya2luZy5cbiA3NDM6XHRcdCAqL1xuIDc0NDpcdFx0cGNpX3NyaW92X3NldF90b3RhbHZmcyhwZGV2LCBUWEdCRV9NQVhfVkZTX0RSVl9MSU1JVCk7XG4gNzQ1Olx0XHR3eC1cdTAwM2Vkcml2ZXJfbmFtZSA9IHR4Z2JlX2RyaXZlcl9uYW1lO1xuIDc0NjpcdFx0dHhnYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XG4gNzQ3Olx0XHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnR4Z2JlX25ldGRldl9vcHM7XG4gNzQ4Olx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xuIDc0OTpcdFxuIDc1MDpcdFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG4gNzUxOlx0XHRlcnIgPSB0eGdiZV9zd19pbml0KHd4KTtcbiA3NTI6XHRcdGlmIChlcnIpXG4gNzUzOlx0XHRcdGdvdG8gZXJyX3BjaV9yZWxlYXNlX3JlZ2lvbnM7XG4gNzU0Olx0XG4gNzU1Olx0XHQvKiBjaGVjayBpZiBmbGFzaCBsb2FkIGlzIGRvbmUgYWZ0ZXIgaHcgcG93ZXIgdXAgKi9cbiA3NTY6XHRcdGVyciA9IHd4X2NoZWNrX2ZsYXNoX2xvYWQod3gsIFRYR0JFX1NQSV9JTERSX1NUQVRVU19QRVJTVCk7XG4gNzU3Olx0XHRpZiAoZXJyKVxuIDc1ODpcdFx0XHRnb3RvIGVycl9mcmVlX21hY190YWJsZTtcbiA3NTk6XHRcdGVyciA9IHd4X2NoZWNrX2ZsYXNoX2xvYWQod3gsIFRYR0JFX1NQSV9JTERSX1NUQVRVU19QV1JSU1QpO1xuIDc2MDpcdFx0aWYgKGVycilcbiA3NjE6XHRcdFx0Z290byBlcnJfZnJlZV9tYWNfdGFibGU7XG4gNzYyOlx0XG4gNzYzOlx0XHRlcnIgPSB3eF9tbmdfcHJlc2VudCh3eCk7XG4gNzY0Olx0XHRpZiAoZXJyKSB7XG4gNzY1Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O01hbmFnZW1lbnQgY2FwYWJpbGl0eSBpcyBub3QgcHJlc2VudFxcblwmIzM0Oyk7XG4gNzY2Olx0XHRcdGdvdG8gZXJyX2ZyZWVfbWFjX3RhYmxlO1xuIDc2NzpcdFx0fVxuIDc2ODpcdFxuIDc2OTpcdFx0ZXJyID0gdHhnYmVfcmVzZXRfaHcod3gpO1xuIDc3MDpcdFx0aWYgKGVycikge1xuIDc3MTpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtIVyBJbml0IGZhaWxlZDogJWRcXG5cJiMzNDssIGVycik7XG4gNzcyOlx0XHRcdGdvdG8gZXJyX2ZyZWVfbWFjX3RhYmxlO1xuIDc3MzpcdFx0fVxuIDc3NDpcdFxuIDc3NTpcdFx0bmV0ZGV2LVx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8XG4gNzc2Olx0XHRcdFx0ICAgTkVUSUZfRl9UU08gfFxuIDc3NzpcdFx0XHRcdCAgIE5FVElGX0ZfVFNPNiB8XG4gNzc4Olx0XHRcdFx0ICAgTkVUSUZfRl9SWEhBU0ggfFxuIDc3OTpcdFx0XHRcdCAgIE5FVElGX0ZfUlhDU1VNIHxcbiA3ODA6XHRcdFx0XHQgICBORVRJRl9GX0hXX0NTVU07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0ODcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIFdhbmd4dW4gMTBHYkUgRHJpdmVyIGluIGEgRnV6emluZyBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIHRhcmdldHMgYSBXYW5neHVuIFRYR0JFIGRyaXZlciwgYW5kIHRoYXQgaW52b2x2ZXMgTU1JTyByZWFkcyBhbmQgd3JpdGVzIGR1cmluZyBhIHByb2JlIGZ1bmN0aW9uIChgdHhnYmVfcHJvYmVgKS4gSWYgdGhpcyBkcml2ZXIgaXNuJiMzOTt0IGVtdWxhdGVkLCB0aG9zZSBNTUlPIG9wZXJhdGlvbnMgd2lsbCBsaWtlbHkgZmFpbCBvciByZXR1cm4gYWxsIDFzLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50LgoKTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgc3l6a2FsbGVyIHdvbiYjMzk7dCBiZSBhYmxlIHRvIHJlYWNoIHRoaXMuIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VgPyBJIGRvbiYjMzk7dCB0aGluayBzby4gSXQgcmVsaWVzIG9uIFFFTVUsIHJpZ2h0PyBBbmQgUUVNVSBkb2VzbiYjMzk7dCBoYXZlIGEgV2FuZ3h1biBkZXZpY2UuIEl0JiMzOTtzIGUxMDAwLCB2aXJ0aW8sIGFuZCBzbyBvbi4gTm8sIG5vIGBzeXpfcGNpX2RldmljZWAuIEkga25vdyBzeXprYWxsZXIgaGFzIGBzeXpfa3ZtX3NldHVwX2NwdWAsIGBzeXpfdXNiX2Nvbm5lY3RgLCBldGMuLCBidXQgSSBhbSBhbG1vc3QgY2VydGFpbiBpdCBkb2VzbiYjMzk7dCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bGwgY2hlY2sgdGhlIGRvY3Mgb3IsIGlmIG5vdCwgSSYjMzk7bGwgb3BlcmF0ZSB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGEgUENJIGRyaXZlciBmb3IgYSBub24tdmlydHVhbGl6ZWQgZGV2aWNlIGlzIHVucmVhY2hhYmxlLgoKQnV0IHdhaXQgYSBtaW51dGUsIHRoZSBwcm9tcHQgKmRvZXMqIHNheSBpdCYjMzk7cyBmb3IgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU28sIGl0ICppcyogYW4gaXNzdWUuIFNvIGlzIHRoaXMgb25lPyBJdCYjMzk7cyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UuIE5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiB0aGUga2VybmVsIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBgbmV0ZGV2c2ltYCBmb3IgdGhpcywgYW5kIHRoZSBwYXRjaCBpcyBpbiBhIHZlcnkgc3BlY2lmaWMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmNgLiBUaGUgZmFjdCB0aGF0IGl0IGNvbWVzIGZyb20gYSAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7IGRvZXNuJiMzOTt0IG5lY2Vzc2FyaWx5IG1lYW4gaXQgZm91bmQgaXQhIEl0IGlzIGp1c3QgdGhlIGNvbW1pdCB0aGF0IEkgdXNlIHRvIGFwcGx5IHRoZSBwYXRjaC4gSXQgbWVhbnMgdGhhdCBzeXprYWxsZXIgaXMgYXNrZWQgdG8gdGVzdCBpdCBhbmQgdGhpcyBpcyB0aGUgY29tbWl0LgoKT2theSwgbGV0IG1lIGNvbmZpcm0uIE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIgY2FuJiMzOTt0IHRlc3QgdGhpcy4gSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGJlY2F1c2UgaXQmIzM5O3MgYSBwaHlzaWNhbCBQQ0kgZHJpdmVyIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24uIEkgc2hvdWxkIGFsc28gY2hlY2sgUUVNVSBhbmQgdGhlIGtlcm5lbCBmb3IgZW11bGF0aW9uLiBRRU1VIGRvZXMgbm90IHN1cHBvcnQgV2FuZ3h1bi4KCkkgYW0gY2VydGFpbiB0aGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlciBhbmQgdGhlIHBhdGNoIGNhbm5vdCBiZSByZWFjaGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz02MD1pbnQgdHhnYmVfdGVzdF9ob3N0aWYoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo3NjppbnQgdHhnYmVfcmVhZF9lZXByb21faG9zdGlmKHN0cnVjdCB3eCAqd3gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc3LVx0XHRcdCAgICAgc3RydWN0IHR4Z2JlX2hpY19pMmNfcmVhZCAqYnVmZmVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmg9OT1pbnQgdHhnYmVfdGVzdF9ob3N0aWYoc3RydWN0IHd4ICp3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5oOjEwOmludCB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYoc3RydWN0IHd4ICp3eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmgtMTEtXHRcdFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9ldGh0b29sLmM9NTI5PXR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYy01NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYzo1NDY6XHRlcnIgPSB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYod3gsIFx1MDAyNmJ1ZmZlciwgcGFnZV9kYXRhLVx1MDAzZWxlbmd0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jLTU0Ny1cdFx0XHRcdCAgICAgICBwYWdlX2RhdGEtXHUwMDNlZGF0YSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MTgKCQkJCQkJCW91dHB1dDogMTA5CgkJCQkJCQl0aG91Z2h0czogMjQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSYjMzk7dmUgdHJhY2VkIHRoaXMgY29kZSBwYXRoIGFuZCBJJiMzOTt2ZSBjb21lIHRvIGEgcHJldHR5IGNsZWFyIGNvbmNsdXNpb24uIFRoaXMgc3BlY2lmaWMgYml0IG9mIGNvZGUsIHRoZSBvbmUgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaCwgaXMgb25seSBldmVyIHJlYWNoZWQgdGhyb3VnaCB0aGUgYHR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2VgIGZ1bmN0aW9uIHdpdGhpbiBgdHhnYmVfZXRodG9vbC5jYC4gQW5kIHRoYXQgZnVuY3Rpb24sIGFzIEkgY2FuIHNlZSwgaXMgc3RyaWN0bHkgYW4gZXRodG9vbCBjYWxsYmFjay4gRXRodG9vbCBjYWxsYmFja3MsIGFzIHdlIGtub3csIGFyZSBvbmx5IGFjdGl2ZSBpZiB0aGUgYXNzb2NpYXRlZCBgbmV0X2RldmljZWAgaGFzIGJlZW4gcmVnaXN0ZXJlZC4gVGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGlzIGBuZXRfZGV2aWNlYCBoYXBwZW5zLCBwcmVkaWN0YWJseSwgaW4gYHR4Z2JlX3Byb2JlYC4gTm93LCBgdHhnYmVfcHJvYmVgIGlzLCBpbiB0dXJuLCBvbmx5IGNhbGxlZCB3aGVuIHRoZSByZWxldmFudCBQQ0kgZGV2aWNlIGlzICphY3R1YWxseSogcHJlc2VudCBvbiB0aGUgc3lzdGVtLgoKSGVyZSYjMzk7cyB0aGUgcHJvYmxlbTogdGhlcmUmIzM5O3Mgbm8gUUVNVSBlbXVsYXRpb24gZm9yIHRoZSBXYW5neHVuIDEwR2JFIG5ldHdvcmsgY2FyZCwgb3IgaW5kZWVkIGFueSBvdGhlciBlbnZpcm9ubWVudC4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgdGhlcmUmIzM5O3Mgbm8gd2F5IHRoaXMgUENJIGRldmljZSB3aWxsIGJlIHByZXNlbnQgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIHNldHVwLiBHaXZlbiB0aGlzLCBpdCBpcyB1bnJlYWNoYWJsZSBpbiBhbnkgZnV6emluZyBlbnZpcm9ubWVudHMgSSBhbSBmYW1pbGlhciB3aXRoLgoKVGhlcmVmb3JlLCBmdXp6aW5nIHRoaXMgY29kZSBpcyBub3QgcG9zc2libGUuIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAxMEdiRSAodHhnYmUpIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQgaW4gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIChldGh0b29sIGNhbGxiYWNrKSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAxMEdiRSAodHhnYmUpIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQgaW4gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIChldGh0b29sIGNhbGxiYWNrKSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDU6MDcuNTk2MjkzOTA4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM5NTMzMTY3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIDEwR2JFICh0eGdiZSkgUENJIGRyaXZlci4gVGhpcyBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGZvciBpdCBpbiB0aGUga2VybmVsLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggKGV0aHRvb2wgY2FsbGJhY2spIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjA3LjU5NjI5OTY3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU3MDMxMjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWNlZjg4ZDUyNDM4ODUxNzc0MmI3OTBkYWI4YjUxZGI5ZjA3OGJhZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0NTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuY1xcbmluZGV4IGFmZmVhMWEzNjRlZmQ0Li4yNmQwY2ZjNThlZTJjZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuY1xcbkBAIC05NiwxMSArOTYsMTMgQEAgaW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbiBcXHRkd29yZF9sZW4gPSByb3VuZF91cChsZW5ndGgsIDQpIFxcdTAwM2VcXHUwMDNlIDI7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHdvcmRfbGVuOyBpKyspIHtcXG4rXFx0XFx0dTMyIGNvcHlfbGVuID0gbWluX3QodTMyLCA0LCBsZW5ndGggLSBpICogNCk7XFxuK1xcbiBcXHRcXHR2YWx1ZSA9IHJkMzJhKHd4LCBXWF9GVzJTV19NQk9YLCBpICsgb2Zmc2V0KTtcXG4gXFx0XFx0bGUzMl90b19jcHVzKFxcdTAwMjZ2YWx1ZSk7XFxuIFxcbi1cXHRcXHRtZW1jcHkoZGF0YSwgXFx1MDAyNnZhbHVlLCA0KTtcXG4tXFx0XFx0ZGF0YSArPSA0O1xcbitcXHRcXHRtZW1jcHkoZGF0YSwgXFx1MDAyNnZhbHVlLCBjb3B5X2xlbik7XFxuK1xcdFxcdGRhdGEgKz0gY29weV9sZW47XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTowOC4xNTQyNjY3MTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMzk1MzM2MTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAxMEdiRSAodHhnYmUpIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQgaW4gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIChldGh0b29sIGNhbGxiYWNrKSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFjZWY4OGQ1MjQzODg1MTc3NDJiNzkwZGFiOGI1MWRiOWYwNzhiYWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0NTowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jXG5pbmRleCBhZmZlYTFhMzY0ZWZkNC4uMjZkMGNmYzU4ZWUyY2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jXG5AQCAtOTYsMTEgKzk2LDEzIEBAIGludCB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYoc3RydWN0IHd4ICp3eCxcbiBcdGR3b3JkX2xlbiA9IHJvdW5kX3VwKGxlbmd0aCwgNCkgXHUwMDNlXHUwMDNlIDI7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkd29yZF9sZW47IGkrKykge1xuK1x0XHR1MzIgY29weV9sZW4gPSBtaW5fdCh1MzIsIDQsIGxlbmd0aCAtIGkgKiA0KTtcbitcbiBcdFx0dmFsdWUgPSByZDMyYSh3eCwgV1hfRlcyU1dfTUJPWCwgaSArIG9mZnNldCk7XG4gXHRcdGxlMzJfdG9fY3B1cyhcdTAwMjZ2YWx1ZSk7XG4gXG4tXHRcdG1lbWNweShkYXRhLCBcdTAwMjZ2YWx1ZSwgNCk7XG4tXHRcdGRhdGEgKz0gNDtcbitcdFx0bWVtY3B5KGRhdGEsIFx1MDAyNnZhbHVlLCBjb3B5X2xlbik7XG4rXHRcdGRhdGEgKz0gY29weV9sZW47XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjA4LjE1NDI2ODYzNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NzM0ODA5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE5ldHdvcmsgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWZgIHdpdGhpbiB0aGUgYHR4Z2JlX2FtbC5jYCBkcml2ZXIuIFNlZW1zIGxpa2UgaXQncyBhIGZpeCBmb3IgYSBidWZmZXIgb3ZlcmZsb3csIHdoaWNoIGlzIGFsd2F5cyBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0bywgZXNwZWNpYWxseSBpbiBuZXR3b3JrIGRyaXZlcnMuIEl0IGxvb2tzIGxpa2UgdGhlIGlzc3VlIHN0ZW1zIGZyb20gYW4gaW5jb3JyZWN0IGBjb3B5X2xlbmAgdmFsdWUgYmVpbmcgdXNlZCB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgRUVQUk9NIHRocm91Z2ggdGhlIGhvc3QgaW50ZXJmYWNlLCByYXRoZXIgdGhhbiBhbHdheXMgNCBieXRlcy4gVGhpcyBkcml2ZXIncyBzcGVjaWZpYyB0byB0aGUgV2FuZ3h1biAxMCBHaWdhYml0IEV0aGVybmV0IENvbnRyb2xsZXIsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHJlYWNoYWJpbGl0eS5cblxuRmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgZXZlbiBiZSB0cmlnZ2VyZWQgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nPyBXYW5neHVuIDEwR2JFIGlzIGEgUENJIGRldmljZSwgc28gSSdtIGltbWVkaWF0ZWx5IHNrZXB0aWNhbCBhYm91dCBkaXJlY3QgUUVNVSBlbXVsYXRpb24uIFByb2JhYmx5IG5vdC4gQnV0IHRoZW4gSSdtIHRoaW5raW5nLCBjb3VsZCB0aGlzIGJlIHJlYWNoYWJsZSB2aWEgc29tZSBtb3JlIGdlbmVyaWMgUENJIGZ1enppbmcgYXR0ZW1wdHM/IExldCdzIG5vdCBkaXNtaXNzIHRoYXQgb3B0aW9uIHJpZ2h0IGF3YXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbidzIHVzYWdlIGJldHRlci4gVGltZSB0byBkaWcgaW50byB3aGVyZSBgdHhnYmVfcmVhZF9lZXByb21faG9zdGlmYCBpcyBhY3R1YWxseSBjYWxsZWQuIEdvdHRhIHNlZSBob3cgbWFueSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIHRoZXJlIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2MCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjE0LjAyNzc1MjAwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ1MTA1MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHhnYmVfcmVhZF9lZXByb21faG9zdGlmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NjA9aW50IHR4Z2JlX3Rlc3RfaG9zdGlmKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NzY6aW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNzctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5oPTk9aW50IHR4Z2JlX3Rlc3RfaG9zdGlmKHN0cnVjdCB3eCAqd3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmg6MTA6aW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmgtMTEtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYz01Mjk9dHhnYmVfZ2V0X21vZHVsZV9lZXByb21fYnlfcGFnZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9ldGh0b29sLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jOjU0NjpcXHRlcnIgPSB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYod3gsIFxcdTAwMjZidWZmZXIsIHBhZ2VfZGF0YS1cXHUwMDNlbGVuZ3RoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jLTU0Ny1cXHRcXHRcXHRcXHQgICAgICAgcGFnZV9kYXRhLVxcdTAwM2VkYXRhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDU6MTQuMjcyMjY5OTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjY1ODU3NzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgZXRodG9vbCBDYWxsYmFjazogQ2FuIFdlIFRlc3QgV2l0aG91dCBSZWFsIEhhcmR3YXJlPyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2VgIGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBmcm9tIGB0eGdiZV9ldGh0b29sLmNgLCBzbyBpdCdzIGFuIGV0aHRvb2wgY2FsbGJhY2suIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzLCBjYW4gSSByZWFjaCB0aGlzIGNvZGUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gSWYgdGhlIGRyaXZlciBpcyBsb2FkZWQsIHRoZW4gdGhlb3JldGljYWxseSwgaWYgSSBjYW4gaW5zdGFudGlhdGUgdGhlIGBuZXRfZGV2aWNlYCwgSSBtaWdodCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBjYWxsYmFjay4gQnV0IG9mIGNvdXJzZSwgdGhlIGRyaXZlciBpcyBQQ0ksIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHRoZSBzdGlja2luZyBwb2ludC4gVGhlIGRyaXZlciB3b24ndCBwcm9iZSB3aXRob3V0IHRoZSBoYXJkd2FyZS5cblxuVGhlbiBJIHJlY2FsbGVkIHRoYXQgc3l6a2FsbGVyIGhhcyB2UENJIGFuZC9vciBjYW4gaW5qZWN0IFBDSSBjb25maWcgc3BhY2UgZm9yIGZ1enppbmcuIEkgY2FuICptYXliZSogdXNlIHRoYXQuLi4gc3l6a2FsbGVyIGhhcyBhIHByaW1pdGl2ZSBsaWtlIGBzeXpfcGNpX2RldmljZWAsIHJpZ2h0PyBCdXQgZXZlbiB3aXRoIHRoYXQsIGl0J3MgbmV2ZXIgc2ltcGxlLiBQQ0kgZHJpdmVycyBhbG1vc3QgYWx3YXlzIHJlcXVpcmUgc3BlY2lmaWMgdmVuZG9yL2RldmljZSBJRHMgYW5kIG1hcHBlZCBNTUlPIHJlZ2lvbnMgdG8gZXZlbiBzdGFydCBwcm9iaW5nLiBJdCdzIGEgYml0IG9mIGEgcGFpbiB0byBzZXQgdGhhdCB1cC4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhhdCwgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNjYW4gZm9yIGEgV2FuZ3h1biBzcGVjaWZpYyBjb25maWcgaW4gdGhlIGRyaXZlci4gTWF5YmUsIGp1c3QgbWF5YmUsIHRoZXJlJ3Mgc29tZSBzcGVjaWFsIGhhbmRsaW5nIHRoYXQgbGV0cyBtZSBnZXQgZnVydGhlciB3aXRob3V0IGhhdmluZyB0byBjcmVhdGUgYSB3aG9sZSBuZXcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDU6MTkuNTM4MTI5OTE2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjYzOTI5NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRYR0JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NToxOS43ODQ3Nzg3NTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg0NTcyOTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBDaGVjayBpbiB0aGUgV2FuZ3h1biBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cywgYW5kIGZvbGxvd2luZyBiZXN0IHByYWN0aWNlcy4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgY2hlY2suIE15IGludHVpdGlvbiBzYXlzIHRoZXJlIG1pZ2h0IGJlIHNvbWUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaW4gdGhlIGBLY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9gIGRpcmVjdG9yeS4gSSdsbCBuZWVkIHRvIG9wZW4gdGhhdCBmaWxlIGFuZCBxdWlja2x5IHNjYW4gaXQuIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IHBlcnRhaW4gdG8gbXkgY3VycmVudCBwcm9ibGVtIHNwYWNlLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gRG9lcyB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGhhbmRsZSBteSB1c2UgY2FzZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGZsYWdzIG9yIG9wdGlvbnMgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUsIHNvIEkgY2FuIHRlc3QgdGhpcyB0aGVvcnk/IEhvcGVmdWxseSwgaXQgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBJIGNhbiBwcm9jZWVkLiBJZiB0aGVyZSBhcmUgbmV3IHNldHRpbmdzIHRvIGNvbnNpZGVyLCBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSB0aGVtIGluIGRlcHRoLCBidXQgbGV0J3MgdGFrZSB0aGlzIG9uZSBzdGVwIGF0IGEgdGltZS4gVGhpcyBpcyBhIGNydWNpYWwgZmlyc3Qgc3RlcDsgYmV0dGVyIHRvIGVuc3VyZSBJJ20gcmVzcGVjdGluZyB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NToyMy40NjkzNTQwNjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNTg2NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUWEdCRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Mjg9Y29uZmlnIE5HQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6NDM6Y29uZmlnIFRYR0JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY4LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjIzLjYwMjk0ODQ4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzNjQyMDQxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQgZm9yIFdhbmd4dW4gMTBHYkUgRHJpdmVyKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBXYW5neHVuIDEwR2JFIGRyaXZlciBiZSBlZmZlY3RpdmVseSBmdXp6ZWQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciBzeXprYWxsZXIncyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkga25vdyBzeXprYWxsZXIgKmhhcyogc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0IOKAkyBJIHJlY2FsbCBzZWVpbmcgaXQgd2l0aCBkcml2ZXJzIGxpa2UgZTEwMDBlIOKAkyBidXQgaXQncyB0eXBpY2FsbHkgbGltaXRlZCBpbiBpdHMgc2NvcGUuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGluc3RydWN0cyBtZSB0byByZXR1cm4gXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBpZiB0aGUgcGF0Y2gncyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0J3MgdGhlIGNydXggb2YgaXQuXG5cblRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIHNwZWNpZmljIDEwR2JFIGRldmljZSwgV2FuZ3h1biwgaXMgZW11bGF0ZWQgYnkgUUVNVS4gTm9wZSwgaXQncyBub3QuIEZ1cnRoZXIsIGNhbiBpdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBpbiB0aGUgd2F5IHRoYXQgc3l6a2FsbGVyIGhhbmRsZXMgVVNCIHdpdGggYHZoY2lgLCB3aWZpIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgQ0FOIHdpdGggYHZjYW5gLCBvciBpbnB1dCB3aXRoIGB1aW5wdXRgPyBObywgaXQncyBub3QgbGlrZSB0aGF0LiBTeXprYWxsZXIncyBhcHByb2FjaCBmb3IgUENJIGludm9sdmVzIGEgKnZpcnR1YWwqIFBDSSBkZXZpY2UuIElzIGl0IHZpYSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgIG9yIGBzeXpfa3ZtX3NldHVwX2NwdWAgb3IgcGVyaGFwcyBhIGdlbmV0bGluayBzZXR1cCB3aXRoIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgPyBObywgbm8sIGFuZCBuby4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBlZmZlY3RpdmUsIGdlbmVyaWMgUENJIGVtdWxhdG9yIHRoYXQgY291bGQgdHJpY2sgYSBkcml2ZXIgbGlrZSB0aGlzIGludG8gdGhpbmtpbmcgdGhlIGRldmljZSBpcyBwcmVzZW50IGFuZCBmdW5jdGlvbmFsIGVub3VnaCB0byByZWFjaCB0aG9zZSBldGh0b29sIGNhbGxiYWNrcywgd2hpY2ggaXMgYSBrZXkgcGFydCBvZiBob3cgaXQncyB0ZXN0ZWQ/IE5vdCB1bmxlc3MgaXQncyBleHBsaWNpdGx5IHN1cHBvcnRlZCBieSBhIFFFTVUgZGV2aWNlIG9yIGEgc3BlY2lmaWMga2VybmVsIG1vZHVsZSBsaWtlIGB2ZmlvYD8gQnV0IEkgbmVlZCB0byBiZSBjYXJlZnVsOyB2ZmlvIGlzIGZvciB1c2Vyc3BhY2UuXG5cbldhaXQsIGhhcyBzeXprYWxsZXIgYWRkZWQgYW55dGhpbmcgcmVjZW50bHkgYXJvdW5kIFBDSSBmdXp6aW5nIGludm9sdmluZyBgdmZpb2Agb3Igc2ltaWxhcj8gTm8sIEkgZG9uJ3QgdGhpbmsgc28uIFRoZSBleGlzdGluZyBtZWNoYW5pc20gaXMgc3RpbGwgYHN5el9wY2lfZGV2aWNlYCwgd2hpY2ggaGFzIGl0cyBsaW1pdGF0aW9ucy4gU28sIGNhbiBzeXprYWxsZXIgZnV6eiBQQ0kgZHJpdmVycz8gWWVzLCBidXQgb25seSBpZiB0aGUgZGV2aWNlIGlzIGxvYWRlZCBhbmQgcHJlc2VudC4gVGhlIGNyaXRpY2FsIGlzc3VlIGhlcmUgaXMgdGhhdCB3aXRob3V0IHByb3BlciBRRU1VIGVtdWxhdGlvbiBvZiB0aGlzIFdhbmd4dW4gZGV2aWNlLCB0aGUgZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiBpcyBuZXZlciBnb2luZyB0byBzdWNjZWVkLiBJZiBgcHJvYmVgIGZhaWxzLCB0aGUgYG5ldF9kZXZpY2VgIHdvbid0IGJlIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIGVzc2VudGlhbCB0byByZWFjaCBldGh0b29sIGNhbGxiYWNrcy4gVGh1cywgbXkgbmV4dCBzdGVwIGlzIHRvIHRlc3QgdGhlIGFiaWxpdHkgb2YgYHR4Z2JlYCB0byBiZSBwcm9iZWQgd2l0aG91dCBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkxOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTozMi45NjcxNTUyMjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjU3NjA5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0eGdiZV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02NTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjcwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjY3MTogKiB0eGdiZV9wcm9iZSAtIERldmljZSBJbml0aWFsaXphdGlvbiBSb3V0aW5lXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjcyLSAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjc2LSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6Njc3OiAqIHR4Z2JlX3Byb2JlIGluaXRpYWxpemVzIGFuIGFkYXB0ZXIgaWRlbnRpZmllZCBieSBhIHBjaV9kZXYgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY3OC0gKiBUaGUgT1MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyaW5nIG9mIHRoZSB3eCBwcml2YXRlIHN0cnVjdHVyZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY4MC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NjgxOnN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjgyLVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX2Fsd2F5c191bnVzZWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTk2NT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdHhnYmVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtOTY3LVxcdC5pZF90YWJsZSA9IHR4Z2JlX3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6OTY4OlxcdC5wcm9iZSAgICA9IHR4Z2JlX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTk2OS1cXHQucmVtb3ZlICAgPSB0eGdiZV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjMzLjExMzczODI2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMwMTk1NDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBUYXJnZXRpbmcgYHR4Z2JlX3Byb2JlYCoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIGltcHVsc2UgaGVyZSBpcyB0byBkZWx2ZSBpbnRvIGB0eGdiZV9wcm9iZWAuIFRoYXQgbGlrZWx5IG1lYW5zIEknbSB0cm91Ymxlc2hvb3RpbmcsIGRlYnVnZ2luZywgb3IgYW5hbHl6aW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBJbnRlbCBYNTUwL1g1NjAgMTAgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIuIFRoZSBuYW1lIGl0c2VsZiBzY3JlYW1zIG91dCB0aGF0IHRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBwcm9iaW5nIG9mIHRoZSBoYXJkd2FyZSwgaGFwcGVucy4gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gdGhhdCBmdW5jdGlvbiBhcyBhIGtleSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRldmljZSBpcyBmb3VuZCBhbmQgaW5pdGlhbGl6ZWQsIG9yIHdoYXQgY291bGQgYmUgZ29pbmcgd3JvbmcgZHVyaW5nIHRoYXQgcHJvY2Vzcy4gRGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0IEkgYW0gd29ya2luZyB3aXRoaW4sIGxpa2UgYSBrZXJuZWwgb3IgZHJpdmVyIHVwZGF0ZSwgdGhlIHByb2JlIGlzIG9mdGVuIGEgZ29vZCBwbGFjZSB0byBzdGFydCBpbiBkZWJ1Z2dpbmcgbmV0d29yayBlcnJvcnMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjb250ZXh0IEknbSB3b3JraW5nIHdpdGggdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTozNi40NDM5MzU5MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY4MSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2ODE6XFx0c3RhdGljIGludCB0eGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gNjgyOlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX2Fsd2F5c191bnVzZWQgKmVudClcXG4gNjgzOlxcdHtcXG4gNjg0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuIDY4NTpcXHRcXHRpbnQgZXJyLCBleHBlY3RlZF9ndHM7XFxuIDY4NjpcXHRcXHRzdHJ1Y3Qgd3ggKnd4ID0gTlVMTDtcXG4gNjg3OlxcdFxcdHN0cnVjdCB0eGdiZSAqdHhnYmU7XFxuIDY4ODpcXHRcXG4gNjg5OlxcdFxcdHUxNiBlZXByb21fdmVyaCA9IDAsIGVlcHJvbV92ZXJsID0gMCwgb2Zmc2V0ID0gMDtcXG4gNjkwOlxcdFxcdHUxNiBlZXByb21fY2ZnX2Jsa2ggPSAwLCBlZXByb21fY2ZnX2Jsa2wgPSAwO1xcbiA2OTE6XFx0XFx0dTE2IGJ1aWxkID0gMCwgbWFqb3IgPSAwLCBwYXRjaCA9IDA7XFxuIDY5MjpcXHRcXHR1MzIgZXRyYWNrX2lkID0gMDtcXG4gNjkzOlxcdFxcbiA2OTQ6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9kZXZpY2VfbWVtKHBkZXYpO1xcbiA2OTU6XFx0XFx0aWYgKGVycilcXG4gNjk2OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDY5NzpcXHRcXG4gNjk4OlxcdFxcdGVyciA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDY0KSk7XFxuIDY5OTpcXHRcXHRpZiAoZXJyKSB7XFxuIDcwMDpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDcwMTpcXHRcXHRcXHRcXHRcXFwiTm8gdXNhYmxlIERNQSBjb25maWd1cmF0aW9uLCBhYm9ydGluZ1xcXFxuXFxcIik7XFxuIDcwMjpcXHRcXHRcXHRnb3RvIGVycl9wY2lfZGlzYWJsZV9kZXY7XFxuIDcwMzpcXHRcXHR9XFxuIDcwNDpcXHRcXG4gNzA1OlxcdFxcdGVyciA9IHBjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMocGRldixcXG4gNzA2OlxcdFxcdFxcdFxcdFxcdFxcdCAgIHBjaV9zZWxlY3RfYmFycyhwZGV2LCBJT1JFU09VUkNFX01FTSksXFxuIDcwNzpcXHRcXHRcXHRcXHRcXHRcXHQgICB0eGdiZV9kcml2ZXJfbmFtZSk7XFxuIDcwODpcXHRcXHRpZiAoZXJyKSB7XFxuIDcwOTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDcxMDpcXHRcXHRcXHRcXHRcXFwicGNpX3JlcXVlc3Rfc2VsZWN0ZWRfcmVnaW9ucyBmYWlsZWQgMHgleFxcXFxuXFxcIiwgZXJyKTtcXG4gNzExOlxcdFxcdFxcdGdvdG8gZXJyX3BjaV9kaXNhYmxlX2RldjtcXG4gNzEyOlxcdFxcdH1cXG4gNzEzOlxcdFxcbiA3MTQ6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDcxNTpcXHRcXG4gNzE2OlxcdFxcdG5ldGRldiA9IGRldm1fYWxsb2NfZXRoZXJkZXZfbXFzKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDcxNzpcXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCB3eCksXFxuIDcxODpcXHRcXHRcXHRcXHRcXHRcXHQgVFhHQkVfTUFYX1RYX1FVRVVFUyxcXG4gNzE5OlxcdFxcdFxcdFxcdFxcdFxcdCBUWEdCRV9NQVhfUlhfUVVFVUVTKTtcXG4gNzIwOlxcdFxcdGlmICghbmV0ZGV2KSB7XFxuIDcyMTpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiA3MjI6XFx0XFx0XFx0Z290byBlcnJfcGNpX3JlbGVhc2VfcmVnaW9ucztcXG4gNzIzOlxcdFxcdH1cXG4gNzI0OlxcdFxcbiA3MjU6XFx0XFx0U0VUX05FVERFVl9ERVYobmV0ZGV2LCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gNzI2OlxcdFxcbiA3Mjc6XFx0XFx0d3ggPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbiA3Mjg6XFx0XFx0d3gtXFx1MDAzZW5ldGRldiA9IG5ldGRldjtcXG4gNzI5OlxcdFxcdHd4LVxcdTAwM2VwZGV2ID0gcGRldjtcXG4gNzMwOlxcdFxcbiA3MzE6XFx0XFx0d3gtXFx1MDAzZW1zZ19lbmFibGUgPSAoMSBcXHUwMDNjXFx1MDAzYyBERUZBVUxUX0RFQlVHX0xFVkVMX1NISUZUKSAtIDE7XFxuIDczMjpcXHRcXG4gNzMzOlxcdFxcdHd4LVxcdTAwM2Vod19hZGRyID0gZGV2bV9pb3JlbWFwKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDczNDpcXHRcXHRcXHRcXHRcXHQgICBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMCksXFxuIDczNTpcXHRcXHRcXHRcXHRcXHQgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTtcXG4gNzM2OlxcdFxcdGlmICghd3gtXFx1MDAzZWh3X2FkZHIpIHtcXG4gNzM3OlxcdFxcdFxcdGVyciA9IC1FSU87XFxuIDczODpcXHRcXHRcXHRnb3RvIGVycl9wY2lfcmVsZWFzZV9yZWdpb25zO1xcbiA3Mzk6XFx0XFx0fVxcbiA3NDA6XFx0XFxuIDc0MTpcXHRcXHQvKiBUaGUgc2FwcGhpcmUgc3VwcG9ydHMgdXAgdG8gNjMgVkZzIHBlciBwZiwgYnV0IHBoeXNpY2FsXFxuIDc0MjpcXHRcXHQgKiBmdW5jdGlvbiBhbHNvIG5lZWQgb25lIHBvb2wgZm9yIGJhc2ljIG5ldHdvcmtpbmcuXFxuIDc0MzpcXHRcXHQgKi9cXG4gNzQ0OlxcdFxcdHBjaV9zcmlvdl9zZXRfdG90YWx2ZnMocGRldiwgVFhHQkVfTUFYX1ZGU19EUlZfTElNSVQpO1xcbiA3NDU6XFx0XFx0d3gtXFx1MDAzZWRyaXZlcl9uYW1lID0gdHhnYmVfZHJpdmVyX25hbWU7XFxuIDc0NjpcXHRcXHR0eGdiZV9zZXRfZXRodG9vbF9vcHMobmV0ZGV2KTtcXG4gNzQ3OlxcdFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xcbiA3NDg6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xcbiA3NDk6XFx0XFxuIDc1MDpcXHRcXHQvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cXG4gNzUxOlxcdFxcdGVyciA9IHR4Z2JlX3N3X2luaXQod3gpO1xcbiA3NTI6XFx0XFx0aWYgKGVycilcXG4gNzUzOlxcdFxcdFxcdGdvdG8gZXJyX3BjaV9yZWxlYXNlX3JlZ2lvbnM7XFxuIDc1NDpcXHRcXG4gNzU1OlxcdFxcdC8qIGNoZWNrIGlmIGZsYXNoIGxvYWQgaXMgZG9uZSBhZnRlciBodyBwb3dlciB1cCAqL1xcbiA3NTY6XFx0XFx0ZXJyID0gd3hfY2hlY2tfZmxhc2hfbG9hZCh3eCwgVFhHQkVfU1BJX0lMRFJfU1RBVFVTX1BFUlNUKTtcXG4gNzU3OlxcdFxcdGlmIChlcnIpXFxuIDc1ODpcXHRcXHRcXHRnb3RvIGVycl9mcmVlX21hY190YWJsZTtcXG4gNzU5OlxcdFxcdGVyciA9IHd4X2NoZWNrX2ZsYXNoX2xvYWQod3gsIFRYR0JFX1NQSV9JTERSX1NUQVRVU19QV1JSU1QpO1xcbiA3NjA6XFx0XFx0aWYgKGVycilcXG4gNzYxOlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfbWFjX3RhYmxlO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRlcnIgPSB3eF9tbmdfcHJlc2VudCh3eCk7XFxuIDc2NDpcXHRcXHRpZiAoZXJyKSB7XFxuIDc2NTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJNYW5hZ2VtZW50IGNhcGFiaWxpdHkgaXMgbm90IHByZXNlbnRcXFxcblxcXCIpO1xcbiA3NjY6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9tYWNfdGFibGU7XFxuIDc2NzpcXHRcXHR9XFxuIDc2ODpcXHRcXG4gNzY5OlxcdFxcdGVyciA9IHR4Z2JlX3Jlc2V0X2h3KHd4KTtcXG4gNzcwOlxcdFxcdGlmIChlcnIpIHtcXG4gNzcxOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkhXIEluaXQgZmFpbGVkOiAlZFxcXFxuXFxcIiwgZXJyKTtcXG4gNzcyOlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfbWFjX3RhYmxlO1xcbiA3NzM6XFx0XFx0fVxcbiA3NzQ6XFx0XFxuIDc3NTpcXHRcXHRuZXRkZXYtXFx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8XFxuIDc3NjpcXHRcXHRcXHRcXHQgICBORVRJRl9GX1RTTyB8XFxuIDc3NzpcXHRcXHRcXHRcXHQgICBORVRJRl9GX1RTTzYgfFxcbiA3Nzg6XFx0XFx0XFx0XFx0ICAgTkVUSUZfRl9SWEhBU0ggfFxcbiA3Nzk6XFx0XFx0XFx0XFx0ICAgTkVUSUZfRl9SWENTVU0gfFxcbiA3ODA6XFx0XFx0XFx0XFx0ICAgTkVUSUZfRl9IV19DU1VNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTozNi40NDQwOTQxMTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMxODYyMDA2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFdhbmd4dW4gMTBHYkUgRHJpdmVyIGluIGEgRnV6emluZyBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyB0YXJnZXRzIGEgV2FuZ3h1biBUWEdCRSBkcml2ZXIsIGFuZCB0aGF0IGludm9sdmVzIE1NSU8gcmVhZHMgYW5kIHdyaXRlcyBkdXJpbmcgYSBwcm9iZSBmdW5jdGlvbiAoYHR4Z2JlX3Byb2JlYCkuIElmIHRoaXMgZHJpdmVyIGlzbid0IGVtdWxhdGVkLCB0aG9zZSBNTUlPIG9wZXJhdGlvbnMgd2lsbCBsaWtlbHkgZmFpbCBvciByZXR1cm4gYWxsIDFzLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50LlxuXG5NeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyBzeXprYWxsZXIgd29uJ3QgYmUgYWJsZSB0byByZWFjaCB0aGlzLiBXYWl0LCBkb2VzIHN5emthbGxlciBoYXZlIGEgYHN5el9wY2lfZGV2aWNlYD8gSSBkb24ndCB0aGluayBzby4gSXQgcmVsaWVzIG9uIFFFTVUsIHJpZ2h0PyBBbmQgUUVNVSBkb2Vzbid0IGhhdmUgYSBXYW5neHVuIGRldmljZS4gSXQncyBlMTAwMCwgdmlydGlvLCBhbmQgc28gb24uIE5vLCBubyBgc3l6X3BjaV9kZXZpY2VgLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBgc3l6X2t2bV9zZXR1cF9jcHVgLCBgc3l6X3VzYl9jb25uZWN0YCwgZXRjLiwgYnV0IEkgYW0gYWxtb3N0IGNlcnRhaW4gaXQgZG9lc24ndCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSdsbCBjaGVjayB0aGUgZG9jcyBvciwgaWYgbm90LCBJJ2xsIG9wZXJhdGUgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBhIFBDSSBkcml2ZXIgZm9yIGEgbm9uLXZpcnR1YWxpemVkIGRldmljZSBpcyB1bnJlYWNoYWJsZS5cblxuQnV0IHdhaXQgYSBtaW51dGUsIHRoZSBwcm9tcHQgKmRvZXMqIHNheSBpdCdzIGZvciBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTbywgaXQgKmlzKiBhbiBpc3N1ZS4gU28gaXMgdGhpcyBvbmU/IEl0J3MgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLiBObyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYG5ldGRldnNpbWAgZm9yIHRoaXMsIGFuZCB0aGUgcGF0Y2ggaXMgaW4gYSB2ZXJ5IHNwZWNpZmljIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jYC4gVGhlIGZhY3QgdGhhdCBpdCBjb21lcyBmcm9tIGEgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1lYW4gaXQgZm91bmQgaXQhIEl0IGlzIGp1c3QgdGhlIGNvbW1pdCB0aGF0IEkgdXNlIHRvIGFwcGx5IHRoZSBwYXRjaC4gSXQgbWVhbnMgdGhhdCBzeXprYWxsZXIgaXMgYXNrZWQgdG8gdGVzdCBpdCBhbmQgdGhpcyBpcyB0aGUgY29tbWl0LlxuXG5Pa2F5LCBsZXQgbWUgY29uZmlybS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHN5emthbGxlciBjYW4ndCB0ZXN0IHRoaXMuIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBiZWNhdXNlIGl0J3MgYSBwaHlzaWNhbCBQQ0kgZHJpdmVyIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24uIEkgc2hvdWxkIGFsc28gY2hlY2sgUUVNVSBhbmQgdGhlIGtlcm5lbCBmb3IgZW11bGF0aW9uLiBRRU1VIGRvZXMgbm90IHN1cHBvcnQgV2FuZ3h1bi5cblxuSSBhbSBjZXJ0YWluIHRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyIGFuZCB0aGUgcGF0Y2ggY2Fubm90IGJlIHJlYWNoZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0ODcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTo0OS42MzAyOTczM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2OTY1MTYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NjA9aW50IHR4Z2JlX3Rlc3RfaG9zdGlmKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NzY6aW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNzctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5oPTk9aW50IHR4Z2JlX3Rlc3RfaG9zdGlmKHN0cnVjdCB3eCAqd3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmg6MTA6aW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmgtMTEtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYz01Mjk9dHhnYmVfZ2V0X21vZHVsZV9lZXByb21fYnlfcGFnZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9ldGh0b29sLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jOjU0NjpcXHRlcnIgPSB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYod3gsIFxcdTAwMjZidWZmZXIsIHBhZ2VfZGF0YS1cXHUwMDNlbGVuZ3RoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jLTU0Ny1cXHRcXHRcXHRcXHQgICAgICAgcGFnZV9kYXRhLVxcdTAwM2VkYXRhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDU6NTMuOTk5OTU1NzhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU0OTYxMjQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIFZpcnR1YWwgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSd2ZSB0cmFjZWQgdGhpcyBjb2RlIHBhdGggYW5kIEkndmUgY29tZSB0byBhIHByZXR0eSBjbGVhciBjb25jbHVzaW9uLiBUaGlzIHNwZWNpZmljIGJpdCBvZiBjb2RlLCB0aGUgb25lIGJlaW5nIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2gsIGlzIG9ubHkgZXZlciByZWFjaGVkIHRocm91Z2ggdGhlIGB0eGdiZV9nZXRfbW9kdWxlX2VlcHJvbV9ieV9wYWdlYCBmdW5jdGlvbiB3aXRoaW4gYHR4Z2JlX2V0aHRvb2wuY2AuIEFuZCB0aGF0IGZ1bmN0aW9uLCBhcyBJIGNhbiBzZWUsIGlzIHN0cmljdGx5IGFuIGV0aHRvb2wgY2FsbGJhY2suIEV0aHRvb2wgY2FsbGJhY2tzLCBhcyB3ZSBrbm93LCBhcmUgb25seSBhY3RpdmUgaWYgdGhlIGFzc29jaWF0ZWQgYG5ldF9kZXZpY2VgIGhhcyBiZWVuIHJlZ2lzdGVyZWQuIFRoZSByZWdpc3RyYXRpb24gb2YgdGhpcyBgbmV0X2RldmljZWAgaGFwcGVucywgcHJlZGljdGFibHksIGluIGB0eGdiZV9wcm9iZWAuIE5vdywgYHR4Z2JlX3Byb2JlYCBpcywgaW4gdHVybiwgb25seSBjYWxsZWQgd2hlbiB0aGUgcmVsZXZhbnQgUENJIGRldmljZSBpcyAqYWN0dWFsbHkqIHByZXNlbnQgb24gdGhlIHN5c3RlbS5cblxuSGVyZSdzIHRoZSBwcm9ibGVtOiB0aGVyZSdzIG5vIFFFTVUgZW11bGF0aW9uIGZvciB0aGUgV2FuZ3h1biAxMEdiRSBuZXR3b3JrIGNhcmQsIG9yIGluZGVlZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgdGhlcmUncyBubyB3YXkgdGhpcyBQQ0kgZGV2aWNlIHdpbGwgYmUgcHJlc2VudCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXAuIEdpdmVuIHRoaXMsIGl0IGlzIHVucmVhY2hhYmxlIGluIGFueSBmdXp6aW5nIGVudmlyb25tZW50cyBJIGFtIGZhbWlsaWFyIHdpdGguXG5cblRoZXJlZm9yZSwgZnV6emluZyB0aGlzIGNvZGUgaXMgbm90IHBvc3NpYmxlLiBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUxOCwiT3V0cHV0VG9rZW5zIjoxMDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDY6MDEuNTQ5NTcwNzc5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gMTBHYkUgKHR4Z2JlKSBQQ0kgZHJpdmVyLiBUaGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgZm9yIGl0IGluIHRoZSBrZXJuZWwuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCAoZXRodG9vbCBjYWxsYmFjaykgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gMTBHYkUgKHR4Z2JlKSBQQ0kgZHJpdmVyLiBUaGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgZm9yIGl0IGluIHRoZSBrZXJuZWwuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCAoZXRodG9vbCBjYWxsYmFjaykgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow826v4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 11:15:27 +0000 UTC FinishedAt: 2026-07-13 11:46:03 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIDEwR2JFICh0eGdiZSkgUENJIGRyaXZlci4gVGhpcyBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGZvciBpdCBpbiB0aGUga2VybmVsLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggKGV0aHRvb2wgY2FsbGJhY2spIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxY2VmODhkNTI0Mzg4NTE3NzQyYjc5MGRhYjhiNTFkYjlmMDc4YmFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTE6NDU6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmNcbmluZGV4IGFmZmVhMWEzNjRlZmQ0Li4yNmQwY2ZjNThlZTJjZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmNcbkBAIC05NiwxMSAmIzQzOzk2LDEzIEBAIGludCB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYoc3RydWN0IHd4ICp3eCxcbiBcdGR3b3JkX2xlbiA9IHJvdW5kX3VwKGxlbmd0aCwgNCkgXHUwMDNlXHUwMDNlIDI7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkd29yZF9sZW47IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1MzIgY29weV9sZW4gPSBtaW5fdCh1MzIsIDQsIGxlbmd0aCAtIGkgKiA0KTtcbiYjNDM7XG4gXHRcdHZhbHVlID0gcmQzMmEod3gsIFdYX0ZXMlNXX01CT1gsIGkgJiM0Mzsgb2Zmc2V0KTtcbiBcdFx0bGUzMl90b19jcHVzKFx1MDAyNnZhbHVlKTtcbiBcbi1cdFx0bWVtY3B5KGRhdGEsIFx1MDAyNnZhbHVlLCA0KTtcbi1cdFx0ZGF0YSAmIzQzOz0gNDtcbiYjNDM7XHRcdG1lbWNweShkYXRhLCBcdTAwMjZ2YWx1ZSwgY29weV9sZW4pO1xuJiM0MztcdFx0ZGF0YSAmIzQzOz0gY29weV9sZW47XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAxMEdiRSAodHhnYmUpIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQgaW4gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIChldGh0b29sIGNhbGxiYWNrKSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxY2VmODhkNTI0Mzg4NTE3NzQyYjc5MGRhYjhiNTFkYjlmMDc4YmFkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMTE6NDU6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYwppbmRleCBhZmZlYTFhMzY0ZWZkNC4uMjZkMGNmYzU4ZWUyY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYwpAQCAtOTYsMTEgJiM0Mzs5NiwxMyBAQCBpbnQgdHhnYmVfcmVhZF9lZXByb21faG9zdGlmKHN0cnVjdCB3eCAqd3gsCiAJZHdvcmRfbGVuID0gcm91bmRfdXAobGVuZ3RoLCA0KSAmZ3Q7Jmd0OyAyOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGR3b3JkX2xlbjsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXUzMiBjb3B5X2xlbiA9IG1pbl90KHUzMiwgNCwgbGVuZ3RoIC0gaSAqIDQpOwomIzQzOwogCQl2YWx1ZSA9IHJkMzJhKHd4LCBXWF9GVzJTV19NQk9YLCBpICYjNDM7IG9mZnNldCk7CiAJCWxlMzJfdG9fY3B1cygmYW1wO3ZhbHVlKTsKIAotCQltZW1jcHkoZGF0YSwgJmFtcDt2YWx1ZSwgNCk7Ci0JCWRhdGEgJiM0Mzs9IDQ7CiYjNDM7CQltZW1jcHkoZGF0YSwgJmFtcDt2YWx1ZSwgY29weV9sZW4pOwomIzQzOwkJZGF0YSAmIzQzOz0gY29weV9sZW47CiAJfQogCiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE5ldHdvcmsgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWZgIHdpdGhpbiB0aGUgYHR4Z2JlX2FtbC5jYCBkcml2ZXIuIFNlZW1zIGxpa2UgaXQmIzM5O3MgYSBmaXggZm9yIGEgYnVmZmVyIG92ZXJmbG93LCB3aGljaCBpcyBhbHdheXMgc29tZXRoaW5nIHRvIHBheSBhdHRlbnRpb24gdG8sIGVzcGVjaWFsbHkgaW4gbmV0d29yayBkcml2ZXJzLiBJdCBsb29rcyBsaWtlIHRoZSBpc3N1ZSBzdGVtcyBmcm9tIGFuIGluY29ycmVjdCBgY29weV9sZW5gIHZhbHVlIGJlaW5nIHVzZWQgd2hlbiByZWFkaW5nIGZyb20gdGhlIEVFUFJPTSB0aHJvdWdoIHRoZSBob3N0IGludGVyZmFjZSwgcmF0aGVyIHRoYW4gYWx3YXlzIDQgYnl0ZXMuIFRoaXMgZHJpdmVyJiMzOTtzIHNwZWNpZmljIHRvIHRoZSBXYW5neHVuIDEwIEdpZ2FiaXQgRXRoZXJuZXQgQ29udHJvbGxlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgcmVhY2hhYmlsaXR5LgoKRmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgZXZlbiBiZSB0cmlnZ2VyZWQgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nPyBXYW5neHVuIDEwR2JFIGlzIGEgUENJIGRldmljZSwgc28gSSYjMzk7bSBpbW1lZGlhdGVseSBza2VwdGljYWwgYWJvdXQgZGlyZWN0IFFFTVUgZW11bGF0aW9uLiBQcm9iYWJseSBub3QuIEJ1dCB0aGVuIEkmIzM5O20gdGhpbmtpbmcsIGNvdWxkIHRoaXMgYmUgcmVhY2hhYmxlIHZpYSBzb21lIG1vcmUgZ2VuZXJpYyBQQ0kgZnV6emluZyBhdHRlbXB0cz8gTGV0JiMzOTtzIG5vdCBkaXNtaXNzIHRoYXQgb3B0aW9uIHJpZ2h0IGF3YXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiYjMzk7cyB1c2FnZSBiZXR0ZXIuIFRpbWUgdG8gZGlnIGludG8gd2hlcmUgYHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZmAgaXMgYWN0dWFsbHkgY2FsbGVkLiBHb3R0YSBzZWUgaG93IG1hbnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyB0aGVyZSBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHhnYmVfcmVhZF9lZXByb21faG9zdGlmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz02MD1pbnQgdHhnYmVfdGVzdF9ob3N0aWYoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo3NjppbnQgdHhnYmVfcmVhZF9lZXByb21faG9zdGlmKHN0cnVjdCB3eCAqd3gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc3LVx0XHRcdCAgICAgc3RydWN0IHR4Z2JlX2hpY19pMmNfcmVhZCAqYnVmZmVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmg9OT1pbnQgdHhnYmVfdGVzdF9ob3N0aWYoc3RydWN0IHd4ICp3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5oOjEwOmludCB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYoc3RydWN0IHd4ICp3eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmgtMTEtXHRcdFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9ldGh0b29sLmM9NTI5PXR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYy01NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYzo1NDY6XHRlcnIgPSB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYod3gsIFx1MDAyNmJ1ZmZlciwgcGFnZV9kYXRhLVx1MDAzZWxlbmd0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jLTU0Ny1cdFx0XHRcdCAgICAgICBwYWdlX2RhdGEtXHUwMDNlZGF0YSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxNQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGV0aHRvb2wgQ2FsbGJhY2s6IENhbiBXZSBUZXN0IFdpdGhvdXQgUmVhbCBIYXJkd2FyZT8qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2VgIGZ1bmN0aW9uLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgdHhnYmVfZXRodG9vbC5jYCwgc28gaXQmIzM5O3MgYW4gZXRodG9vbCBjYWxsYmFjay4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMsIGNhbiBJIHJlYWNoIHRoaXMgY29kZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50PyBJZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCwgdGhlbiB0aGVvcmV0aWNhbGx5LCBpZiBJIGNhbiBpbnN0YW50aWF0ZSB0aGUgYG5ldF9kZXZpY2VgLCBJIG1pZ2h0IGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIGNhbGxiYWNrLiBCdXQgb2YgY291cnNlLCB0aGUgZHJpdmVyIGlzIFBDSSwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgdGhlIHN0aWNraW5nIHBvaW50LiBUaGUgZHJpdmVyIHdvbiYjMzk7dCBwcm9iZSB3aXRob3V0IHRoZSBoYXJkd2FyZS4KClRoZW4gSSByZWNhbGxlZCB0aGF0IHN5emthbGxlciBoYXMgdlBDSSBhbmQvb3IgY2FuIGluamVjdCBQQ0kgY29uZmlnIHNwYWNlIGZvciBmdXp6aW5nLiBJIGNhbiAqbWF5YmUqIHVzZSB0aGF0Li4uIHN5emthbGxlciBoYXMgYSBwcmltaXRpdmUgbGlrZSBgc3l6X3BjaV9kZXZpY2VgLCByaWdodD8gQnV0IGV2ZW4gd2l0aCB0aGF0LCBpdCYjMzk7cyBuZXZlciBzaW1wbGUuIFBDSSBkcml2ZXJzIGFsbW9zdCBhbHdheXMgcmVxdWlyZSBzcGVjaWZpYyB2ZW5kb3IvZGV2aWNlIElEcyBhbmQgbWFwcGVkIE1NSU8gcmVnaW9ucyB0byBldmVuIHN0YXJ0IHByb2JpbmcuIEl0JiMzOTtzIGEgYml0IG9mIGEgcGFpbiB0byBzZXQgdGhhdCB1cC4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhhdCwgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBzY2FuIGZvciBhIFdhbmd4dW4gc3BlY2lmaWMgY29uZmlnIGluIHRoZSBkcml2ZXIuIE1heWJlLCBqdXN0IG1heWJlLCB0aGVyZSYjMzk7cyBzb21lIHNwZWNpYWwgaGFuZGxpbmcgdGhhdCBsZXRzIG1lIGdldCBmdXJ0aGVyIHdpdGhvdXQgaGF2aW5nIHRvIGNyZWF0ZSBhIHdob2xlIG5ldyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUWEdCRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgQ2hlY2sgaW4gdGhlIFdhbmd4dW4gRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cywgYW5kIGZvbGxvd2luZyBiZXN0IHByYWN0aWNlcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIGNoZWNrLiBNeSBpbnR1aXRpb24gc2F5cyB0aGVyZSBtaWdodCBiZSBzb21lIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vYCBkaXJlY3RvcnkuIEkmIzM5O2xsIG5lZWQgdG8gb3BlbiB0aGF0IGZpbGUgYW5kIHF1aWNrbHkgc2NhbiBpdC4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IHBlcnRhaW4gdG8gbXkgY3VycmVudCBwcm9ibGVtIHNwYWNlLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gRG9lcyB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGhhbmRsZSBteSB1c2UgY2FzZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGZsYWdzIG9yIG9wdGlvbnMgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUsIHNvIEkgY2FuIHRlc3QgdGhpcyB0aGVvcnk/IEhvcGVmdWxseSwgaXQgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBJIGNhbiBwcm9jZWVkLiBJZiB0aGVyZSBhcmUgbmV3IHNldHRpbmdzIHRvIGNvbnNpZGVyLCBJJiMzOTtsbCBuZWVkIHRvIGFuYWx5emUgdGhlbSBpbiBkZXB0aCwgYnV0IGxldCYjMzk7cyB0YWtlIHRoaXMgb25lIHN0ZXAgYXQgYSB0aW1lLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwOyBiZXR0ZXIgdG8gZW5zdXJlIEkmIzM5O20gcmVzcGVjdGluZyB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRYR0JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTI4PWNvbmZpZyBOR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjQzOmNvbmZpZyBUWEdCRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjgtXHR0cmlzdGF0ZSBcJiMzNDtXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50IGZvciBXYW5neHVuIDEwR2JFIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIFdhbmd4dW4gMTBHYkUgZHJpdmVyIGJlIGVmZmVjdGl2ZWx5IGZ1enplZD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkga25vdyBzeXprYWxsZXIgKmhhcyogc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0IOKAkyBJIHJlY2FsbCBzZWVpbmcgaXQgd2l0aCBkcml2ZXJzIGxpa2UgZTEwMDBlIOKAkyBidXQgaXQmIzM5O3MgdHlwaWNhbGx5IGxpbWl0ZWQgaW4gaXRzIHNjb3BlLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBpbnN0cnVjdHMgbWUgdG8gcmV0dXJuICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgdGhlIHBhdGNoJiMzOTtzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoYXQmIzM5O3MgdGhlIGNydXggb2YgaXQuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyAxMEdiRSBkZXZpY2UsIFdhbmd4dW4sIGlzIGVtdWxhdGVkIGJ5IFFFTVUuIE5vcGUsIGl0JiMzOTtzIG5vdC4gRnVydGhlciwgY2FuIGl0IGJlIHJlYWNoZWQgdmlhIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGluIHRoZSB3YXkgdGhhdCBzeXprYWxsZXIgaGFuZGxlcyBVU0Igd2l0aCBgdmhjaWAsIHdpZmkgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBDQU4gd2l0aCBgdmNhbmAsIG9yIGlucHV0IHdpdGggYHVpbnB1dGA/IE5vLCBpdCYjMzk7cyBub3QgbGlrZSB0aGF0LiBTeXprYWxsZXImIzM5O3MgYXBwcm9hY2ggZm9yIFBDSSBpbnZvbHZlcyBhICp2aXJ0dWFsKiBQQ0kgZGV2aWNlLiBJcyBpdCB2aWEgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlYCBvciBgc3l6X2t2bV9zZXR1cF9jcHVgIG9yIHBlcmhhcHMgYSBnZW5ldGxpbmsgc2V0dXAgd2l0aCBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYD8gTm8sIG5vLCBhbmQgbm8uIERvZXMgc3l6a2FsbGVyIGhhdmUgYW4gZWZmZWN0aXZlLCBnZW5lcmljIFBDSSBlbXVsYXRvciB0aGF0IGNvdWxkIHRyaWNrIGEgZHJpdmVyIGxpa2UgdGhpcyBpbnRvIHRoaW5raW5nIHRoZSBkZXZpY2UgaXMgcHJlc2VudCBhbmQgZnVuY3Rpb25hbCBlbm91Z2ggdG8gcmVhY2ggdGhvc2UgZXRodG9vbCBjYWxsYmFja3MsIHdoaWNoIGlzIGEga2V5IHBhcnQgb2YgaG93IGl0JiMzOTtzIHRlc3RlZD8gTm90IHVubGVzcyBpdCYjMzk7cyBleHBsaWNpdGx5IHN1cHBvcnRlZCBieSBhIFFFTVUgZGV2aWNlIG9yIGEgc3BlY2lmaWMga2VybmVsIG1vZHVsZSBsaWtlIGB2ZmlvYD8gQnV0IEkgbmVlZCB0byBiZSBjYXJlZnVsOyB2ZmlvIGlzIGZvciB1c2Vyc3BhY2UuCgpXYWl0LCBoYXMgc3l6a2FsbGVyIGFkZGVkIGFueXRoaW5nIHJlY2VudGx5IGFyb3VuZCBQQ0kgZnV6emluZyBpbnZvbHZpbmcgYHZmaW9gIG9yIHNpbWlsYXI/IE5vLCBJIGRvbiYjMzk7dCB0aGluayBzby4gVGhlIGV4aXN0aW5nIG1lY2hhbmlzbSBpcyBzdGlsbCBgc3l6X3BjaV9kZXZpY2VgLCB3aGljaCBoYXMgaXRzIGxpbWl0YXRpb25zLiBTbywgY2FuIHN5emthbGxlciBmdXp6IFBDSSBkcml2ZXJzPyBZZXMsIGJ1dCBvbmx5IGlmIHRoZSBkZXZpY2UgaXMgbG9hZGVkIGFuZCBwcmVzZW50LiBUaGUgY3JpdGljYWwgaXNzdWUgaGVyZSBpcyB0aGF0IHdpdGhvdXQgcHJvcGVyIFFFTVUgZW11bGF0aW9uIG9mIHRoaXMgV2FuZ3h1biBkZXZpY2UsIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiBpcyBuZXZlciBnb2luZyB0byBzdWNjZWVkLiBJZiBgcHJvYmVgIGZhaWxzLCB0aGUgYG5ldF9kZXZpY2VgIHdvbiYjMzk7dCBiZSByZWdpc3RlcmVkLCB3aGljaCBpcyBlc3NlbnRpYWwgdG8gcmVhY2ggZXRodG9vbCBjYWxsYmFja3MuIFRodXMsIG15IG5leHQgc3RlcCBpcyB0byB0ZXN0IHRoZSBhYmlsaXR5IG9mIGB0eGdiZWAgdG8gYmUgcHJvYmVkIHdpdGhvdXQgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4Z2JlX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdHhnYmVfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NzAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo2NzE6ICogdHhnYmVfcHJvYmUgLSBEZXZpY2UgSW5pdGlhbGl6YXRpb24gUm91dGluZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjcyLSAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY3Ni0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6Njc3OiAqIHR4Z2JlX3Byb2JlIGluaXRpYWxpemVzIGFuIGFkYXB0ZXIgaWRlbnRpZmllZCBieSBhIHBjaV9kZXYgc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjc4LSAqIFRoZSBPUyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJpbmcgb2YgdGhlIHd4IHByaXZhdGUgc3RydWN0dXJlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY4MC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo2ODE6c3RhdGljIGludCB0eGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY4Mi1cdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIF9fYWx3YXlzX3VudXNlZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTk2NT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdHhnYmVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTk2Ny1cdC5pZF90YWJsZSA9IHR4Z2JlX3BjaV90YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo5Njg6XHQucHJvYmUgICAgPSB0eGdiZV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTk2OS1cdC5yZW1vdmUgICA9IHR4Z2JlX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3NQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBUYXJnZXRpbmcgYHR4Z2JlX3Byb2JlYCoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBpbXB1bHNlIGhlcmUgaXMgdG8gZGVsdmUgaW50byBgdHhnYmVfcHJvYmVgLiBUaGF0IGxpa2VseSBtZWFucyBJJiMzOTttIHRyb3VibGVzaG9vdGluZywgZGVidWdnaW5nLCBvciBhbmFseXppbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEludGVsIFg1NTAvWDU2MCAxMCBHaWdhYml0IEV0aGVybmV0IGRyaXZlci4gVGhlIG5hbWUgaXRzZWxmIHNjcmVhbXMgb3V0IHRoYXQgdGhpcyBpcyB3aGVyZSB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIHByb2Jpbmcgb2YgdGhlIGhhcmR3YXJlLCBoYXBwZW5zLiBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGF0IGZ1bmN0aW9uIGFzIGEga2V5IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZGV2aWNlIGlzIGZvdW5kIGFuZCBpbml0aWFsaXplZCwgb3Igd2hhdCBjb3VsZCBiZSBnb2luZyB3cm9uZyBkdXJpbmcgdGhhdCBwcm9jZXNzLiBEZXBlbmRpbmcgb24gdGhlIGNvbnRleHQgSSBhbSB3b3JraW5nIHdpdGhpbiwgbGlrZSBhIGtlcm5lbCBvciBkcml2ZXIgdXBkYXRlLCB0aGUgcHJvYmUgaXMgb2Z0ZW4gYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGluIGRlYnVnZ2luZyBuZXR3b3JrIGVycm9ycy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjb250ZXh0IEkmIzM5O20gd29ya2luZyB3aXRoIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjgxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjgxOlx0c3RhdGljIGludCB0eGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiA2ODI6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIF9fYWx3YXlzX3VudXNlZCAqZW50KVxuIDY4MzpcdHtcbiA2ODQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gNjg1Olx0XHRpbnQgZXJyLCBleHBlY3RlZF9ndHM7XG4gNjg2Olx0XHRzdHJ1Y3Qgd3ggKnd4ID0gTlVMTDtcbiA2ODc6XHRcdHN0cnVjdCB0eGdiZSAqdHhnYmU7XG4gNjg4Olx0XG4gNjg5Olx0XHR1MTYgZWVwcm9tX3ZlcmggPSAwLCBlZXByb21fdmVybCA9IDAsIG9mZnNldCA9IDA7XG4gNjkwOlx0XHR1MTYgZWVwcm9tX2NmZ19ibGtoID0gMCwgZWVwcm9tX2NmZ19ibGtsID0gMDtcbiA2OTE6XHRcdHUxNiBidWlsZCA9IDAsIG1ham9yID0gMCwgcGF0Y2ggPSAwO1xuIDY5MjpcdFx0dTMyIGV0cmFja19pZCA9IDA7XG4gNjkzOlx0XG4gNjk0Olx0XHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldik7XG4gNjk1Olx0XHRpZiAoZXJyKVxuIDY5NjpcdFx0XHRyZXR1cm4gZXJyO1xuIDY5NzpcdFxuIDY5ODpcdFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDY0KSk7XG4gNjk5Olx0XHRpZiAoZXJyKSB7XG4gNzAwOlx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gNzAxOlx0XHRcdFx0XCYjMzQ7Tm8gdXNhYmxlIERNQSBjb25maWd1cmF0aW9uLCBhYm9ydGluZ1xcblwmIzM0Oyk7XG4gNzAyOlx0XHRcdGdvdG8gZXJyX3BjaV9kaXNhYmxlX2RldjtcbiA3MDM6XHRcdH1cbiA3MDQ6XHRcbiA3MDU6XHRcdGVyciA9IHBjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMocGRldixcbiA3MDY6XHRcdFx0XHRcdFx0ICAgcGNpX3NlbGVjdF9iYXJzKHBkZXYsIElPUkVTT1VSQ0VfTUVNKSxcbiA3MDc6XHRcdFx0XHRcdFx0ICAgdHhnYmVfZHJpdmVyX25hbWUpO1xuIDcwODpcdFx0aWYgKGVycikge1xuIDcwOTpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuIDcxMDpcdFx0XHRcdFwmIzM0O3BjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMgZmFpbGVkIDB4JXhcXG5cJiMzNDssIGVycik7XG4gNzExOlx0XHRcdGdvdG8gZXJyX3BjaV9kaXNhYmxlX2RldjtcbiA3MTI6XHRcdH1cbiA3MTM6XHRcbiA3MTQ6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDcxNTpcdFxuIDcxNjpcdFx0bmV0ZGV2ID0gZGV2bV9hbGxvY19ldGhlcmRldl9tcXMoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gNzE3Olx0XHRcdFx0XHRcdCBzaXplb2Yoc3RydWN0IHd4KSxcbiA3MTg6XHRcdFx0XHRcdFx0IFRYR0JFX01BWF9UWF9RVUVVRVMsXG4gNzE5Olx0XHRcdFx0XHRcdCBUWEdCRV9NQVhfUlhfUVVFVUVTKTtcbiA3MjA6XHRcdGlmICghbmV0ZGV2KSB7XG4gNzIxOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gNzIyOlx0XHRcdGdvdG8gZXJyX3BjaV9yZWxlYXNlX3JlZ2lvbnM7XG4gNzIzOlx0XHR9XG4gNzI0Olx0XG4gNzI1Olx0XHRTRVRfTkVUREVWX0RFVihuZXRkZXYsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA3MjY6XHRcbiA3Mjc6XHRcdHd4ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiA3Mjg6XHRcdHd4LVx1MDAzZW5ldGRldiA9IG5ldGRldjtcbiA3Mjk6XHRcdHd4LVx1MDAzZXBkZXYgPSBwZGV2O1xuIDczMDpcdFxuIDczMTpcdFx0d3gtXHUwMDNlbXNnX2VuYWJsZSA9ICgxIFx1MDAzY1x1MDAzYyBERUZBVUxUX0RFQlVHX0xFVkVMX1NISUZUKSAtIDE7XG4gNzMyOlx0XG4gNzMzOlx0XHR3eC1cdTAwM2Vod19hZGRyID0gZGV2bV9pb3JlbWFwKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuIDczNDpcdFx0XHRcdFx0ICAgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLFxuIDczNTpcdFx0XHRcdFx0ICAgcGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSk7XG4gNzM2Olx0XHRpZiAoIXd4LVx1MDAzZWh3X2FkZHIpIHtcbiA3Mzc6XHRcdFx0ZXJyID0gLUVJTztcbiA3Mzg6XHRcdFx0Z290byBlcnJfcGNpX3JlbGVhc2VfcmVnaW9ucztcbiA3Mzk6XHRcdH1cbiA3NDA6XHRcbiA3NDE6XHRcdC8qIFRoZSBzYXBwaGlyZSBzdXBwb3J0cyB1cCB0byA2MyBWRnMgcGVyIHBmLCBidXQgcGh5c2ljYWxcbiA3NDI6XHRcdCAqIGZ1bmN0aW9uIGFsc28gbmVlZCBvbmUgcG9vbCBmb3IgYmFzaWMgbmV0d29ya2luZy5cbiA3NDM6XHRcdCAqL1xuIDc0NDpcdFx0cGNpX3NyaW92X3NldF90b3RhbHZmcyhwZGV2LCBUWEdCRV9NQVhfVkZTX0RSVl9MSU1JVCk7XG4gNzQ1Olx0XHR3eC1cdTAwM2Vkcml2ZXJfbmFtZSA9IHR4Z2JlX2RyaXZlcl9uYW1lO1xuIDc0NjpcdFx0dHhnYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XG4gNzQ3Olx0XHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnR4Z2JlX25ldGRldl9vcHM7XG4gNzQ4Olx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xuIDc0OTpcdFxuIDc1MDpcdFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG4gNzUxOlx0XHRlcnIgPSB0eGdiZV9zd19pbml0KHd4KTtcbiA3NTI6XHRcdGlmIChlcnIpXG4gNzUzOlx0XHRcdGdvdG8gZXJyX3BjaV9yZWxlYXNlX3JlZ2lvbnM7XG4gNzU0Olx0XG4gNzU1Olx0XHQvKiBjaGVjayBpZiBmbGFzaCBsb2FkIGlzIGRvbmUgYWZ0ZXIgaHcgcG93ZXIgdXAgKi9cbiA3NTY6XHRcdGVyciA9IHd4X2NoZWNrX2ZsYXNoX2xvYWQod3gsIFRYR0JFX1NQSV9JTERSX1NUQVRVU19QRVJTVCk7XG4gNzU3Olx0XHRpZiAoZXJyKVxuIDc1ODpcdFx0XHRnb3RvIGVycl9mcmVlX21hY190YWJsZTtcbiA3NTk6XHRcdGVyciA9IHd4X2NoZWNrX2ZsYXNoX2xvYWQod3gsIFRYR0JFX1NQSV9JTERSX1NUQVRVU19QV1JSU1QpO1xuIDc2MDpcdFx0aWYgKGVycilcbiA3NjE6XHRcdFx0Z290byBlcnJfZnJlZV9tYWNfdGFibGU7XG4gNzYyOlx0XG4gNzYzOlx0XHRlcnIgPSB3eF9tbmdfcHJlc2VudCh3eCk7XG4gNzY0Olx0XHRpZiAoZXJyKSB7XG4gNzY1Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O01hbmFnZW1lbnQgY2FwYWJpbGl0eSBpcyBub3QgcHJlc2VudFxcblwmIzM0Oyk7XG4gNzY2Olx0XHRcdGdvdG8gZXJyX2ZyZWVfbWFjX3RhYmxlO1xuIDc2NzpcdFx0fVxuIDc2ODpcdFxuIDc2OTpcdFx0ZXJyID0gdHhnYmVfcmVzZXRfaHcod3gpO1xuIDc3MDpcdFx0aWYgKGVycikge1xuIDc3MTpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtIVyBJbml0IGZhaWxlZDogJWRcXG5cJiMzNDssIGVycik7XG4gNzcyOlx0XHRcdGdvdG8gZXJyX2ZyZWVfbWFjX3RhYmxlO1xuIDc3MzpcdFx0fVxuIDc3NDpcdFxuIDc3NTpcdFx0bmV0ZGV2LVx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8XG4gNzc2Olx0XHRcdFx0ICAgTkVUSUZfRl9UU08gfFxuIDc3NzpcdFx0XHRcdCAgIE5FVElGX0ZfVFNPNiB8XG4gNzc4Olx0XHRcdFx0ICAgTkVUSUZfRl9SWEhBU0ggfFxuIDc3OTpcdFx0XHRcdCAgIE5FVElGX0ZfUlhDU1VNIHxcbiA3ODA6XHRcdFx0XHQgICBORVRJRl9GX0hXX0NTVU07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0ODcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIFdhbmd4dW4gMTBHYkUgRHJpdmVyIGluIGEgRnV6emluZyBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIHRhcmdldHMgYSBXYW5neHVuIFRYR0JFIGRyaXZlciwgYW5kIHRoYXQgaW52b2x2ZXMgTU1JTyByZWFkcyBhbmQgd3JpdGVzIGR1cmluZyBhIHByb2JlIGZ1bmN0aW9uIChgdHhnYmVfcHJvYmVgKS4gSWYgdGhpcyBkcml2ZXIgaXNuJiMzOTt0IGVtdWxhdGVkLCB0aG9zZSBNTUlPIG9wZXJhdGlvbnMgd2lsbCBsaWtlbHkgZmFpbCBvciByZXR1cm4gYWxsIDFzLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50LgoKTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgc3l6a2FsbGVyIHdvbiYjMzk7dCBiZSBhYmxlIHRvIHJlYWNoIHRoaXMuIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VgPyBJIGRvbiYjMzk7dCB0aGluayBzby4gSXQgcmVsaWVzIG9uIFFFTVUsIHJpZ2h0PyBBbmQgUUVNVSBkb2VzbiYjMzk7dCBoYXZlIGEgV2FuZ3h1biBkZXZpY2UuIEl0JiMzOTtzIGUxMDAwLCB2aXJ0aW8sIGFuZCBzbyBvbi4gTm8sIG5vIGBzeXpfcGNpX2RldmljZWAuIEkga25vdyBzeXprYWxsZXIgaGFzIGBzeXpfa3ZtX3NldHVwX2NwdWAsIGBzeXpfdXNiX2Nvbm5lY3RgLCBldGMuLCBidXQgSSBhbSBhbG1vc3QgY2VydGFpbiBpdCBkb2VzbiYjMzk7dCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bGwgY2hlY2sgdGhlIGRvY3Mgb3IsIGlmIG5vdCwgSSYjMzk7bGwgb3BlcmF0ZSB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGEgUENJIGRyaXZlciBmb3IgYSBub24tdmlydHVhbGl6ZWQgZGV2aWNlIGlzIHVucmVhY2hhYmxlLgoKQnV0IHdhaXQgYSBtaW51dGUsIHRoZSBwcm9tcHQgKmRvZXMqIHNheSBpdCYjMzk7cyBmb3IgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU28sIGl0ICppcyogYW4gaXNzdWUuIFNvIGlzIHRoaXMgb25lPyBJdCYjMzk7cyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UuIE5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiB0aGUga2VybmVsIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBgbmV0ZGV2c2ltYCBmb3IgdGhpcywgYW5kIHRoZSBwYXRjaCBpcyBpbiBhIHZlcnkgc3BlY2lmaWMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmNgLiBUaGUgZmFjdCB0aGF0IGl0IGNvbWVzIGZyb20gYSAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7IGRvZXNuJiMzOTt0IG5lY2Vzc2FyaWx5IG1lYW4gaXQgZm91bmQgaXQhIEl0IGlzIGp1c3QgdGhlIGNvbW1pdCB0aGF0IEkgdXNlIHRvIGFwcGx5IHRoZSBwYXRjaC4gSXQgbWVhbnMgdGhhdCBzeXprYWxsZXIgaXMgYXNrZWQgdG8gdGVzdCBpdCBhbmQgdGhpcyBpcyB0aGUgY29tbWl0LgoKT2theSwgbGV0IG1lIGNvbmZpcm0uIE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIgY2FuJiMzOTt0IHRlc3QgdGhpcy4gSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGJlY2F1c2UgaXQmIzM5O3MgYSBwaHlzaWNhbCBQQ0kgZHJpdmVyIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24uIEkgc2hvdWxkIGFsc28gY2hlY2sgUUVNVSBhbmQgdGhlIGtlcm5lbCBmb3IgZW11bGF0aW9uLiBRRU1VIGRvZXMgbm90IHN1cHBvcnQgV2FuZ3h1bi4KCkkgYW0gY2VydGFpbiB0aGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlciBhbmQgdGhlIHBhdGNoIGNhbm5vdCBiZSByZWFjaGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz02MD1pbnQgdHhnYmVfdGVzdF9ob3N0aWYoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo3NjppbnQgdHhnYmVfcmVhZF9lZXByb21faG9zdGlmKHN0cnVjdCB3eCAqd3gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc3LVx0XHRcdCAgICAgc3RydWN0IHR4Z2JlX2hpY19pMmNfcmVhZCAqYnVmZmVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmg9OT1pbnQgdHhnYmVfdGVzdF9ob3N0aWYoc3RydWN0IHd4ICp3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5oOjEwOmludCB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYoc3RydWN0IHd4ICp3eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmgtMTEtXHRcdFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9ldGh0b29sLmM9NTI5PXR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYy01NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYzo1NDY6XHRlcnIgPSB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYod3gsIFx1MDAyNmJ1ZmZlciwgcGFnZV9kYXRhLVx1MDAzZWxlbmd0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jLTU0Ny1cdFx0XHRcdCAgICAgICBwYWdlX2RhdGEtXHUwMDNlZGF0YSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MTgKCQkJCQkJCW91dHB1dDogMTA5CgkJCQkJCQl0aG91Z2h0czogMjQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSYjMzk7dmUgdHJhY2VkIHRoaXMgY29kZSBwYXRoIGFuZCBJJiMzOTt2ZSBjb21lIHRvIGEgcHJldHR5IGNsZWFyIGNvbmNsdXNpb24uIFRoaXMgc3BlY2lmaWMgYml0IG9mIGNvZGUsIHRoZSBvbmUgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaCwgaXMgb25seSBldmVyIHJlYWNoZWQgdGhyb3VnaCB0aGUgYHR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2VgIGZ1bmN0aW9uIHdpdGhpbiBgdHhnYmVfZXRodG9vbC5jYC4gQW5kIHRoYXQgZnVuY3Rpb24sIGFzIEkgY2FuIHNlZSwgaXMgc3RyaWN0bHkgYW4gZXRodG9vbCBjYWxsYmFjay4gRXRodG9vbCBjYWxsYmFja3MsIGFzIHdlIGtub3csIGFyZSBvbmx5IGFjdGl2ZSBpZiB0aGUgYXNzb2NpYXRlZCBgbmV0X2RldmljZWAgaGFzIGJlZW4gcmVnaXN0ZXJlZC4gVGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGlzIGBuZXRfZGV2aWNlYCBoYXBwZW5zLCBwcmVkaWN0YWJseSwgaW4gYHR4Z2JlX3Byb2JlYC4gTm93LCBgdHhnYmVfcHJvYmVgIGlzLCBpbiB0dXJuLCBvbmx5IGNhbGxlZCB3aGVuIHRoZSByZWxldmFudCBQQ0kgZGV2aWNlIGlzICphY3R1YWxseSogcHJlc2VudCBvbiB0aGUgc3lzdGVtLgoKSGVyZSYjMzk7cyB0aGUgcHJvYmxlbTogdGhlcmUmIzM5O3Mgbm8gUUVNVSBlbXVsYXRpb24gZm9yIHRoZSBXYW5neHVuIDEwR2JFIG5ldHdvcmsgY2FyZCwgb3IgaW5kZWVkIGFueSBvdGhlciBlbnZpcm9ubWVudC4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgdGhlcmUmIzM5O3Mgbm8gd2F5IHRoaXMgUENJIGRldmljZSB3aWxsIGJlIHByZXNlbnQgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIHNldHVwLiBHaXZlbiB0aGlzLCBpdCBpcyB1bnJlYWNoYWJsZSBpbiBhbnkgZnV6emluZyBlbnZpcm9ubWVudHMgSSBhbSBmYW1pbGlhciB3aXRoLgoKVGhlcmVmb3JlLCBmdXp6aW5nIHRoaXMgY29kZSBpcyBub3QgcG9zc2libGUuIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAxMEdiRSAodHhnYmUpIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQgaW4gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIChldGh0b29sIGNhbGxiYWNrKSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAxMEdiRSAodHhnYmUpIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQgaW4gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIChldGh0b29sIGNhbGxiYWNrKSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDU6MDcuNTk2MjkzOTA4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM5NTMzMTY3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIDEwR2JFICh0eGdiZSkgUENJIGRyaXZlci4gVGhpcyBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIG9yIEdDRSwgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGZvciBpdCBpbiB0aGUga2VybmVsLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggKGV0aHRvb2wgY2FsbGJhY2spIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjA3LjU5NjI5OTY3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU3MDMxMjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWNlZjg4ZDUyNDM4ODUxNzc0MmI3OTBkYWI4YjUxZGI5ZjA3OGJhZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0NTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuY1xcbmluZGV4IGFmZmVhMWEzNjRlZmQ0Li4yNmQwY2ZjNThlZTJjZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuY1xcbkBAIC05NiwxMSArOTYsMTMgQEAgaW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbiBcXHRkd29yZF9sZW4gPSByb3VuZF91cChsZW5ndGgsIDQpIFxcdTAwM2VcXHUwMDNlIDI7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHdvcmRfbGVuOyBpKyspIHtcXG4rXFx0XFx0dTMyIGNvcHlfbGVuID0gbWluX3QodTMyLCA0LCBsZW5ndGggLSBpICogNCk7XFxuK1xcbiBcXHRcXHR2YWx1ZSA9IHJkMzJhKHd4LCBXWF9GVzJTV19NQk9YLCBpICsgb2Zmc2V0KTtcXG4gXFx0XFx0bGUzMl90b19jcHVzKFxcdTAwMjZ2YWx1ZSk7XFxuIFxcbi1cXHRcXHRtZW1jcHkoZGF0YSwgXFx1MDAyNnZhbHVlLCA0KTtcXG4tXFx0XFx0ZGF0YSArPSA0O1xcbitcXHRcXHRtZW1jcHkoZGF0YSwgXFx1MDAyNnZhbHVlLCBjb3B5X2xlbik7XFxuK1xcdFxcdGRhdGEgKz0gY29weV9sZW47XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTowOC4xNTQyNjY3MTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMzk1MzM2MTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAxMEdiRSAodHhnYmUpIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQgaW4gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIChldGh0b29sIGNhbGxiYWNrKSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFjZWY4OGQ1MjQzODg1MTc3NDJiNzkwZGFiOGI1MWRiOWYwNzhiYWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0NTowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jXG5pbmRleCBhZmZlYTFhMzY0ZWZkNC4uMjZkMGNmYzU4ZWUyY2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jXG5AQCAtOTYsMTEgKzk2LDEzIEBAIGludCB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYoc3RydWN0IHd4ICp3eCxcbiBcdGR3b3JkX2xlbiA9IHJvdW5kX3VwKGxlbmd0aCwgNCkgXHUwMDNlXHUwMDNlIDI7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkd29yZF9sZW47IGkrKykge1xuK1x0XHR1MzIgY29weV9sZW4gPSBtaW5fdCh1MzIsIDQsIGxlbmd0aCAtIGkgKiA0KTtcbitcbiBcdFx0dmFsdWUgPSByZDMyYSh3eCwgV1hfRlcyU1dfTUJPWCwgaSArIG9mZnNldCk7XG4gXHRcdGxlMzJfdG9fY3B1cyhcdTAwMjZ2YWx1ZSk7XG4gXG4tXHRcdG1lbWNweShkYXRhLCBcdTAwMjZ2YWx1ZSwgNCk7XG4tXHRcdGRhdGEgKz0gNDtcbitcdFx0bWVtY3B5KGRhdGEsIFx1MDAyNnZhbHVlLCBjb3B5X2xlbik7XG4rXHRcdGRhdGEgKz0gY29weV9sZW47XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjA4LjE1NDI2ODYzNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NzM0ODA5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE5ldHdvcmsgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWZgIHdpdGhpbiB0aGUgYHR4Z2JlX2FtbC5jYCBkcml2ZXIuIFNlZW1zIGxpa2UgaXQncyBhIGZpeCBmb3IgYSBidWZmZXIgb3ZlcmZsb3csIHdoaWNoIGlzIGFsd2F5cyBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0bywgZXNwZWNpYWxseSBpbiBuZXR3b3JrIGRyaXZlcnMuIEl0IGxvb2tzIGxpa2UgdGhlIGlzc3VlIHN0ZW1zIGZyb20gYW4gaW5jb3JyZWN0IGBjb3B5X2xlbmAgdmFsdWUgYmVpbmcgdXNlZCB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgRUVQUk9NIHRocm91Z2ggdGhlIGhvc3QgaW50ZXJmYWNlLCByYXRoZXIgdGhhbiBhbHdheXMgNCBieXRlcy4gVGhpcyBkcml2ZXIncyBzcGVjaWZpYyB0byB0aGUgV2FuZ3h1biAxMCBHaWdhYml0IEV0aGVybmV0IENvbnRyb2xsZXIsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHJlYWNoYWJpbGl0eS5cblxuRmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgZXZlbiBiZSB0cmlnZ2VyZWQgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nPyBXYW5neHVuIDEwR2JFIGlzIGEgUENJIGRldmljZSwgc28gSSdtIGltbWVkaWF0ZWx5IHNrZXB0aWNhbCBhYm91dCBkaXJlY3QgUUVNVSBlbXVsYXRpb24uIFByb2JhYmx5IG5vdC4gQnV0IHRoZW4gSSdtIHRoaW5raW5nLCBjb3VsZCB0aGlzIGJlIHJlYWNoYWJsZSB2aWEgc29tZSBtb3JlIGdlbmVyaWMgUENJIGZ1enppbmcgYXR0ZW1wdHM/IExldCdzIG5vdCBkaXNtaXNzIHRoYXQgb3B0aW9uIHJpZ2h0IGF3YXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbidzIHVzYWdlIGJldHRlci4gVGltZSB0byBkaWcgaW50byB3aGVyZSBgdHhnYmVfcmVhZF9lZXByb21faG9zdGlmYCBpcyBhY3R1YWxseSBjYWxsZWQuIEdvdHRhIHNlZSBob3cgbWFueSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIHRoZXJlIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2MCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjE0LjAyNzc1MjAwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ1MTA1MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHhnYmVfcmVhZF9lZXByb21faG9zdGlmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NjA9aW50IHR4Z2JlX3Rlc3RfaG9zdGlmKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NzY6aW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNzctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5oPTk9aW50IHR4Z2JlX3Rlc3RfaG9zdGlmKHN0cnVjdCB3eCAqd3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmg6MTA6aW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmgtMTEtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYz01Mjk9dHhnYmVfZ2V0X21vZHVsZV9lZXByb21fYnlfcGFnZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9ldGh0b29sLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jOjU0NjpcXHRlcnIgPSB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYod3gsIFxcdTAwMjZidWZmZXIsIHBhZ2VfZGF0YS1cXHUwMDNlbGVuZ3RoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jLTU0Ny1cXHRcXHRcXHRcXHQgICAgICAgcGFnZV9kYXRhLVxcdTAwM2VkYXRhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDU6MTQuMjcyMjY5OTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjY1ODU3NzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgZXRodG9vbCBDYWxsYmFjazogQ2FuIFdlIFRlc3QgV2l0aG91dCBSZWFsIEhhcmR3YXJlPyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHR4Z2JlX2dldF9tb2R1bGVfZWVwcm9tX2J5X3BhZ2VgIGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBmcm9tIGB0eGdiZV9ldGh0b29sLmNgLCBzbyBpdCdzIGFuIGV0aHRvb2wgY2FsbGJhY2suIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzLCBjYW4gSSByZWFjaCB0aGlzIGNvZGUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gSWYgdGhlIGRyaXZlciBpcyBsb2FkZWQsIHRoZW4gdGhlb3JldGljYWxseSwgaWYgSSBjYW4gaW5zdGFudGlhdGUgdGhlIGBuZXRfZGV2aWNlYCwgSSBtaWdodCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBjYWxsYmFjay4gQnV0IG9mIGNvdXJzZSwgdGhlIGRyaXZlciBpcyBQQ0ksIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHRoZSBzdGlja2luZyBwb2ludC4gVGhlIGRyaXZlciB3b24ndCBwcm9iZSB3aXRob3V0IHRoZSBoYXJkd2FyZS5cblxuVGhlbiBJIHJlY2FsbGVkIHRoYXQgc3l6a2FsbGVyIGhhcyB2UENJIGFuZC9vciBjYW4gaW5qZWN0IFBDSSBjb25maWcgc3BhY2UgZm9yIGZ1enppbmcuIEkgY2FuICptYXliZSogdXNlIHRoYXQuLi4gc3l6a2FsbGVyIGhhcyBhIHByaW1pdGl2ZSBsaWtlIGBzeXpfcGNpX2RldmljZWAsIHJpZ2h0PyBCdXQgZXZlbiB3aXRoIHRoYXQsIGl0J3MgbmV2ZXIgc2ltcGxlLiBQQ0kgZHJpdmVycyBhbG1vc3QgYWx3YXlzIHJlcXVpcmUgc3BlY2lmaWMgdmVuZG9yL2RldmljZSBJRHMgYW5kIG1hcHBlZCBNTUlPIHJlZ2lvbnMgdG8gZXZlbiBzdGFydCBwcm9iaW5nLiBJdCdzIGEgYml0IG9mIGEgcGFpbiB0byBzZXQgdGhhdCB1cC4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhhdCwgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNjYW4gZm9yIGEgV2FuZ3h1biBzcGVjaWZpYyBjb25maWcgaW4gdGhlIGRyaXZlci4gTWF5YmUsIGp1c3QgbWF5YmUsIHRoZXJlJ3Mgc29tZSBzcGVjaWFsIGhhbmRsaW5nIHRoYXQgbGV0cyBtZSBnZXQgZnVydGhlciB3aXRob3V0IGhhdmluZyB0byBjcmVhdGUgYSB3aG9sZSBuZXcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDU6MTkuNTM4MTI5OTE2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjYzOTI5NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRYR0JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NToxOS43ODQ3Nzg3NTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg0NTcyOTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBDaGVjayBpbiB0aGUgV2FuZ3h1biBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cywgYW5kIGZvbGxvd2luZyBiZXN0IHByYWN0aWNlcy4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgY2hlY2suIE15IGludHVpdGlvbiBzYXlzIHRoZXJlIG1pZ2h0IGJlIHNvbWUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaW4gdGhlIGBLY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9gIGRpcmVjdG9yeS4gSSdsbCBuZWVkIHRvIG9wZW4gdGhhdCBmaWxlIGFuZCBxdWlja2x5IHNjYW4gaXQuIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IHBlcnRhaW4gdG8gbXkgY3VycmVudCBwcm9ibGVtIHNwYWNlLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gRG9lcyB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGhhbmRsZSBteSB1c2UgY2FzZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGZsYWdzIG9yIG9wdGlvbnMgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUsIHNvIEkgY2FuIHRlc3QgdGhpcyB0aGVvcnk/IEhvcGVmdWxseSwgaXQgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBJIGNhbiBwcm9jZWVkLiBJZiB0aGVyZSBhcmUgbmV3IHNldHRpbmdzIHRvIGNvbnNpZGVyLCBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSB0aGVtIGluIGRlcHRoLCBidXQgbGV0J3MgdGFrZSB0aGlzIG9uZSBzdGVwIGF0IGEgdGltZS4gVGhpcyBpcyBhIGNydWNpYWwgZmlyc3Qgc3RlcDsgYmV0dGVyIHRvIGVuc3VyZSBJJ20gcmVzcGVjdGluZyB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NToyMy40NjkzNTQwNjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNTg2NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUWEdCRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Mjg9Y29uZmlnIE5HQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6NDM6Y29uZmlnIFRYR0JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY4LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjIzLjYwMjk0ODQ4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzNjQyMDQxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQgZm9yIFdhbmd4dW4gMTBHYkUgRHJpdmVyKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBXYW5neHVuIDEwR2JFIGRyaXZlciBiZSBlZmZlY3RpdmVseSBmdXp6ZWQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciBzeXprYWxsZXIncyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkga25vdyBzeXprYWxsZXIgKmhhcyogc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0IOKAkyBJIHJlY2FsbCBzZWVpbmcgaXQgd2l0aCBkcml2ZXJzIGxpa2UgZTEwMDBlIOKAkyBidXQgaXQncyB0eXBpY2FsbHkgbGltaXRlZCBpbiBpdHMgc2NvcGUuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGluc3RydWN0cyBtZSB0byByZXR1cm4gXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBpZiB0aGUgcGF0Y2gncyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0J3MgdGhlIGNydXggb2YgaXQuXG5cblRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIHNwZWNpZmljIDEwR2JFIGRldmljZSwgV2FuZ3h1biwgaXMgZW11bGF0ZWQgYnkgUUVNVS4gTm9wZSwgaXQncyBub3QuIEZ1cnRoZXIsIGNhbiBpdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBpbiB0aGUgd2F5IHRoYXQgc3l6a2FsbGVyIGhhbmRsZXMgVVNCIHdpdGggYHZoY2lgLCB3aWZpIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgQ0FOIHdpdGggYHZjYW5gLCBvciBpbnB1dCB3aXRoIGB1aW5wdXRgPyBObywgaXQncyBub3QgbGlrZSB0aGF0LiBTeXprYWxsZXIncyBhcHByb2FjaCBmb3IgUENJIGludm9sdmVzIGEgKnZpcnR1YWwqIFBDSSBkZXZpY2UuIElzIGl0IHZpYSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgIG9yIGBzeXpfa3ZtX3NldHVwX2NwdWAgb3IgcGVyaGFwcyBhIGdlbmV0bGluayBzZXR1cCB3aXRoIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgPyBObywgbm8sIGFuZCBuby4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBlZmZlY3RpdmUsIGdlbmVyaWMgUENJIGVtdWxhdG9yIHRoYXQgY291bGQgdHJpY2sgYSBkcml2ZXIgbGlrZSB0aGlzIGludG8gdGhpbmtpbmcgdGhlIGRldmljZSBpcyBwcmVzZW50IGFuZCBmdW5jdGlvbmFsIGVub3VnaCB0byByZWFjaCB0aG9zZSBldGh0b29sIGNhbGxiYWNrcywgd2hpY2ggaXMgYSBrZXkgcGFydCBvZiBob3cgaXQncyB0ZXN0ZWQ/IE5vdCB1bmxlc3MgaXQncyBleHBsaWNpdGx5IHN1cHBvcnRlZCBieSBhIFFFTVUgZGV2aWNlIG9yIGEgc3BlY2lmaWMga2VybmVsIG1vZHVsZSBsaWtlIGB2ZmlvYD8gQnV0IEkgbmVlZCB0byBiZSBjYXJlZnVsOyB2ZmlvIGlzIGZvciB1c2Vyc3BhY2UuXG5cbldhaXQsIGhhcyBzeXprYWxsZXIgYWRkZWQgYW55dGhpbmcgcmVjZW50bHkgYXJvdW5kIFBDSSBmdXp6aW5nIGludm9sdmluZyBgdmZpb2Agb3Igc2ltaWxhcj8gTm8sIEkgZG9uJ3QgdGhpbmsgc28uIFRoZSBleGlzdGluZyBtZWNoYW5pc20gaXMgc3RpbGwgYHN5el9wY2lfZGV2aWNlYCwgd2hpY2ggaGFzIGl0cyBsaW1pdGF0aW9ucy4gU28sIGNhbiBzeXprYWxsZXIgZnV6eiBQQ0kgZHJpdmVycz8gWWVzLCBidXQgb25seSBpZiB0aGUgZGV2aWNlIGlzIGxvYWRlZCBhbmQgcHJlc2VudC4gVGhlIGNyaXRpY2FsIGlzc3VlIGhlcmUgaXMgdGhhdCB3aXRob3V0IHByb3BlciBRRU1VIGVtdWxhdGlvbiBvZiB0aGlzIFdhbmd4dW4gZGV2aWNlLCB0aGUgZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiBpcyBuZXZlciBnb2luZyB0byBzdWNjZWVkLiBJZiBgcHJvYmVgIGZhaWxzLCB0aGUgYG5ldF9kZXZpY2VgIHdvbid0IGJlIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIGVzc2VudGlhbCB0byByZWFjaCBldGh0b29sIGNhbGxiYWNrcy4gVGh1cywgbXkgbmV4dCBzdGVwIGlzIHRvIHRlc3QgdGhlIGFiaWxpdHkgb2YgYHR4Z2JlYCB0byBiZSBwcm9iZWQgd2l0aG91dCBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkxOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTozMi45NjcxNTUyMjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjU3NjA5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0eGdiZV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02NTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjcwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjY3MTogKiB0eGdiZV9wcm9iZSAtIERldmljZSBJbml0aWFsaXphdGlvbiBSb3V0aW5lXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjcyLSAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjc2LSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6Njc3OiAqIHR4Z2JlX3Byb2JlIGluaXRpYWxpemVzIGFuIGFkYXB0ZXIgaWRlbnRpZmllZCBieSBhIHBjaV9kZXYgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY3OC0gKiBUaGUgT1MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyaW5nIG9mIHRoZSB3eCBwcml2YXRlIHN0cnVjdHVyZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY4MC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NjgxOnN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjgyLVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX2Fsd2F5c191bnVzZWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTk2NT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdHhnYmVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtOTY3LVxcdC5pZF90YWJsZSA9IHR4Z2JlX3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6OTY4OlxcdC5wcm9iZSAgICA9IHR4Z2JlX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTk2OS1cXHQucmVtb3ZlICAgPSB0eGdiZV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQ1OjMzLjExMzczODI2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMwMTk1NDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBUYXJnZXRpbmcgYHR4Z2JlX3Byb2JlYCoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIGltcHVsc2UgaGVyZSBpcyB0byBkZWx2ZSBpbnRvIGB0eGdiZV9wcm9iZWAuIFRoYXQgbGlrZWx5IG1lYW5zIEknbSB0cm91Ymxlc2hvb3RpbmcsIGRlYnVnZ2luZywgb3IgYW5hbHl6aW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBJbnRlbCBYNTUwL1g1NjAgMTAgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIuIFRoZSBuYW1lIGl0c2VsZiBzY3JlYW1zIG91dCB0aGF0IHRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBwcm9iaW5nIG9mIHRoZSBoYXJkd2FyZSwgaGFwcGVucy4gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gdGhhdCBmdW5jdGlvbiBhcyBhIGtleSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRldmljZSBpcyBmb3VuZCBhbmQgaW5pdGlhbGl6ZWQsIG9yIHdoYXQgY291bGQgYmUgZ29pbmcgd3JvbmcgZHVyaW5nIHRoYXQgcHJvY2Vzcy4gRGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0IEkgYW0gd29ya2luZyB3aXRoaW4sIGxpa2UgYSBrZXJuZWwgb3IgZHJpdmVyIHVwZGF0ZSwgdGhlIHByb2JlIGlzIG9mdGVuIGEgZ29vZCBwbGFjZSB0byBzdGFydCBpbiBkZWJ1Z2dpbmcgbmV0d29yayBlcnJvcnMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjb250ZXh0IEknbSB3b3JraW5nIHdpdGggdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTozNi40NDM5MzU5MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY4MSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2ODE6XFx0c3RhdGljIGludCB0eGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gNjgyOlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX2Fsd2F5c191bnVzZWQgKmVudClcXG4gNjgzOlxcdHtcXG4gNjg0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuIDY4NTpcXHRcXHRpbnQgZXJyLCBleHBlY3RlZF9ndHM7XFxuIDY4NjpcXHRcXHRzdHJ1Y3Qgd3ggKnd4ID0gTlVMTDtcXG4gNjg3OlxcdFxcdHN0cnVjdCB0eGdiZSAqdHhnYmU7XFxuIDY4ODpcXHRcXG4gNjg5OlxcdFxcdHUxNiBlZXByb21fdmVyaCA9IDAsIGVlcHJvbV92ZXJsID0gMCwgb2Zmc2V0ID0gMDtcXG4gNjkwOlxcdFxcdHUxNiBlZXByb21fY2ZnX2Jsa2ggPSAwLCBlZXByb21fY2ZnX2Jsa2wgPSAwO1xcbiA2OTE6XFx0XFx0dTE2IGJ1aWxkID0gMCwgbWFqb3IgPSAwLCBwYXRjaCA9IDA7XFxuIDY5MjpcXHRcXHR1MzIgZXRyYWNrX2lkID0gMDtcXG4gNjkzOlxcdFxcbiA2OTQ6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9kZXZpY2VfbWVtKHBkZXYpO1xcbiA2OTU6XFx0XFx0aWYgKGVycilcXG4gNjk2OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDY5NzpcXHRcXG4gNjk4OlxcdFxcdGVyciA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDY0KSk7XFxuIDY5OTpcXHRcXHRpZiAoZXJyKSB7XFxuIDcwMDpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDcwMTpcXHRcXHRcXHRcXHRcXFwiTm8gdXNhYmxlIERNQSBjb25maWd1cmF0aW9uLCBhYm9ydGluZ1xcXFxuXFxcIik7XFxuIDcwMjpcXHRcXHRcXHRnb3RvIGVycl9wY2lfZGlzYWJsZV9kZXY7XFxuIDcwMzpcXHRcXHR9XFxuIDcwNDpcXHRcXG4gNzA1OlxcdFxcdGVyciA9IHBjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMocGRldixcXG4gNzA2OlxcdFxcdFxcdFxcdFxcdFxcdCAgIHBjaV9zZWxlY3RfYmFycyhwZGV2LCBJT1JFU09VUkNFX01FTSksXFxuIDcwNzpcXHRcXHRcXHRcXHRcXHRcXHQgICB0eGdiZV9kcml2ZXJfbmFtZSk7XFxuIDcwODpcXHRcXHRpZiAoZXJyKSB7XFxuIDcwOTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDcxMDpcXHRcXHRcXHRcXHRcXFwicGNpX3JlcXVlc3Rfc2VsZWN0ZWRfcmVnaW9ucyBmYWlsZWQgMHgleFxcXFxuXFxcIiwgZXJyKTtcXG4gNzExOlxcdFxcdFxcdGdvdG8gZXJyX3BjaV9kaXNhYmxlX2RldjtcXG4gNzEyOlxcdFxcdH1cXG4gNzEzOlxcdFxcbiA3MTQ6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDcxNTpcXHRcXG4gNzE2OlxcdFxcdG5ldGRldiA9IGRldm1fYWxsb2NfZXRoZXJkZXZfbXFzKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDcxNzpcXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCB3eCksXFxuIDcxODpcXHRcXHRcXHRcXHRcXHRcXHQgVFhHQkVfTUFYX1RYX1FVRVVFUyxcXG4gNzE5OlxcdFxcdFxcdFxcdFxcdFxcdCBUWEdCRV9NQVhfUlhfUVVFVUVTKTtcXG4gNzIwOlxcdFxcdGlmICghbmV0ZGV2KSB7XFxuIDcyMTpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiA3MjI6XFx0XFx0XFx0Z290byBlcnJfcGNpX3JlbGVhc2VfcmVnaW9ucztcXG4gNzIzOlxcdFxcdH1cXG4gNzI0OlxcdFxcbiA3MjU6XFx0XFx0U0VUX05FVERFVl9ERVYobmV0ZGV2LCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gNzI2OlxcdFxcbiA3Mjc6XFx0XFx0d3ggPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbiA3Mjg6XFx0XFx0d3gtXFx1MDAzZW5ldGRldiA9IG5ldGRldjtcXG4gNzI5OlxcdFxcdHd4LVxcdTAwM2VwZGV2ID0gcGRldjtcXG4gNzMwOlxcdFxcbiA3MzE6XFx0XFx0d3gtXFx1MDAzZW1zZ19lbmFibGUgPSAoMSBcXHUwMDNjXFx1MDAzYyBERUZBVUxUX0RFQlVHX0xFVkVMX1NISUZUKSAtIDE7XFxuIDczMjpcXHRcXG4gNzMzOlxcdFxcdHd4LVxcdTAwM2Vod19hZGRyID0gZGV2bV9pb3JlbWFwKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDczNDpcXHRcXHRcXHRcXHRcXHQgICBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMCksXFxuIDczNTpcXHRcXHRcXHRcXHRcXHQgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTtcXG4gNzM2OlxcdFxcdGlmICghd3gtXFx1MDAzZWh3X2FkZHIpIHtcXG4gNzM3OlxcdFxcdFxcdGVyciA9IC1FSU87XFxuIDczODpcXHRcXHRcXHRnb3RvIGVycl9wY2lfcmVsZWFzZV9yZWdpb25zO1xcbiA3Mzk6XFx0XFx0fVxcbiA3NDA6XFx0XFxuIDc0MTpcXHRcXHQvKiBUaGUgc2FwcGhpcmUgc3VwcG9ydHMgdXAgdG8gNjMgVkZzIHBlciBwZiwgYnV0IHBoeXNpY2FsXFxuIDc0MjpcXHRcXHQgKiBmdW5jdGlvbiBhbHNvIG5lZWQgb25lIHBvb2wgZm9yIGJhc2ljIG5ldHdvcmtpbmcuXFxuIDc0MzpcXHRcXHQgKi9cXG4gNzQ0OlxcdFxcdHBjaV9zcmlvdl9zZXRfdG90YWx2ZnMocGRldiwgVFhHQkVfTUFYX1ZGU19EUlZfTElNSVQpO1xcbiA3NDU6XFx0XFx0d3gtXFx1MDAzZWRyaXZlcl9uYW1lID0gdHhnYmVfZHJpdmVyX25hbWU7XFxuIDc0NjpcXHRcXHR0eGdiZV9zZXRfZXRodG9vbF9vcHMobmV0ZGV2KTtcXG4gNzQ3OlxcdFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xcbiA3NDg6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xcbiA3NDk6XFx0XFxuIDc1MDpcXHRcXHQvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cXG4gNzUxOlxcdFxcdGVyciA9IHR4Z2JlX3N3X2luaXQod3gpO1xcbiA3NTI6XFx0XFx0aWYgKGVycilcXG4gNzUzOlxcdFxcdFxcdGdvdG8gZXJyX3BjaV9yZWxlYXNlX3JlZ2lvbnM7XFxuIDc1NDpcXHRcXG4gNzU1OlxcdFxcdC8qIGNoZWNrIGlmIGZsYXNoIGxvYWQgaXMgZG9uZSBhZnRlciBodyBwb3dlciB1cCAqL1xcbiA3NTY6XFx0XFx0ZXJyID0gd3hfY2hlY2tfZmxhc2hfbG9hZCh3eCwgVFhHQkVfU1BJX0lMRFJfU1RBVFVTX1BFUlNUKTtcXG4gNzU3OlxcdFxcdGlmIChlcnIpXFxuIDc1ODpcXHRcXHRcXHRnb3RvIGVycl9mcmVlX21hY190YWJsZTtcXG4gNzU5OlxcdFxcdGVyciA9IHd4X2NoZWNrX2ZsYXNoX2xvYWQod3gsIFRYR0JFX1NQSV9JTERSX1NUQVRVU19QV1JSU1QpO1xcbiA3NjA6XFx0XFx0aWYgKGVycilcXG4gNzYxOlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfbWFjX3RhYmxlO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRlcnIgPSB3eF9tbmdfcHJlc2VudCh3eCk7XFxuIDc2NDpcXHRcXHRpZiAoZXJyKSB7XFxuIDc2NTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJNYW5hZ2VtZW50IGNhcGFiaWxpdHkgaXMgbm90IHByZXNlbnRcXFxcblxcXCIpO1xcbiA3NjY6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9tYWNfdGFibGU7XFxuIDc2NzpcXHRcXHR9XFxuIDc2ODpcXHRcXG4gNzY5OlxcdFxcdGVyciA9IHR4Z2JlX3Jlc2V0X2h3KHd4KTtcXG4gNzcwOlxcdFxcdGlmIChlcnIpIHtcXG4gNzcxOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkhXIEluaXQgZmFpbGVkOiAlZFxcXFxuXFxcIiwgZXJyKTtcXG4gNzcyOlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfbWFjX3RhYmxlO1xcbiA3NzM6XFx0XFx0fVxcbiA3NzQ6XFx0XFxuIDc3NTpcXHRcXHRuZXRkZXYtXFx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8XFxuIDc3NjpcXHRcXHRcXHRcXHQgICBORVRJRl9GX1RTTyB8XFxuIDc3NzpcXHRcXHRcXHRcXHQgICBORVRJRl9GX1RTTzYgfFxcbiA3Nzg6XFx0XFx0XFx0XFx0ICAgTkVUSUZfRl9SWEhBU0ggfFxcbiA3Nzk6XFx0XFx0XFx0XFx0ICAgTkVUSUZfRl9SWENTVU0gfFxcbiA3ODA6XFx0XFx0XFx0XFx0ICAgTkVUSUZfRl9IV19DU1VNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTozNi40NDQwOTQxMTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMxODYyMDA2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFdhbmd4dW4gMTBHYkUgRHJpdmVyIGluIGEgRnV6emluZyBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyB0YXJnZXRzIGEgV2FuZ3h1biBUWEdCRSBkcml2ZXIsIGFuZCB0aGF0IGludm9sdmVzIE1NSU8gcmVhZHMgYW5kIHdyaXRlcyBkdXJpbmcgYSBwcm9iZSBmdW5jdGlvbiAoYHR4Z2JlX3Byb2JlYCkuIElmIHRoaXMgZHJpdmVyIGlzbid0IGVtdWxhdGVkLCB0aG9zZSBNTUlPIG9wZXJhdGlvbnMgd2lsbCBsaWtlbHkgZmFpbCBvciByZXR1cm4gYWxsIDFzLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50LlxuXG5NeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyBzeXprYWxsZXIgd29uJ3QgYmUgYWJsZSB0byByZWFjaCB0aGlzLiBXYWl0LCBkb2VzIHN5emthbGxlciBoYXZlIGEgYHN5el9wY2lfZGV2aWNlYD8gSSBkb24ndCB0aGluayBzby4gSXQgcmVsaWVzIG9uIFFFTVUsIHJpZ2h0PyBBbmQgUUVNVSBkb2Vzbid0IGhhdmUgYSBXYW5neHVuIGRldmljZS4gSXQncyBlMTAwMCwgdmlydGlvLCBhbmQgc28gb24uIE5vLCBubyBgc3l6X3BjaV9kZXZpY2VgLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBgc3l6X2t2bV9zZXR1cF9jcHVgLCBgc3l6X3VzYl9jb25uZWN0YCwgZXRjLiwgYnV0IEkgYW0gYWxtb3N0IGNlcnRhaW4gaXQgZG9lc24ndCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSdsbCBjaGVjayB0aGUgZG9jcyBvciwgaWYgbm90LCBJJ2xsIG9wZXJhdGUgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBhIFBDSSBkcml2ZXIgZm9yIGEgbm9uLXZpcnR1YWxpemVkIGRldmljZSBpcyB1bnJlYWNoYWJsZS5cblxuQnV0IHdhaXQgYSBtaW51dGUsIHRoZSBwcm9tcHQgKmRvZXMqIHNheSBpdCdzIGZvciBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTbywgaXQgKmlzKiBhbiBpc3N1ZS4gU28gaXMgdGhpcyBvbmU/IEl0J3MgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLiBObyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYG5ldGRldnNpbWAgZm9yIHRoaXMsIGFuZCB0aGUgcGF0Y2ggaXMgaW4gYSB2ZXJ5IHNwZWNpZmljIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jYC4gVGhlIGZhY3QgdGhhdCBpdCBjb21lcyBmcm9tIGEgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1lYW4gaXQgZm91bmQgaXQhIEl0IGlzIGp1c3QgdGhlIGNvbW1pdCB0aGF0IEkgdXNlIHRvIGFwcGx5IHRoZSBwYXRjaC4gSXQgbWVhbnMgdGhhdCBzeXprYWxsZXIgaXMgYXNrZWQgdG8gdGVzdCBpdCBhbmQgdGhpcyBpcyB0aGUgY29tbWl0LlxuXG5Pa2F5LCBsZXQgbWUgY29uZmlybS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHN5emthbGxlciBjYW4ndCB0ZXN0IHRoaXMuIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBiZWNhdXNlIGl0J3MgYSBwaHlzaWNhbCBQQ0kgZHJpdmVyIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24uIEkgc2hvdWxkIGFsc28gY2hlY2sgUUVNVSBhbmQgdGhlIGtlcm5lbCBmb3IgZW11bGF0aW9uLiBRRU1VIGRvZXMgbm90IHN1cHBvcnQgV2FuZ3h1bi5cblxuSSBhbSBjZXJ0YWluIHRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyIGFuZCB0aGUgcGF0Y2ggY2Fubm90IGJlIHJlYWNoZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0ODcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NTo0OS42MzAyOTczM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2OTY1MTYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NjA9aW50IHR4Z2JlX3Rlc3RfaG9zdGlmKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NzY6aW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNzctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5oPTk9aW50IHR4Z2JlX3Rlc3RfaG9zdGlmKHN0cnVjdCB3eCAqd3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmg6MTA6aW50IHR4Z2JlX3JlYWRfZWVwcm9tX2hvc3RpZihzdHJ1Y3Qgd3ggKnd4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmgtMTEtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdHhnYmVfaGljX2kyY19yZWFkICpidWZmZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2V0aHRvb2wuYz01Mjk9dHhnYmVfZ2V0X21vZHVsZV9lZXByb21fYnlfcGFnZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9ldGh0b29sLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jOjU0NjpcXHRlcnIgPSB0eGdiZV9yZWFkX2VlcHJvbV9ob3N0aWYod3gsIFxcdTAwMjZidWZmZXIsIHBhZ2VfZGF0YS1cXHUwMDNlbGVuZ3RoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfZXRodG9vbC5jLTU0Ny1cXHRcXHRcXHRcXHQgICAgICAgcGFnZV9kYXRhLVxcdTAwM2VkYXRhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDU6NTMuOTk5OTU1NzhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU0OTYxMjQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIFZpcnR1YWwgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSd2ZSB0cmFjZWQgdGhpcyBjb2RlIHBhdGggYW5kIEkndmUgY29tZSB0byBhIHByZXR0eSBjbGVhciBjb25jbHVzaW9uLiBUaGlzIHNwZWNpZmljIGJpdCBvZiBjb2RlLCB0aGUgb25lIGJlaW5nIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2gsIGlzIG9ubHkgZXZlciByZWFjaGVkIHRocm91Z2ggdGhlIGB0eGdiZV9nZXRfbW9kdWxlX2VlcHJvbV9ieV9wYWdlYCBmdW5jdGlvbiB3aXRoaW4gYHR4Z2JlX2V0aHRvb2wuY2AuIEFuZCB0aGF0IGZ1bmN0aW9uLCBhcyBJIGNhbiBzZWUsIGlzIHN0cmljdGx5IGFuIGV0aHRvb2wgY2FsbGJhY2suIEV0aHRvb2wgY2FsbGJhY2tzLCBhcyB3ZSBrbm93LCBhcmUgb25seSBhY3RpdmUgaWYgdGhlIGFzc29jaWF0ZWQgYG5ldF9kZXZpY2VgIGhhcyBiZWVuIHJlZ2lzdGVyZWQuIFRoZSByZWdpc3RyYXRpb24gb2YgdGhpcyBgbmV0X2RldmljZWAgaGFwcGVucywgcHJlZGljdGFibHksIGluIGB0eGdiZV9wcm9iZWAuIE5vdywgYHR4Z2JlX3Byb2JlYCBpcywgaW4gdHVybiwgb25seSBjYWxsZWQgd2hlbiB0aGUgcmVsZXZhbnQgUENJIGRldmljZSBpcyAqYWN0dWFsbHkqIHByZXNlbnQgb24gdGhlIHN5c3RlbS5cblxuSGVyZSdzIHRoZSBwcm9ibGVtOiB0aGVyZSdzIG5vIFFFTVUgZW11bGF0aW9uIGZvciB0aGUgV2FuZ3h1biAxMEdiRSBuZXR3b3JrIGNhcmQsIG9yIGluZGVlZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgdGhlcmUncyBubyB3YXkgdGhpcyBQQ0kgZGV2aWNlIHdpbGwgYmUgcHJlc2VudCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXAuIEdpdmVuIHRoaXMsIGl0IGlzIHVucmVhY2hhYmxlIGluIGFueSBmdXp6aW5nIGVudmlyb25tZW50cyBJIGFtIGZhbWlsaWFyIHdpdGguXG5cblRoZXJlZm9yZSwgZnV6emluZyB0aGlzIGNvZGUgaXMgbm90IHBvc3NpYmxlLiBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUxOCwiT3V0cHV0VG9rZW5zIjoxMDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDY6MDEuNTQ5NTcwNzc5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gMTBHYkUgKHR4Z2JlKSBQQ0kgZHJpdmVyLiBUaGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgZm9yIGl0IGluIHRoZSBrZXJuZWwuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCAoZXRodG9vbCBjYWxsYmFjaykgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gMTBHYkUgKHR4Z2JlKSBQQ0kgZHJpdmVyLiBUaGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgZm9yIGl0IGluIHRoZSBrZXJuZWwuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCAoZXRodG9vbCBjYWxsYmFjaykgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow826v4[1] Phase: Running StartedAt: 2026-07-13 11:46:13 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow826v4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-13 11:46:13 +0000 UTC FinishedAt: 2026-07-13 11:46:34 +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,}