Name: series-workflowpsjkg Phase: Failed StartedAt: 2026-09-11 13:33:15 +0000 UTC FinishedAt: 2026-09-11 13:55:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpsjkg[0] Phase: Succeeded StartedAt: 2026-09-11 13:33:15 +0000 UTC FinishedAt: 2026-09-11 13:55:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpsjkg[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 13:33:15 +0000 UTC FinishedAt: 2026-09-11 13:55:15 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUENJZSBMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcgKExUUikgY29uZmlndXJhdGlvbiBpbiBydGxfZW5hYmxlX2x0cigpIHdpdGhpbiB0aGUgUmVhbHRlayByODE2OSBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBSZWFsdGVrIFBDSWUgbmV0d29yayBhZGFwdGVycyAoc3VjaCBhcyBSVEw4MTY4IG9yIFJUTDgxMjUpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3OTNkY2U1ODg3YmZkZjZlZWFmMGVmYjM0YjVlOGZjNjM5NmYzMmI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMTM6NTQ6MTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuaW5kZXggZWM0ZmMyMWZhMjFmYi4uYzMwNWE4ZjE5NTUxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuQEAgLTMwMzcsNiAmIzQzOzMwMzcsMTggQEAgc3RhdGljIHZvaWQgcnRsX2Rpc2FibGVfZXhpdF9sMShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4mIzQzO1x0LyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyBMVFIgaXMgZW5hYmxlZCBmb3IgdGhlXG4mIzQzO1x0ICogd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBwY2lfY29uZmlndXJlX2x0cigpIHdvcmtzIHRoYXQgb3V0XG4mIzQzO1x0ICogYW5kIHJlY29yZHMgdGhlIHJlc3VsdCBpbiBwY2lfZGV2LVx1MDAzZWx0cl9wYXRoLCB3aGljaCBleGlzdHMgb25seSB3aXRoXG4mIzQzO1x0ICogQ09ORklHX1BDSUVBU1BNOyB3aXRob3V0IGl0IHRoZSBQQ0kgY29yZSBuZXZlciBlbmFibGVzIExUUiBhbnl3aGVyZS5cbiYjNDM7XHQgKi9cbiYjNDM7I2lmZGVmIENPTkZJR19QQ0lFQVNQTVxuJiM0MztcdGlmICghdHAtXHUwMDNlcGNpX2Rldi1cdTAwM2VsdHJfcGF0aClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7I2Vsc2VcbiYjNDM7XHRyZXR1cm47XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFBDSWUgTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nIChMVFIpIGNvbmZpZ3VyYXRpb24gaW4gcnRsX2VuYWJsZV9sdHIoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgcjgxNjkgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUmVhbHRlayBQQ0llIG5ldHdvcmsgYWRhcHRlcnMgKHN1Y2ggYXMgUlRMODE2OCBvciBSVEw4MTI1KSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzkzZGNlNTg4N2JmZGY2ZWVhZjBlZmIzNGI1ZThmYzYzOTZmMzJiNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDEzOjU0OjE5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwppbmRleCBlYzRmYzIxZmEyMWZiLi5jMzA1YThmMTk1NTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwpAQCAtMzAzNyw2ICYjNDM7MzAzNywxOCBAQCBzdGF0aWMgdm9pZCBydGxfZGlzYWJsZV9leGl0X2wxKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKJiM0MzsJLyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyBMVFIgaXMgZW5hYmxlZCBmb3IgdGhlCiYjNDM7CSAqIHdob2xlIHBhdGggdXAgdG8gdGhlIHJvb3QgcG9ydC4gcGNpX2NvbmZpZ3VyZV9sdHIoKSB3b3JrcyB0aGF0IG91dAomIzQzOwkgKiBhbmQgcmVjb3JkcyB0aGUgcmVzdWx0IGluIHBjaV9kZXYtJmd0O2x0cl9wYXRoLCB3aGljaCBleGlzdHMgb25seSB3aXRoCiYjNDM7CSAqIENPTkZJR19QQ0lFQVNQTTsgd2l0aG91dCBpdCB0aGUgUENJIGNvcmUgbmV2ZXIgZW5hYmxlcyBMVFIgYW55d2hlcmUuCiYjNDM7CSAqLwomIzQzOyNpZmRlZiBDT05GSUdfUENJRUFTUE0KJiM0MzsJaWYgKCF0cC0mZ3Q7cGNpX2Rldi0mZ3Q7bHRyX3BhdGgpCiYjNDM7CQlyZXR1cm47CiYjNDM7I2Vsc2UKJiM0MzsJcmV0dXJuOwomIzQzOyNlbmRpZgomIzQzOwogCXN3aXRjaCAodHAtJmd0O21hY192ZXJzaW9uKSB7CiAJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOgogCQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyB0aGUgcjgxNjkgUGF0Y2g6IEEgUUVNVSAmYW1wOyBLZXJuZWwgRGl2ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gYXNzZXNzIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbiBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIgb3IgaWYgaXQmIzM5O3MgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSDigJMgYmVjYXVzZSB0aGF0IGRyYW1hdGljYWxseSBhZmZlY3RzIGhvdyBJIGFwcHJvYWNoIHRoZSBldmFsdWF0aW9uLCBlc3BlY2lhbGx5IGluIHRlcm1zIG9mIGZ1enppbmcuCgpXYWl0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBsZXQmIzM5O3MgZXN0YWJsaXNoIGV4YWN0bHkgd2hhdCBgcjgxNjlgIGlzLiBJdCBoYW5kbGVzIGEgcmFuZ2Ugb2YgUmVhbHRlayBjaGlwczogUlRMODE2OSwgUlRMODE2OCwgUlRMODEyNSwgUlRMODEyNiwgYW5kIHByb2JhYmx5IG1vcmUuIEJ1dCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgZW11bGF0aW9uIGluIFFFTVUuIERvZXMgUUVNVSBtb2RlbCB0aGUgUlRMODE2OSBmYW1pbHk/CgpBaGEhIE5vdyBJIHJlbWVtYmVyLi4uIFFFTVUgKmRvZXMqIGVtdWxhdGUgYSBSZWFsdGVrIE5JQywgdGhlIGBydGw4MTM5YC4gSXRzIFBDSSBkZXZpY2UgSUQgaXMgMTBlYzo4MTM5LCBhbmQgdGhhdOKAmXMgaW1wb3J0YW50LiBCdXQgaXMgYHI4MTY5YCBzcGVjaWZpY2FsbHkgZW11bGF0ZWQgdG9vPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LgoKTGV04oCZcyBjaGVjayBRRU1VIGRvY3VtZW50YXRpb24sIHRoZSBrZXJuZWwgc291cmNlLCBvciBob3cgYHI4MTY5YCBpcyB0eXBpY2FsbHkgdXNlZC4gSG9sZCBvbiwgYSBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIGl0c2VsZiBtaWdodCBiZSB0aGUgcXVpY2tlc3Qgcm91dGUgdG8gdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgYW55IGV4aXN0aW5nIFFFTVUgaW50ZXJhY3Rpb25zLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsX2VuYWJsZV9sdHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zMDI0PXN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzAzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjMwMzg6c3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMDM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zMTM2PXN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMxNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzozMTY0Olx0XHRydGxfZW5hYmxlX2x0cih0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMTY1LVx0XHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHJ0bF9lbmFibGVfbHRyYCBpbiBgcjgxNjlfbWFpbi5jYCoqCgpBbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIGNsZWFyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBgcnRsX2VuYWJsZV9sdHJgIHdpdGhpbiB0aGUgYHI4MTY5YCBkcml2ZXIuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGByODE2OV9tYWluLmNgIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIGxpa2VseSBkZWZpbmVkLiBNeSBtYWluIGZvY3VzIGhlcmUgaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGNhbGxzIHRvIGBydGxfZW5hYmxlX2x0cmAuIEkgd2FudCB0byBzZWUgKndoZW4qIGFuZCAqd2h5KiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIElzIGl0IHBhcnQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlPyBJcyBpdCB0cmlnZ2VyZWQgYnkgc29tZSBzcGVjaWZpYyBoYXJkd2FyZSBldmVudD8gSXMgaXQgY29uZGl0aW9uYWw/IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93LgoKQmV5b25kIHRoZSBjYWxsIHNpdGVzLCBJJiMzOTttIGdvaW5nIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYHJ0bF9lbmFibGVfbHRyYC4gVGhvc2Ugd2lsbCBwcm92aWRlIGNydWNpYWwgY2x1ZXMgYWJvdXQgdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQgdGhlIHNwZWNpZmljIHBhcmFtZXRlcnMgYmVpbmcgY29uZmlndXJlZC4gQXJlIHRoZXkganVzdCB1c2luZyB0aGUgc3RhbmRhcmQgcmVnaXN0ZXIgb2Zmc2V0cyBvciBhcmUgdGhleSBwYXNzaW5nIHNwZWNpZmljIHZhbHVlcyB0aGF0IGFyZSBjaGlwLXNwZWNpZmljPyBBbHNvLCB3aGF0IGFyZSB0aGUgc3Vycm91bmRpbmcgY29kZSBjb21tZW50cz8gRG8gdGhleSBzaGVkIGFueSBsaWdodCBvbiB0aGUgZGVzaWduIGdvYWxzIG9mIHRoZSBmZWF0dXJlPwoKQWRkaXRpb25hbGx5LCB3aGlsZSBJJiMzOTttIGluIHRoZXJlLCBJJiMzOTtsbCBpbXBsaWNpdGx5IGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIGByODE2OWAgZHJpdmVyIGl0c2VsZi4gV2hhdCBkZXZpY2VzIChzcGVjaWZpY2FsbHksIFJlYWx0ZWsgRXRoZXJuZXQgY2hpcHMpIGRvZXMgdGhpcyBkcml2ZXIgc3VwcG9ydD8gS25vd2luZyB0aGUgdGFyZ2V0IGhhcmR3YXJlIHdpbGwgaGVscCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBpY3R1cmUuIEkmIzM5O2xsIHByb2JhYmx5IGxvb2sgYXQgdGhlIGRldmljZSBJRCB0YWJsZSBpZiBvbmUgZXhpc3RzICh0aGF0JiMzOTtzIHR5cGljYWxseSB3aGVyZSBkZXZpY2UgSURzIGFyZSBkZWZpbmVkKSwgb3IgYW55IG90aGVyIHBsYWNlIHRoYXQgaWRlbnRpZmllcyB0aGUgc3VwcG9ydGVkIGRldmljZXMuIFRoaXMgd2lsbCBwcm92aWRlIGEgY3J1Y2lhbCB1bmRlcnN0YW5kaW5nIG9mIGRldmljZSBjb21wYXRpYmlsaXR5LCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgaGFyZHdhcmUgdmFyaWF0aW9ucy4gVGhhdCBjb250ZXh0IGlzIGdvaW5nIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGludGVycHJldCB3aGF0JiMzOTtzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzEzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMTM1Olx0XG4zMTM2Olx0c3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4zMTM3Olx0e1xuMzEzODpcdFx0dTggdmFsODtcbjMxMzk6XHRcbjMxNDA6XHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2MgUlRMX0dJR0FfTUFDX1ZFUl8zMilcbjMxNDE6XHRcdFx0cmV0dXJuO1xuMzE0MjpcdFxuMzE0MzpcdFx0LyogRG9uJiMzOTt0IGVuYWJsZSBBU1BNIGluIHRoZSBjaGlwIGlmIE9TIGNhbiYjMzk7dCBjb250cm9sIEFTUE0gKi9cbjMxNDQ6XHRcdGlmIChlbmFibGUgXHUwMDI2XHUwMDI2IHRwLVx1MDAzZWFzcG1fbWFuYWdlYWJsZSkge1xuMzE0NTpcdFx0XHQvKiBPbiB0aGVzZSBjaGlwIHZlcnNpb25zIEFTUE0gY2FuIGV2ZW4gaGFybVxuMzE0NjpcdFx0XHQgKiBidXMgY29tbXVuaWNhdGlvbiBvZiBvdGhlciBQQ0kgZGV2aWNlcy5cbjMxNDc6XHRcdFx0ICovXG4zMTQ4Olx0XHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzQyIHx8XG4zMTQ5Olx0XHRcdCAgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzQzKVxuMzE1MDpcdFx0XHRcdHJldHVybjtcbjMxNTE6XHRcbjMxNTI6XHRcdFx0cnRsX21vZF9jb25maWc1KHRwLCAwLCBBU1BNX2VuKTtcbjMxNTM6XHRcdFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuMzE1NDpcdFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNzA6XG4zMTU1Olx0XHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbjMxNTY6XHRcdFx0XHR2YWw4ID0gUlRMX1I4KHRwLCBJTlRfQ0ZHMF84MTI1KSB8IElOVF9DRkcwX0NMS1JFUUVOO1xuMzE1NzpcdFx0XHRcdFJUTF9XOCh0cCwgSU5UX0NGRzBfODEyNSwgdmFsOCk7XG4zMTU4Olx0XHRcdFx0YnJlYWs7XG4zMTU5Olx0XHRcdGRlZmF1bHQ6XG4zMTYwOlx0XHRcdFx0cnRsX21vZF9jb25maWcyKHRwLCAwLCBDbGtSZXFFbik7XG4zMTYxOlx0XHRcdFx0YnJlYWs7XG4zMTYyOlx0XHRcdH1cbjMxNjM6XHRcbjMxNjQ6XHRcdFx0cnRsX2VuYWJsZV9sdHIodHApO1xuMzE2NTpcdFx0XHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4zMTY2Olx0XHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcbjMxNjc6XHRcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzYxIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6XG4zMTY4Olx0XHRcdFx0LyogcmVzZXQgZXBoeSB0eC9yeCBkaXNhYmxlIHRpbWVyICovXG4zMTY5Olx0XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTtcbjMxNzA6XHRcdFx0XHQvKiBjaGlwIGNhbiB0cmlnZ2VyIEwxLjIgKi9cbjMxNzE6XHRcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDkyLCAweDAwZmYsIEJJVCgyKSk7XG4zMTcyOlx0XHRcdFx0YnJlYWs7XG4zMTczOlx0XHRcdGRlZmF1bHQ6XG4zMTc0Olx0XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI1MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIGBydGxfZW5hYmxlX2x0cmAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiAmIzM0O0xldCYjMzk7cyBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHJ0bF9lbmFibGVfbHRyYC4mIzM0OyBJJiMzOTttIG5vdCBqdXN0ICp0aGlua2luZyogYWJvdXQgaXQsIGJ1dCBhbHJlYWR5IG1lbnRhbGx5IHBhcnNpbmcgaXQuIEkgcHJvYmFibHkgaGF2ZSBhIGdvb2QgaWRlYSBvZiB3aGVyZSB0byBsb29rLCBnaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGhvdyB0aGlzIGZ1bmN0aW9uIChvciBwZXJoYXBzIG1hY3JvLCBrbm93aW5nIGhvdyB0aGluZ3MgYXJlIHN0cnVjdHVyZWQpIGhhbmRsZXMgdGhlIGVuYWJsZW1lbnQgb2YgcmlnaHQtdG8tbGVmdCB0ZXh0IHJlbmRlcmluZy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIGJlaGF2aW5nIGFzIGV4cGVjdGVkIGFuZCBub3QgY2F1c2luZyBhbnkgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgd2l0aGluIG91ciByZW5kZXJpbmcgZW5naW5lLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBjcml0aWNhbCBzZWN0aW9ucyBvZiBjb2RlIHRoYXQgZGlyZWN0bHkgaW1wYWN0IHRleHQgZGlyZWN0aW9uYWxpdHksIGxvY2FsZSBoYW5kbGluZywgYW5kIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciByZW5kZXJpbmcgbGF5ZXJzLiBJcyBpdCBjb3JyZWN0bHkgc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgZmxhZ3MsIHRvZ2dsaW5nIHRoZSBuZWNlc3NhcnkgaW50ZXJuYWwgc3RhdGVzLCBhbmQgcHJvcGFnYXRpbmcgdGhlc2UgY2hhbmdlcyB0byB0aGUgcmVsZXZhbnQgZG93bnN0cmVhbSBjb21wb25lbnRzPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBtZW1vcnkgbGVha3MsIG9yIGluY29ycmVjdCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcGxhdGZvcm0mIzM5O3MgZGVmYXVsdCBiZWhhdmlvciwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjb21wbGV4IHNjcmlwdHMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIGEgcmFwaWQsIGluLWRlcHRoIGV2YWx1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMzcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzAzNzpcdFxuMzAzODpcdHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuMzAzOTpcdHtcbjMwNDA6XHRcdC8qIFRoZSBjaGlwIG11c3Qgbm90IGlzc3VlIExUUiBtZXNzYWdlcyB1bmxlc3MgTFRSIGlzIGVuYWJsZWQgZm9yIHRoZVxuMzA0MTpcdFx0ICogd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBwY2lfY29uZmlndXJlX2x0cigpIHdvcmtzIHRoYXQgb3V0XG4zMDQyOlx0XHQgKiBhbmQgcmVjb3JkcyB0aGUgcmVzdWx0IGluIHBjaV9kZXYtXHUwMDNlbHRyX3BhdGgsIHdoaWNoIGV4aXN0cyBvbmx5IHdpdGhcbjMwNDM6XHRcdCAqIENPTkZJR19QQ0lFQVNQTTsgd2l0aG91dCBpdCB0aGUgUENJIGNvcmUgbmV2ZXIgZW5hYmxlcyBMVFIgYW55d2hlcmUuXG4zMDQ0Olx0XHQgKi9cbjMwNDU6XHQjaWZkZWYgQ09ORklHX1BDSUVBU1BNXG4zMDQ2Olx0XHRpZiAoIXRwLVx1MDAzZXBjaV9kZXYtXHUwMDNlbHRyX3BhdGgpXG4zMDQ3Olx0XHRcdHJldHVybjtcbjMwNDg6XHQjZWxzZVxuMzA0OTpcdFx0cmV0dXJuO1xuMzA1MDpcdCNlbmRpZlxuMzA1MTpcdFxuMzA1MjpcdFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuMzA1MzpcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOlxuMzA1NDpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XG4zMDU1Olx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfU05PT1AsIDB4MDAwMCwgTFRSX1NOT09QX0VOKTtcbjMwNTY6XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuMzA1NzpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4OGMwOSk7XG4zMDU4Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkOCwgMHg5MDAzKTtcbjMwNTk6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDkwMDMpO1xuMzA2MDpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGEsIDB4OTAwMyk7XG4zMDYxOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNiwgMHg5MDAzKTtcbjMwNjI6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xuMzA2MzpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZTgsIDB4ODg3YSk7XG4zMDY0Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlYSwgMHg5MDAzKTtcbjMwNjU6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVjLCAweDhjMDkpO1xuMzA2NjpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZWUsIDB4OTAwMyk7XG4zMDY3Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMCwgMHg4YTYyKTtcbjMwNjg6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xuMzA2OTpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZjQsIDB4ODgzZSk7XG4zMDcwOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmNiwgMHg5MDAzKTtcbjMwNzE6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY4LCAweDg4NDkpO1xuMzA3MjpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZmEsIDB4OTAwMyk7XG4zMDczOlx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDAsIExJTktfU1BFRURfQ0hBTkdFX0VOKTtcbjMwNzQ6XHRcdFx0YnJlYWs7XG4zMDc1Olx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNzA6XG4zMDc2Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcbjMwNzc6XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xuMzA3ODpcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XG4zMDc5Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMiwgMHg4YzA5KTtcbjMwODA6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xuMzA4MTpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDQsIDB4OTAwMyk7XG4zMDgyOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcbjMwODM6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xuMzA4NDpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGMsIDB4OTAwMyk7XG4zMDg1Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlOCwgMHg4ODdhKTtcbjMwODY6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVhLCAweDkwMDMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBUcm91Ymxlc2hvb3RpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGByODE2OWAsIHdoaWNoIGlzIHRoZSBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIGZvciB2YXJpb3VzIFBDSS9QQ0llIGNhcmRzLiBSaWdodCBhd2F5LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gTGV0JiMzOTtzIGdvIGJhY2sgdG8gc2VjdGlvbiAyIG9mIHRoZXNlIGluc3RydWN0aW9ucy4gQWgsIHllcywgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsJiMzNDsgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgYW5kIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGV0Yy4gVGhleSByZXF1aXJlIHRoZSBwaHlzaWNhbCBjYXJkcywgd2hpY2ggYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoKQnV0IHdhaXQsIG5vdyBJJiMzOTttIHRoaW5raW5nLCB3aGF0ICppcyogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT8gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgUUVNVSBlbnZpcm9ubWVudCBpcyBhY3R1YWxseSBsaWtlLiBMZXQmIzM5O3MgbGlzdCB0aG9zZSBzdGFuZGFyZCBlbXVsYXRlZCBOSUNzLi4uIG9rYXksIGUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgcGNuZXQsIG5lMmtfcGNpLCB2aXJ0aW8tbmV0LXBjaSwgYW5kIHZteG5ldDMuIFdhaXQsIG5vdyBJIHNlZSB0aGF0IHRoZSBydGw4MTM5IGlzIGEgMTAvMTAwIE1iaXQgUmVhbHRlayBkcml2ZW4gYnkgZHJpdmVycyBsaWtlIGA4MTM5Y3BgIGFuZCBgODEzOXRvb2AuIFRoaXMgaXNuJiMzOTt0IHRoZSBzYW1lIGFzIHRoZSByODE2OSBJJiMzOTttIHdvcmtpbmcgd2l0aCEKCkFscmlnaHQsIGJhY2sgdG8gdGhlIGNvcmUgcXVlc3Rpb246IGRvZXMgUUVNVSBlbXVsYXRlIHRoZSByODE2OT8gT2theSwgSSYjMzk7dmUgZ290IHRvIGNvbmZpcm0gaWYgdGhlIFJUTDgxMzkgZW11bGF0aW9uIGluIFFFTVUgaXMgcmVhbGx5IHdoYXQgSSBuZWVkLiBBaCwgaXQgYXBwZWFycyB0aGF0IFFFTVUgaGFzIGBody9uZXQvcnRsODEzOS5jYCBmb3IgUlRMODEzOUMmIzQzOyAoUENJIElEIDEwZWM6ODEzOSkuIE5vdywgSSYjMzk7bSB0aGlua2luZy4uLiBkb2VzIHRoZSBSVEw4MTM5IHVzZSBgcjgxNjlgIHNvbWVob3c/IEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIGZpbmQgb3V0IHdoYXQgUENJIElEcyBgcjgxNjlgIGFjdHVhbGx5IHN1cHBvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFLioweDgxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNDMtXHR7IFBDSV9WREVWSUNFX1NVQihMSU5LU1lTLCAweDEwMzIsIFBDSV9BTllfSUQsIDB4MDAyNCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI0NDpcdHsgUENJX0RFVklDRV9TVUIoMHgwMDAxLCAweDgxNjgsIFBDSV9BTllfSUQsIDB4MjQxMCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0NS1cdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyNSkgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA0NgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIGZvY3VzaW5nIG9uIHRoZSBQQ0kgdGFibGUgaW4gYHI4MTY5X21haW4uY2A6CgoqKkRpdmluZyBpbnRvIHRoZSByODE2OSBEcml2ZXImIzM5O3MgUENJIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGByODE2OWAgZHJpdmVyIGhhbmRsZXMgaXRzIFBDSSBpbnRlcmZhY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCBmb3IgdGhlIGp1Z3VsYXIg4oCTIHRoZSBQQ0kgdGFibGUsIGxpa2VseSBkZWNsYXJlZCBzb21ld2hlcmUgd2l0aGluIGByODE2OV9tYWluLmNgLiBUaGF0IHRhYmxlIGlzIHRoZSBibHVlcHJpbnQsIHRoZSBndWlkZSwgZm9yIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUuIEl0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGRldmljZSBJRHMgdGhpcyBkcml2ZXIgcmVjb2duaXplcywgd2hhdCByZXNvdXJjZXMgaXQgY2xhaW1zLCBhbmQgd2hpY2ggcHJvYmUgZnVuY3Rpb25zIGl0IGNhbGxzLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBzdHJ1Y3R1cmVkIGFycmF5IG9yIHNvbWV0aGluZyBzaW1pbGFyLCBtYXBwaW5nIGRldmljZSBpZGVudGlmaWVycyB0byBkcml2ZXItc3BlY2lmaWMgZGF0YS4gSSYjMzk7bSBrZWVuIHRvIHNlZSBpZiB0aGV5JiMzOTtyZSB1c2luZyBhIHN0YW5kYXJkIFBDSSBJRCB0YWJsZSBvciBzb21ldGhpbmcgbW9yZSBlbGFib3JhdGUuIFRoaXMgdGFibGUgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoaWNoIFJlYWx0ZWsgY2hpcHMgdGhpcyBkcml2ZXIgc3VwcG9ydHMgYW5kIGhvdyBpdCBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIGRpZmZlcmVudCByZXZpc2lvbnMgb3IgY29uZmlndXJhdGlvbnMgb2YgdGhvc2UgY2hpcHMuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIG1hcCB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjIwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHJ0bF9jaGlwX2luZm9zX2V4dGVuZGVkW10gPSB7XG4gMjIxOlx0XHR7IDB4N2ZmZmZmZmYsIDB4MDAwMDAwMDAsIFJUTF9HSUdBX01BQ19WRVJfNjQsIFwmIzM0O1JUTDkxNTFBU1wmIzM0OyxcbiAyMjI6XHRcdCAgRklSTVdBUkVfOTE1MUFfMX0sXG4gMjIzOlx0XG4gMjI0Olx0XHQvKiBDYXRjaC1hbGwgKi9cbiAyMjU6XHRcdHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgUlRMX0dJR0FfTUFDX05PTkUgfVxuIDIyNjpcdH07XG4gMjI3Olx0XG4gMjI4Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ0bDgxNjlfcGNpX3RibFtdID0ge1xuIDIyOTpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHgyNTAyKSB9LFxuIDIzMDpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHgyNjAwKSB9LFxuIDIzMTpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTI5KSB9LFxuIDIzMjpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTM2KSwgLmRyaXZlcl9kYXRhID0gUlRMX0NGR19OT19HQklUIH0sXG4gMjMzOlx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxNjEpIH0sXG4gMjM0Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxNjIpIH0sXG4gMjM1Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxNjcpIH0sXG4gMjM2Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxNjgpIH0sXG4gMjM3Olx0XHR7IFBDSV9WREVWSUNFKE5DVUJFLFx0MHg4MTY4KSB9LFxuIDIzODpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTY5KSB9LFxuIDIzOTpcdFx0eyBQQ0lfVkRFVklDRShETElOSyxcdDB4NDMwMCkgfSxcbiAyNDA6XHRcdHsgUENJX1ZERVZJQ0UoRExJTkssXHQweDQzMDIpIH0sXG4gMjQxOlx0XHR7IFBDSV9WREVWSUNFKEFULFx0MHhjMTA3KSB9LFxuIDI0MjpcdFx0eyBQQ0lfVkRFVklDRShVU1IsXHQweDAxMTYpIH0sXG4gMjQzOlx0XHR7IFBDSV9WREVWSUNFX1NVQihMSU5LU1lTLCAweDEwMzIsIFBDSV9BTllfSUQsIDB4MDAyNCkgfSxcbiAyNDQ6XHRcdHsgUENJX0RFVklDRV9TVUIoMHgwMDAxLCAweDgxNjgsIFBDSV9BTllfSUQsIDB4MjQxMCkgfSxcbiAyNDU6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyNSkgfSxcbiAyNDY6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyNikgfSxcbiAyNDc6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyNykgfSxcbiAyNDg6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MzAwMCkgfSxcbiAyNDk6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4NTAwMCkgfSxcbiAyNTA6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MGUxMCkgfSxcbiAyNTE6XHRcdHsgfVxuIDI1MjpcdH07XG4gMjUzOlx0XG4gMjU0Olx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ0bDgxNjlfcGNpX3RibCk7XG4gMjU1Olx0XG4gMjU2Olx0ZW51bSBydGxfcmVnaXN0ZXJzIHtcbiAyNTc6XHRcdE1BQzBcdFx0PSAwLFx0LyogRXRoZXJuZXQgaGFyZHdhcmUgYWRkcmVzcy4gKi9cbiAyNTg6XHRcdE1BQzRcdFx0PSA0LFxuIDI1OTpcdFx0TUFSMFx0XHQ9IDgsXHQvKiBNdWx0aWNhc3QgZmlsdGVyLiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzA2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQ2hlY2tpbmcgdGhlIEV0aGVybmV0IERyaXZlcnMqKgoKQWxyaWdodCwgZ2l2ZW4gd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLCBteSBndXQgdGVsbHMgbWUgdG8gc3RhcnQgd2l0aCB0aGUgbG93LWhhbmdpbmcgZnJ1aXQuIExldCYjMzk7cyBtYWtlIHN1cmUgd2UgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBzb21ldGhpbmcgb2J2aW91cywgYSBwb3RlbnRpYWwgaW5jb21wYXRpYmlsaXR5IG9yIGEgc2ltcGxlLCBlYXNpbHktbWlzc2VkIGRldGFpbC4gTGV0JiMzOTtzIGNoZWNrIGA4MTM5Y3AuY2AgYW5kIGA4MTM5dG9vLmNgLiBUaGVzZSBhcmUgdGhlIGRyaXZlcnMgZm9yIHRoZSBSZWFsdGVrIDgxMzkgY2hpcHNldCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LiBXZSBjYW4gcXVpY2tseSBjb21wYXJlIHRoZW0sIG1ha2Ugc3VyZSB0aGUgdmVyc2lvbnMgYXJlIGNvbnNpc3RlbnQsIGFuZCBjaGVjayBmb3IgYW55IGJsYXRhbnQgZXJyb3JzIG9yIHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBjYXVzaW5nIHRoZSBpc3N1ZS4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgYmVmb3JlIGRpdmluZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BDSV9ERVZJQ0UuKjgxMzkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jPTE2MjE9c3RhdGljIGludCBjcF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jLTE2NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jOjE2NzE6I2RlZmluZSBDUF9FRVBST01fTUFHSUMgUENJX0RFVklDRV9JRF9SRUFMVEVLXzgxMzlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOWNwLmMtMTY3Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jPTE4ODY9c3RhdGljIGludCBjcF9pbml0X29uZSAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xODk4LVx0aWYgKHBkZXYtXHUwMDNldmVuZG9yID09IFBDSV9WRU5ET1JfSURfUkVBTFRFSyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOWNwLmM6MTg5OTpcdCAgICBwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSUNFX0lEX1JFQUxURUtfODEzOSBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VyZXZpc2lvbiBcdTAwM2MgMHgyMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xOTAwLVx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jPTIxMDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGNwX3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOWNwLmM6MjEwNTogICAgICAgIHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1JFQUxURUssICAgICBQQ0lfREVWSUNFX0lEX1JFQUxURUtfODEzOSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jLTIxMDYtICAgICAgICB7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9UVFRFQ0gsICAgICAgUENJX0RFVklDRV9JRF9UVFRFQ0hfTUMzMjIpLCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jPTIzNz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODEzOV9wY2lfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyMzg6XHR7IFBDSV9ERVZJQ0UoMHgxMGVjLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyMzk6XHR7IFBDSV9ERVZJQ0UoMHgxMGVjLCAweDgxMzgpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDA6XHR7IFBDSV9ERVZJQ0UoMHgxMTEzLCAweDEyMTEpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDE6XHR7IFBDSV9ERVZJQ0UoMHgxNTAwLCAweDEzNjApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDI6XHR7IFBDSV9ERVZJQ0UoMHg0MDMzLCAweDEzNjApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDM6XHR7IFBDSV9ERVZJQ0UoMHgxMTg2LCAweDEzMDApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDQ6XHR7IFBDSV9ERVZJQ0UoMHgxMTg2LCAweDEzNDApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDU6XHR7IFBDSV9ERVZJQ0UoMHgxM2QxLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDY6XHR7IFBDSV9ERVZJQ0UoMHgxMjU5LCAweGExMTcpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDc6XHR7IFBDSV9ERVZJQ0UoMHgxMjU5LCAweGExMWUpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDg6XHR7IFBDSV9ERVZJQ0UoMHgxNGVhLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDk6XHR7IFBDSV9ERVZJQ0UoMHgxNGVhLCAweGFiMDcpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTA6XHR7IFBDSV9ERVZJQ0UoMHgxMWRiLCAweDEyMzQpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTE6XHR7IFBDSV9ERVZJQ0UoMHgxNDMyLCAweDkxMzApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTI6XHR7IFBDSV9ERVZJQ0UoMHgwMmFjLCAweDEwMTIpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTM6XHR7IFBDSV9ERVZJQ0UoMHgwMThhLCAweDAxMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTQ6XHR7IFBDSV9ERVZJQ0UoMHgxMjZjLCAweDEyMTEpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTU6XHR7IFBDSV9ERVZJQ0UoMHgxNzQzLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTY6XHR7IFBDSV9ERVZJQ0UoMHgwMjFiLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTc6XHR7IFBDSV9ERVZJQ0UoMHgxNmVjLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtMjYwLVx0LyogQm9ndXMgODEzOSBzaWxpY29uIHJlcG9ydHMgODEyOSB3aXRob3V0IGV4dGVybmFsIFBST00gOi0oICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNjE6XHR7IFBDSV9ERVZJQ0UoMHgxMGVjLCAweDgxMjkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNjItI2VuZGlmXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtMjcwLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNzE6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9BTllfSUQsIDB4ODEzOSwgMHgxMGVjLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNzI6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9BTllfSUQsIDB4ODEzOSwgMHgxMTg2LCAweDEzMDApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNzM6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9BTllfSUQsIDB4ODEzOSwgMHgxM2QxLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM9OTM4PXN0YXRpYyBpbnQgcnRsODEzOV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy05NTMtXHRpZiAocGRldi1cdTAwM2V2ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9SRUFMVEVLIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6OTU0Olx0ICAgIHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5IFx1MDAyNlx1MDAyNiBwZGV2LVx1MDAzZXJldmlzaW9uIFx1MDAzZT0gMHgyMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtOTU1LVx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy05NjEtXHRpZiAocGRldi1cdTAwM2V2ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9SRUFMVEVLIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6OTYyOlx0ICAgIHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtOTYzLVx0ICAgIHBkZXYtXHUwMDNlc3Vic3lzdGVtX3ZlbmRvciA9PSBQQ0lfVkVORE9SX0lEX0FUSEVST1MgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzo5NjQ6XHQgICAgcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy05NjUtXHRcdHByX2luZm8oXCYjMzQ7T1FPIE1vZGVsIDIgZGV0ZWN0ZWQuIEZvcmNpbmcgUElPXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NzYKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogMTEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBSZWFsdGVrIFJUTDgxNjkgRHJpdmVyIGZvciBGdXp6aW5nIEZlYXNpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBzZWUgaWYgdGhlIGByODE2OWAgZHJpdmVyLCBzcGVjaWZpY2FsbHksIGlzIGV2ZW4gcHJlc2VudCBvciB1c2VkIGluIHRoZSBRRU1VIGVudmlyb25tZW50LCBvciBpZiBpdCYjMzk7cyBtZWRpYXRlZCB0aHJvdWdoIGFuIGVtdWxhdGVkIGRldmljZS4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IFFFTVUgZW11bGF0ZXMgdGhlIFJUTDgxMzksIGJ1dCB0aGF0JiMzOTtzIGEgZGlmZmVyZW50IGJlYXN0LCBhbmQgZnJvbSBhIHF1aWNrIGNoZWNrLCB0aGVyZSYjMzk7cyBubyBuYXRpdmUgZW11bGF0aW9uIG9mIHRoZSBSVEw4MTY5LgoKU28sIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSBwYXRoIHRvIHRoaXMgZHJpdmVyPyBMZXQmIzM5O3MgY29uc2lkZXIgdGhlIHByb21wdC4gU2VjdGlvbiAyIGhpZ2hsaWdodHMgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsJiMzNDsgc3BlY2lmaWNhbGx5IGNhbGxpbmcgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiBuZXR3b3JrIGRyaXZlcnMsIGluIGdlbmVyYWwsIGFyZSBmYWlyIGdhbWUgaW4gc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwcyB1c2luZyBRRU1VIG9yIEdDRS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB2aXJ0dWFsIGRldmljZXMgbGlrZSB2aXJ0aW8sIGFuZCBsb29wYmFja3MsIGV0Yy4sIGJ1dCBhbHNvIHBoeXNpY2FsIFBDSWUgbmV0d29yayBkcml2ZXJzLCBidXQgYXJlIHRoZSBsaWtlcyBvZiBgcjgxNjlgLCBgZTEwMDBgLCBldGMuLCByZWFjaGFibGUgaW4gdGhlIHN0YW5kYXJkIHNldHVwPyBJdCBzZWVtcyBsaWtlIGl0IGlzbiYjMzk7dC4KCk5vdywgZm9jdXNpbmcgb24gYHI4MTY5YDogSXQmIzM5O3MgYSBQQ0llL1BDSSBuZXR3b3JrIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4MTY5LzgxNjgvODEyNSBjaGlwcy4gTXkgdW5kZXJzdGFuZGluZyBpcyBzb2xpZDogdGhpcyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0Ugc3l6a2FsbGVyIFZNcy4gRXZlbiAqaWYqIHNvbWVvbmUgaGFkIGEgUmVhbHRlayA4MTY5IGNhcmQsIGl0IHdvdWxkbiYjMzk7dCBiZSBhdHRhY2hlZCBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBpbnN0YW5jZS4KCkxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIG1vZGlmaWVkIGNvZGUsIGBydGxfZW5hYmxlX2x0cigpYC4gVGhpcyBpcyBjYWxsZWQgd2l0aGluIGBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlYCwgd2hpY2ggaXRzZWxmIGlzIHBhcnQgb2YgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24vcG93ZXIgbWFuYWdlbWVudCDigJMgZHVyaW5nIHByb2JlLCB1cC9kb3duIGV2ZW50cyBvciBsaW5rIGNoYW5nZXMgb2YgKnRoZSBwaHlzaWNhbCogUENJZSBkZXZpY2UsIHdoaWNoIEkgYW0gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBUaGF0IGNvZGUgY29uZmlndXJlcyBQQ0llIExUUiAoTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nKSBmb3IgQVNQTSAoQWN0aXZlIFN0YXRlIFBvd2VyIE1hbmFnZW1lbnQpLCB3aGljaCBpcyBzcGVjaWZpYyB0byBpbnRlcm5hbCBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGZvciBwaHlzaWNhbCBSZWFsdGVrIFBDSWUgTklDcy4KClRoZXJlZm9yZSwgbGV0JiMzOTtzIHZlcmlmeToKCjEuICBgcjgxNjlgIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIFBDSWUgTklDIGRyaXZlciAoUmVhbHRlayA4MTY5LzgxNjgvODEyNSwgd2hpY2ggSSBrbm93IGl0IGlzKSAtICoqWWVzKiouCjIuICBJdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UuIFFFTVUgaGFzIFJUTDgxMzksIGJ1dCBub3QgUlRMODE2OS84MTY4LzgxMjUsIGFuZCBzdGFuZGFyZCBzeXprYWxsZXIgVk1zIGRvbiYjMzk7dCBhdHRhY2ggcjgxNjkgLSAqKk5vKiouCjMuICBJdCYjMzk7cyBub3QgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzIC0gKipObyoqLgoKU28sIGFjY29yZGluZyB0byB0aGUgcHJvbXB0LCB0aGlzIGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IG1hcHMgdG8gU2VjdGlvbiAyIG9mIHRoZSBwcm9tcHQ6CgomIzM0Oy0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgoqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkl0IGlzLgoKTXkgY29uY2x1c2lvbnMgYXJlOgoKKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqCiogICAqKkZvY3VzU3ltYm9sczogXFtcXSoqCiogICAqKkVuYWJsZUNvbmZpZ3M6IFxbXF0qKgoKQW5kIHRoZSByZWFzb25pbmcgaXM6IFRoZSBwYXRjaCBtb2RpZmllcyBgcnRsX2VuYWJsZV9sdHIoKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBuZXR3b3JrIGNhcmRzIChlLmcuIFJUTDgxNjgsIFJUTDgxMjUpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUENJZSBMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcgKExUUikgY29uZmlndXJhdGlvbiBpbiBydGxfZW5hYmxlX2x0cigpIHdpdGhpbiB0aGUgUmVhbHRlayByODE2OSBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBSZWFsdGVrIFBDSWUgbmV0d29yayBhZGFwdGVycyAoc3VjaCBhcyBSVEw4MTY4IG9yIFJUTDgxMjUpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFBDSWUgTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nIChMVFIpIGNvbmZpZ3VyYXRpb24gaW4gcnRsX2VuYWJsZV9sdHIoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgcjgxNjkgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUmVhbHRlayBQQ0llIG5ldHdvcmsgYWRhcHRlcnMgKHN1Y2ggYXMgUlRMODE2OCBvciBSVEw4MTI1KSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMzo1NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTFUMTM6NTQ6MjAuMjA3MjcxODUzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyNzgyNDYyODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQQ0llIExhdGVuY3kgVG9sZXJhbmNlIFJlcG9ydGluZyAoTFRSKSBjb25maWd1cmF0aW9uIGluIHJ0bF9lbmFibGVfbHRyKCkgd2l0aGluIHRoZSBSZWFsdGVrIHI4MTY5IG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBuZXR3b3JrIGFkYXB0ZXJzIChzdWNoIGFzIFJUTDgxNjggb3IgUlRMODEyNSkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTM6NTQ6MjAuMjA3Mjc2MTkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODA5NTIwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3OTNkY2U1ODg3YmZkZjZlZWFmMGVmYjM0YjVlOGZjNjM5NmYzMmI2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDEzOjU0OjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcXG5pbmRleCBlYzRmYzIxZmEyMWZiLi5jMzA1YThmMTk1NTFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcXG5AQCAtMzAzNyw2ICszMDM3LDE4IEBAIHN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcbiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbitcXHQvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIExUUiBpcyBlbmFibGVkIGZvciB0aGVcXG4rXFx0ICogd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBwY2lfY29uZmlndXJlX2x0cigpIHdvcmtzIHRoYXQgb3V0XFxuK1xcdCAqIGFuZCByZWNvcmRzIHRoZSByZXN1bHQgaW4gcGNpX2Rldi1cXHUwMDNlbHRyX3BhdGgsIHdoaWNoIGV4aXN0cyBvbmx5IHdpdGhcXG4rXFx0ICogQ09ORklHX1BDSUVBU1BNOyB3aXRob3V0IGl0IHRoZSBQQ0kgY29yZSBuZXZlciBlbmFibGVzIExUUiBhbnl3aGVyZS5cXG4rXFx0ICovXFxuKyNpZmRlZiBDT05GSUdfUENJRUFTUE1cXG4rXFx0aWYgKCF0cC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlbHRyX3BhdGgpXFxuK1xcdFxcdHJldHVybjtcXG4rI2Vsc2VcXG4rXFx0cmV0dXJuO1xcbisjZW5kaWZcXG4rXFxuIFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDoyMC42ODkwMTAwNTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQzNzk2NDkxMTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQQ0llIExhdGVuY3kgVG9sZXJhbmNlIFJlcG9ydGluZyAoTFRSKSBjb25maWd1cmF0aW9uIGluIHJ0bF9lbmFibGVfbHRyKCkgd2l0aGluIHRoZSBSZWFsdGVrIHI4MTY5IG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBuZXR3b3JrIGFkYXB0ZXJzIChzdWNoIGFzIFJUTDgxNjggb3IgUlRMODEyNSkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3OTNkY2U1ODg3YmZkZjZlZWFmMGVmYjM0YjVlOGZjNjM5NmYzMmI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMTM6NTQ6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiLi5jMzA1YThmMTk1NTFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMzAzNyw2ICszMDM3LDE4IEBAIHN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuK1x0LyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyBMVFIgaXMgZW5hYmxlZCBmb3IgdGhlXG4rXHQgKiB3aG9sZSBwYXRoIHVwIHRvIHRoZSByb290IHBvcnQuIHBjaV9jb25maWd1cmVfbHRyKCkgd29ya3MgdGhhdCBvdXRcbitcdCAqIGFuZCByZWNvcmRzIHRoZSByZXN1bHQgaW4gcGNpX2Rldi1cdTAwM2VsdHJfcGF0aCwgd2hpY2ggZXhpc3RzIG9ubHkgd2l0aFxuK1x0ICogQ09ORklHX1BDSUVBU1BNOyB3aXRob3V0IGl0IHRoZSBQQ0kgY29yZSBuZXZlciBlbmFibGVzIExUUiBhbnl3aGVyZS5cbitcdCAqL1xuKyNpZmRlZiBDT05GSUdfUENJRUFTUE1cbitcdGlmICghdHAtXHUwMDNlcGNpX2Rldi1cdTAwM2VsdHJfcGF0aClcbitcdFx0cmV0dXJuO1xuKyNlbHNlXG4rXHRyZXR1cm47XG4rI2VuZGlmXG4rXG4gXHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4gXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfODA6XG4gXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjIwLjY4OTAxMTkyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkyNTUxMDMyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXZhbHVhdGluZyB0aGUgcjgxNjkgUGF0Y2g6IEEgUUVNVSBcdTAwMjYgS2VybmVsIERpdmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gYXNzZXNzIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbiBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIgb3IgaWYgaXQncyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIOKAkyBiZWNhdXNlIHRoYXQgZHJhbWF0aWNhbGx5IGFmZmVjdHMgaG93IEkgYXBwcm9hY2ggdGhlIGV2YWx1YXRpb24sIGVzcGVjaWFsbHkgaW4gdGVybXMgb2YgZnV6emluZy5cblxuV2FpdCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgbGV0J3MgZXN0YWJsaXNoIGV4YWN0bHkgd2hhdCBgcjgxNjlgIGlzLiBJdCBoYW5kbGVzIGEgcmFuZ2Ugb2YgUmVhbHRlayBjaGlwczogUlRMODE2OSwgUlRMODE2OCwgUlRMODEyNSwgUlRMODEyNiwgYW5kIHByb2JhYmx5IG1vcmUuIEJ1dCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgZW11bGF0aW9uIGluIFFFTVUuIERvZXMgUUVNVSBtb2RlbCB0aGUgUlRMODE2OSBmYW1pbHk/XG5cbkFoYSEgTm93IEkgcmVtZW1iZXIuLi4gUUVNVSAqZG9lcyogZW11bGF0ZSBhIFJlYWx0ZWsgTklDLCB0aGUgYHJ0bDgxMzlgLiBJdHMgUENJIGRldmljZSBJRCBpcyAxMGVjOjgxMzksIGFuZCB0aGF04oCZcyBpbXBvcnRhbnQuIEJ1dCBpcyBgcjgxNjlgIHNwZWNpZmljYWxseSBlbXVsYXRlZCB0b28/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuXG5cbkxldOKAmXMgY2hlY2sgUUVNVSBkb2N1bWVudGF0aW9uLCB0aGUga2VybmVsIHNvdXJjZSwgb3IgaG93IGByODE2OWAgaXMgdHlwaWNhbGx5IHVzZWQuIEhvbGQgb24sIGEgc2VhcmNoIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSBpdHNlbGYgbWlnaHQgYmUgdGhlIHF1aWNrZXN0IHJvdXRlIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIGFueSBleGlzdGluZyBRRU1VIGludGVyYWN0aW9ucy4gTGV0J3Mgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDoyOS45NDQxMTc5MzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1OTc4MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsX2VuYWJsZV9sdHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MzAyND1zdGF0aWMgdm9pZCBydGxfZGlzYWJsZV9leGl0X2wxKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzAzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzozMDM4OnN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMwMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MzEzNj1zdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMxNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MzE2NDpcXHRcXHRydGxfZW5hYmxlX2x0cih0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzE2NS1cXHRcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDoyOS45ODk3MjIxMzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjQ4Mzk3NzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgcnRsX2VuYWJsZV9sdHJgIGluIGByODE2OV9tYWluLmNgKipcblxuQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBpcyBjbGVhci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYHJ0bF9lbmFibGVfbHRyYCB3aXRoaW4gdGhlIGByODE2OWAgZHJpdmVyLiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGByODE2OV9tYWluLmNgIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaXMgbGlrZWx5IGRlZmluZWQuIE15IG1haW4gZm9jdXMgaGVyZSBpcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbHMgdG8gYHJ0bF9lbmFibGVfbHRyYC4gSSB3YW50IHRvIHNlZSAqd2hlbiogYW5kICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gSXMgaXQgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U/IElzIGl0IHRyaWdnZXJlZCBieSBzb21lIHNwZWNpZmljIGhhcmR3YXJlIGV2ZW50PyBJcyBpdCBjb25kaXRpb25hbD8gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cuXG5cbkJleW9uZCB0aGUgY2FsbCBzaXRlcywgSSdtIGdvaW5nIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYHJ0bF9lbmFibGVfbHRyYC4gVGhvc2Ugd2lsbCBwcm92aWRlIGNydWNpYWwgY2x1ZXMgYWJvdXQgdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQgdGhlIHNwZWNpZmljIHBhcmFtZXRlcnMgYmVpbmcgY29uZmlndXJlZC4gQXJlIHRoZXkganVzdCB1c2luZyB0aGUgc3RhbmRhcmQgcmVnaXN0ZXIgb2Zmc2V0cyBvciBhcmUgdGhleSBwYXNzaW5nIHNwZWNpZmljIHZhbHVlcyB0aGF0IGFyZSBjaGlwLXNwZWNpZmljPyBBbHNvLCB3aGF0IGFyZSB0aGUgc3Vycm91bmRpbmcgY29kZSBjb21tZW50cz8gRG8gdGhleSBzaGVkIGFueSBsaWdodCBvbiB0aGUgZGVzaWduIGdvYWxzIG9mIHRoZSBmZWF0dXJlP1xuXG5BZGRpdGlvbmFsbHksIHdoaWxlIEknbSBpbiB0aGVyZSwgSSdsbCBpbXBsaWNpdGx5IGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIGByODE2OWAgZHJpdmVyIGl0c2VsZi4gV2hhdCBkZXZpY2VzIChzcGVjaWZpY2FsbHksIFJlYWx0ZWsgRXRoZXJuZXQgY2hpcHMpIGRvZXMgdGhpcyBkcml2ZXIgc3VwcG9ydD8gS25vd2luZyB0aGUgdGFyZ2V0IGhhcmR3YXJlIHdpbGwgaGVscCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBpY3R1cmUuIEknbGwgcHJvYmFibHkgbG9vayBhdCB0aGUgZGV2aWNlIElEIHRhYmxlIGlmIG9uZSBleGlzdHMgKHRoYXQncyB0eXBpY2FsbHkgd2hlcmUgZGV2aWNlIElEcyBhcmUgZGVmaW5lZCksIG9yIGFueSBvdGhlciBwbGFjZSB0aGF0IGlkZW50aWZpZXMgdGhlIHN1cHBvcnRlZCBkZXZpY2VzLiBUaGlzIHdpbGwgcHJvdmlkZSBhIGNydWNpYWwgdW5kZXJzdGFuZGluZyBvZiBkZXZpY2UgY29tcGF0aWJpbGl0eSwgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsIGhhcmR3YXJlIHZhcmlhdGlvbnMuIFRoYXQgY29udGV4dCBpcyBnb2luZyB0byBtYWtlIGl0IGVhc2llciB0byBpbnRlcnByZXQgd2hhdCdzIGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1MywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjMzLjIzODEyMTc5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMTM1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMTM1OlxcdFxcbjMxMzY6XFx0c3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuMzEzNzpcXHR7XFxuMzEzODpcXHRcXHR1OCB2YWw4O1xcbjMxMzk6XFx0XFxuMzE0MDpcXHRcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2MgUlRMX0dJR0FfTUFDX1ZFUl8zMilcXG4zMTQxOlxcdFxcdFxcdHJldHVybjtcXG4zMTQyOlxcdFxcbjMxNDM6XFx0XFx0LyogRG9uJ3QgZW5hYmxlIEFTUE0gaW4gdGhlIGNoaXAgaWYgT1MgY2FuJ3QgY29udHJvbCBBU1BNICovXFxuMzE0NDpcXHRcXHRpZiAoZW5hYmxlIFxcdTAwMjZcXHUwMDI2IHRwLVxcdTAwM2Vhc3BtX21hbmFnZWFibGUpIHtcXG4zMTQ1OlxcdFxcdFxcdC8qIE9uIHRoZXNlIGNoaXAgdmVyc2lvbnMgQVNQTSBjYW4gZXZlbiBoYXJtXFxuMzE0NjpcXHRcXHRcXHQgKiBidXMgY29tbXVuaWNhdGlvbiBvZiBvdGhlciBQQ0kgZGV2aWNlcy5cXG4zMTQ3OlxcdFxcdFxcdCAqL1xcbjMxNDg6XFx0XFx0XFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzQyIHx8XFxuMzE0OTpcXHRcXHRcXHQgICAgdHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNDMpXFxuMzE1MDpcXHRcXHRcXHRcXHRyZXR1cm47XFxuMzE1MTpcXHRcXG4zMTUyOlxcdFxcdFxcdHJ0bF9tb2RfY29uZmlnNSh0cCwgMCwgQVNQTV9lbik7XFxuMzE1MzpcXHRcXHRcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbjMxNTQ6XFx0XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzcwOlxcbjMxNTU6XFx0XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOlxcbjMxNTY6XFx0XFx0XFx0XFx0dmFsOCA9IFJUTF9SOCh0cCwgSU5UX0NGRzBfODEyNSkgfCBJTlRfQ0ZHMF9DTEtSRVFFTjtcXG4zMTU3OlxcdFxcdFxcdFxcdFJUTF9XOCh0cCwgSU5UX0NGRzBfODEyNSwgdmFsOCk7XFxuMzE1ODpcXHRcXHRcXHRcXHRicmVhaztcXG4zMTU5OlxcdFxcdFxcdGRlZmF1bHQ6XFxuMzE2MDpcXHRcXHRcXHRcXHRydGxfbW9kX2NvbmZpZzIodHAsIDAsIENsa1JlcUVuKTtcXG4zMTYxOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjMxNjI6XFx0XFx0XFx0fVxcbjMxNjM6XFx0XFxuMzE2NDpcXHRcXHRcXHRydGxfZW5hYmxlX2x0cih0cCk7XFxuMzE2NTpcXHRcXHRcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbjMxNjY6XFx0XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbjMxNjc6XFx0XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzYxIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6XFxuMzE2ODpcXHRcXHRcXHRcXHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cXG4zMTY5OlxcdFxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTQsIDB4ZmYwMCwgMCk7XFxuMzE3MDpcXHRcXHRcXHRcXHQvKiBjaGlwIGNhbiB0cmlnZ2VyIEwxLjIgKi9cXG4zMTcxOlxcdFxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTIsIDB4MDBmZiwgQklUKDIpKTtcXG4zMTcyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjMxNzM6XFx0XFx0XFx0ZGVmYXVsdDpcXG4zMTc0OlxcdFxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDozMy4yMzgzMTMwODhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzk5MDMyNjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBgcnRsX2VuYWJsZV9sdHJgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiBcIkxldCdzIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnRsX2VuYWJsZV9sdHJgLlwiIEknbSBub3QganVzdCAqdGhpbmtpbmcqIGFib3V0IGl0LCBidXQgYWxyZWFkeSBtZW50YWxseSBwYXJzaW5nIGl0LiBJIHByb2JhYmx5IGhhdmUgYSBnb29kIGlkZWEgb2Ygd2hlcmUgdG8gbG9vaywgZ2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgdGhpcyBmdW5jdGlvbiAob3IgcGVyaGFwcyBtYWNybywga25vd2luZyBob3cgdGhpbmdzIGFyZSBzdHJ1Y3R1cmVkKSBoYW5kbGVzIHRoZSBlbmFibGVtZW50IG9mIHJpZ2h0LXRvLWxlZnQgdGV4dCByZW5kZXJpbmcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkIGFuZCBub3QgY2F1c2luZyBhbnkgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgd2l0aGluIG91ciByZW5kZXJpbmcgZW5naW5lLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBjcml0aWNhbCBzZWN0aW9ucyBvZiBjb2RlIHRoYXQgZGlyZWN0bHkgaW1wYWN0IHRleHQgZGlyZWN0aW9uYWxpdHksIGxvY2FsZSBoYW5kbGluZywgYW5kIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciByZW5kZXJpbmcgbGF5ZXJzLiBJcyBpdCBjb3JyZWN0bHkgc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgZmxhZ3MsIHRvZ2dsaW5nIHRoZSBuZWNlc3NhcnkgaW50ZXJuYWwgc3RhdGVzLCBhbmQgcHJvcGFnYXRpbmcgdGhlc2UgY2hhbmdlcyB0byB0aGUgcmVsZXZhbnQgZG93bnN0cmVhbSBjb21wb25lbnRzPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG1lbW9yeSBsZWFrcywgb3IgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFib3V0IHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgYmVoYXZpb3IsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBzY3JpcHRzLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyBhIHJhcGlkLCBpbi1kZXB0aCBldmFsdWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjUzLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDozNS42MzczNDgwNjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkxMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAzNyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzAzNzpcXHRcXG4zMDM4OlxcdHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbjMwMzk6XFx0e1xcbjMwNDA6XFx0XFx0LyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyBMVFIgaXMgZW5hYmxlZCBmb3IgdGhlXFxuMzA0MTpcXHRcXHQgKiB3aG9sZSBwYXRoIHVwIHRvIHRoZSByb290IHBvcnQuIHBjaV9jb25maWd1cmVfbHRyKCkgd29ya3MgdGhhdCBvdXRcXG4zMDQyOlxcdFxcdCAqIGFuZCByZWNvcmRzIHRoZSByZXN1bHQgaW4gcGNpX2Rldi1cXHUwMDNlbHRyX3BhdGgsIHdoaWNoIGV4aXN0cyBvbmx5IHdpdGhcXG4zMDQzOlxcdFxcdCAqIENPTkZJR19QQ0lFQVNQTTsgd2l0aG91dCBpdCB0aGUgUENJIGNvcmUgbmV2ZXIgZW5hYmxlcyBMVFIgYW55d2hlcmUuXFxuMzA0NDpcXHRcXHQgKi9cXG4zMDQ1OlxcdCNpZmRlZiBDT05GSUdfUENJRUFTUE1cXG4zMDQ2OlxcdFxcdGlmICghdHAtXFx1MDAzZXBjaV9kZXYtXFx1MDAzZWx0cl9wYXRoKVxcbjMwNDc6XFx0XFx0XFx0cmV0dXJuO1xcbjMwNDg6XFx0I2Vsc2VcXG4zMDQ5OlxcdFxcdHJldHVybjtcXG4zMDUwOlxcdCNlbmRpZlxcbjMwNTE6XFx0XFxuMzA1MjpcXHRcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbjMwNTM6XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOlxcbjMwNTQ6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xcbjMwNTU6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xcbjMwNTY6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbjMwNTc6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDhjMDkpO1xcbjMwNTg6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xcbjMwNTk6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDkwMDMpO1xcbjMwNjA6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpO1xcbjMwNjE6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xcbjMwNjI6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xcbjMwNjM6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGU4LCAweDg4N2EpO1xcbjMwNjQ6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVhLCAweDkwMDMpO1xcbjMwNjU6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVjLCAweDhjMDkpO1xcbjMwNjY6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVlLCAweDkwMDMpO1xcbjMwNjc6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYwLCAweDhhNjIpO1xcbjMwNjg6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xcbjMwNjk6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY0LCAweDg4M2UpO1xcbjMwNzA6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY2LCAweDkwMDMpO1xcbjMwNzE6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY4LCAweDg4NDkpO1xcbjMwNzI6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGZhLCAweDkwMDMpO1xcbjMwNzM6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMCwgTElOS19TUEVFRF9DSEFOR0VfRU4pO1xcbjMwNzQ6XFx0XFx0XFx0YnJlYWs7XFxuMzA3NTpcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNzA6XFxuMzA3NjpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XFxuMzA3NzpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX1NOT09QLCAweDAwMDAsIExUUl9TTk9PUF9FTik7XFxuMzA3ODpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XFxuMzA3OTpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4OGMwOSk7XFxuMzA4MDpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XFxuMzA4MTpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDQsIDB4OTAwMyk7XFxuMzA4MjpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGEsIDB4OTAwMyk7XFxuMzA4MzpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDYsIDB4OTAwMyk7XFxuMzA4NDpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGMsIDB4OTAwMyk7XFxuMzA4NTpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZTgsIDB4ODg3YSk7XFxuMzA4NjpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZWEsIDB4OTAwMyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjM1LjYzNzU5OTMyMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1NDE3NzU1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBUcm91Ymxlc2hvb3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcjgxNjlgLCB3aGljaCBpcyB0aGUgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGRyaXZlciBmb3IgdmFyaW91cyBQQ0kvUENJZSBjYXJkcy4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIExldCdzIGdvIGJhY2sgdG8gc2VjdGlvbiAyIG9mIHRoZXNlIGluc3RydWN0aW9ucy4gQWgsIHllcywgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgYW5kIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGV0Yy4gVGhleSByZXF1aXJlIHRoZSBwaHlzaWNhbCBjYXJkcywgd2hpY2ggYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbkJ1dCB3YWl0LCBub3cgSSdtIHRoaW5raW5nLCB3aGF0ICppcyogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT8gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgUUVNVSBlbnZpcm9ubWVudCBpcyBhY3R1YWxseSBsaWtlLiBMZXQncyBsaXN0IHRob3NlIHN0YW5kYXJkIGVtdWxhdGVkIE5JQ3MuLi4gb2theSwgZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZpcnRpby1uZXQtcGNpLCBhbmQgdm14bmV0My4gV2FpdCwgbm93IEkgc2VlIHRoYXQgdGhlIHJ0bDgxMzkgaXMgYSAxMC8xMDAgTWJpdCBSZWFsdGVrIGRyaXZlbiBieSBkcml2ZXJzIGxpa2UgYDgxMzljcGAgYW5kIGA4MTM5dG9vYC4gVGhpcyBpc24ndCB0aGUgc2FtZSBhcyB0aGUgcjgxNjkgSSdtIHdvcmtpbmcgd2l0aCFcblxuQWxyaWdodCwgYmFjayB0byB0aGUgY29yZSBxdWVzdGlvbjogZG9lcyBRRU1VIGVtdWxhdGUgdGhlIHI4MTY5PyBPa2F5LCBJJ3ZlIGdvdCB0byBjb25maXJtIGlmIHRoZSBSVEw4MTM5IGVtdWxhdGlvbiBpbiBRRU1VIGlzIHJlYWxseSB3aGF0IEkgbmVlZC4gQWgsIGl0IGFwcGVhcnMgdGhhdCBRRU1VIGhhcyBgaHcvbmV0L3J0bDgxMzkuY2AgZm9yIFJUTDgxMzlDKyAoUENJIElEIDEwZWM6ODEzOSkuIE5vdywgSSdtIHRoaW5raW5nLi4uIGRvZXMgdGhlIFJUTDgxMzkgdXNlIGByODE2OWAgc29tZWhvdz8gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBmaW5kIG91dCB3aGF0IFBDSSBJRHMgYHI4MTY5YCBhY3R1YWxseSBzdXBwb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAxOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjQwLjE3OTM3NzY0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MDQ0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRS4qMHg4MVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMjg9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ0bDgxNjlfcGNpX3RibFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQzLVxcdHsgUENJX1ZERVZJQ0VfU1VCKExJTktTWVMsIDB4MTAzMiwgUENJX0FOWV9JRCwgMHgwMDI0KSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI0NDpcXHR7IFBDSV9ERVZJQ0VfU1VCKDB4MDAwMSwgMHg4MTY4LCBQQ0lfQU5ZX0lELCAweDI0MTApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQ1LVxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMjUpIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjQwLjIyNDg4OTE4M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjY3NjgyNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIFBDSSB0YWJsZSBpbiBgcjgxNjlfbWFpbi5jYDpcblxuKipEaXZpbmcgaW50byB0aGUgcjgxNjkgRHJpdmVyJ3MgUENJIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgcjgxNjlgIGRyaXZlciBoYW5kbGVzIGl0cyBQQ0kgaW50ZXJmYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgZm9yIHRoZSBqdWd1bGFyIOKAkyB0aGUgUENJIHRhYmxlLCBsaWtlbHkgZGVjbGFyZWQgc29tZXdoZXJlIHdpdGhpbiBgcjgxNjlfbWFpbi5jYC4gVGhhdCB0YWJsZSBpcyB0aGUgYmx1ZXByaW50LCB0aGUgZ3VpZGUsIGZvciB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUuIEl0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXZpY2UgSURzIHRoaXMgZHJpdmVyIHJlY29nbml6ZXMsIHdoYXQgcmVzb3VyY2VzIGl0IGNsYWltcywgYW5kIHdoaWNoIHByb2JlIGZ1bmN0aW9ucyBpdCBjYWxscy4gSSdtIGV4cGVjdGluZyB0byBzZWUgYSBzdHJ1Y3R1cmVkIGFycmF5IG9yIHNvbWV0aGluZyBzaW1pbGFyLCBtYXBwaW5nIGRldmljZSBpZGVudGlmaWVycyB0byBkcml2ZXItc3BlY2lmaWMgZGF0YS4gSSdtIGtlZW4gdG8gc2VlIGlmIHRoZXkncmUgdXNpbmcgYSBzdGFuZGFyZCBQQ0kgSUQgdGFibGUgb3Igc29tZXRoaW5nIG1vcmUgZWxhYm9yYXRlLiBUaGlzIHRhYmxlIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB3aGljaCBSZWFsdGVrIGNoaXBzIHRoaXMgZHJpdmVyIHN1cHBvcnRzIGFuZCBob3cgaXQgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBkaWZmZXJlbnQgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zIG9mIHRob3NlIGNoaXBzLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byBtYXAgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA0NiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjQyLjg5MjU3NTE1M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjM3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjIwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjIwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyBydGxfY2hpcF9pbmZvc19leHRlbmRlZFtdID0ge1xcbiAyMjE6XFx0XFx0eyAweDdmZmZmZmZmLCAweDAwMDAwMDAwLCBSVExfR0lHQV9NQUNfVkVSXzY0LCBcXFwiUlRMOTE1MUFTXFxcIixcXG4gMjIyOlxcdFxcdCAgRklSTVdBUkVfOTE1MUFfMX0sXFxuIDIyMzpcXHRcXG4gMjI0OlxcdFxcdC8qIENhdGNoLWFsbCAqL1xcbiAyMjU6XFx0XFx0eyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBSVExfR0lHQV9NQUNfTk9ORSB9XFxuIDIyNjpcXHR9O1xcbiAyMjc6XFx0XFxuIDIyODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODE2OV9wY2lfdGJsW10gPSB7XFxuIDIyOTpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHgyNTAyKSB9LFxcbiAyMzA6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4MjYwMCkgfSxcXG4gMjMxOlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMjkpIH0sXFxuIDIzMjpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTM2KSwgLmRyaXZlcl9kYXRhID0gUlRMX0NGR19OT19HQklUIH0sXFxuIDIzMzpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTYxKSB9LFxcbiAyMzQ6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODE2MikgfSxcXG4gMjM1OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxNjcpIH0sXFxuIDIzNjpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTY4KSB9LFxcbiAyMzc6XFx0XFx0eyBQQ0lfVkRFVklDRShOQ1VCRSxcXHQweDgxNjgpIH0sXFxuIDIzODpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTY5KSB9LFxcbiAyMzk6XFx0XFx0eyBQQ0lfVkRFVklDRShETElOSyxcXHQweDQzMDApIH0sXFxuIDI0MDpcXHRcXHR7IFBDSV9WREVWSUNFKERMSU5LLFxcdDB4NDMwMikgfSxcXG4gMjQxOlxcdFxcdHsgUENJX1ZERVZJQ0UoQVQsXFx0MHhjMTA3KSB9LFxcbiAyNDI6XFx0XFx0eyBQQ0lfVkRFVklDRShVU1IsXFx0MHgwMTE2KSB9LFxcbiAyNDM6XFx0XFx0eyBQQ0lfVkRFVklDRV9TVUIoTElOS1NZUywgMHgxMDMyLCBQQ0lfQU5ZX0lELCAweDAwMjQpIH0sXFxuIDI0NDpcXHRcXHR7IFBDSV9ERVZJQ0VfU1VCKDB4MDAwMSwgMHg4MTY4LCBQQ0lfQU5ZX0lELCAweDI0MTApIH0sXFxuIDI0NTpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTI1KSB9LFxcbiAyNDY6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODEyNikgfSxcXG4gMjQ3OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMjcpIH0sXFxuIDI0ODpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHgzMDAwKSB9LFxcbiAyNDk6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4NTAwMCkgfSxcXG4gMjUwOlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDBlMTApIH0sXFxuIDI1MTpcXHRcXHR7IH1cXG4gMjUyOlxcdH07XFxuIDI1MzpcXHRcXG4gMjU0OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xcbiAyNTU6XFx0XFxuIDI1NjpcXHRlbnVtIHJ0bF9yZWdpc3RlcnMge1xcbiAyNTc6XFx0XFx0TUFDMFxcdFxcdD0gMCxcXHQvKiBFdGhlcm5ldCBoYXJkd2FyZSBhZGRyZXNzLiAqL1xcbiAyNTg6XFx0XFx0TUFDNFxcdFxcdD0gNCxcXG4gMjU5OlxcdFxcdE1BUjBcXHRcXHQ9IDgsXFx0LyogTXVsdGljYXN0IGZpbHRlci4gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTM6NTQ6NDIuODkyODAwNDYzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2Mjg2NjMyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqQ2hlY2tpbmcgdGhlIEV0aGVybmV0IERyaXZlcnMqKlxuXG5BbHJpZ2h0LCBnaXZlbiB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCwgbXkgZ3V0IHRlbGxzIG1lIHRvIHN0YXJ0IHdpdGggdGhlIGxvdy1oYW5naW5nIGZydWl0LiBMZXQncyBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBvdmVybG9va2VkIHNvbWV0aGluZyBvYnZpb3VzLCBhIHBvdGVudGlhbCBpbmNvbXBhdGliaWxpdHkgb3IgYSBzaW1wbGUsIGVhc2lseS1taXNzZWQgZGV0YWlsLiBMZXQncyBjaGVjayBgODEzOWNwLmNgIGFuZCBgODEzOXRvby5jYC4gVGhlc2UgYXJlIHRoZSBkcml2ZXJzIGZvciB0aGUgUmVhbHRlayA4MTM5IGNoaXBzZXQsIGlmIEkgcmVjYWxsIGNvcnJlY3RseS4gV2UgY2FuIHF1aWNrbHkgY29tcGFyZSB0aGVtLCBtYWtlIHN1cmUgdGhlIHZlcnNpb25zIGFyZSBjb25zaXN0ZW50LCBhbmQgY2hlY2sgZm9yIGFueSBibGF0YW50IGVycm9ycyBvciB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgY2F1c2luZyB0aGUgaXNzdWUuIFRoaXMgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGJlZm9yZSBkaXZpbmcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzA2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDo0OS41MjE0NjcwMDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDg5NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0UuKjgxMzlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYz0xNjIxPXN0YXRpYyBpbnQgY3Bfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jLTE2NzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYzoxNjcxOiNkZWZpbmUgQ1BfRUVQUk9NX01BR0lDIFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xNjcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYz0xODg2PXN0YXRpYyBpbnQgY3BfaW5pdF9vbmUgKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xODk4LVxcdGlmIChwZGV2LVxcdTAwM2V2ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9SRUFMVEVLIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYzoxODk5OlxcdCAgICBwZGV2LVxcdTAwM2VkZXZpY2UgPT0gUENJX0RFVklDRV9JRF9SRUFMVEVLXzgxMzkgXFx1MDAyNlxcdTAwMjYgcGRldi1cXHUwMDNlcmV2aXNpb24gXFx1MDAzYyAweDIwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xOTAwLVxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jPTIxMDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGNwX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jOjIxMDU6ICAgICAgICB7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9SRUFMVEVLLCAgICAgUENJX0RFVklDRV9JRF9SRUFMVEVLXzgxMzkpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOWNwLmMtMjEwNi0gICAgICAgIHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1RUVEVDSCwgICAgICBQQ0lfREVWSUNFX0lEX1RUVEVDSF9NQzMyMiksIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYz0yMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ0bDgxMzlfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjIzODpcXHR7IFBDSV9ERVZJQ0UoMHgxMGVjLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjM5OlxcdHsgUENJX0RFVklDRSgweDEwZWMsIDB4ODEzOCksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDA6XFx0eyBQQ0lfREVWSUNFKDB4MTExMywgMHgxMjExKSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI0MTpcXHR7IFBDSV9ERVZJQ0UoMHgxNTAwLCAweDEzNjApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjQyOlxcdHsgUENJX0RFVklDRSgweDQwMzMsIDB4MTM2MCksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDM6XFx0eyBQQ0lfREVWSUNFKDB4MTE4NiwgMHgxMzAwKSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI0NDpcXHR7IFBDSV9ERVZJQ0UoMHgxMTg2LCAweDEzNDApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjQ1OlxcdHsgUENJX0RFVklDRSgweDEzZDEsIDB4YWIwNiksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDY6XFx0eyBQQ0lfREVWSUNFKDB4MTI1OSwgMHhhMTE3KSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI0NzpcXHR7IFBDSV9ERVZJQ0UoMHgxMjU5LCAweGExMWUpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjQ4OlxcdHsgUENJX0RFVklDRSgweDE0ZWEsIDB4YWIwNiksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDk6XFx0eyBQQ0lfREVWSUNFKDB4MTRlYSwgMHhhYjA3KSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI1MDpcXHR7IFBDSV9ERVZJQ0UoMHgxMWRiLCAweDEyMzQpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjUxOlxcdHsgUENJX0RFVklDRSgweDE0MzIsIDB4OTEzMCksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTI6XFx0eyBQQ0lfREVWSUNFKDB4MDJhYywgMHgxMDEyKSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI1MzpcXHR7IFBDSV9ERVZJQ0UoMHgwMThhLCAweDAxMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjU0OlxcdHsgUENJX0RFVklDRSgweDEyNmMsIDB4MTIxMSksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTU6XFx0eyBQQ0lfREVWSUNFKDB4MTc0MywgMHg4MTM5KSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI1NjpcXHR7IFBDSV9ERVZJQ0UoMHgwMjFiLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjU3OlxcdHsgUENJX0RFVklDRSgweDE2ZWMsIDB4YWIwNiksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNjAtXFx0LyogQm9ndXMgODEzOSBzaWxpY29uIHJlcG9ydHMgODEyOSB3aXRob3V0IGV4dGVybmFsIFBST00gOi0oICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjYxOlxcdHsgUENJX0RFVklDRSgweDEwZWMsIDB4ODEyOSksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNjItI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNzAtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjcxOlxcdHsgUENJX0RFVklDRV9TVUIoUENJX0FOWV9JRCwgMHg4MTM5LCAweDEwZWMsIDB4ODEzOSksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNzI6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfQU5ZX0lELCAweDgxMzksIDB4MTE4NiwgMHgxMzAwKSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI3MzpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9BTllfSUQsIDB4ODEzOSwgMHgxM2QxLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtMjc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM9OTM4PXN0YXRpYyBpbnQgcnRsODEzOV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jLTk1My1cXHRpZiAocGRldi1cXHUwMDNldmVuZG9yID09IFBDSV9WRU5ET1JfSURfUkVBTFRFSyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjk1NDpcXHQgICAgcGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5IFxcdTAwMjZcXHUwMDI2IHBkZXYtXFx1MDAzZXJldmlzaW9uIFxcdTAwM2U9IDB4MjApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy05NTUtXFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jLTk2MS1cXHRpZiAocGRldi1cXHUwMDNldmVuZG9yID09IFBDSV9WRU5ET1JfSURfUkVBTFRFSyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjk2MjpcXHQgICAgcGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5IFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtOTYzLVxcdCAgICBwZGV2LVxcdTAwM2VzdWJzeXN0ZW1fdmVuZG9yID09IFBDSV9WRU5ET1JfSURfQVRIRVJPUyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjk2NDpcXHQgICAgcGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZSA9PSBQQ0lfREVWSUNFX0lEX1JFQUxURUtfODEzOSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jLTk2NS1cXHRcXHRwcl9pbmZvKFxcXCJPUU8gTW9kZWwgMiBkZXRlY3RlZC4gRm9yY2luZyBQSU9cXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDo0OS41NjY5NTk3MDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ5MTg1MTc0MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgUmVhbHRlayBSVEw4MTY5IERyaXZlciBmb3IgRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNlZSBpZiB0aGUgYHI4MTY5YCBkcml2ZXIsIHNwZWNpZmljYWxseSwgaXMgZXZlbiBwcmVzZW50IG9yIHVzZWQgaW4gdGhlIFFFTVUgZW52aXJvbm1lbnQsIG9yIGlmIGl0J3MgbWVkaWF0ZWQgdGhyb3VnaCBhbiBlbXVsYXRlZCBkZXZpY2UuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBRRU1VIGVtdWxhdGVzIHRoZSBSVEw4MTM5LCBidXQgdGhhdCdzIGEgZGlmZmVyZW50IGJlYXN0LCBhbmQgZnJvbSBhIHF1aWNrIGNoZWNrLCB0aGVyZSdzIG5vIG5hdGl2ZSBlbXVsYXRpb24gb2YgdGhlIFJUTDgxNjkuXG5cblNvLCBkb2VzIHN5emthbGxlciBoYXZlIGEgcGF0aCB0byB0aGlzIGRyaXZlcj8gTGV0J3MgY29uc2lkZXIgdGhlIHByb21wdC4gU2VjdGlvbiAyIGhpZ2hsaWdodHMgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgc3BlY2lmaWNhbGx5IGNhbGxpbmcgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiBuZXR3b3JrIGRyaXZlcnMsIGluIGdlbmVyYWwsIGFyZSBmYWlyIGdhbWUgaW4gc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwcyB1c2luZyBRRU1VIG9yIEdDRS4gV2UncmUgZGVhbGluZyB3aXRoIHZpcnR1YWwgZGV2aWNlcyBsaWtlIHZpcnRpbywgYW5kIGxvb3BiYWNrcywgZXRjLiwgYnV0IGFsc28gcGh5c2ljYWwgUENJZSBuZXR3b3JrIGRyaXZlcnMsIGJ1dCBhcmUgdGhlIGxpa2VzIG9mIGByODE2OWAsIGBlMTAwMGAsIGV0Yy4sIHJlYWNoYWJsZSBpbiB0aGUgc3RhbmRhcmQgc2V0dXA/IEl0IHNlZW1zIGxpa2UgaXQgaXNuJ3QuXG5cbk5vdywgZm9jdXNpbmcgb24gYHI4MTY5YDogSXQncyBhIFBDSWUvUENJIG5ldHdvcmsgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvODE2OC84MTI1IGNoaXBzLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHNvbGlkOiB0aGlzIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBzeXprYWxsZXIgVk1zLiBFdmVuICppZiogc29tZW9uZSBoYWQgYSBSZWFsdGVrIDgxNjkgY2FyZCwgaXQgd291bGRuJ3QgYmUgYXR0YWNoZWQgaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgaW5zdGFuY2UuXG5cbkxldCdzIGRyaWxsIGRvd24gaW50byB0aGUgbW9kaWZpZWQgY29kZSwgYHJ0bF9lbmFibGVfbHRyKClgLiBUaGlzIGlzIGNhbGxlZCB3aXRoaW4gYHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGVgLCB3aGljaCBpdHNlbGYgaXMgcGFydCBvZiBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi9wb3dlciBtYW5hZ2VtZW50IOKAkyBkdXJpbmcgcHJvYmUsIHVwL2Rvd24gZXZlbnRzIG9yIGxpbmsgY2hhbmdlcyBvZiAqdGhlIHBoeXNpY2FsKiBQQ0llIGRldmljZSwgd2hpY2ggSSBhbSBpbnRpbWF0ZWx5IGZhbWlsaWFyIHdpdGguIFRoYXQgY29kZSBjb25maWd1cmVzIFBDSWUgTFRSIChMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcpIGZvciBBU1BNIChBY3RpdmUgU3RhdGUgUG93ZXIgTWFuYWdlbWVudCksIHdoaWNoIGlzIHNwZWNpZmljIHRvIGludGVybmFsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZm9yIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBOSUNzLlxuXG5UaGVyZWZvcmUsIGxldCdzIHZlcmlmeTpcblxuMS4gIGByODE2OWAgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBOSUMgZHJpdmVyIChSZWFsdGVrIDgxNjkvODE2OC84MTI1LCB3aGljaCBJIGtub3cgaXQgaXMpIC0gKipZZXMqKi5cbjIuICBJdCdzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRS4gUUVNVSBoYXMgUlRMODEzOSwgYnV0IG5vdCBSVEw4MTY5LzgxNjgvODEyNSwgYW5kIHN0YW5kYXJkIHN5emthbGxlciBWTXMgZG9uJ3QgYXR0YWNoIHI4MTY5IC0gKipObyoqLlxuMy4gIEl0J3Mgbm90IHJlYWNoYWJsZSB2aWEgdmlydHVhbCBidXNlcyAtICoqTm8qKi5cblxuU28sIGFjY29yZGluZyB0byB0aGUgcHJvbXB0LCB0aGlzIGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgbWFwcyB0byBTZWN0aW9uIDIgb2YgdGhlIHByb21wdDpcblxuXCItIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuSXQgaXMuXG5cbk15IGNvbmNsdXNpb25zIGFyZTpcblxuKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcW1xcXSoqXG4qICAgKipFbmFibGVDb25maWdzOiBcXFtcXF0qKlxuXG5BbmQgdGhlIHJlYXNvbmluZyBpczogVGhlIHBhdGNoIG1vZGlmaWVzIGBydGxfZW5hYmxlX2x0cigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBQQ0llIG5ldHdvcmsgY2FyZHMgKGUuZy4gUlRMODE2OCwgUlRMODEyNSkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk3NiwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU1OjA0LjQ4NTQ3OTY3OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBDSWUgTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nIChMVFIpIGNvbmZpZ3VyYXRpb24gaW4gcnRsX2VuYWJsZV9sdHIoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgcjgxNjkgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUmVhbHRlayBQQ0llIG5ldHdvcmsgYWRhcHRlcnMgKHN1Y2ggYXMgUlRMODE2OCBvciBSVEw4MTI1KSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQQ0llIExhdGVuY3kgVG9sZXJhbmNlIFJlcG9ydGluZyAoTFRSKSBjb25maWd1cmF0aW9uIGluIHJ0bF9lbmFibGVfbHRyKCkgd2l0aGluIHRoZSBSZWFsdGVrIHI4MTY5IG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBuZXR3b3JrIGFkYXB0ZXJzIChzdWNoIGFzIFJUTDgxNjggb3IgUlRMODEyNSkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTM6NTU6MDQuNDg1NTAyOTc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpsjkg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 13:33:15 +0000 UTC FinishedAt: 2026-09-11 13:55:05 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUENJZSBMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcgKExUUikgY29uZmlndXJhdGlvbiBpbiBydGxfZW5hYmxlX2x0cigpIHdpdGhpbiB0aGUgUmVhbHRlayByODE2OSBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBSZWFsdGVrIFBDSWUgbmV0d29yayBhZGFwdGVycyAoc3VjaCBhcyBSVEw4MTY4IG9yIFJUTDgxMjUpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3OTNkY2U1ODg3YmZkZjZlZWFmMGVmYjM0YjVlOGZjNjM5NmYzMmI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMTM6NTQ6MTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuaW5kZXggZWM0ZmMyMWZhMjFmYi4uYzMwNWE4ZjE5NTUxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuQEAgLTMwMzcsNiAmIzQzOzMwMzcsMTggQEAgc3RhdGljIHZvaWQgcnRsX2Rpc2FibGVfZXhpdF9sMShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4mIzQzO1x0LyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyBMVFIgaXMgZW5hYmxlZCBmb3IgdGhlXG4mIzQzO1x0ICogd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBwY2lfY29uZmlndXJlX2x0cigpIHdvcmtzIHRoYXQgb3V0XG4mIzQzO1x0ICogYW5kIHJlY29yZHMgdGhlIHJlc3VsdCBpbiBwY2lfZGV2LVx1MDAzZWx0cl9wYXRoLCB3aGljaCBleGlzdHMgb25seSB3aXRoXG4mIzQzO1x0ICogQ09ORklHX1BDSUVBU1BNOyB3aXRob3V0IGl0IHRoZSBQQ0kgY29yZSBuZXZlciBlbmFibGVzIExUUiBhbnl3aGVyZS5cbiYjNDM7XHQgKi9cbiYjNDM7I2lmZGVmIENPTkZJR19QQ0lFQVNQTVxuJiM0MztcdGlmICghdHAtXHUwMDNlcGNpX2Rldi1cdTAwM2VsdHJfcGF0aClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7I2Vsc2VcbiYjNDM7XHRyZXR1cm47XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFBDSWUgTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nIChMVFIpIGNvbmZpZ3VyYXRpb24gaW4gcnRsX2VuYWJsZV9sdHIoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgcjgxNjkgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUmVhbHRlayBQQ0llIG5ldHdvcmsgYWRhcHRlcnMgKHN1Y2ggYXMgUlRMODE2OCBvciBSVEw4MTI1KSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzkzZGNlNTg4N2JmZGY2ZWVhZjBlZmIzNGI1ZThmYzYzOTZmMzJiNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDEzOjU0OjE5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwppbmRleCBlYzRmYzIxZmEyMWZiLi5jMzA1YThmMTk1NTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYwpAQCAtMzAzNyw2ICYjNDM7MzAzNywxOCBAQCBzdGF0aWMgdm9pZCBydGxfZGlzYWJsZV9leGl0X2wxKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKJiM0MzsJLyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyBMVFIgaXMgZW5hYmxlZCBmb3IgdGhlCiYjNDM7CSAqIHdob2xlIHBhdGggdXAgdG8gdGhlIHJvb3QgcG9ydC4gcGNpX2NvbmZpZ3VyZV9sdHIoKSB3b3JrcyB0aGF0IG91dAomIzQzOwkgKiBhbmQgcmVjb3JkcyB0aGUgcmVzdWx0IGluIHBjaV9kZXYtJmd0O2x0cl9wYXRoLCB3aGljaCBleGlzdHMgb25seSB3aXRoCiYjNDM7CSAqIENPTkZJR19QQ0lFQVNQTTsgd2l0aG91dCBpdCB0aGUgUENJIGNvcmUgbmV2ZXIgZW5hYmxlcyBMVFIgYW55d2hlcmUuCiYjNDM7CSAqLwomIzQzOyNpZmRlZiBDT05GSUdfUENJRUFTUE0KJiM0MzsJaWYgKCF0cC0mZ3Q7cGNpX2Rldi0mZ3Q7bHRyX3BhdGgpCiYjNDM7CQlyZXR1cm47CiYjNDM7I2Vsc2UKJiM0MzsJcmV0dXJuOwomIzQzOyNlbmRpZgomIzQzOwogCXN3aXRjaCAodHAtJmd0O21hY192ZXJzaW9uKSB7CiAJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOgogCQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyB0aGUgcjgxNjkgUGF0Y2g6IEEgUUVNVSAmYW1wOyBLZXJuZWwgRGl2ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gYXNzZXNzIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbiBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIgb3IgaWYgaXQmIzM5O3MgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSDigJMgYmVjYXVzZSB0aGF0IGRyYW1hdGljYWxseSBhZmZlY3RzIGhvdyBJIGFwcHJvYWNoIHRoZSBldmFsdWF0aW9uLCBlc3BlY2lhbGx5IGluIHRlcm1zIG9mIGZ1enppbmcuCgpXYWl0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBsZXQmIzM5O3MgZXN0YWJsaXNoIGV4YWN0bHkgd2hhdCBgcjgxNjlgIGlzLiBJdCBoYW5kbGVzIGEgcmFuZ2Ugb2YgUmVhbHRlayBjaGlwczogUlRMODE2OSwgUlRMODE2OCwgUlRMODEyNSwgUlRMODEyNiwgYW5kIHByb2JhYmx5IG1vcmUuIEJ1dCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgZW11bGF0aW9uIGluIFFFTVUuIERvZXMgUUVNVSBtb2RlbCB0aGUgUlRMODE2OSBmYW1pbHk/CgpBaGEhIE5vdyBJIHJlbWVtYmVyLi4uIFFFTVUgKmRvZXMqIGVtdWxhdGUgYSBSZWFsdGVrIE5JQywgdGhlIGBydGw4MTM5YC4gSXRzIFBDSSBkZXZpY2UgSUQgaXMgMTBlYzo4MTM5LCBhbmQgdGhhdOKAmXMgaW1wb3J0YW50LiBCdXQgaXMgYHI4MTY5YCBzcGVjaWZpY2FsbHkgZW11bGF0ZWQgdG9vPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LgoKTGV04oCZcyBjaGVjayBRRU1VIGRvY3VtZW50YXRpb24sIHRoZSBrZXJuZWwgc291cmNlLCBvciBob3cgYHI4MTY5YCBpcyB0eXBpY2FsbHkgdXNlZC4gSG9sZCBvbiwgYSBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIGl0c2VsZiBtaWdodCBiZSB0aGUgcXVpY2tlc3Qgcm91dGUgdG8gdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgYW55IGV4aXN0aW5nIFFFTVUgaW50ZXJhY3Rpb25zLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsX2VuYWJsZV9sdHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zMDI0PXN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzAzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjMwMzg6c3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMDM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zMTM2PXN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMxNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzozMTY0Olx0XHRydGxfZW5hYmxlX2x0cih0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMTY1LVx0XHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHJ0bF9lbmFibGVfbHRyYCBpbiBgcjgxNjlfbWFpbi5jYCoqCgpBbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIGNsZWFyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBgcnRsX2VuYWJsZV9sdHJgIHdpdGhpbiB0aGUgYHI4MTY5YCBkcml2ZXIuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGByODE2OV9tYWluLmNgIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIGxpa2VseSBkZWZpbmVkLiBNeSBtYWluIGZvY3VzIGhlcmUgaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGNhbGxzIHRvIGBydGxfZW5hYmxlX2x0cmAuIEkgd2FudCB0byBzZWUgKndoZW4qIGFuZCAqd2h5KiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIElzIGl0IHBhcnQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlPyBJcyBpdCB0cmlnZ2VyZWQgYnkgc29tZSBzcGVjaWZpYyBoYXJkd2FyZSBldmVudD8gSXMgaXQgY29uZGl0aW9uYWw/IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93LgoKQmV5b25kIHRoZSBjYWxsIHNpdGVzLCBJJiMzOTttIGdvaW5nIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYHJ0bF9lbmFibGVfbHRyYC4gVGhvc2Ugd2lsbCBwcm92aWRlIGNydWNpYWwgY2x1ZXMgYWJvdXQgdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQgdGhlIHNwZWNpZmljIHBhcmFtZXRlcnMgYmVpbmcgY29uZmlndXJlZC4gQXJlIHRoZXkganVzdCB1c2luZyB0aGUgc3RhbmRhcmQgcmVnaXN0ZXIgb2Zmc2V0cyBvciBhcmUgdGhleSBwYXNzaW5nIHNwZWNpZmljIHZhbHVlcyB0aGF0IGFyZSBjaGlwLXNwZWNpZmljPyBBbHNvLCB3aGF0IGFyZSB0aGUgc3Vycm91bmRpbmcgY29kZSBjb21tZW50cz8gRG8gdGhleSBzaGVkIGFueSBsaWdodCBvbiB0aGUgZGVzaWduIGdvYWxzIG9mIHRoZSBmZWF0dXJlPwoKQWRkaXRpb25hbGx5LCB3aGlsZSBJJiMzOTttIGluIHRoZXJlLCBJJiMzOTtsbCBpbXBsaWNpdGx5IGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIGByODE2OWAgZHJpdmVyIGl0c2VsZi4gV2hhdCBkZXZpY2VzIChzcGVjaWZpY2FsbHksIFJlYWx0ZWsgRXRoZXJuZXQgY2hpcHMpIGRvZXMgdGhpcyBkcml2ZXIgc3VwcG9ydD8gS25vd2luZyB0aGUgdGFyZ2V0IGhhcmR3YXJlIHdpbGwgaGVscCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBpY3R1cmUuIEkmIzM5O2xsIHByb2JhYmx5IGxvb2sgYXQgdGhlIGRldmljZSBJRCB0YWJsZSBpZiBvbmUgZXhpc3RzICh0aGF0JiMzOTtzIHR5cGljYWxseSB3aGVyZSBkZXZpY2UgSURzIGFyZSBkZWZpbmVkKSwgb3IgYW55IG90aGVyIHBsYWNlIHRoYXQgaWRlbnRpZmllcyB0aGUgc3VwcG9ydGVkIGRldmljZXMuIFRoaXMgd2lsbCBwcm92aWRlIGEgY3J1Y2lhbCB1bmRlcnN0YW5kaW5nIG9mIGRldmljZSBjb21wYXRpYmlsaXR5LCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgaGFyZHdhcmUgdmFyaWF0aW9ucy4gVGhhdCBjb250ZXh0IGlzIGdvaW5nIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGludGVycHJldCB3aGF0JiMzOTtzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzEzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMTM1Olx0XG4zMTM2Olx0c3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4zMTM3Olx0e1xuMzEzODpcdFx0dTggdmFsODtcbjMxMzk6XHRcbjMxNDA6XHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2MgUlRMX0dJR0FfTUFDX1ZFUl8zMilcbjMxNDE6XHRcdFx0cmV0dXJuO1xuMzE0MjpcdFxuMzE0MzpcdFx0LyogRG9uJiMzOTt0IGVuYWJsZSBBU1BNIGluIHRoZSBjaGlwIGlmIE9TIGNhbiYjMzk7dCBjb250cm9sIEFTUE0gKi9cbjMxNDQ6XHRcdGlmIChlbmFibGUgXHUwMDI2XHUwMDI2IHRwLVx1MDAzZWFzcG1fbWFuYWdlYWJsZSkge1xuMzE0NTpcdFx0XHQvKiBPbiB0aGVzZSBjaGlwIHZlcnNpb25zIEFTUE0gY2FuIGV2ZW4gaGFybVxuMzE0NjpcdFx0XHQgKiBidXMgY29tbXVuaWNhdGlvbiBvZiBvdGhlciBQQ0kgZGV2aWNlcy5cbjMxNDc6XHRcdFx0ICovXG4zMTQ4Olx0XHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzQyIHx8XG4zMTQ5Olx0XHRcdCAgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzQzKVxuMzE1MDpcdFx0XHRcdHJldHVybjtcbjMxNTE6XHRcbjMxNTI6XHRcdFx0cnRsX21vZF9jb25maWc1KHRwLCAwLCBBU1BNX2VuKTtcbjMxNTM6XHRcdFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuMzE1NDpcdFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNzA6XG4zMTU1Olx0XHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbjMxNTY6XHRcdFx0XHR2YWw4ID0gUlRMX1I4KHRwLCBJTlRfQ0ZHMF84MTI1KSB8IElOVF9DRkcwX0NMS1JFUUVOO1xuMzE1NzpcdFx0XHRcdFJUTF9XOCh0cCwgSU5UX0NGRzBfODEyNSwgdmFsOCk7XG4zMTU4Olx0XHRcdFx0YnJlYWs7XG4zMTU5Olx0XHRcdGRlZmF1bHQ6XG4zMTYwOlx0XHRcdFx0cnRsX21vZF9jb25maWcyKHRwLCAwLCBDbGtSZXFFbik7XG4zMTYxOlx0XHRcdFx0YnJlYWs7XG4zMTYyOlx0XHRcdH1cbjMxNjM6XHRcbjMxNjQ6XHRcdFx0cnRsX2VuYWJsZV9sdHIodHApO1xuMzE2NTpcdFx0XHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4zMTY2Olx0XHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcbjMxNjc6XHRcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzYxIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6XG4zMTY4Olx0XHRcdFx0LyogcmVzZXQgZXBoeSB0eC9yeCBkaXNhYmxlIHRpbWVyICovXG4zMTY5Olx0XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTtcbjMxNzA6XHRcdFx0XHQvKiBjaGlwIGNhbiB0cmlnZ2VyIEwxLjIgKi9cbjMxNzE6XHRcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDkyLCAweDAwZmYsIEJJVCgyKSk7XG4zMTcyOlx0XHRcdFx0YnJlYWs7XG4zMTczOlx0XHRcdGRlZmF1bHQ6XG4zMTc0Olx0XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI1MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIGBydGxfZW5hYmxlX2x0cmAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiAmIzM0O0xldCYjMzk7cyBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHJ0bF9lbmFibGVfbHRyYC4mIzM0OyBJJiMzOTttIG5vdCBqdXN0ICp0aGlua2luZyogYWJvdXQgaXQsIGJ1dCBhbHJlYWR5IG1lbnRhbGx5IHBhcnNpbmcgaXQuIEkgcHJvYmFibHkgaGF2ZSBhIGdvb2QgaWRlYSBvZiB3aGVyZSB0byBsb29rLCBnaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGhvdyB0aGlzIGZ1bmN0aW9uIChvciBwZXJoYXBzIG1hY3JvLCBrbm93aW5nIGhvdyB0aGluZ3MgYXJlIHN0cnVjdHVyZWQpIGhhbmRsZXMgdGhlIGVuYWJsZW1lbnQgb2YgcmlnaHQtdG8tbGVmdCB0ZXh0IHJlbmRlcmluZy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIGJlaGF2aW5nIGFzIGV4cGVjdGVkIGFuZCBub3QgY2F1c2luZyBhbnkgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgd2l0aGluIG91ciByZW5kZXJpbmcgZW5naW5lLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBjcml0aWNhbCBzZWN0aW9ucyBvZiBjb2RlIHRoYXQgZGlyZWN0bHkgaW1wYWN0IHRleHQgZGlyZWN0aW9uYWxpdHksIGxvY2FsZSBoYW5kbGluZywgYW5kIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciByZW5kZXJpbmcgbGF5ZXJzLiBJcyBpdCBjb3JyZWN0bHkgc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgZmxhZ3MsIHRvZ2dsaW5nIHRoZSBuZWNlc3NhcnkgaW50ZXJuYWwgc3RhdGVzLCBhbmQgcHJvcGFnYXRpbmcgdGhlc2UgY2hhbmdlcyB0byB0aGUgcmVsZXZhbnQgZG93bnN0cmVhbSBjb21wb25lbnRzPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBtZW1vcnkgbGVha3MsIG9yIGluY29ycmVjdCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcGxhdGZvcm0mIzM5O3MgZGVmYXVsdCBiZWhhdmlvciwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjb21wbGV4IHNjcmlwdHMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIGEgcmFwaWQsIGluLWRlcHRoIGV2YWx1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMzcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzAzNzpcdFxuMzAzODpcdHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuMzAzOTpcdHtcbjMwNDA6XHRcdC8qIFRoZSBjaGlwIG11c3Qgbm90IGlzc3VlIExUUiBtZXNzYWdlcyB1bmxlc3MgTFRSIGlzIGVuYWJsZWQgZm9yIHRoZVxuMzA0MTpcdFx0ICogd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBwY2lfY29uZmlndXJlX2x0cigpIHdvcmtzIHRoYXQgb3V0XG4zMDQyOlx0XHQgKiBhbmQgcmVjb3JkcyB0aGUgcmVzdWx0IGluIHBjaV9kZXYtXHUwMDNlbHRyX3BhdGgsIHdoaWNoIGV4aXN0cyBvbmx5IHdpdGhcbjMwNDM6XHRcdCAqIENPTkZJR19QQ0lFQVNQTTsgd2l0aG91dCBpdCB0aGUgUENJIGNvcmUgbmV2ZXIgZW5hYmxlcyBMVFIgYW55d2hlcmUuXG4zMDQ0Olx0XHQgKi9cbjMwNDU6XHQjaWZkZWYgQ09ORklHX1BDSUVBU1BNXG4zMDQ2Olx0XHRpZiAoIXRwLVx1MDAzZXBjaV9kZXYtXHUwMDNlbHRyX3BhdGgpXG4zMDQ3Olx0XHRcdHJldHVybjtcbjMwNDg6XHQjZWxzZVxuMzA0OTpcdFx0cmV0dXJuO1xuMzA1MDpcdCNlbmRpZlxuMzA1MTpcdFxuMzA1MjpcdFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuMzA1MzpcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOlxuMzA1NDpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XG4zMDU1Olx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfU05PT1AsIDB4MDAwMCwgTFRSX1NOT09QX0VOKTtcbjMwNTY6XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuMzA1NzpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4OGMwOSk7XG4zMDU4Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkOCwgMHg5MDAzKTtcbjMwNTk6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDkwMDMpO1xuMzA2MDpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGEsIDB4OTAwMyk7XG4zMDYxOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNiwgMHg5MDAzKTtcbjMwNjI6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xuMzA2MzpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZTgsIDB4ODg3YSk7XG4zMDY0Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlYSwgMHg5MDAzKTtcbjMwNjU6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVjLCAweDhjMDkpO1xuMzA2NjpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZWUsIDB4OTAwMyk7XG4zMDY3Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMCwgMHg4YTYyKTtcbjMwNjg6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xuMzA2OTpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZjQsIDB4ODgzZSk7XG4zMDcwOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmNiwgMHg5MDAzKTtcbjMwNzE6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY4LCAweDg4NDkpO1xuMzA3MjpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZmEsIDB4OTAwMyk7XG4zMDczOlx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDAsIExJTktfU1BFRURfQ0hBTkdFX0VOKTtcbjMwNzQ6XHRcdFx0YnJlYWs7XG4zMDc1Olx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNzA6XG4zMDc2Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcbjMwNzc6XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xuMzA3ODpcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XG4zMDc5Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMiwgMHg4YzA5KTtcbjMwODA6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xuMzA4MTpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDQsIDB4OTAwMyk7XG4zMDgyOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcbjMwODM6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xuMzA4NDpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGMsIDB4OTAwMyk7XG4zMDg1Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlOCwgMHg4ODdhKTtcbjMwODY6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVhLCAweDkwMDMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBUcm91Ymxlc2hvb3RpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGByODE2OWAsIHdoaWNoIGlzIHRoZSBSZWFsdGVrIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIGZvciB2YXJpb3VzIFBDSS9QQ0llIGNhcmRzLiBSaWdodCBhd2F5LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gTGV0JiMzOTtzIGdvIGJhY2sgdG8gc2VjdGlvbiAyIG9mIHRoZXNlIGluc3RydWN0aW9ucy4gQWgsIHllcywgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsJiMzNDsgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgYW5kIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGV0Yy4gVGhleSByZXF1aXJlIHRoZSBwaHlzaWNhbCBjYXJkcywgd2hpY2ggYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoKQnV0IHdhaXQsIG5vdyBJJiMzOTttIHRoaW5raW5nLCB3aGF0ICppcyogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT8gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgUUVNVSBlbnZpcm9ubWVudCBpcyBhY3R1YWxseSBsaWtlLiBMZXQmIzM5O3MgbGlzdCB0aG9zZSBzdGFuZGFyZCBlbXVsYXRlZCBOSUNzLi4uIG9rYXksIGUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgcGNuZXQsIG5lMmtfcGNpLCB2aXJ0aW8tbmV0LXBjaSwgYW5kIHZteG5ldDMuIFdhaXQsIG5vdyBJIHNlZSB0aGF0IHRoZSBydGw4MTM5IGlzIGEgMTAvMTAwIE1iaXQgUmVhbHRlayBkcml2ZW4gYnkgZHJpdmVycyBsaWtlIGA4MTM5Y3BgIGFuZCBgODEzOXRvb2AuIFRoaXMgaXNuJiMzOTt0IHRoZSBzYW1lIGFzIHRoZSByODE2OSBJJiMzOTttIHdvcmtpbmcgd2l0aCEKCkFscmlnaHQsIGJhY2sgdG8gdGhlIGNvcmUgcXVlc3Rpb246IGRvZXMgUUVNVSBlbXVsYXRlIHRoZSByODE2OT8gT2theSwgSSYjMzk7dmUgZ290IHRvIGNvbmZpcm0gaWYgdGhlIFJUTDgxMzkgZW11bGF0aW9uIGluIFFFTVUgaXMgcmVhbGx5IHdoYXQgSSBuZWVkLiBBaCwgaXQgYXBwZWFycyB0aGF0IFFFTVUgaGFzIGBody9uZXQvcnRsODEzOS5jYCBmb3IgUlRMODEzOUMmIzQzOyAoUENJIElEIDEwZWM6ODEzOSkuIE5vdywgSSYjMzk7bSB0aGlua2luZy4uLiBkb2VzIHRoZSBSVEw4MTM5IHVzZSBgcjgxNjlgIHNvbWVob3c/IEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIGZpbmQgb3V0IHdoYXQgUENJIElEcyBgcjgxNjlgIGFjdHVhbGx5IHN1cHBvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFLioweDgxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNDMtXHR7IFBDSV9WREVWSUNFX1NVQihMSU5LU1lTLCAweDEwMzIsIFBDSV9BTllfSUQsIDB4MDAyNCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI0NDpcdHsgUENJX0RFVklDRV9TVUIoMHgwMDAxLCAweDgxNjgsIFBDSV9BTllfSUQsIDB4MjQxMCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI0NS1cdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyNSkgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA0NgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIGZvY3VzaW5nIG9uIHRoZSBQQ0kgdGFibGUgaW4gYHI4MTY5X21haW4uY2A6CgoqKkRpdmluZyBpbnRvIHRoZSByODE2OSBEcml2ZXImIzM5O3MgUENJIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGByODE2OWAgZHJpdmVyIGhhbmRsZXMgaXRzIFBDSSBpbnRlcmZhY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCBmb3IgdGhlIGp1Z3VsYXIg4oCTIHRoZSBQQ0kgdGFibGUsIGxpa2VseSBkZWNsYXJlZCBzb21ld2hlcmUgd2l0aGluIGByODE2OV9tYWluLmNgLiBUaGF0IHRhYmxlIGlzIHRoZSBibHVlcHJpbnQsIHRoZSBndWlkZSwgZm9yIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUuIEl0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGRldmljZSBJRHMgdGhpcyBkcml2ZXIgcmVjb2duaXplcywgd2hhdCByZXNvdXJjZXMgaXQgY2xhaW1zLCBhbmQgd2hpY2ggcHJvYmUgZnVuY3Rpb25zIGl0IGNhbGxzLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBzdHJ1Y3R1cmVkIGFycmF5IG9yIHNvbWV0aGluZyBzaW1pbGFyLCBtYXBwaW5nIGRldmljZSBpZGVudGlmaWVycyB0byBkcml2ZXItc3BlY2lmaWMgZGF0YS4gSSYjMzk7bSBrZWVuIHRvIHNlZSBpZiB0aGV5JiMzOTtyZSB1c2luZyBhIHN0YW5kYXJkIFBDSSBJRCB0YWJsZSBvciBzb21ldGhpbmcgbW9yZSBlbGFib3JhdGUuIFRoaXMgdGFibGUgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoaWNoIFJlYWx0ZWsgY2hpcHMgdGhpcyBkcml2ZXIgc3VwcG9ydHMgYW5kIGhvdyBpdCBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIGRpZmZlcmVudCByZXZpc2lvbnMgb3IgY29uZmlndXJhdGlvbnMgb2YgdGhvc2UgY2hpcHMuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIG1hcCB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjIwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHJ0bF9jaGlwX2luZm9zX2V4dGVuZGVkW10gPSB7XG4gMjIxOlx0XHR7IDB4N2ZmZmZmZmYsIDB4MDAwMDAwMDAsIFJUTF9HSUdBX01BQ19WRVJfNjQsIFwmIzM0O1JUTDkxNTFBU1wmIzM0OyxcbiAyMjI6XHRcdCAgRklSTVdBUkVfOTE1MUFfMX0sXG4gMjIzOlx0XG4gMjI0Olx0XHQvKiBDYXRjaC1hbGwgKi9cbiAyMjU6XHRcdHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgUlRMX0dJR0FfTUFDX05PTkUgfVxuIDIyNjpcdH07XG4gMjI3Olx0XG4gMjI4Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ0bDgxNjlfcGNpX3RibFtdID0ge1xuIDIyOTpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHgyNTAyKSB9LFxuIDIzMDpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHgyNjAwKSB9LFxuIDIzMTpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTI5KSB9LFxuIDIzMjpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTM2KSwgLmRyaXZlcl9kYXRhID0gUlRMX0NGR19OT19HQklUIH0sXG4gMjMzOlx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxNjEpIH0sXG4gMjM0Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxNjIpIH0sXG4gMjM1Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxNjcpIH0sXG4gMjM2Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxNjgpIH0sXG4gMjM3Olx0XHR7IFBDSV9WREVWSUNFKE5DVUJFLFx0MHg4MTY4KSB9LFxuIDIzODpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTY5KSB9LFxuIDIzOTpcdFx0eyBQQ0lfVkRFVklDRShETElOSyxcdDB4NDMwMCkgfSxcbiAyNDA6XHRcdHsgUENJX1ZERVZJQ0UoRExJTkssXHQweDQzMDIpIH0sXG4gMjQxOlx0XHR7IFBDSV9WREVWSUNFKEFULFx0MHhjMTA3KSB9LFxuIDI0MjpcdFx0eyBQQ0lfVkRFVklDRShVU1IsXHQweDAxMTYpIH0sXG4gMjQzOlx0XHR7IFBDSV9WREVWSUNFX1NVQihMSU5LU1lTLCAweDEwMzIsIFBDSV9BTllfSUQsIDB4MDAyNCkgfSxcbiAyNDQ6XHRcdHsgUENJX0RFVklDRV9TVUIoMHgwMDAxLCAweDgxNjgsIFBDSV9BTllfSUQsIDB4MjQxMCkgfSxcbiAyNDU6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyNSkgfSxcbiAyNDY6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyNikgfSxcbiAyNDc6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyNykgfSxcbiAyNDg6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MzAwMCkgfSxcbiAyNDk6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4NTAwMCkgfSxcbiAyNTA6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MGUxMCkgfSxcbiAyNTE6XHRcdHsgfVxuIDI1MjpcdH07XG4gMjUzOlx0XG4gMjU0Olx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ0bDgxNjlfcGNpX3RibCk7XG4gMjU1Olx0XG4gMjU2Olx0ZW51bSBydGxfcmVnaXN0ZXJzIHtcbiAyNTc6XHRcdE1BQzBcdFx0PSAwLFx0LyogRXRoZXJuZXQgaGFyZHdhcmUgYWRkcmVzcy4gKi9cbiAyNTg6XHRcdE1BQzRcdFx0PSA0LFxuIDI1OTpcdFx0TUFSMFx0XHQ9IDgsXHQvKiBNdWx0aWNhc3QgZmlsdGVyLiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzA2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQ2hlY2tpbmcgdGhlIEV0aGVybmV0IERyaXZlcnMqKgoKQWxyaWdodCwgZ2l2ZW4gd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLCBteSBndXQgdGVsbHMgbWUgdG8gc3RhcnQgd2l0aCB0aGUgbG93LWhhbmdpbmcgZnJ1aXQuIExldCYjMzk7cyBtYWtlIHN1cmUgd2UgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBzb21ldGhpbmcgb2J2aW91cywgYSBwb3RlbnRpYWwgaW5jb21wYXRpYmlsaXR5IG9yIGEgc2ltcGxlLCBlYXNpbHktbWlzc2VkIGRldGFpbC4gTGV0JiMzOTtzIGNoZWNrIGA4MTM5Y3AuY2AgYW5kIGA4MTM5dG9vLmNgLiBUaGVzZSBhcmUgdGhlIGRyaXZlcnMgZm9yIHRoZSBSZWFsdGVrIDgxMzkgY2hpcHNldCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LiBXZSBjYW4gcXVpY2tseSBjb21wYXJlIHRoZW0sIG1ha2Ugc3VyZSB0aGUgdmVyc2lvbnMgYXJlIGNvbnNpc3RlbnQsIGFuZCBjaGVjayBmb3IgYW55IGJsYXRhbnQgZXJyb3JzIG9yIHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBjYXVzaW5nIHRoZSBpc3N1ZS4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgYmVmb3JlIGRpdmluZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BDSV9ERVZJQ0UuKjgxMzkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jPTE2MjE9c3RhdGljIGludCBjcF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jLTE2NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jOjE2NzE6I2RlZmluZSBDUF9FRVBST01fTUFHSUMgUENJX0RFVklDRV9JRF9SRUFMVEVLXzgxMzlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOWNwLmMtMTY3Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jPTE4ODY9c3RhdGljIGludCBjcF9pbml0X29uZSAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xODk4LVx0aWYgKHBkZXYtXHUwMDNldmVuZG9yID09IFBDSV9WRU5ET1JfSURfUkVBTFRFSyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOWNwLmM6MTg5OTpcdCAgICBwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSUNFX0lEX1JFQUxURUtfODEzOSBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VyZXZpc2lvbiBcdTAwM2MgMHgyMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xOTAwLVx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jPTIxMDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGNwX3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOWNwLmM6MjEwNTogICAgICAgIHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1JFQUxURUssICAgICBQQ0lfREVWSUNFX0lEX1JFQUxURUtfODEzOSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jLTIxMDYtICAgICAgICB7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9UVFRFQ0gsICAgICAgUENJX0RFVklDRV9JRF9UVFRFQ0hfTUMzMjIpLCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jPTIzNz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODEzOV9wY2lfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyMzg6XHR7IFBDSV9ERVZJQ0UoMHgxMGVjLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyMzk6XHR7IFBDSV9ERVZJQ0UoMHgxMGVjLCAweDgxMzgpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDA6XHR7IFBDSV9ERVZJQ0UoMHgxMTEzLCAweDEyMTEpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDE6XHR7IFBDSV9ERVZJQ0UoMHgxNTAwLCAweDEzNjApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDI6XHR7IFBDSV9ERVZJQ0UoMHg0MDMzLCAweDEzNjApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDM6XHR7IFBDSV9ERVZJQ0UoMHgxMTg2LCAweDEzMDApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDQ6XHR7IFBDSV9ERVZJQ0UoMHgxMTg2LCAweDEzNDApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDU6XHR7IFBDSV9ERVZJQ0UoMHgxM2QxLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDY6XHR7IFBDSV9ERVZJQ0UoMHgxMjU5LCAweGExMTcpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDc6XHR7IFBDSV9ERVZJQ0UoMHgxMjU5LCAweGExMWUpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDg6XHR7IFBDSV9ERVZJQ0UoMHgxNGVhLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDk6XHR7IFBDSV9ERVZJQ0UoMHgxNGVhLCAweGFiMDcpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTA6XHR7IFBDSV9ERVZJQ0UoMHgxMWRiLCAweDEyMzQpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTE6XHR7IFBDSV9ERVZJQ0UoMHgxNDMyLCAweDkxMzApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTI6XHR7IFBDSV9ERVZJQ0UoMHgwMmFjLCAweDEwMTIpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTM6XHR7IFBDSV9ERVZJQ0UoMHgwMThhLCAweDAxMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTQ6XHR7IFBDSV9ERVZJQ0UoMHgxMjZjLCAweDEyMTEpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTU6XHR7IFBDSV9ERVZJQ0UoMHgxNzQzLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTY6XHR7IFBDSV9ERVZJQ0UoMHgwMjFiLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTc6XHR7IFBDSV9ERVZJQ0UoMHgxNmVjLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtMjYwLVx0LyogQm9ndXMgODEzOSBzaWxpY29uIHJlcG9ydHMgODEyOSB3aXRob3V0IGV4dGVybmFsIFBST00gOi0oICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNjE6XHR7IFBDSV9ERVZJQ0UoMHgxMGVjLCAweDgxMjkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNjItI2VuZGlmXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtMjcwLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNzE6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9BTllfSUQsIDB4ODEzOSwgMHgxMGVjLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNzI6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9BTllfSUQsIDB4ODEzOSwgMHgxMTg2LCAweDEzMDApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNzM6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9BTllfSUQsIDB4ODEzOSwgMHgxM2QxLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM9OTM4PXN0YXRpYyBpbnQgcnRsODEzOV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy05NTMtXHRpZiAocGRldi1cdTAwM2V2ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9SRUFMVEVLIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6OTU0Olx0ICAgIHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5IFx1MDAyNlx1MDAyNiBwZGV2LVx1MDAzZXJldmlzaW9uIFx1MDAzZT0gMHgyMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtOTU1LVx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy05NjEtXHRpZiAocGRldi1cdTAwM2V2ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9SRUFMVEVLIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6OTYyOlx0ICAgIHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtOTYzLVx0ICAgIHBkZXYtXHUwMDNlc3Vic3lzdGVtX3ZlbmRvciA9PSBQQ0lfVkVORE9SX0lEX0FUSEVST1MgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzo5NjQ6XHQgICAgcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy05NjUtXHRcdHByX2luZm8oXCYjMzQ7T1FPIE1vZGVsIDIgZGV0ZWN0ZWQuIEZvcmNpbmcgUElPXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NzYKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogMTEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBSZWFsdGVrIFJUTDgxNjkgRHJpdmVyIGZvciBGdXp6aW5nIEZlYXNpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBzZWUgaWYgdGhlIGByODE2OWAgZHJpdmVyLCBzcGVjaWZpY2FsbHksIGlzIGV2ZW4gcHJlc2VudCBvciB1c2VkIGluIHRoZSBRRU1VIGVudmlyb25tZW50LCBvciBpZiBpdCYjMzk7cyBtZWRpYXRlZCB0aHJvdWdoIGFuIGVtdWxhdGVkIGRldmljZS4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IFFFTVUgZW11bGF0ZXMgdGhlIFJUTDgxMzksIGJ1dCB0aGF0JiMzOTtzIGEgZGlmZmVyZW50IGJlYXN0LCBhbmQgZnJvbSBhIHF1aWNrIGNoZWNrLCB0aGVyZSYjMzk7cyBubyBuYXRpdmUgZW11bGF0aW9uIG9mIHRoZSBSVEw4MTY5LgoKU28sIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSBwYXRoIHRvIHRoaXMgZHJpdmVyPyBMZXQmIzM5O3MgY29uc2lkZXIgdGhlIHByb21wdC4gU2VjdGlvbiAyIGhpZ2hsaWdodHMgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsJiMzNDsgc3BlY2lmaWNhbGx5IGNhbGxpbmcgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiBuZXR3b3JrIGRyaXZlcnMsIGluIGdlbmVyYWwsIGFyZSBmYWlyIGdhbWUgaW4gc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwcyB1c2luZyBRRU1VIG9yIEdDRS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB2aXJ0dWFsIGRldmljZXMgbGlrZSB2aXJ0aW8sIGFuZCBsb29wYmFja3MsIGV0Yy4sIGJ1dCBhbHNvIHBoeXNpY2FsIFBDSWUgbmV0d29yayBkcml2ZXJzLCBidXQgYXJlIHRoZSBsaWtlcyBvZiBgcjgxNjlgLCBgZTEwMDBgLCBldGMuLCByZWFjaGFibGUgaW4gdGhlIHN0YW5kYXJkIHNldHVwPyBJdCBzZWVtcyBsaWtlIGl0IGlzbiYjMzk7dC4KCk5vdywgZm9jdXNpbmcgb24gYHI4MTY5YDogSXQmIzM5O3MgYSBQQ0llL1BDSSBuZXR3b3JrIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4MTY5LzgxNjgvODEyNSBjaGlwcy4gTXkgdW5kZXJzdGFuZGluZyBpcyBzb2xpZDogdGhpcyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0Ugc3l6a2FsbGVyIFZNcy4gRXZlbiAqaWYqIHNvbWVvbmUgaGFkIGEgUmVhbHRlayA4MTY5IGNhcmQsIGl0IHdvdWxkbiYjMzk7dCBiZSBhdHRhY2hlZCBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBpbnN0YW5jZS4KCkxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIG1vZGlmaWVkIGNvZGUsIGBydGxfZW5hYmxlX2x0cigpYC4gVGhpcyBpcyBjYWxsZWQgd2l0aGluIGBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlYCwgd2hpY2ggaXRzZWxmIGlzIHBhcnQgb2YgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24vcG93ZXIgbWFuYWdlbWVudCDigJMgZHVyaW5nIHByb2JlLCB1cC9kb3duIGV2ZW50cyBvciBsaW5rIGNoYW5nZXMgb2YgKnRoZSBwaHlzaWNhbCogUENJZSBkZXZpY2UsIHdoaWNoIEkgYW0gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBUaGF0IGNvZGUgY29uZmlndXJlcyBQQ0llIExUUiAoTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nKSBmb3IgQVNQTSAoQWN0aXZlIFN0YXRlIFBvd2VyIE1hbmFnZW1lbnQpLCB3aGljaCBpcyBzcGVjaWZpYyB0byBpbnRlcm5hbCBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGZvciBwaHlzaWNhbCBSZWFsdGVrIFBDSWUgTklDcy4KClRoZXJlZm9yZSwgbGV0JiMzOTtzIHZlcmlmeToKCjEuICBgcjgxNjlgIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIFBDSWUgTklDIGRyaXZlciAoUmVhbHRlayA4MTY5LzgxNjgvODEyNSwgd2hpY2ggSSBrbm93IGl0IGlzKSAtICoqWWVzKiouCjIuICBJdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UuIFFFTVUgaGFzIFJUTDgxMzksIGJ1dCBub3QgUlRMODE2OS84MTY4LzgxMjUsIGFuZCBzdGFuZGFyZCBzeXprYWxsZXIgVk1zIGRvbiYjMzk7dCBhdHRhY2ggcjgxNjkgLSAqKk5vKiouCjMuICBJdCYjMzk7cyBub3QgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzIC0gKipObyoqLgoKU28sIGFjY29yZGluZyB0byB0aGUgcHJvbXB0LCB0aGlzIGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IG1hcHMgdG8gU2VjdGlvbiAyIG9mIHRoZSBwcm9tcHQ6CgomIzM0Oy0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgoqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkl0IGlzLgoKTXkgY29uY2x1c2lvbnMgYXJlOgoKKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqCiogICAqKkZvY3VzU3ltYm9sczogXFtcXSoqCiogICAqKkVuYWJsZUNvbmZpZ3M6IFxbXF0qKgoKQW5kIHRoZSByZWFzb25pbmcgaXM6IFRoZSBwYXRjaCBtb2RpZmllcyBgcnRsX2VuYWJsZV9sdHIoKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBuZXR3b3JrIGNhcmRzIChlLmcuIFJUTDgxNjgsIFJUTDgxMjUpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUENJZSBMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcgKExUUikgY29uZmlndXJhdGlvbiBpbiBydGxfZW5hYmxlX2x0cigpIHdpdGhpbiB0aGUgUmVhbHRlayByODE2OSBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBSZWFsdGVrIFBDSWUgbmV0d29yayBhZGFwdGVycyAoc3VjaCBhcyBSVEw4MTY4IG9yIFJUTDgxMjUpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFBDSWUgTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nIChMVFIpIGNvbmZpZ3VyYXRpb24gaW4gcnRsX2VuYWJsZV9sdHIoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgcjgxNjkgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUmVhbHRlayBQQ0llIG5ldHdvcmsgYWRhcHRlcnMgKHN1Y2ggYXMgUlRMODE2OCBvciBSVEw4MTI1KSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMzo1NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTFUMTM6NTQ6MjAuMjA3MjcxODUzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyNzgyNDYyODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQQ0llIExhdGVuY3kgVG9sZXJhbmNlIFJlcG9ydGluZyAoTFRSKSBjb25maWd1cmF0aW9uIGluIHJ0bF9lbmFibGVfbHRyKCkgd2l0aGluIHRoZSBSZWFsdGVrIHI4MTY5IG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBuZXR3b3JrIGFkYXB0ZXJzIChzdWNoIGFzIFJUTDgxNjggb3IgUlRMODEyNSkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTM6NTQ6MjAuMjA3Mjc2MTkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODA5NTIwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3OTNkY2U1ODg3YmZkZjZlZWFmMGVmYjM0YjVlOGZjNjM5NmYzMmI2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDEzOjU0OjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcXG5pbmRleCBlYzRmYzIxZmEyMWZiLi5jMzA1YThmMTk1NTFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcXG5AQCAtMzAzNyw2ICszMDM3LDE4IEBAIHN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcbiBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbitcXHQvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIExUUiBpcyBlbmFibGVkIGZvciB0aGVcXG4rXFx0ICogd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBwY2lfY29uZmlndXJlX2x0cigpIHdvcmtzIHRoYXQgb3V0XFxuK1xcdCAqIGFuZCByZWNvcmRzIHRoZSByZXN1bHQgaW4gcGNpX2Rldi1cXHUwMDNlbHRyX3BhdGgsIHdoaWNoIGV4aXN0cyBvbmx5IHdpdGhcXG4rXFx0ICogQ09ORklHX1BDSUVBU1BNOyB3aXRob3V0IGl0IHRoZSBQQ0kgY29yZSBuZXZlciBlbmFibGVzIExUUiBhbnl3aGVyZS5cXG4rXFx0ICovXFxuKyNpZmRlZiBDT05GSUdfUENJRUFTUE1cXG4rXFx0aWYgKCF0cC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlbHRyX3BhdGgpXFxuK1xcdFxcdHJldHVybjtcXG4rI2Vsc2VcXG4rXFx0cmV0dXJuO1xcbisjZW5kaWZcXG4rXFxuIFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDoyMC42ODkwMTAwNTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQzNzk2NDkxMTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQQ0llIExhdGVuY3kgVG9sZXJhbmNlIFJlcG9ydGluZyAoTFRSKSBjb25maWd1cmF0aW9uIGluIHJ0bF9lbmFibGVfbHRyKCkgd2l0aGluIHRoZSBSZWFsdGVrIHI4MTY5IG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBuZXR3b3JrIGFkYXB0ZXJzIChzdWNoIGFzIFJUTDgxNjggb3IgUlRMODEyNSkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3OTNkY2U1ODg3YmZkZjZlZWFmMGVmYjM0YjVlOGZjNjM5NmYzMmI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMTM6NTQ6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiLi5jMzA1YThmMTk1NTFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMzAzNyw2ICszMDM3LDE4IEBAIHN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuK1x0LyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyBMVFIgaXMgZW5hYmxlZCBmb3IgdGhlXG4rXHQgKiB3aG9sZSBwYXRoIHVwIHRvIHRoZSByb290IHBvcnQuIHBjaV9jb25maWd1cmVfbHRyKCkgd29ya3MgdGhhdCBvdXRcbitcdCAqIGFuZCByZWNvcmRzIHRoZSByZXN1bHQgaW4gcGNpX2Rldi1cdTAwM2VsdHJfcGF0aCwgd2hpY2ggZXhpc3RzIG9ubHkgd2l0aFxuK1x0ICogQ09ORklHX1BDSUVBU1BNOyB3aXRob3V0IGl0IHRoZSBQQ0kgY29yZSBuZXZlciBlbmFibGVzIExUUiBhbnl3aGVyZS5cbitcdCAqL1xuKyNpZmRlZiBDT05GSUdfUENJRUFTUE1cbitcdGlmICghdHAtXHUwMDNlcGNpX2Rldi1cdTAwM2VsdHJfcGF0aClcbitcdFx0cmV0dXJuO1xuKyNlbHNlXG4rXHRyZXR1cm47XG4rI2VuZGlmXG4rXG4gXHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4gXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfODA6XG4gXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjIwLjY4OTAxMTkyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkyNTUxMDMyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXZhbHVhdGluZyB0aGUgcjgxNjkgUGF0Y2g6IEEgUUVNVSBcdTAwMjYgS2VybmVsIERpdmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gYXNzZXNzIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbiBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIgb3IgaWYgaXQncyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIOKAkyBiZWNhdXNlIHRoYXQgZHJhbWF0aWNhbGx5IGFmZmVjdHMgaG93IEkgYXBwcm9hY2ggdGhlIGV2YWx1YXRpb24sIGVzcGVjaWFsbHkgaW4gdGVybXMgb2YgZnV6emluZy5cblxuV2FpdCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgbGV0J3MgZXN0YWJsaXNoIGV4YWN0bHkgd2hhdCBgcjgxNjlgIGlzLiBJdCBoYW5kbGVzIGEgcmFuZ2Ugb2YgUmVhbHRlayBjaGlwczogUlRMODE2OSwgUlRMODE2OCwgUlRMODEyNSwgUlRMODEyNiwgYW5kIHByb2JhYmx5IG1vcmUuIEJ1dCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgZW11bGF0aW9uIGluIFFFTVUuIERvZXMgUUVNVSBtb2RlbCB0aGUgUlRMODE2OSBmYW1pbHk/XG5cbkFoYSEgTm93IEkgcmVtZW1iZXIuLi4gUUVNVSAqZG9lcyogZW11bGF0ZSBhIFJlYWx0ZWsgTklDLCB0aGUgYHJ0bDgxMzlgLiBJdHMgUENJIGRldmljZSBJRCBpcyAxMGVjOjgxMzksIGFuZCB0aGF04oCZcyBpbXBvcnRhbnQuIEJ1dCBpcyBgcjgxNjlgIHNwZWNpZmljYWxseSBlbXVsYXRlZCB0b28/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuXG5cbkxldOKAmXMgY2hlY2sgUUVNVSBkb2N1bWVudGF0aW9uLCB0aGUga2VybmVsIHNvdXJjZSwgb3IgaG93IGByODE2OWAgaXMgdHlwaWNhbGx5IHVzZWQuIEhvbGQgb24sIGEgc2VhcmNoIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSBpdHNlbGYgbWlnaHQgYmUgdGhlIHF1aWNrZXN0IHJvdXRlIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIGFueSBleGlzdGluZyBRRU1VIGludGVyYWN0aW9ucy4gTGV0J3Mgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDoyOS45NDQxMTc5MzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1OTc4MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsX2VuYWJsZV9sdHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MzAyND1zdGF0aWMgdm9pZCBydGxfZGlzYWJsZV9leGl0X2wxKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzAzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzozMDM4OnN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMwMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MzEzNj1zdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMxNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MzE2NDpcXHRcXHRydGxfZW5hYmxlX2x0cih0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzE2NS1cXHRcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDoyOS45ODk3MjIxMzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjQ4Mzk3NzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgcnRsX2VuYWJsZV9sdHJgIGluIGByODE2OV9tYWluLmNgKipcblxuQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBpcyBjbGVhci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYHJ0bF9lbmFibGVfbHRyYCB3aXRoaW4gdGhlIGByODE2OWAgZHJpdmVyLiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGByODE2OV9tYWluLmNgIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaXMgbGlrZWx5IGRlZmluZWQuIE15IG1haW4gZm9jdXMgaGVyZSBpcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbHMgdG8gYHJ0bF9lbmFibGVfbHRyYC4gSSB3YW50IHRvIHNlZSAqd2hlbiogYW5kICp3aHkqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gSXMgaXQgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U/IElzIGl0IHRyaWdnZXJlZCBieSBzb21lIHNwZWNpZmljIGhhcmR3YXJlIGV2ZW50PyBJcyBpdCBjb25kaXRpb25hbD8gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cuXG5cbkJleW9uZCB0aGUgY2FsbCBzaXRlcywgSSdtIGdvaW5nIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYHJ0bF9lbmFibGVfbHRyYC4gVGhvc2Ugd2lsbCBwcm92aWRlIGNydWNpYWwgY2x1ZXMgYWJvdXQgdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQgdGhlIHNwZWNpZmljIHBhcmFtZXRlcnMgYmVpbmcgY29uZmlndXJlZC4gQXJlIHRoZXkganVzdCB1c2luZyB0aGUgc3RhbmRhcmQgcmVnaXN0ZXIgb2Zmc2V0cyBvciBhcmUgdGhleSBwYXNzaW5nIHNwZWNpZmljIHZhbHVlcyB0aGF0IGFyZSBjaGlwLXNwZWNpZmljPyBBbHNvLCB3aGF0IGFyZSB0aGUgc3Vycm91bmRpbmcgY29kZSBjb21tZW50cz8gRG8gdGhleSBzaGVkIGFueSBsaWdodCBvbiB0aGUgZGVzaWduIGdvYWxzIG9mIHRoZSBmZWF0dXJlP1xuXG5BZGRpdGlvbmFsbHksIHdoaWxlIEknbSBpbiB0aGVyZSwgSSdsbCBpbXBsaWNpdGx5IGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIGByODE2OWAgZHJpdmVyIGl0c2VsZi4gV2hhdCBkZXZpY2VzIChzcGVjaWZpY2FsbHksIFJlYWx0ZWsgRXRoZXJuZXQgY2hpcHMpIGRvZXMgdGhpcyBkcml2ZXIgc3VwcG9ydD8gS25vd2luZyB0aGUgdGFyZ2V0IGhhcmR3YXJlIHdpbGwgaGVscCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBpY3R1cmUuIEknbGwgcHJvYmFibHkgbG9vayBhdCB0aGUgZGV2aWNlIElEIHRhYmxlIGlmIG9uZSBleGlzdHMgKHRoYXQncyB0eXBpY2FsbHkgd2hlcmUgZGV2aWNlIElEcyBhcmUgZGVmaW5lZCksIG9yIGFueSBvdGhlciBwbGFjZSB0aGF0IGlkZW50aWZpZXMgdGhlIHN1cHBvcnRlZCBkZXZpY2VzLiBUaGlzIHdpbGwgcHJvdmlkZSBhIGNydWNpYWwgdW5kZXJzdGFuZGluZyBvZiBkZXZpY2UgY29tcGF0aWJpbGl0eSwgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsIGhhcmR3YXJlIHZhcmlhdGlvbnMuIFRoYXQgY29udGV4dCBpcyBnb2luZyB0byBtYWtlIGl0IGVhc2llciB0byBpbnRlcnByZXQgd2hhdCdzIGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1MywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjMzLjIzODEyMTc5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMTM1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMTM1OlxcdFxcbjMxMzY6XFx0c3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuMzEzNzpcXHR7XFxuMzEzODpcXHRcXHR1OCB2YWw4O1xcbjMxMzk6XFx0XFxuMzE0MDpcXHRcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2MgUlRMX0dJR0FfTUFDX1ZFUl8zMilcXG4zMTQxOlxcdFxcdFxcdHJldHVybjtcXG4zMTQyOlxcdFxcbjMxNDM6XFx0XFx0LyogRG9uJ3QgZW5hYmxlIEFTUE0gaW4gdGhlIGNoaXAgaWYgT1MgY2FuJ3QgY29udHJvbCBBU1BNICovXFxuMzE0NDpcXHRcXHRpZiAoZW5hYmxlIFxcdTAwMjZcXHUwMDI2IHRwLVxcdTAwM2Vhc3BtX21hbmFnZWFibGUpIHtcXG4zMTQ1OlxcdFxcdFxcdC8qIE9uIHRoZXNlIGNoaXAgdmVyc2lvbnMgQVNQTSBjYW4gZXZlbiBoYXJtXFxuMzE0NjpcXHRcXHRcXHQgKiBidXMgY29tbXVuaWNhdGlvbiBvZiBvdGhlciBQQ0kgZGV2aWNlcy5cXG4zMTQ3OlxcdFxcdFxcdCAqL1xcbjMxNDg6XFx0XFx0XFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzQyIHx8XFxuMzE0OTpcXHRcXHRcXHQgICAgdHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNDMpXFxuMzE1MDpcXHRcXHRcXHRcXHRyZXR1cm47XFxuMzE1MTpcXHRcXG4zMTUyOlxcdFxcdFxcdHJ0bF9tb2RfY29uZmlnNSh0cCwgMCwgQVNQTV9lbik7XFxuMzE1MzpcXHRcXHRcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbjMxNTQ6XFx0XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzcwOlxcbjMxNTU6XFx0XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOlxcbjMxNTY6XFx0XFx0XFx0XFx0dmFsOCA9IFJUTF9SOCh0cCwgSU5UX0NGRzBfODEyNSkgfCBJTlRfQ0ZHMF9DTEtSRVFFTjtcXG4zMTU3OlxcdFxcdFxcdFxcdFJUTF9XOCh0cCwgSU5UX0NGRzBfODEyNSwgdmFsOCk7XFxuMzE1ODpcXHRcXHRcXHRcXHRicmVhaztcXG4zMTU5OlxcdFxcdFxcdGRlZmF1bHQ6XFxuMzE2MDpcXHRcXHRcXHRcXHRydGxfbW9kX2NvbmZpZzIodHAsIDAsIENsa1JlcUVuKTtcXG4zMTYxOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjMxNjI6XFx0XFx0XFx0fVxcbjMxNjM6XFx0XFxuMzE2NDpcXHRcXHRcXHRydGxfZW5hYmxlX2x0cih0cCk7XFxuMzE2NTpcXHRcXHRcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbjMxNjY6XFx0XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbjMxNjc6XFx0XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzYxIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6XFxuMzE2ODpcXHRcXHRcXHRcXHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cXG4zMTY5OlxcdFxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTQsIDB4ZmYwMCwgMCk7XFxuMzE3MDpcXHRcXHRcXHRcXHQvKiBjaGlwIGNhbiB0cmlnZ2VyIEwxLjIgKi9cXG4zMTcxOlxcdFxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTIsIDB4MDBmZiwgQklUKDIpKTtcXG4zMTcyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjMxNzM6XFx0XFx0XFx0ZGVmYXVsdDpcXG4zMTc0OlxcdFxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDozMy4yMzgzMTMwODhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzk5MDMyNjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBgcnRsX2VuYWJsZV9sdHJgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiBcIkxldCdzIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnRsX2VuYWJsZV9sdHJgLlwiIEknbSBub3QganVzdCAqdGhpbmtpbmcqIGFib3V0IGl0LCBidXQgYWxyZWFkeSBtZW50YWxseSBwYXJzaW5nIGl0LiBJIHByb2JhYmx5IGhhdmUgYSBnb29kIGlkZWEgb2Ygd2hlcmUgdG8gbG9vaywgZ2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgdGhpcyBmdW5jdGlvbiAob3IgcGVyaGFwcyBtYWNybywga25vd2luZyBob3cgdGhpbmdzIGFyZSBzdHJ1Y3R1cmVkKSBoYW5kbGVzIHRoZSBlbmFibGVtZW50IG9mIHJpZ2h0LXRvLWxlZnQgdGV4dCByZW5kZXJpbmcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkIGFuZCBub3QgY2F1c2luZyBhbnkgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgd2l0aGluIG91ciByZW5kZXJpbmcgZW5naW5lLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBjcml0aWNhbCBzZWN0aW9ucyBvZiBjb2RlIHRoYXQgZGlyZWN0bHkgaW1wYWN0IHRleHQgZGlyZWN0aW9uYWxpdHksIGxvY2FsZSBoYW5kbGluZywgYW5kIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciByZW5kZXJpbmcgbGF5ZXJzLiBJcyBpdCBjb3JyZWN0bHkgc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgZmxhZ3MsIHRvZ2dsaW5nIHRoZSBuZWNlc3NhcnkgaW50ZXJuYWwgc3RhdGVzLCBhbmQgcHJvcGFnYXRpbmcgdGhlc2UgY2hhbmdlcyB0byB0aGUgcmVsZXZhbnQgZG93bnN0cmVhbSBjb21wb25lbnRzPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG1lbW9yeSBsZWFrcywgb3IgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFib3V0IHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgYmVoYXZpb3IsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBzY3JpcHRzLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyBhIHJhcGlkLCBpbi1kZXB0aCBldmFsdWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjUzLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDozNS42MzczNDgwNjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkxMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAzNyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzAzNzpcXHRcXG4zMDM4OlxcdHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbjMwMzk6XFx0e1xcbjMwNDA6XFx0XFx0LyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyBMVFIgaXMgZW5hYmxlZCBmb3IgdGhlXFxuMzA0MTpcXHRcXHQgKiB3aG9sZSBwYXRoIHVwIHRvIHRoZSByb290IHBvcnQuIHBjaV9jb25maWd1cmVfbHRyKCkgd29ya3MgdGhhdCBvdXRcXG4zMDQyOlxcdFxcdCAqIGFuZCByZWNvcmRzIHRoZSByZXN1bHQgaW4gcGNpX2Rldi1cXHUwMDNlbHRyX3BhdGgsIHdoaWNoIGV4aXN0cyBvbmx5IHdpdGhcXG4zMDQzOlxcdFxcdCAqIENPTkZJR19QQ0lFQVNQTTsgd2l0aG91dCBpdCB0aGUgUENJIGNvcmUgbmV2ZXIgZW5hYmxlcyBMVFIgYW55d2hlcmUuXFxuMzA0NDpcXHRcXHQgKi9cXG4zMDQ1OlxcdCNpZmRlZiBDT05GSUdfUENJRUFTUE1cXG4zMDQ2OlxcdFxcdGlmICghdHAtXFx1MDAzZXBjaV9kZXYtXFx1MDAzZWx0cl9wYXRoKVxcbjMwNDc6XFx0XFx0XFx0cmV0dXJuO1xcbjMwNDg6XFx0I2Vsc2VcXG4zMDQ5OlxcdFxcdHJldHVybjtcXG4zMDUwOlxcdCNlbmRpZlxcbjMwNTE6XFx0XFxuMzA1MjpcXHRcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbjMwNTM6XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOlxcbjMwNTQ6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xcbjMwNTU6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xcbjMwNTY6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbjMwNTc6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDhjMDkpO1xcbjMwNTg6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xcbjMwNTk6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDkwMDMpO1xcbjMwNjA6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpO1xcbjMwNjE6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xcbjMwNjI6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xcbjMwNjM6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGU4LCAweDg4N2EpO1xcbjMwNjQ6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVhLCAweDkwMDMpO1xcbjMwNjU6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVjLCAweDhjMDkpO1xcbjMwNjY6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVlLCAweDkwMDMpO1xcbjMwNjc6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYwLCAweDhhNjIpO1xcbjMwNjg6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xcbjMwNjk6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY0LCAweDg4M2UpO1xcbjMwNzA6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY2LCAweDkwMDMpO1xcbjMwNzE6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY4LCAweDg4NDkpO1xcbjMwNzI6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGZhLCAweDkwMDMpO1xcbjMwNzM6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMCwgTElOS19TUEVFRF9DSEFOR0VfRU4pO1xcbjMwNzQ6XFx0XFx0XFx0YnJlYWs7XFxuMzA3NTpcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNzA6XFxuMzA3NjpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XFxuMzA3NzpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX1NOT09QLCAweDAwMDAsIExUUl9TTk9PUF9FTik7XFxuMzA3ODpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XFxuMzA3OTpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4OGMwOSk7XFxuMzA4MDpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XFxuMzA4MTpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDQsIDB4OTAwMyk7XFxuMzA4MjpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGEsIDB4OTAwMyk7XFxuMzA4MzpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDYsIDB4OTAwMyk7XFxuMzA4NDpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGMsIDB4OTAwMyk7XFxuMzA4NTpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZTgsIDB4ODg3YSk7XFxuMzA4NjpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZWEsIDB4OTAwMyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjM1LjYzNzU5OTMyMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1NDE3NzU1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBUcm91Ymxlc2hvb3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcjgxNjlgLCB3aGljaCBpcyB0aGUgUmVhbHRlayBHaWdhYml0IEV0aGVybmV0IGRyaXZlciBmb3IgdmFyaW91cyBQQ0kvUENJZSBjYXJkcy4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIExldCdzIGdvIGJhY2sgdG8gc2VjdGlvbiAyIG9mIHRoZXNlIGluc3RydWN0aW9ucy4gQWgsIHllcywgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgYW5kIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGV0Yy4gVGhleSByZXF1aXJlIHRoZSBwaHlzaWNhbCBjYXJkcywgd2hpY2ggYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbkJ1dCB3YWl0LCBub3cgSSdtIHRoaW5raW5nLCB3aGF0ICppcyogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT8gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgUUVNVSBlbnZpcm9ubWVudCBpcyBhY3R1YWxseSBsaWtlLiBMZXQncyBsaXN0IHRob3NlIHN0YW5kYXJkIGVtdWxhdGVkIE5JQ3MuLi4gb2theSwgZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZpcnRpby1uZXQtcGNpLCBhbmQgdm14bmV0My4gV2FpdCwgbm93IEkgc2VlIHRoYXQgdGhlIHJ0bDgxMzkgaXMgYSAxMC8xMDAgTWJpdCBSZWFsdGVrIGRyaXZlbiBieSBkcml2ZXJzIGxpa2UgYDgxMzljcGAgYW5kIGA4MTM5dG9vYC4gVGhpcyBpc24ndCB0aGUgc2FtZSBhcyB0aGUgcjgxNjkgSSdtIHdvcmtpbmcgd2l0aCFcblxuQWxyaWdodCwgYmFjayB0byB0aGUgY29yZSBxdWVzdGlvbjogZG9lcyBRRU1VIGVtdWxhdGUgdGhlIHI4MTY5PyBPa2F5LCBJJ3ZlIGdvdCB0byBjb25maXJtIGlmIHRoZSBSVEw4MTM5IGVtdWxhdGlvbiBpbiBRRU1VIGlzIHJlYWxseSB3aGF0IEkgbmVlZC4gQWgsIGl0IGFwcGVhcnMgdGhhdCBRRU1VIGhhcyBgaHcvbmV0L3J0bDgxMzkuY2AgZm9yIFJUTDgxMzlDKyAoUENJIElEIDEwZWM6ODEzOSkuIE5vdywgSSdtIHRoaW5raW5nLi4uIGRvZXMgdGhlIFJUTDgxMzkgdXNlIGByODE2OWAgc29tZWhvdz8gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBmaW5kIG91dCB3aGF0IFBDSSBJRHMgYHI4MTY5YCBhY3R1YWxseSBzdXBwb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAxOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjQwLjE3OTM3NzY0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MDQ0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRS4qMHg4MVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMjg9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ0bDgxNjlfcGNpX3RibFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQzLVxcdHsgUENJX1ZERVZJQ0VfU1VCKExJTktTWVMsIDB4MTAzMiwgUENJX0FOWV9JRCwgMHgwMDI0KSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI0NDpcXHR7IFBDSV9ERVZJQ0VfU1VCKDB4MDAwMSwgMHg4MTY4LCBQQ0lfQU5ZX0lELCAweDI0MTApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjQ1LVxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMjUpIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjQwLjIyNDg4OTE4M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjY3NjgyNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIFBDSSB0YWJsZSBpbiBgcjgxNjlfbWFpbi5jYDpcblxuKipEaXZpbmcgaW50byB0aGUgcjgxNjkgRHJpdmVyJ3MgUENJIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgcjgxNjlgIGRyaXZlciBoYW5kbGVzIGl0cyBQQ0kgaW50ZXJmYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgZm9yIHRoZSBqdWd1bGFyIOKAkyB0aGUgUENJIHRhYmxlLCBsaWtlbHkgZGVjbGFyZWQgc29tZXdoZXJlIHdpdGhpbiBgcjgxNjlfbWFpbi5jYC4gVGhhdCB0YWJsZSBpcyB0aGUgYmx1ZXByaW50LCB0aGUgZ3VpZGUsIGZvciB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUuIEl0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXZpY2UgSURzIHRoaXMgZHJpdmVyIHJlY29nbml6ZXMsIHdoYXQgcmVzb3VyY2VzIGl0IGNsYWltcywgYW5kIHdoaWNoIHByb2JlIGZ1bmN0aW9ucyBpdCBjYWxscy4gSSdtIGV4cGVjdGluZyB0byBzZWUgYSBzdHJ1Y3R1cmVkIGFycmF5IG9yIHNvbWV0aGluZyBzaW1pbGFyLCBtYXBwaW5nIGRldmljZSBpZGVudGlmaWVycyB0byBkcml2ZXItc3BlY2lmaWMgZGF0YS4gSSdtIGtlZW4gdG8gc2VlIGlmIHRoZXkncmUgdXNpbmcgYSBzdGFuZGFyZCBQQ0kgSUQgdGFibGUgb3Igc29tZXRoaW5nIG1vcmUgZWxhYm9yYXRlLiBUaGlzIHRhYmxlIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB3aGljaCBSZWFsdGVrIGNoaXBzIHRoaXMgZHJpdmVyIHN1cHBvcnRzIGFuZCBob3cgaXQgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBkaWZmZXJlbnQgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zIG9mIHRob3NlIGNoaXBzLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byBtYXAgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA0NiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU0OjQyLjg5MjU3NTE1M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjM3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjIwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjIwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyBydGxfY2hpcF9pbmZvc19leHRlbmRlZFtdID0ge1xcbiAyMjE6XFx0XFx0eyAweDdmZmZmZmZmLCAweDAwMDAwMDAwLCBSVExfR0lHQV9NQUNfVkVSXzY0LCBcXFwiUlRMOTE1MUFTXFxcIixcXG4gMjIyOlxcdFxcdCAgRklSTVdBUkVfOTE1MUFfMX0sXFxuIDIyMzpcXHRcXG4gMjI0OlxcdFxcdC8qIENhdGNoLWFsbCAqL1xcbiAyMjU6XFx0XFx0eyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBSVExfR0lHQV9NQUNfTk9ORSB9XFxuIDIyNjpcXHR9O1xcbiAyMjc6XFx0XFxuIDIyODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODE2OV9wY2lfdGJsW10gPSB7XFxuIDIyOTpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHgyNTAyKSB9LFxcbiAyMzA6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4MjYwMCkgfSxcXG4gMjMxOlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMjkpIH0sXFxuIDIzMjpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTM2KSwgLmRyaXZlcl9kYXRhID0gUlRMX0NGR19OT19HQklUIH0sXFxuIDIzMzpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTYxKSB9LFxcbiAyMzQ6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODE2MikgfSxcXG4gMjM1OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxNjcpIH0sXFxuIDIzNjpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTY4KSB9LFxcbiAyMzc6XFx0XFx0eyBQQ0lfVkRFVklDRShOQ1VCRSxcXHQweDgxNjgpIH0sXFxuIDIzODpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTY5KSB9LFxcbiAyMzk6XFx0XFx0eyBQQ0lfVkRFVklDRShETElOSyxcXHQweDQzMDApIH0sXFxuIDI0MDpcXHRcXHR7IFBDSV9WREVWSUNFKERMSU5LLFxcdDB4NDMwMikgfSxcXG4gMjQxOlxcdFxcdHsgUENJX1ZERVZJQ0UoQVQsXFx0MHhjMTA3KSB9LFxcbiAyNDI6XFx0XFx0eyBQQ0lfVkRFVklDRShVU1IsXFx0MHgwMTE2KSB9LFxcbiAyNDM6XFx0XFx0eyBQQ0lfVkRFVklDRV9TVUIoTElOS1NZUywgMHgxMDMyLCBQQ0lfQU5ZX0lELCAweDAwMjQpIH0sXFxuIDI0NDpcXHRcXHR7IFBDSV9ERVZJQ0VfU1VCKDB4MDAwMSwgMHg4MTY4LCBQQ0lfQU5ZX0lELCAweDI0MTApIH0sXFxuIDI0NTpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTI1KSB9LFxcbiAyNDY6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODEyNikgfSxcXG4gMjQ3OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMjcpIH0sXFxuIDI0ODpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHgzMDAwKSB9LFxcbiAyNDk6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4NTAwMCkgfSxcXG4gMjUwOlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDBlMTApIH0sXFxuIDI1MTpcXHRcXHR7IH1cXG4gMjUyOlxcdH07XFxuIDI1MzpcXHRcXG4gMjU0OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xcbiAyNTU6XFx0XFxuIDI1NjpcXHRlbnVtIHJ0bF9yZWdpc3RlcnMge1xcbiAyNTc6XFx0XFx0TUFDMFxcdFxcdD0gMCxcXHQvKiBFdGhlcm5ldCBoYXJkd2FyZSBhZGRyZXNzLiAqL1xcbiAyNTg6XFx0XFx0TUFDNFxcdFxcdD0gNCxcXG4gMjU5OlxcdFxcdE1BUjBcXHRcXHQ9IDgsXFx0LyogTXVsdGljYXN0IGZpbHRlci4gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTM6NTQ6NDIuODkyODAwNDYzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2Mjg2NjMyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqQ2hlY2tpbmcgdGhlIEV0aGVybmV0IERyaXZlcnMqKlxuXG5BbHJpZ2h0LCBnaXZlbiB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCwgbXkgZ3V0IHRlbGxzIG1lIHRvIHN0YXJ0IHdpdGggdGhlIGxvdy1oYW5naW5nIGZydWl0LiBMZXQncyBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBvdmVybG9va2VkIHNvbWV0aGluZyBvYnZpb3VzLCBhIHBvdGVudGlhbCBpbmNvbXBhdGliaWxpdHkgb3IgYSBzaW1wbGUsIGVhc2lseS1taXNzZWQgZGV0YWlsLiBMZXQncyBjaGVjayBgODEzOWNwLmNgIGFuZCBgODEzOXRvby5jYC4gVGhlc2UgYXJlIHRoZSBkcml2ZXJzIGZvciB0aGUgUmVhbHRlayA4MTM5IGNoaXBzZXQsIGlmIEkgcmVjYWxsIGNvcnJlY3RseS4gV2UgY2FuIHF1aWNrbHkgY29tcGFyZSB0aGVtLCBtYWtlIHN1cmUgdGhlIHZlcnNpb25zIGFyZSBjb25zaXN0ZW50LCBhbmQgY2hlY2sgZm9yIGFueSBibGF0YW50IGVycm9ycyBvciB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgY2F1c2luZyB0aGUgaXNzdWUuIFRoaXMgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGJlZm9yZSBkaXZpbmcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzA2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDo0OS41MjE0NjcwMDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDg5NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0UuKjgxMzlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYz0xNjIxPXN0YXRpYyBpbnQgY3Bfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jLTE2NzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYzoxNjcxOiNkZWZpbmUgQ1BfRUVQUk9NX01BR0lDIFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xNjcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYz0xODg2PXN0YXRpYyBpbnQgY3BfaW5pdF9vbmUgKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xODk4LVxcdGlmIChwZGV2LVxcdTAwM2V2ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9SRUFMVEVLIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYzoxODk5OlxcdCAgICBwZGV2LVxcdTAwM2VkZXZpY2UgPT0gUENJX0RFVklDRV9JRF9SRUFMVEVLXzgxMzkgXFx1MDAyNlxcdTAwMjYgcGRldi1cXHUwMDNlcmV2aXNpb24gXFx1MDAzYyAweDIwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5Y3AuYy0xOTAwLVxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jPTIxMDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGNwX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzljcC5jOjIxMDU6ICAgICAgICB7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9SRUFMVEVLLCAgICAgUENJX0RFVklDRV9JRF9SRUFMVEVLXzgxMzkpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOWNwLmMtMjEwNi0gICAgICAgIHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1RUVEVDSCwgICAgICBQQ0lfREVWSUNFX0lEX1RUVEVDSF9NQzMyMiksIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYz0yMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ0bDgxMzlfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjIzODpcXHR7IFBDSV9ERVZJQ0UoMHgxMGVjLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjM5OlxcdHsgUENJX0RFVklDRSgweDEwZWMsIDB4ODEzOCksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDA6XFx0eyBQQ0lfREVWSUNFKDB4MTExMywgMHgxMjExKSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI0MTpcXHR7IFBDSV9ERVZJQ0UoMHgxNTAwLCAweDEzNjApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjQyOlxcdHsgUENJX0RFVklDRSgweDQwMzMsIDB4MTM2MCksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDM6XFx0eyBQQ0lfREVWSUNFKDB4MTE4NiwgMHgxMzAwKSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI0NDpcXHR7IFBDSV9ERVZJQ0UoMHgxMTg2LCAweDEzNDApLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjQ1OlxcdHsgUENJX0RFVklDRSgweDEzZDEsIDB4YWIwNiksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDY6XFx0eyBQQ0lfREVWSUNFKDB4MTI1OSwgMHhhMTE3KSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI0NzpcXHR7IFBDSV9ERVZJQ0UoMHgxMjU5LCAweGExMWUpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjQ4OlxcdHsgUENJX0RFVklDRSgweDE0ZWEsIDB4YWIwNiksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNDk6XFx0eyBQQ0lfREVWSUNFKDB4MTRlYSwgMHhhYjA3KSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI1MDpcXHR7IFBDSV9ERVZJQ0UoMHgxMWRiLCAweDEyMzQpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjUxOlxcdHsgUENJX0RFVklDRSgweDE0MzIsIDB4OTEzMCksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTI6XFx0eyBQQ0lfREVWSUNFKDB4MDJhYywgMHgxMDEyKSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI1MzpcXHR7IFBDSV9ERVZJQ0UoMHgwMThhLCAweDAxMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjU0OlxcdHsgUENJX0RFVklDRSgweDEyNmMsIDB4MTIxMSksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNTU6XFx0eyBQQ0lfREVWSUNFKDB4MTc0MywgMHg4MTM5KSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI1NjpcXHR7IFBDSV9ERVZJQ0UoMHgwMjFiLCAweDgxMzkpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjU3OlxcdHsgUENJX0RFVklDRSgweDE2ZWMsIDB4YWIwNiksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNjAtXFx0LyogQm9ndXMgODEzOSBzaWxpY29uIHJlcG9ydHMgODEyOSB3aXRob3V0IGV4dGVybmFsIFBST00gOi0oICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjYxOlxcdHsgUENJX0RFVklDRSgweDEwZWMsIDB4ODEyOSksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNjItI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy0yNzAtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM6MjcxOlxcdHsgUENJX0RFVklDRV9TVUIoUENJX0FOWV9JRCwgMHg4MTM5LCAweDEwZWMsIDB4ODEzOSksIC5kcml2ZXJfZGF0YSA9IFJUTDgxMzkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYzoyNzI6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfQU5ZX0lELCAweDgxMzksIDB4MTE4NiwgMHgxMzAwKSwgLmRyaXZlcl9kYXRhID0gUlRMODEzOSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjI3MzpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9BTllfSUQsIDB4ODEzOSwgMHgxM2QxLCAweGFiMDYpLCAuZHJpdmVyX2RhdGEgPSBSVEw4MTM5IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtMjc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmM9OTM4PXN0YXRpYyBpbnQgcnRsODEzOV9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jLTk1My1cXHRpZiAocGRldi1cXHUwMDNldmVuZG9yID09IFBDSV9WRU5ET1JfSURfUkVBTFRFSyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjk1NDpcXHQgICAgcGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5IFxcdTAwMjZcXHUwMDI2IHBkZXYtXFx1MDAzZXJldmlzaW9uIFxcdTAwM2U9IDB4MjApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLzgxMzl0b28uYy05NTUtXFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jLTk2MS1cXHRpZiAocGRldi1cXHUwMDNldmVuZG9yID09IFBDSV9WRU5ET1JfSURfUkVBTFRFSyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjk2MjpcXHQgICAgcGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5IFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay84MTM5dG9vLmMtOTYzLVxcdCAgICBwZGV2LVxcdTAwM2VzdWJzeXN0ZW1fdmVuZG9yID09IFBDSV9WRU5ET1JfSURfQVRIRVJPUyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jOjk2NDpcXHQgICAgcGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZSA9PSBQQ0lfREVWSUNFX0lEX1JFQUxURUtfODEzOSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvODEzOXRvby5jLTk2NS1cXHRcXHRwcl9pbmZvKFxcXCJPUU8gTW9kZWwgMiBkZXRlY3RlZC4gRm9yY2luZyBQSU9cXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMzo1NDo0OS41NjY5NTk3MDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ5MTg1MTc0MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgUmVhbHRlayBSVEw4MTY5IERyaXZlciBmb3IgRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNlZSBpZiB0aGUgYHI4MTY5YCBkcml2ZXIsIHNwZWNpZmljYWxseSwgaXMgZXZlbiBwcmVzZW50IG9yIHVzZWQgaW4gdGhlIFFFTVUgZW52aXJvbm1lbnQsIG9yIGlmIGl0J3MgbWVkaWF0ZWQgdGhyb3VnaCBhbiBlbXVsYXRlZCBkZXZpY2UuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBRRU1VIGVtdWxhdGVzIHRoZSBSVEw4MTM5LCBidXQgdGhhdCdzIGEgZGlmZmVyZW50IGJlYXN0LCBhbmQgZnJvbSBhIHF1aWNrIGNoZWNrLCB0aGVyZSdzIG5vIG5hdGl2ZSBlbXVsYXRpb24gb2YgdGhlIFJUTDgxNjkuXG5cblNvLCBkb2VzIHN5emthbGxlciBoYXZlIGEgcGF0aCB0byB0aGlzIGRyaXZlcj8gTGV0J3MgY29uc2lkZXIgdGhlIHByb21wdC4gU2VjdGlvbiAyIGhpZ2hsaWdodHMgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgc3BlY2lmaWNhbGx5IGNhbGxpbmcgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiBuZXR3b3JrIGRyaXZlcnMsIGluIGdlbmVyYWwsIGFyZSBmYWlyIGdhbWUgaW4gc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwcyB1c2luZyBRRU1VIG9yIEdDRS4gV2UncmUgZGVhbGluZyB3aXRoIHZpcnR1YWwgZGV2aWNlcyBsaWtlIHZpcnRpbywgYW5kIGxvb3BiYWNrcywgZXRjLiwgYnV0IGFsc28gcGh5c2ljYWwgUENJZSBuZXR3b3JrIGRyaXZlcnMsIGJ1dCBhcmUgdGhlIGxpa2VzIG9mIGByODE2OWAsIGBlMTAwMGAsIGV0Yy4sIHJlYWNoYWJsZSBpbiB0aGUgc3RhbmRhcmQgc2V0dXA/IEl0IHNlZW1zIGxpa2UgaXQgaXNuJ3QuXG5cbk5vdywgZm9jdXNpbmcgb24gYHI4MTY5YDogSXQncyBhIFBDSWUvUENJIG5ldHdvcmsgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvODE2OC84MTI1IGNoaXBzLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHNvbGlkOiB0aGlzIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBzeXprYWxsZXIgVk1zLiBFdmVuICppZiogc29tZW9uZSBoYWQgYSBSZWFsdGVrIDgxNjkgY2FyZCwgaXQgd291bGRuJ3QgYmUgYXR0YWNoZWQgaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgaW5zdGFuY2UuXG5cbkxldCdzIGRyaWxsIGRvd24gaW50byB0aGUgbW9kaWZpZWQgY29kZSwgYHJ0bF9lbmFibGVfbHRyKClgLiBUaGlzIGlzIGNhbGxlZCB3aXRoaW4gYHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGVgLCB3aGljaCBpdHNlbGYgaXMgcGFydCBvZiBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi9wb3dlciBtYW5hZ2VtZW50IOKAkyBkdXJpbmcgcHJvYmUsIHVwL2Rvd24gZXZlbnRzIG9yIGxpbmsgY2hhbmdlcyBvZiAqdGhlIHBoeXNpY2FsKiBQQ0llIGRldmljZSwgd2hpY2ggSSBhbSBpbnRpbWF0ZWx5IGZhbWlsaWFyIHdpdGguIFRoYXQgY29kZSBjb25maWd1cmVzIFBDSWUgTFRSIChMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcpIGZvciBBU1BNIChBY3RpdmUgU3RhdGUgUG93ZXIgTWFuYWdlbWVudCksIHdoaWNoIGlzIHNwZWNpZmljIHRvIGludGVybmFsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZm9yIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBOSUNzLlxuXG5UaGVyZWZvcmUsIGxldCdzIHZlcmlmeTpcblxuMS4gIGByODE2OWAgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBOSUMgZHJpdmVyIChSZWFsdGVrIDgxNjkvODE2OC84MTI1LCB3aGljaCBJIGtub3cgaXQgaXMpIC0gKipZZXMqKi5cbjIuICBJdCdzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRS4gUUVNVSBoYXMgUlRMODEzOSwgYnV0IG5vdCBSVEw4MTY5LzgxNjgvODEyNSwgYW5kIHN0YW5kYXJkIHN5emthbGxlciBWTXMgZG9uJ3QgYXR0YWNoIHI4MTY5IC0gKipObyoqLlxuMy4gIEl0J3Mgbm90IHJlYWNoYWJsZSB2aWEgdmlydHVhbCBidXNlcyAtICoqTm8qKi5cblxuU28sIGFjY29yZGluZyB0byB0aGUgcHJvbXB0LCB0aGlzIGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgbWFwcyB0byBTZWN0aW9uIDIgb2YgdGhlIHByb21wdDpcblxuXCItIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuSXQgaXMuXG5cbk15IGNvbmNsdXNpb25zIGFyZTpcblxuKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcW1xcXSoqXG4qICAgKipFbmFibGVDb25maWdzOiBcXFtcXF0qKlxuXG5BbmQgdGhlIHJlYXNvbmluZyBpczogVGhlIHBhdGNoIG1vZGlmaWVzIGBydGxfZW5hYmxlX2x0cigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgcGh5c2ljYWwgUmVhbHRlayBQQ0llIG5ldHdvcmsgY2FyZHMgKGUuZy4gUlRMODE2OCwgUlRMODEyNSkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk3NiwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEzOjU1OjA0LjQ4NTQ3OTY3OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBDSWUgTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nIChMVFIpIGNvbmZpZ3VyYXRpb24gaW4gcnRsX2VuYWJsZV9sdHIoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgcjgxNjkgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUmVhbHRlayBQQ0llIG5ldHdvcmsgYWRhcHRlcnMgKHN1Y2ggYXMgUlRMODE2OCBvciBSVEw4MTI1KSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQQ0llIExhdGVuY3kgVG9sZXJhbmNlIFJlcG9ydGluZyAoTFRSKSBjb25maWd1cmF0aW9uIGluIHJ0bF9lbmFibGVfbHRyKCkgd2l0aGluIHRoZSBSZWFsdGVrIHI4MTY5IG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFJlYWx0ZWsgUENJZSBuZXR3b3JrIGFkYXB0ZXJzIChzdWNoIGFzIFJUTDgxNjggb3IgUlRMODEyNSkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTM6NTU6MDQuNDg1NTAyOTc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpsjkg[1] Phase: Running StartedAt: 2026-09-11 13:55:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpsjkg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-11 13:55:15 +0000 UTC FinishedAt: 2026-09-11 13:55:20 +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,}